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 fixed x1 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 stores x1 at ssp - XLEN/8; only after that store succeeds does ssp decrement by XLEN/8 and commit. When Zicfiss is not active it follows the C.MOP.1 Zcmop behavior.
Shows only official encodings, conditions, and architectural results; it does not imply a microarchitecture.
This compressed encoding has no variable explicit register: C.SSPUSH fixes x1; C.SSPOPCHK fixes x5.
C.SSPUSH is the fixed-x1 Zicfiss shadow-stack push; ssp decrements only when xSSE=1 and the store succeeds.
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.