diff --git a/zjpm-spec.pdf b/zjpm-spec.pdf index ec73bd0..73bc448 100644 Binary files a/zjpm-spec.pdf and b/zjpm-spec.pdf differ diff --git a/zjpm/header.adoc b/zjpm/header.adoc index 11520f4..5b6c812 100644 --- a/zjpm/header.adoc +++ b/zjpm/header.adoc @@ -3,7 +3,7 @@ :description: RISC-V J Extension: Pointer Masking :company: RISC-V.org :revdate: 03/2024 -:revnumber: 0.8.4 +:revnumber: 0.8.5 :revremark: Development //development: assume everything can change //stable: assume everything could change diff --git a/zjpm/instructions.adoc b/zjpm/instructions.adoc index 6f280a1..e95c903 100644 --- a/zjpm/instructions.adoc +++ b/zjpm/instructions.adoc @@ -25,11 +25,11 @@ All of these fields are read-only 0 on RV32 systems. `Ssnpm` adds a new 2-bit WARL field (`PMM`) to bits 33:32 of `senvcfg`. Setting `PMM` enables or disables pointer masking for the next lower privilege mode (U/VU mode), according to the values in Table 2. -In systems where the H Extension is present, `Ssnpm` also adds a new 2-bit WARL field (`PMM`) to bits 33:32 of `henvcfg`. Setting `PMM` enables or disables pointer masking for VS-mode, according to the values in Table 2. Further, a 2-bit WARL field (`PMM`) is added to bits 49:48 of `hstatus`. Setting `hstatus.PMM` enables or disables pointer masking for `HLV.\*` and `HSV.*` instructions in U-mode, according to the values in Table 2, when their explicit memory access is performed as though in VU-mode. In HS- and M-modes, pointer masking for these instructions is enabled or disabled by `senvcfg.PMM`, when their explicit memory access is performed as though in VU-mode. Setting `henvcfg.PMM` enables or disables pointer masking for `HLV.\*` and `HSV.*` when their explicit memory access is performed as though in VS-mode. +In systems where the H Extension is present, `Ssnpm` also adds a new 2-bit WARL field (`PMM`) to bits 33:32 of `henvcfg`. Setting `PMM` enables or disables pointer masking for VS-mode, according to the values in Table 2. Further, a 2-bit WARL field (`HUPMM`) is added to bits 49:48 of `hstatus`. Setting `hstatus.HUPMM` enables or disables pointer masking for `HLV.\*` and `HSV.*` instructions in U-mode, according to the values in Table 2, when their explicit memory access is performed as though in VU-mode. In HS- and M-modes, pointer masking for these instructions is enabled or disabled by `senvcfg.PMM`, when their explicit memory access is performed as though in VU-mode. Setting `henvcfg.PMM` enables or disables pointer masking for `HLV.\*` and `HSV.*` when their explicit memory access is performed as though in VS-mode. [NOTE] ==== -The hypervisor should copy the value written to `senvcfg.PMM` by the guest to the `hstatus.PMM` field prior to invoking `HLV.\*` or `HSV.*` instructions in U-mode. +The hypervisor should copy the value written to `senvcfg.PMM` by the guest to the `hstatus.HUPMM` field prior to invoking `HLV.\*` or `HSV.*` instructions in U-mode. ==== The memory accesses performed by the `HLVX.*` instructions are not subject to pointer masking.