Skip to content

Commit

Permalink
clarify invalid address handling
Browse files Browse the repository at this point in the history
  • Loading branch information
tariqkurd-repo committed Dec 17, 2024
1 parent 5c80367 commit a369b8d
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions src/riscv-integration.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -491,16 +491,21 @@ the address. The tag of the capability written to <<mtvecc>> 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 <<section_cap_representable_check>>.
HICAUSE is the largest exception cause value that the implementation can write
to <<mcause>> when an interrupt is taken.
to <<mcause>> or <<scause>>/<<vscause>> 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 <<section_cap_representable_check>> 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 <<section_invalid_addr_conv>> rules are followed which may require
the tag being cleared.

[#mscratch, reftext="mscratch"]
==== Machine Scratch Register (mscratch)

Expand Down

0 comments on commit a369b8d

Please sign in to comment.