[Ah, I missed v13 and v14, feel free to Cc me on next versions.] 2025-05-02T16:30:36-07:00, Deepak Gupta <de...@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.