summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorDaniel Maslowski <cyrevolt@googlemail.com>2024-07-19 19:04:37 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-11-14 13:19:38 +0100
commit6e62dab357eea12db0fc62dea94c7a892888e6e8 (patch)
treea16ff5608c58e553e7d2b08a5d12657e0cde4ed8 /arch
parentf04be6d68f715c1473a8422fc0460f57b5e99931 (diff)
downloadlinux-6e62dab357eea12db0fc62dea94c7a892888e6e8.tar.gz
linux-6e62dab357eea12db0fc62dea94c7a892888e6e8.tar.bz2
linux-6e62dab357eea12db0fc62dea94c7a892888e6e8.zip
riscv/purgatory: align riscv_kernel_entry
commit fb197c5d2fd24b9af3d4697d0cf778645846d6d5 upstream. 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 on a JH7110 SoC with oreboot and its SBI delegating unaligned access exceptions and the kernel configured to handle them. Fixes: 736e30af583fb ("RISC-V: Add purgatory") Signed-off-by: Daniel Maslowski <cyrevolt@gmail.com> Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com> Link: https://lore.kernel.org/r/20240719170437.247457-1-cyrevolt@gmail.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com> Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/riscv/purgatory/entry.S3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/riscv/purgatory/entry.S b/arch/riscv/purgatory/entry.S
index 0194f4554130..a4ede42bc151 100644
--- a/arch/riscv/purgatory/entry.S
+++ b/arch/riscv/purgatory/entry.S
@@ -11,6 +11,8 @@
.macro size, sym:req
.size \sym, . - \sym
.endm
+#include <asm/asm.h>
+#include <linux/linkage.h>
.text
@@ -39,6 +41,7 @@ size purgatory_start
.data
+.align LGREG
.globl riscv_kernel_entry
riscv_kernel_entry:
.quad 0