Enum rsim::processor::elements::cheri::SafeTaggedCap [−][src]
Enumeration that stores either raw data or a valid capability. The capability inside ValidCap(Cc128Cap) will always have its tag bit = True as long as SafeTaggedCap::ValidCap is not created manually.
Variants
ValidCap(Cc128Cap)Implementations
impl SafeTaggedCap[src]
impl SafeTaggedCap[src]pub fn from_integer(data: u128) -> Self[src]
pub fn to_integer(&self) -> u128[src]
pub fn from_tagged_mem(top: u64, bot: u64, tag: bool) -> Self[src]
pub fn from_cap(cap: Cc128Cap) -> Self[src]
Converts a capability into a SafeTaggedCap. If the capability is valid (has tag bit set), returns ValidCap If the capability is invalid, returns RawData containing the compressed-raw representation
pub fn to_cap(&self) -> Cc128Cap[src]
Converts a SafeTaggedCap to a Cc128Cap. If ValidCap, just returns the cap. If RawData, decompresses using raw representation and tag=false.
pub fn unwrap_cap(&self) -> Cc128Cap[src]
Converts a SafeTaggedCap to a Cc128Cap with tag bit = true. Panics if the SafeTaggedCap is not a ValidCap.
Trait Implementations
impl Clone for SafeTaggedCap[src]
impl Clone for SafeTaggedCap[src]fn clone(&self) -> SafeTaggedCap[src]
pub fn clone_from(&mut self, source: &Self)1.0.0[src]
impl Default for SafeTaggedCap[src]
impl Default for SafeTaggedCap[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 PartialEq<SafeTaggedCap> for SafeTaggedCap[src]
impl PartialEq<SafeTaggedCap> for SafeTaggedCap[src]fn eq(&self, other: &SafeTaggedCap) -> bool[src]
fn ne(&self, other: &SafeTaggedCap) -> bool[src]
impl RegisterFile<SafeTaggedCap> for CheriRV64RegisterFile[src]
impl RegisterFile<SafeTaggedCap> for CheriRV64RegisterFile[src]fn read(&mut self, idx: u8) -> Result<SafeTaggedCap, RegisterFileError>[src]
fn write(
&mut self,
idx: u8,
val: SafeTaggedCap
) -> Result<(), RegisterFileError>[src]
&mut self,
idx: u8,
val: SafeTaggedCap
) -> Result<(), RegisterFileError>
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<()>
impl<'a> VecMemInterface<u64, SafeTaggedCap> for IntegerModeCheriAggregateMemory<'a>[src]
impl<'a> VecMemInterface<u64, SafeTaggedCap> for IntegerModeCheriAggregateMemory<'a>[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<()>
impl VectorRegisterFile<SafeTaggedCap> for CheriVectorRegisterFile[src]
impl VectorRegisterFile<SafeTaggedCap> for CheriVectorRegisterFile[src]fn load_vreg(&mut self, vs: u8) -> Result<SafeTaggedCap>[src]
fn load_vreg_int(&mut self, vs: u8) -> Result<u128>[src]
fn store_vreg(&mut self, vd: u8, val: SafeTaggedCap) -> Result<()>[src]
fn store_vreg_int(&mut self, vd: u8, val: u128) -> Result<()>[src]
fn load_vreg_elem(
&self,
eew: Sew,
vd_base: u8,
idx_from_base: u32
) -> Result<SafeTaggedCap>[src]
&self,
eew: Sew,
vd_base: u8,
idx_from_base: u32
) -> Result<SafeTaggedCap>
fn load_vreg_elem_int(
&self,
eew: Sew,
vd_base: u8,
idx_from_base: u32
) -> Result<u128>[src]
&self,
eew: Sew,
vd_base: u8,
idx_from_base: u32
) -> Result<u128>
fn store_vreg_elem(
&mut self,
eew: Sew,
vd_base: u8,
idx_from_base: u32,
val: SafeTaggedCap
) -> Result<()>[src]
&mut self,
eew: Sew,
vd_base: u8,
idx_from_base: u32,
val: SafeTaggedCap
) -> Result<()>
fn store_vreg_elem_int(
&mut self,
eew: Sew,
vd_base: u8,
idx_from_base: u32,
val: u128
) -> Result<()>[src]
&mut self,
eew: Sew,
vd_base: u8,
idx_from_base: u32,
val: u128
) -> Result<()>