--- /dev/null
+From fb197c5d2fd24b9af3d4697d0cf778645846d6d5 Mon Sep 17 00:00:00 2001
+From: Daniel Maslowski <cyrevolt@googlemail.com>
+Date: Fri, 19 Jul 2024 19:04:37 +0200
+Subject: riscv/purgatory: align riscv_kernel_entry
+
+From: Daniel Maslowski <cyrevolt@googlemail.com>
+
+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>
+---
+ arch/riscv/purgatory/entry.S | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- 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