diff --git a/src/riscv-integration.adoc b/src/riscv-integration.adoc index 23823276..62163ba8 100644 --- a/src/riscv-integration.adoc +++ b/src/riscv-integration.adoc @@ -491,16 +491,21 @@ the address. The tag of the capability written to <> is cleared if either check fails. Additionally, when MODE=Vectored the capability has its tag bit cleared if the -capability address + 4 x HICAUSE is not within the representable bounds. +capability address + 4 x HICAUSE is not within the <>. HICAUSE is the largest exception cause value that the implementation can write -to <> when an interrupt is taken. +to <> or <>/<> when an interrupt is taken. NOTE: When MODE=Vectored, it is only required that address + 4 x HICAUSE is -within representable bounds instead of the capability's bounds. This ensures +within the <> instead of the capability's bounds. +This ensures that software is not forced to allocate a capability granting access to more memory for the trap-vector than necessary to handle the trap causes that actually occur in the system. +NOTE: If either the capability address _or_ the capability address + 4 x HICAUSE are +invalid then the <> rules are followed which may require +the tag being cleared. + [#mscratch, reftext="mscratch"] ==== Machine Scratch Register (mscratch)