Pull RISC-V fix from Palmer Dabbelt: - fix the T-Head memory type errata workaround to avoid behavior that is unsupported in the LLVM assembler * tag 'riscv-for-linus-5.19-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: riscv: Fix ALT_THEAD_PMA's asm parameters
Unified · Split
| @@ -75,20 +75,20 @@ asm volatile(ALTERNATIVE( \ · 74 unmodified lines | |||
| 75 | "nop\n\t" \ | 75 | "nop\n\t" \ |
| 76 | "nop\n\t" \ | 76 | "nop\n\t" \ |
| 77 | "nop", \ | 77 | "nop", \ |
| 78 | "li t3, %2\n\t" \ | 78 | "li t3, %1\n\t" \ |
| 79 | "slli t3, t3, %4\n\t" \ | 79 | "slli t3, t3, %3\n\t" \ |
| 80 | "and t3, %0, t3\n\t" \ | 80 | "and t3, %0, t3\n\t" \ |
| 81 | "bne t3, zero, 2f\n\t" \ | 81 | "bne t3, zero, 2f\n\t" \ |
| 82 | "li t3, %3\n\t" \ | 82 | "li t3, %2\n\t" \ |
| 83 | "slli t3, t3, %4\n\t" \ | 83 | "slli t3, t3, %3\n\t" \ |
| 84 | "or %0, %0, t3\n\t" \ | 84 | "or %0, %0, t3\n\t" \ |
| 85 | "2:", THEAD_VENDOR_ID, \ | 85 | "2:", THEAD_VENDOR_ID, \ |
| 86 | ERRATA_THEAD_PBMT, CONFIG_ERRATA_THEAD_PBMT) \ | 86 | ERRATA_THEAD_PBMT, CONFIG_ERRATA_THEAD_PBMT) \ |
| 87 | : "+r"(_val) \ | 87 | : "+r"(_val) \ |
| 88 | : "0"(_val), \ | 88 | : "I"(_PAGE_MTMASK_THEAD >> ALT_THEAD_PBMT_SHIFT), \ |
| 89 | "I"(_PAGE_MTMASK_THEAD >> ALT_THEAD_PBMT_SHIFT), \ | ||
| 90 | "I"(_PAGE_PMA_THEAD >> ALT_THEAD_PBMT_SHIFT), \ | 89 | "I"(_PAGE_PMA_THEAD >> ALT_THEAD_PBMT_SHIFT), \ |
| 91 | "I"(ALT_THEAD_PBMT_SHIFT)) | 90 | "I"(ALT_THEAD_PBMT_SHIFT) \ |
| 91 | : "t3") | ||
| 92 | #else | 92 | #else |
| 93 | #define ALT_THEAD_PMA(_val) | 93 | #define ALT_THEAD_PMA(_val) |
| 94 | #endif | 94 | #endif |