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