diff --git a/arch/risc-v/src/common/supervisor/riscv_syscall.S b/arch/risc-v/src/common/supervisor/riscv_syscall.S index bda64d3de2cfb..1d7da7ee31db8 100644 --- a/arch/risc-v/src/common/supervisor/riscv_syscall.S +++ b/arch/risc-v/src/common/supervisor/riscv_syscall.S @@ -96,8 +96,13 @@ sys_call6: and s0, s0, s1 li s1, STATUS_PIE /* set PIE */ or s0, s0, s1 + j 2f - 1: +1: + li s1, ~STATUS_PIE /* else: clear PIE */ + and s0, s0, s1 + +2: /* Set previous privilege, we are in privileged mode now */ li s1, STATUS_PPP /* set previous privilege */