pmpaddr12
PMP Address 12
PMP entry address
Attributes
CSR Address |
0x3bc |
---|---|
Defining extension |
|
Length |
64-bit |
Privilege Mode |
M |
Fields
ADDR
- Location
-
pmpaddr12[63:0]
- Description
-
Bits PHYS_ADDR_WIDTH-1:2 of the address specifier for PMP entry 12 (or, if
pmp13cfg.A
== TOR, for PMP entry 13). - Type
RW |
Read-Write Field is writable by software. Any value that fits in the field is acceptable and shall be retained for subsequent reads. |
- Reset value
-
UNDEFINED_LEGAL
- Software write
-
This field has special behavior when written by software (e.g., through csrrw).
When software tries to write
csr_value
, the field will be written with the return value of the function below.if (csr_value.ADDR >= (14)) { return UNDEFINED_LEGAL_DETERMINISTIC; } else { return UNDEFINED_LEGAL_DETERMINISTIC; }
Software read
This CSR may return a value that is different from what is stored in hardware.
-
Pruned
-
Original
if ((%%LINK%csr_field;pmpcfg2.pmp12cfg;CSR[pmpcfg2].pmp12cfg%%[4] == 0)) {
Bits<PHYS_ADDR_WIDTH - 2> mask = {10{1'b1}};
return %%LINK%csr_field;pmpaddr12.ADDR;CSR[pmpaddr12].ADDR%% & ~mask;
} else {
return %%LINK%csr_field;pmpaddr12.ADDR;CSR[pmpaddr12].ADDR%%;
}
if (MXLEN == 32) {
if ((PMP_GRANULARITY >= 16) && (%%LINK%csr_field;pmpcfg3.pmp12cfg;CSR[pmpcfg3].pmp12cfg%%[4] == 1)) {
return %%LINK%csr_field;pmpaddr12.ADDR;CSR[pmpaddr12].ADDR%% | {PMP_GRANULARITY - 3{1'b1}};
} else if ((PMP_GRANULARITY >= 8) && (%%LINK%csr_field;pmpcfg3.pmp12cfg;CSR[pmpcfg3].pmp12cfg%%[4] == 0)) {
Bits<PHYS_ADDR_WIDTH - 2> mask = {PMP_GRANULARITY - 2{1'b1}};
return %%LINK%csr_field;pmpaddr12.ADDR;CSR[pmpaddr12].ADDR%% & ~mask;
} else {
return %%LINK%csr_field;pmpaddr12.ADDR;CSR[pmpaddr12].ADDR%%;
}
} else {
if ((PMP_GRANULARITY >= 16) && (%%LINK%csr_field;pmpcfg2.pmp12cfg;CSR[pmpcfg2].pmp12cfg%%[4] == 1)) {
return %%LINK%csr_field;pmpaddr12.ADDR;CSR[pmpaddr12].ADDR%% | {PMP_GRANULARITY - 3{1'b1}};
} else if ((PMP_GRANULARITY >= 8) && (%%LINK%csr_field;pmpcfg2.pmp12cfg;CSR[pmpcfg2].pmp12cfg%%[4] == 0)) {
Bits<PHYS_ADDR_WIDTH - 2> mask = {PMP_GRANULARITY - 2{1'b1}};
return %%LINK%csr_field;pmpaddr12.ADDR;CSR[pmpaddr12].ADDR%% & ~mask;
} else {
return %%LINK%csr_field;pmpaddr12.ADDR;CSR[pmpaddr12].ADDR%%;
}
}