pmpaddr44

PMP Address 44

PMP entry address

Attributes

CSR Address

0x3dc

Defining extension

  • Smpmp, version >= Smpmp@1.11.0

Length

64-bit

Privilege Mode

M

Format

pmpaddr44 format
Figure 1. pmpaddr44 format

Field Summary

Name Location Type Reset Value

ADDR

63:0

RO

0

Fields

ADDR

Location

pmpaddr44[63:0]

Description

Bits PHYS_ADDR_WIDTH-1:2 of the address specifier for PMP entry 44 (or, if pmp45cfg.A == TOR, for PMP entry 45).

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

if ((%%LINK%csr_field;pmpcfg10.pmp44cfg;CSR[pmpcfg10].pmp44cfg%%[4] == 0)) {
  Bits<PHYS_ADDR_WIDTH - 2> mask = {10{1'b1}};
  return %%LINK%csr_field;pmpaddr44.ADDR;CSR[pmpaddr44].ADDR%% & ~mask;
} else {
  return %%LINK%csr_field;pmpaddr44.ADDR;CSR[pmpaddr44].ADDR%%;
}
if (MXLEN == 32) {
  if ((PMP_GRANULARITY >= 16) && (%%LINK%csr_field;pmpcfg11.pmp44cfg;CSR[pmpcfg11].pmp44cfg%%[4] == 1)) {
    return %%LINK%csr_field;pmpaddr44.ADDR;CSR[pmpaddr44].ADDR%% | {PMP_GRANULARITY - 3{1'b1}};
  } else if ((PMP_GRANULARITY >= 8) && (%%LINK%csr_field;pmpcfg11.pmp44cfg;CSR[pmpcfg11].pmp44cfg%%[4] == 0)) {
    Bits<PHYS_ADDR_WIDTH - 2> mask = {PMP_GRANULARITY - 2{1'b1}};
    return %%LINK%csr_field;pmpaddr44.ADDR;CSR[pmpaddr44].ADDR%% & ~mask;
  } else {
    return %%LINK%csr_field;pmpaddr44.ADDR;CSR[pmpaddr44].ADDR%%;
  }
} else {
  if ((PMP_GRANULARITY >= 16) && (%%LINK%csr_field;pmpcfg10.pmp44cfg;CSR[pmpcfg10].pmp44cfg%%[4] == 1)) {
    return %%LINK%csr_field;pmpaddr44.ADDR;CSR[pmpaddr44].ADDR%% | {PMP_GRANULARITY - 3{1'b1}};
  } else if ((PMP_GRANULARITY >= 8) && (%%LINK%csr_field;pmpcfg10.pmp44cfg;CSR[pmpcfg10].pmp44cfg%%[4] == 0)) {
    Bits<PHYS_ADDR_WIDTH - 2> mask = {PMP_GRANULARITY - 2{1'b1}};
    return %%LINK%csr_field;pmpaddr44.ADDR;CSR[pmpaddr44].ADDR%% & ~mask;
  } else {
    return %%LINK%csr_field;pmpaddr44.ADDR;CSR[pmpaddr44].ADDR%%;
  }
}