[CV32A65X] Update PMPADDRn spec to make bit 0 ROCST 0. Update config files. (#2651)
Some checks failed
bender-up-to-date / bender-up-to-date (push) Has been cancelled
ci / build-riscv-tests (push) Has been cancelled
ci / execute-riscv64-tests (push) Has been cancelled
ci / execute-riscv32-tests (push) Has been cancelled

Update CV32A65X-annotated privileged ISA specification to reflect the fact that with PMP granularity 8 and only supported PMP address matching modes being OFF and TOR, bit 0 of the pmpaddr0..pmpaddr7 registers can be safely made read-only zero. Update riscv-config specifications and its generated files accordingly.
This commit is contained in:
Zbigniew Chamski 2024-12-09 13:22:38 +01:00 committed by GitHub
parent 5ff6b2d32e
commit ed89c717f7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 31 additions and 25 deletions

View file

@ -334,7 +334,7 @@ Description:: Physical memory protection address register
|===
| Bits | Field Name | Reset Value | Type | Legal Values | Description
| [31:0] | PMPADDR[I] | 0x00000000 | WARL | 0x00000000 - 0xFFFFFFFF | Physical memory protection address register
| [31:0] | PMPADDR[I] | 0x00000000 | WARL | masked: & 0xFFFFFFFE \| 0x0 | Physical memory protection address register
|===
[[_PMPADDR8-63]]

View file

@ -418,13 +418,13 @@ PMPCFG[0-1]
+---------+----------------+---------------+--------+----------------------+------------------------+
| Bits | Field Name | Reset Value | Type | Legal Values | Description |
+=========+================+===============+========+======================+========================+
| [7:0] | PMP[I*4 +0]CFG | 0x0 | WARL | masked: & 0x8f | 0x0 | pmp configuration bits |
| [7:0] | PMP[I*4 +0]CFG | 0x0 | WARL | masked: & 0x8f \| 0x0 | pmp configuration bits |
+---------+----------------+---------------+--------+----------------------+------------------------+
| [15:8] | PMP[I*4 +1]CFG | 0x0 | WARL | masked: & 0x8f | 0x0 | pmp configuration bits |
| [15:8] | PMP[I*4 +1]CFG | 0x0 | WARL | masked: & 0x8f \| 0x0 | pmp configuration bits |
+---------+----------------+---------------+--------+----------------------+------------------------+
| [23:16] | PMP[I*4 +2]CFG | 0x0 | WARL | masked: & 0x8f | 0x0 | pmp configuration bits |
| [23:16] | PMP[I*4 +2]CFG | 0x0 | WARL | masked: & 0x8f \| 0x0 | pmp configuration bits |
+---------+----------------+---------------+--------+----------------------+------------------------+
| [31:24] | PMP[I*4 +3]CFG | 0x0 | WARL | masked: & 0x8f | 0x0 | pmp configuration bits |
| [31:24] | PMP[I*4 +3]CFG | 0x0 | WARL | masked: & 0x8f \| 0x0 | pmp configuration bits |
+---------+----------------+---------------+--------+----------------------+------------------------+
@ -462,7 +462,7 @@ PMPADDR[0-7]
+--------+--------------+---------------+--------+-------------------------+---------------------------------------------+
| Bits | Field Name | Reset Value | Type | Legal Values | Description |
+========+==============+===============+========+=========================+=============================================+
| [31:0] | PMPADDR[I] | 0x00000000 | WARL | 0x00000000 - 0xFFFFFFFF | Physical memory protection address register |
| [31:0] | PMPADDR[I] | 0x00000000 | WARL | masked: & 0xFFFFFFFE \| 0x00000000 | Physical memory protection address register |
+--------+--------------+---------------+--------+-------------------------+---------------------------------------------+

View file

@ -44,6 +44,14 @@ spike_param_tree:
tdata2_accessible: 0
tdata3_accessible: 0
tselect_accessible: 0
pmpaddr0_write_mask: 0xFFFFFFFE
pmpaddr1_write_mask: 0xFFFFFFFE
pmpaddr2_write_mask: 0xFFFFFFFE
pmpaddr3_write_mask: 0xFFFFFFFE
pmpaddr4_write_mask: 0xFFFFFFFE
pmpaddr5_write_mask: 0xFFFFFFFE
pmpaddr6_write_mask: 0xFFFFFFFE
pmpaddr7_write_mask: 0xFFFFFFFE
mhartid: 0
mvendorid_override_mask : 0xFFFFFFFF
mvendorid_override_value: 1538

View file

@ -3165,7 +3165,7 @@ hart0:
warl:
dependency_fields: []
legal:
- pmpaddr0[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr0[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
fields: []
@ -3186,7 +3186,7 @@ hart0:
warl:
dependency_fields: []
legal:
- pmpaddr1[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr1[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
fields: []
@ -3207,7 +3207,7 @@ hart0:
warl:
dependency_fields: []
legal:
- pmpaddr2[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr2[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
fields: []
@ -3228,7 +3228,7 @@ hart0:
warl:
dependency_fields: []
legal:
- pmpaddr3[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr3[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
fields: []
@ -3249,7 +3249,7 @@ hart0:
warl:
dependency_fields: []
legal:
- pmpaddr4[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr4[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
fields: []
@ -3270,7 +3270,7 @@ hart0:
warl:
dependency_fields: []
legal:
- pmpaddr5[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr5[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
fields: []
@ -3291,7 +3291,7 @@ hart0:
warl:
dependency_fields: []
legal:
- pmpaddr6[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr6[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
fields: []
@ -3312,7 +3312,7 @@ hart0:
warl:
dependency_fields: []
legal:
- pmpaddr7[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr7[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
fields: []

View file

@ -1440,7 +1440,7 @@ hart0: &hart0
warl:
dependency_fields: []
legal:
- pmpaddr0[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr0[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
rv64:
@ -1453,7 +1453,7 @@ hart0: &hart0
warl:
dependency_fields: []
legal:
- pmpaddr1[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr1[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
rv64:
@ -1466,7 +1466,7 @@ hart0: &hart0
warl:
dependency_fields: []
legal:
- pmpaddr2[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr2[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
rv64:
@ -1479,7 +1479,7 @@ hart0: &hart0
warl:
dependency_fields: []
legal:
- pmpaddr3[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr3[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
rv64:
@ -1492,7 +1492,7 @@ hart0: &hart0
warl:
dependency_fields: []
legal:
- pmpaddr4[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr4[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
rv64:
@ -1505,7 +1505,7 @@ hart0: &hart0
warl:
dependency_fields: []
legal:
- pmpaddr5[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr5[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
rv64:
@ -1518,7 +1518,7 @@ hart0: &hart0
warl:
dependency_fields: []
legal:
- pmpaddr6[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr6[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
rv64:
@ -1531,7 +1531,7 @@ hart0: &hart0
warl:
dependency_fields: []
legal:
- pmpaddr7[31:0] in [0x00000000:0xFFFFFFFF]
- pmpaddr7[31:0] bitmask [0xFFFFFFFE, 0x00000000]
wr_illegal:
- unchanged
rv64:

View file

@ -4346,9 +4346,7 @@ ifdef::archi-CVA6[]
[{ohg-config}] The PMP grain is 8 bytes (latexmath:[$2^{G+2}$] with G = 1)
and must be the same across all PMP regions.
As latexmath:[${\tt pmpcfg}_i$].A[1] is always clear, i.e. the mode is OFF or TOR,
then bit latexmath:[${\tt pmpaddr}_i$][0] read as zero. Bit
latexmath:[${\tt pmpaddr}_i$][0] does not affect the TOR address-matching
logic.
then bit latexmath:[${\tt pmpaddr}_i$][0] is read-only zero.
endif::[]
ifeval::[{note} == true]