Messages in this thread | | | Date | Thu, 31 Aug 2023 14:55:54 +0800 | Subject | Re: [PATCH] riscv: kexec: Cleanup riscv_kexec_relocate | From | Song Shuai <> |
| |
Hi, Andreas:
在 2023/8/30 15:24, Andreas Schwab 写道: > On Aug 30 2023, Song Shuai wrote: > >> @@ -52,21 +42,27 @@ SYM_CODE_START(riscv_kexec_relocate) >> * the start of the loop below so that we jump there in >> * any case. >> */ >> - la s8, 1f >> - sub s8, s8, s7 >> - csrw CSR_STVEC, s8 >> + la s6, 1f >> + sub s6, s6, s4 >> + csrw CSR_STVEC, s6 >> + >> + /* >> + * With C-extension, here we get 42 Bytes and the next >> + * .align directive would pad zeros here up to 44 Bytes. >> + * So manually put a nop here to avoid zeros padding. >> + */ >> + nop >> >> /* Process entries in a loop */ >> .align 2 > > While you are at it, I'd suggest being explicit about .palign > vs. .balign. > How about this commemt:
Due to the stvec.BASE 4-byte alignment constraint, the following .align (alias of .p2align) directive will align the next instruction to a 4-byte boundary by padding zeros for this .rodata section.
With C-extension, here we get 42 Bytes and would be padded with zeros up to 44 Bytes. So manually put a nop here to avoid it.
-- Thanks Song Shuai
| |