pub struct NAPOTRegionSpec { /* private fields */ }Expand description
A RISC-V PMP memory region specification, configured in NAPOT mode.
This type checks that the supplied start and size values meet the RISC-V
NAPOT requirements, namely that
- the region is a power of two bytes in size
- the region’s start address is aligned to the region size
- the region is at least 8 bytes long
By accepting this type, PMP implementations can rely on these requirements
to be verified. Furthermore, they can use the
NAPOTRegionSpec::napot_addr convenience method to retrieve an pmpaddrX
CSR value encoding this region’s address and length.
Implementations§
Source§impl NAPOTRegionSpec
impl NAPOTRegionSpec
Sourcepub fn new(start: *const u8, size: usize) -> Option<Self>
pub fn new(start: *const u8, size: usize) -> Option<Self>
Construct a new NAPOTRegionSpec
This method accepts a start address and a region length. It returns
Some(region) when all constraints specified in the
NAPOTRegionSpec’s documentation are satisfied, otherwise None.
Sourcepub fn start(&self) -> *const u8
pub fn start(&self) -> *const u8
Retrieve the start address of this NAPOTRegionSpec.
Sourcepub fn size(&self) -> usize
pub fn size(&self) -> usize
Retrieve the size of this NAPOTRegionSpec.
Sourcepub fn end(&self) -> *const u8
pub fn end(&self) -> *const u8
Retrieve the end address of this NAPOTRegionSpec.
Sourcepub fn napot_addr(&self) -> usize
pub fn napot_addr(&self) -> usize
Retrieve a pmpaddrX-CSR compatible representation of this
NAPOTRegionSpec’s address and length. For this value to be valid in
a CSR register, the pmpcfgX octet’s A (address mode) value
belonging to this pmpaddrX-CSR must be set to NAPOT (0b11).
Trait Implementations§
Source§impl Clone for NAPOTRegionSpec
impl Clone for NAPOTRegionSpec
Source§fn clone(&self) -> NAPOTRegionSpec
fn clone(&self) -> NAPOTRegionSpec
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more