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 | 75 | "nop\n\t" \ |
| 76 | 76 | "nop\n\t" \ |
| 77 | 77 | "nop", \ |
| 78 | − "li t3, %2\n\t" \ | |
| 79 | − "slli t3, t3, %4\n\t" \ | |
| 78 | + "li t3, %1\n\t" \ | |
| 79 | + "slli t3, t3, %3\n\t" \ | |
| 80 | 80 | "and t3, %0, t3\n\t" \ |
| 81 | 81 | "bne t3, zero, 2f\n\t" \ |
| 82 | − "li t3, %3\n\t" \ | |
| 83 | − "slli t3, t3, %4\n\t" \ | |
| 82 | + "li t3, %2\n\t" \ | |
| 83 | + "slli t3, t3, %3\n\t" \ | |
| 84 | 84 | "or %0, %0, t3\n\t" \ |
| 85 | 85 | "2:", THEAD_VENDOR_ID, \ |
| 86 | 86 | ERRATA_THEAD_PBMT, CONFIG_ERRATA_THEAD_PBMT) \ |
| 87 | 87 | : "+r"(_val) \ |
| 88 | − : "0"(_val), \ | |
| 89 | − "I"(_PAGE_MTMASK_THEAD >> ALT_THEAD_PBMT_SHIFT), \ | |
| 88 | + : "I"(_PAGE_MTMASK_THEAD >> ALT_THEAD_PBMT_SHIFT), \ | |
| 90 | 89 | "I"(_PAGE_PMA_THEAD >> ALT_THEAD_PBMT_SHIFT), \ |
| 91 | − "I"(ALT_THEAD_PBMT_SHIFT)) | |
| 90 | + "I"(ALT_THEAD_PBMT_SHIFT) \ | |
| 91 | + : "t3") | |
| 92 | 92 | #else |
| 93 | 93 | #define ALT_THEAD_PMA(_val) |
| 94 | 94 | #endif |