[Ah, I missed v13 and v14, feel free to Cc me on next versions.]
2025-05-02T16:30:36-07:00, Deepak Gupta debug@rivosinc.com:
diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S @@ -91,6 +91,32 @@ +.macro save_userssp tmp, status
- ALTERNATIVE("nops(4)",
__stringify( \
andi \tmp, \status, SR_SPP; \
bnez \tmp, skip_ssp_save; \
csrrw \tmp, CSR_SSP, x0; \
REG_S \tmp, TASK_TI_USER_SSP(tp); \
skip_ssp_save:),
0,
RISCV_ISA_EXT_ZICFISS,
CONFIG_RISCV_USER_CFI)
+.endm
+.macro restore_userssp tmp
- ALTERNATIVE("nops(2)",
__stringify( \
REG_L \tmp, TASK_TI_USER_SSP(tp); \
csrw CSR_SSP, \tmp),
0,
RISCV_ISA_EXT_ZICFISS,
CONFIG_RISCV_USER_CFI)
+.endm
Do we need to emit the nops when CONFIG_RISCV_USER_CFI isn't selected?
(Why not put #ifdef CONFIG_RISCV_USER_CFI around the ALTERNATIVES?)
Thanks.