Struct rsim::processor::elements::cheri::CheriAggregateMemory [−][src]
pub struct CheriAggregateMemory { base_mem: AggregateMemory, tag_mem: TagMemory, }
Wrapper for AggregateMemory64 that keeps tags, supports MemoryOf
Fields
base_mem: AggregateMemory
tag_mem: TagMemory
Implementations
impl CheriAggregateMemory
[src]
impl CheriAggregateMemory
[src]pub fn from_base(base_mem: AggregateMemory) -> CheriAggregateMemory
[src]
pub fn fetch_inst_u32(&mut self, cap: Cc128Cap) -> MemoryResult<u32>
[src]
pub fn get_full_range_cap(&self) -> Cc128Cap
[src]
pub fn get_io_values(&self) -> Vec<Option<u64>>
[src]
Trait Implementations
impl CheriMemory<CcxCap<Cc128>> for CheriAggregateMemory
[src]
impl CheriMemory<CcxCap<Cc128>> for CheriAggregateMemory
[src]Combine MemoryOf<u8,u16,u32,u64> with MemoryOf
fn load_maybe_cap(&mut self, addr: TAddr) -> MemoryResult<SafeTaggedCap>
[src]
fn store_maybe_cap(
&mut self,
addr: TAddr,
val: SafeTaggedCap
) -> MemoryResult<()>
[src]
&mut self,
addr: TAddr,
val: SafeTaggedCap
) -> MemoryResult<()>
fn store_cap(&mut self, addr: TAddr, val: Cc128Cap) -> MemoryResult<()>
[src]
impl Memory<CcxCap<Cc128>> for CheriAggregateMemory
[src]
impl Memory<CcxCap<Cc128>> for CheriAggregateMemory
[src]Now we’ve defined MemoryOf<u8,u16,u32,u64>, combine them into a single Memory trait
fn range(&self) -> Range<usize>
[src]
fn as_any(&self) -> &dyn Any
[src]
fn load_u8(&mut self, addr: TAddr) -> MemoryResult<u8>
[src]
fn load_u16(&mut self, addr: TAddr) -> MemoryResult<u16>
[src]
fn load_u32(&mut self, addr: TAddr) -> MemoryResult<u32>
[src]
fn load_u64(&mut self, addr: TAddr) -> MemoryResult<u64>
[src]
fn store_u8(&mut self, addr: TAddr, val: u8) -> MemoryResult<()>
[src]
fn store_u16(&mut self, addr: TAddr, val: u16) -> MemoryResult<()>
[src]
fn store_u32(&mut self, addr: TAddr, val: u32) -> MemoryResult<()>
[src]
fn store_u64(&mut self, addr: TAddr, val: u64) -> MemoryResult<()>
[src]
impl MemoryOf<SafeTaggedCap, CcxCap<Cc128>> for CheriAggregateMemory
[src]
impl MemoryOf<SafeTaggedCap, CcxCap<Cc128>> for CheriAggregateMemory
[src]Impl a capability-aware view of memory for CHERI instructions e.g. a CHERI Load instruction, which is allowed to load capabilities, would use this version.
fn read(&mut self, cap: Cc128Cap) -> MemoryResult<SafeTaggedCap>
[src]
fn write(&mut self, cap: Cc128Cap, val: SafeTaggedCap) -> MemoryResult<()>
[src]
impl<TData> MemoryOf<TData, CcxCap<Cc128>> for CheriAggregateMemory where
AggregateMemory: MemoryOf<TData, u64>,
[src]
impl<TData> MemoryOf<TData, CcxCap<Cc128>> for CheriAggregateMemory where
AggregateMemory: MemoryOf<TData, u64>,
[src]Implement MemoryOf
fn read(&mut self, cap: Cc128Cap) -> MemoryResult<TData>
[src]
fn write(&mut self, cap: Cc128Cap, val: TData) -> MemoryResult<()>
[src]
impl<'a> VecMemInterface<u64, SafeTaggedCap> for CheriAggregateMemory
[src]
impl<'a> VecMemInterface<u64, SafeTaggedCap> for CheriAggregateMemory
[src]fn load_from_memory(
&mut self,
eew: Sew,
addr_provenance: (u64, Provenance)
) -> Result<SafeTaggedCap>
[src]
&mut self,
eew: Sew,
addr_provenance: (u64, Provenance)
) -> Result<SafeTaggedCap>
fn store_to_memory(
&mut self,
eew: Sew,
val: SafeTaggedCap,
addr_provenance: (u64, Provenance)
) -> Result<()>
[src]
&mut self,
eew: Sew,
val: SafeTaggedCap,
addr_provenance: (u64, Provenance)
) -> Result<()>