You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Although the ‘CIncOffset’ and ‘CIncOffsetImm’ instructions do exactly this check, the ‘CSetOffset’ function does something slightly different. The relevant code is around here (https://github.com/CTSRD-CHERI/cheri-cap-lib/blob/5c4171d3d0164d1d59ae3d6fa06ccaa4154522b8/CHERICC_Fat.bsv#L634), where the bound comparisons are different depending on whether you are incrementing or setting the offset. This causes ‘CSetOffset’ to deviate from the spec, albeit in a ‘good’ way that allows more legal capabilities to remain tagged.
As reported by Dapeng Gao:
The ‘CSetOffset’ instruction in Flute performs some optimisations (https://github.com/CTSRD-CHERI/cheri-cap-lib/blob/5c4171d3d0164d1d59ae3d6fa06ccaa4154522b8/CHERICC_Fat.bsv#L608) when computing permitted offsets, and these optimisations are not present in the Sail spec.
The text was updated successfully, but these errors were encountered: