pmpaddr55
PMP Address 55
PMP entry address
Fields
ADDR
- Location
-
pmpaddr55[63:0]
- Description
-
Bits PHYS_ADDR_WIDTH-1:2 of the address specifier for PMP entry 55 (or, if
pmp56cfg.A
== TOR, for PMP entry 56). - 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[pmpcfg13].pmp55cfg[4] == 1)) {
return CSR[pmpaddr55].ADDR | {PMP_GRANULARITY - 3{1'b1}};
} else if ((PMP_GRANULARITY >= 8) && (CSR[pmpcfg13].pmp55cfg[4] == 0)) {
Bits<PHYS_ADDR_WIDTH - 2> mask = {PMP_GRANULARITY - 2{1'b1}};
return CSR[pmpaddr55].ADDR & ~mask;
} else {
return CSR[pmpaddr55].ADDR;
}
} else {
if ((PMP_GRANULARITY >= 16) && (CSR[pmpcfg12].pmp55cfg[4] == 1)) {
return CSR[pmpaddr55].ADDR | {PMP_GRANULARITY - 3{1'b1}};
} else if ((PMP_GRANULARITY >= 8) && (CSR[pmpcfg12].pmp55cfg[4] == 0)) {
Bits<PHYS_ADDR_WIDTH - 2> mask = {PMP_GRANULARITY - 2{1'b1}};
return CSR[pmpaddr55].ADDR & ~mask;
} else {
return CSR[pmpaddr55].ADDR;
}
}