We have reserved space for, but do not presently implement, differentiating forward and backward sentries. There would then be at least five forms: forward with IRQ {preserved, disabled, enabled} and backward with IRQ {enabled, disabled}.
The ISA itself would need some tweaking: cjalr would need to seal PCC as one of the reverse types rather than one of the forward types, and cj and cjalr would need to differentiate between return and non-return transfers. Likely, absent any other encoding changes, this would enshrine cj ra (that is, cjalr x0, ra) as being a return instruction and prohibit its use for forward transfers, requiring modest toolchain work.
We have reserved space for, but do not presently implement, differentiating forward and backward sentries. There would then be at least five forms: forward with IRQ {preserved, disabled, enabled} and backward with IRQ {enabled, disabled}.
The ISA itself would need some tweaking:
cjalr
would need to seal PCC as one of the reverse types rather than one of the forward types, andcj
andcjalr
would need to differentiate between return and non-return transfers. Likely, absent any other encoding changes, this would enshrinecj ra
(that is,cjalr x0, ra
) as being a return instruction and prohibit its use for forward transfers, requiring modest toolchain work.