From 8b6c370476ebc4a937f27d85c65f8e37ba382b51 Mon Sep 17 00:00:00 2001 From: Tariq Kurd Date: Mon, 4 Nov 2024 13:56:10 +0100 Subject: [PATCH] swap rules 9 and 10, update (former) rules 9, and change quadrant 1 6-7 value of SL to match the rules --- src/insns/acperm_32bit.adoc | 9 ++++++--- src/level-ext.adoc | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/insns/acperm_32bit.adoc b/src/insns/acperm_32bit.adoc index 47810ae2..c2cfdc88 100644 --- a/src/insns/acperm_32bit.adoc +++ b/src/insns/acperm_32bit.adoc @@ -43,7 +43,7 @@ The rules from <> must be followed when removing permissions. [#acperm_rules] .ACPERM common rules -[float="center",align="center",cols="2,2,3",options="header"] +[float="center",align="center",cols="2,2,4",options="header"] |=== | Rule | Permission | Only valid if | 1 (RV32 only) | <> | All other permissions are set. @@ -54,12 +54,15 @@ The rules from <> must be followed when removing permissions. | 6 (RV32 only) | <> | <> or <> | 7 | <> | <> and <> | 8 | <> | <> and <> -| 9 (RV32 only) | <> | (<> == <> == <>) and (<> == ∞) -| 10 | <> | <> +| 9 | <> | <> +| 10 (RV32 only) | <> | (<> and <> and <> and (<> == ∞)) or + + (not(<> and not(<>) and not(<>) and (<>==0)))^1^ | 11 | <> | <> | 12 | <> | <> |=== +^1^ All the listed permissions in the set are either minimum or maximum. + The behaviour of currently illegal combinations from <> is to clear the permission if invalid (or in the case of <> set it to 0 (_local_)). * For RV64 all such combinations may be redefined by future extensions. diff --git a/src/level-ext.adoc b/src/level-ext.adoc index 9b3a8c2a..c8164b60 100644 --- a/src/level-ext.adoc +++ b/src/level-ext.adoc @@ -76,7 +76,7 @@ endif::[] | 0-1 | ✔ | ✔ | ✔ | ✔ | ✔ | ∞ | ✔ | ✔ | Mode^1^ | Execute + ASR (see <>) | 2-3 | ✔ | | ✔ | ✔ | ✔ | ∞^1^| ✔ | | Mode^1^ | Execute + Data & Cap RO | 4-5 | ✔ | ✔ | ✔ | ✔ | ✔ | ∞ | ✔ | | Mode^1^ | Execute + Data & Cap RW -| 6-7 | ✔ | ✔ | | | | ∞^1^| ✔ | | Mode^1^ | Execute + Data RW +| 6-7 | ✔ | ✔ | | | | 0^1^| ✔ | | Mode^1^ | Execute + Data RW 11+| *Quadrant 2: Restricted capability data read/write* 11+| bit[2] = write, bit[1:0] = store level. R and C implicitly granted, LM dependent on W permission. |Bits[4:3]| R | W | C | LM | EL | SL | X | ASR | Mode^1^ | @@ -98,7 +98,7 @@ endif::[] | 7 | ✔ | ✔ | ✔ | ✔ | ✔ | 0 | | | N/A | Data & Cap RW (no store _local_) |============================================================================== -^1^ SL isn't applicable in these cases, but reports this value in <> to simplify the rules followed by <> +^1^ SL isn't applicable in these cases, but this value is reported by <> to simplify the rules followed by <> [#section_cap_level_change] === Changing capability levels and permissions