summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@suse.de>2025-07-10 16:32:18 +0300
committerPalmer Dabbelt <palmer@dabbelt.com>2025-07-16 19:05:39 +0300
commitb3510183ab7d63c71a3f5c89043d31686a76a34c (patch)
tree26513e5da93b95dc56de065eb73d0f4752f88684
parent969f028bf2c40573ef18061f702ede3ebfe12b42 (diff)
downloadlinux-b3510183ab7d63c71a3f5c89043d31686a76a34c.tar.xz
riscv: traps_misaligned: properly sign extend value in misaligned load handler
Add missing cast to signed long. Signed-off-by: Andreas Schwab <schwab@suse.de> Fixes: 956d705dd279 ("riscv: Unaligned load/store handling for M_MODE") Tested-by: Clément Léger <cleger@rivosinc.com> Link: https://lore.kernel.org/r/mvmikk0goil.fsf@suse.de Signed-off-by: Palmer Dabbelt <palmer@dabbelt.com>
-rw-r--r--arch/riscv/kernel/traps_misaligned.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/riscv/kernel/traps_misaligned.c b/arch/riscv/kernel/traps_misaligned.c
index 93043924fe6c..f760e4fcc052 100644
--- a/arch/riscv/kernel/traps_misaligned.c
+++ b/arch/riscv/kernel/traps_misaligned.c
@@ -461,7 +461,7 @@ static int handle_scalar_misaligned_load(struct pt_regs *regs)
}
if (!fp)
- SET_RD(insn, regs, val.data_ulong << shift >> shift);
+ SET_RD(insn, regs, (long)(val.data_ulong << shift) >> shift);
else if (len == 8)
set_f64_rd(insn, regs, val.data_u64);
else