pmpaddr25
PMP Address 25
PMP entry address
Fields
ADDR
- Location
-
pmpaddr25[63:0]
- Description
-
Bits PHYS_ADDR_WIDTH-1:2 of the address specifier for PMP entry 25 (or, if
pmp26cfg.A
== TOR, for PMP entry 26). - Type
RO |
Read-Only Field has a hardwired value that does not change. Writes to an RO field are ignored. |
- Reset value
-
0
- 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 csr_value.ADDR; }
Software read
This CSR may return a value that is different from what is stored in hardware.
-
Pruned
-
Original
Bits<PHYS_ADDR_WIDTH - 2> mask = {10{1'b1}};
return 0;
if (XLEN == 32) {
if ((PMP_GRANULARITY >= 16) && (CSR[pmpcfg6].pmp25cfg[4] == 1)) {
return CSR[pmpaddr25].ADDR | {PMP_GRANULARITY - 3{1'b1}};
} else if ((PMP_GRANULARITY >= 8) && (CSR[pmpcfg6].pmp25cfg[4] == 0)) {
Bits<PHYS_ADDR_WIDTH - 2> mask = {PMP_GRANULARITY - 2{1'b1}};
return CSR[pmpaddr25].ADDR & ~mask;
} else {
return CSR[pmpaddr25].ADDR;
}
} else {
if ((PMP_GRANULARITY >= 16) && (CSR[pmpcfg6].pmp25cfg[4] == 1)) {
return CSR[pmpaddr25].ADDR | {PMP_GRANULARITY - 3{1'b1}};
} else if ((PMP_GRANULARITY >= 8) && (CSR[pmpcfg6].pmp25cfg[4] == 0)) {
Bits<PHYS_ADDR_WIDTH - 2> mask = {PMP_GRANULARITY - 2{1'b1}};
return CSR[pmpaddr25].ADDR & ~mask;
} else {
return CSR[pmpaddr25].ADDR;
}
}