What happens if the related CFI feature is inactive for C.SSPUSH?
Zicfiss instructions degrade according to the official Zimop/Zcmop-compatible behavior and do not perform shadow-stack checks or updates.
C.SSPUSH pushes the x1/x5 link-register value onto the downward-growing shadow stack.
C.SSPUSH x1 (Zicfiss, depending on Zcmop) uses the C.MOP.1 encoding and, when xSSE=1, is equivalent to SSPUSH x1: it first decrements ssp by XLEN/8, then stores x1 to the new ssp address; the ssp update commits only after the store succeeds. When Zicfiss is not active it follows the C.MOP.1 Zcmop behavior.
C.SSPUSH belongs to the RISC-V CFI instruction set; behavior depends on whether Zicfilp/Zicfiss is enabled and on environment configuration.
Understand this scenario with real code like «c.sspush x1 # push ra onto shadow stack».
Understand this scenario with real code like «c.sspush x1 # push ra onto shadow stack».
Understand this scenario with real code like «c.sspush x1 # push ra onto shadow stack».
Zicfiss instructions degrade according to the official Zimop/Zcmop-compatible behavior and do not perform shadow-stack checks or updates.
The Control-Flow Integrity chapter of the RISC-V Unprivileged ISA defines LPAD, SSPUSH, SSPOPCHK, SSRDP, and SSAMOSWAP.