Zicfiss Extension

Versions

Version 1.0.0

State

ratified

Ratification date

2024-07

Synopsis

The Zicfiss extension introduces a shadow stack to enforce backward-edge control-flow integrity.

The extension provides instructions to store and load the link register to and from the shadow stack, check the integrity of the return address, read the shadow stack pointer, and perform atomic swaps on shadow stack locations.

Instructions

The following instructions are affected by this extension:

ssamoswap.d

No synopsis available

ssamoswap.w

No synopsis available

sspopchk

Shadow Stack Pop and Check

sspush

Shadow Stack Push

ssrdp

Read ssp into a Register

Parameters

This extension has the following implementation options (AKA parameters):

REPORT_CAUSE_IN_MTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK

Type

boolean

Valid Values

boolean

Description

When true, mtval is written with the shadow stack cause (code=3) when a SoftwareCheck exception is raised into M-mode due to a shadow stack pop check instruction.

When false, mtval is written with 0.

REPORT_CAUSE_IN_STVAL_ON_SHADOW_STACK_SOFTWARE_CHECK

Type

boolean

Valid Values

boolean

Description

When true, stval is written with the shadow stack cause (code=3) when a SoftwareCheck exception is raised into S-mode due to a shadow stack pop check instruction.

When false, stval is written with 0.

REPORT_CAUSE_IN_VSTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK

Type

boolean

Valid Values

boolean

Description

When true, vstval is written with the shadow stack cause (code=3) when a SoftwareCheck exception is raised into VS-mode due to a shadow stack pop check instruction.

When false, vstval is written with 0.