[PATCH] riscv/purgatory: align riscv_kernel_entry
Alexandre Ghiti
alex at ghiti.fr
Mon Jul 15 04:46:14 PDT 2024
Hi Daniel,
On 09/07/2024 03:26, Daniel Maslowski wrote:
> When alignment handling is delegated to the kernel, everything must be
> word-aligned in purgatory, since the trap handler is then set to the
> kexec one. Without the alignment, hitting the exception would
> ultimately crash. On other occasions, the kernel's handler would take
> care of exceptions.
> This has been tested with oreboot and its SBI delegating unaligned
> access exceptions and the kernel configured to handle them.
>
> Signed-off-by: Daniel Maslowski <cyrevolt at gmail.com>
> ---
> arch/riscv/purgatory/entry.S | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/riscv/purgatory/entry.S b/arch/riscv/purgatory/entry.S
> index 5bcf3af903da..29121650a941 100644
> --- a/arch/riscv/purgatory/entry.S
> +++ b/arch/riscv/purgatory/entry.S
> @@ -34,6 +34,7 @@ SYM_CODE_END(purgatory_start)
>
> .data
>
> +.align 4
IIRC, .align on riscv takes a power of two as argument, which means you
align riscv_kernel_entry symbol to 16B here, any reason for this
alignment? I guess you want 4B on rv32 and 8B on rv64 right? In that
case, the best here would be to use LGREG
https://elixir.bootlin.com/linux/latest/source/arch/riscv/include/asm/asm.h#L29
Thanks,
Alex
> SYM_DATA(riscv_kernel_entry, .quad 0)
>
> .end
More information about the linux-riscv
mailing list