SecureCells website repository
Traps in SecureCells can originate from features in the base RISC-V architecture, or from additions made for SecureCells. This page documents the relevant trap behaviors.
Access control check failures raise traps with SecureCells. These
traps mirror the behavior as with baseline RISC-V architecture.
We describe these traps below, with the corresponding exception
code for scause in brackets.
ecall) raise the same
trap number.Additional traps introduced by SecureCells uses the range 0x18-0x1c
for exception codes in `scause.
| Inst | Cause | scause |
stval |
| SCExcl | Illegal address | _ILL_ADDR | addr |
| SCExcl | Illegal permissions | _ILL_PERM | (type << 8) | perm type = 0 if perm not in RWX 1 if perm is zero 2 if SDcur has insufficient perms |
| SCExcl | Cell description invalid | _INV_CELL_STATE | 0 if cell is invalid |
| SCGrant | Illegal address | _ILL_ADDR | addr |
| SCGrant | Target too high | _INV_SDID | SDtgt |
| SCGrant | Illegal permissions | _ILL_PERM | (type << 8) | perm type = 0 if perm not in RWX 1 if perm is zero 2 if SDcur has insufficient perms |
| SCGrant | Cell description invalid | _INV_CELL_STATE | 0 if cell is invalid |
| SCRecv | Illegal address | _ILL_ADDR | addr |
| SCRecv | Cell description invalid | _INV_CELL_STATE | 0 if cell is invalid |
| SCRecv | Illegal permissions | _ILL_PERM | (type << 8) | perm type = 0 if perm not in RWX 1 if perm is zero 3 if requested perms not subset of granted perms |
| SCRecv | Invalid SD | _INV_SDID | (type << 32) | SD type = 0 if SD source too high, SD=SDsrc 1 if grant SD != SDcur, SD=SDcur |
| SCProtect | Illegal address | _ILL_ADDR | addr |
| SCProtect | Illegal permissions | _ILL_PERM | (type << 8) | perm type = 0 if perm not in RWX 2 if SDcur has insufficient perms |
| SCProtect | Cell description invalid | _INV_CELL_STATE | 0 if cell is invalid |
| SCTfer | Illegal address | _ILL_ADDR | addr |
| SCTfer | Target too high | _INV_SDID | SDtgt |
| SCTfer | Illegal permissions | _ILL_PERM | (type << 8) | perm type = 0 if perm not in RWX 1 if perm is zero 2 if SDcur has insufficient perms |
| SCTfer | Cell description invalid | _INV_CELL_STATE | 0 if cell is invalid |
| SCInval | Illegal address | _ILL_ADDR | addr |
| SCInval | Cell description invalid | _INV_CELL_STATE | 0 if cell is already invalid 2 if other SD has non-zero perms 3 outstanding grants for cell |
| SCReval | Illegal address | _ILL_ADDR | addr |
| SCReval | Cell description invalid | _INV_CELL_STATE | 1 if cell is already valid |
| SCReval | Illegal permissions | _ILL_PERM | (type << 8) | perm type = 0 if perm not in RWX 1 if perm is zero |
| SDSwitch | Illegal address | _ILL_ADDR | addr |
| SDSwitch | Illegal permissions | _ILL_PERM | (type << 8) | perm type= 4 for illegal sdswitch |
| SDSwitch | Target too high | _INV_SDID | SDtgt |
| SDSwitch | Illegal target instruction | _ILL_TGT | Target addr |
Numeric values for scause shown below.
scause cause |
scause Exception Code |
| _ILL_ADDR | 0x18 |
| _ILL_PERM | 0x19 |
| _INV_SDID | 0x1a |
| _INV_CELL_STATE | 0x1b |
| _ILL_TGT | 0x1c |