Enum rsim::processor::elements::cheri::capability::Cc128 [−]
pub enum Cc128 {}
Defines the CC128 capability profile as an implementation of the CompressedCapability trait.
Empty enum, so it cannot be itself constructed. If you want a CC128 capability, instantiate Cc128Cap.
Derives Debug, Copy, Clone so that CcxCap
Trait Implementations
impl Clone for Cc128
impl Clone for Cc128
pub fn clone(&self) -> Cc128
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl CompressedCapability for Cc128
impl CompressedCapability for Cc128
type Length = u128
ccx_length_t Rust-land equivalent - should be a superset of Addr
type Offset = i128
ccx_offset_t Rust-land equivalent - should be a superset of Addr
type Addr = u64
ccx_addr_t equivalent
type FfiLength = u128
ccx_length_t C-land equivalent - should have a memory layout identical to the C ccx_length_t. This is separate from Length because for 128-bit types the Rust and C versions may not look the same. In practice, we just assume they are the same (see [crate::c_funcs] documentation). Read more
type FfiOffset = i128
ccx_offset_t C-land equivalent - should have a memory layout identical to the C ccx_offset_t. See Self::FfiLength for an explanation. Read more
pub const MAX_REPRESENTABLE_OTYPE: u32
The OTYPE field is 18 bits (108:91) in CC128
pub const OTYPE_UNSEALED: u32
pub const OTYPE_SENTRY: u32
pub const OTYPE_RESERVED2: u32
pub const OTYPE_RESERVED3: u32
pub const MAX_UNRESERVED_OTYPE: u32
pub fn compress_raw(cap: &CcxCap<Cc128>) -> u64
pub fn decompress_raw(pesbt: u64, cursor: u64, tag: bool) -> CcxCap<Cc128>
pub fn compress_mem(cap: &CcxCap<Cc128>) -> u64
pub fn decompress_mem(pesbt: u64, cursor: u64, tag: bool) -> CcxCap<Cc128>
pub fn get_uperms(cap: &CcxCap<Cc128>) -> u32
pub fn get_perms(cap: &CcxCap<Cc128>) -> u32
pub fn get_otype(cap: &CcxCap<Cc128>) -> u32
pub fn get_reserved(cap: &CcxCap<Cc128>) -> u8
pub fn get_flags(cap: &CcxCap<Cc128>) -> u8
pub fn update_uperms(cap: &mut CcxCap<Cc128>, value: u32)
pub fn update_perms(cap: &mut CcxCap<Cc128>, value: u32)
pub fn update_otype(cap: &mut CcxCap<Cc128>, value: u32)
pub fn update_reserved(cap: &mut CcxCap<Cc128>, value: u8)
pub fn update_flags(cap: &mut CcxCap<Cc128>, value: u8)
pub fn extract_bounds_bits(
pesbt: <Cc128 as CompressedCapability>::Addr
) -> CcxBoundsBits
pesbt: <Cc128 as CompressedCapability>::Addr
) -> CcxBoundsBits
pub fn set_bounds(
cap: &mut CcxCap<Cc128>,
req_base: <Cc128 as CompressedCapability>::Addr,
req_top: <Cc128 as CompressedCapability>::Length
) -> bool
cap: &mut CcxCap<Cc128>,
req_base: <Cc128 as CompressedCapability>::Addr,
req_top: <Cc128 as CompressedCapability>::Length
) -> bool
pub fn is_representable_cap_exact(cap: &CcxCap<Cc128>) -> bool
pub fn is_representable_new_addr(
sealed: bool,
base: <Cc128 as CompressedCapability>::Addr,
length: <Cc128 as CompressedCapability>::Length,
cursor: <Cc128 as CompressedCapability>::Addr,
new_cursor: <Cc128 as CompressedCapability>::Addr
) -> bool
sealed: bool,
base: <Cc128 as CompressedCapability>::Addr,
length: <Cc128 as CompressedCapability>::Length,
cursor: <Cc128 as CompressedCapability>::Addr,
new_cursor: <Cc128 as CompressedCapability>::Addr
) -> bool
pub fn make_max_perms_cap(
base: <Cc128 as CompressedCapability>::Addr,
cursor: <Cc128 as CompressedCapability>::Addr,
top: <Cc128 as CompressedCapability>::Length
) -> CcxCap<Cc128>
base: <Cc128 as CompressedCapability>::Addr,
cursor: <Cc128 as CompressedCapability>::Addr,
top: <Cc128 as CompressedCapability>::Length
) -> CcxCap<Cc128>
pub fn get_representable_length(
length: <Cc128 as CompressedCapability>::Length
) -> <Cc128 as CompressedCapability>::Length
length: <Cc128 as CompressedCapability>::Length
) -> <Cc128 as CompressedCapability>::Length
pub fn get_required_alignment(
length: <Cc128 as CompressedCapability>::Length
) -> <Cc128 as CompressedCapability>::Length
length: <Cc128 as CompressedCapability>::Length
) -> <Cc128 as CompressedCapability>::Length
pub fn get_alignment_mask(
length: <Cc128 as CompressedCapability>::Length
) -> <Cc128 as CompressedCapability>::Length
length: <Cc128 as CompressedCapability>::Length
) -> <Cc128 as CompressedCapability>::Length
pub const PERM_GLOBAL: u32
pub const PERM_EXECUTE: u32
pub const PERM_LOAD: u32
pub const PERM_STORE: u32
pub const PERM_LOAD_CAP: u32
pub const PERM_STORE_CAP: u32
pub const PERM_STORE_LOCAL: u32
pub const PERM_SEAL: u32
pub const PERM_CINVOKE: u32
pub const PERM_UNSEAL: u32
pub const PERM_ACCESS_SYS_REGS: u32
pub const PERM_SETCID: u32
impl Copy for Cc128
Auto Trait Implementations
impl RefUnwindSafe for Cc128
impl Send for Cc128
impl Sync for Cc128
impl Unpin for Cc128
impl UnwindSafe for Cc128
Blanket Implementations
impl<T> CheriRVFuncs<T> for T where
T: CompressedCapability,
<T as CompressedCapability>::Offset: TryInto<<T as CompressedCapability>::Addr>,
impl<T> CheriRVFuncs<T> for T where
T: CompressedCapability,
<T as CompressedCapability>::Offset: TryInto<<T as CompressedCapability>::Addr>,
type Cap = CcxCap<T>
type CapAddrInt = <T as CompressedCapability>::Addr
type CapAddrBits = <T as CompressedCapability>::Addr
type CapLen = <T as CompressedCapability>::Length
type OType = u32
type Perms = u32
type Flags = u8
pub fn getCapBounds(
c: &<T as CheriRVFuncs<T>>::Cap
) -> (<T as CheriRVFuncs<T>>::CapAddrInt, <T as CheriRVFuncs<T>>::CapLen)
c: &<T as CheriRVFuncs<T>>::Cap
) -> (<T as CheriRVFuncs<T>>::CapAddrInt, <T as CheriRVFuncs<T>>::CapLen)
pub fn getCapBaseBits(
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::CapAddrBits
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::CapAddrBits
pub fn getCapTop(
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::CapLen
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::CapLen
pub fn getCapLength(
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::CapLen
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::CapLen
pub fn inCapBounds(
c: &<T as CheriRVFuncs<T>>::Cap,
addr: <T as CheriRVFuncs<T>>::CapAddrBits,
size: <T as CheriRVFuncs<T>>::CapLen
) -> bool
c: &<T as CheriRVFuncs<T>>::Cap,
addr: <T as CheriRVFuncs<T>>::CapAddrBits,
size: <T as CheriRVFuncs<T>>::CapLen
) -> bool
pub fn getCapCursor(
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::CapAddrInt
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::CapAddrInt
pub fn getCapOffsetBits(
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::CapAddrBits
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::CapAddrBits
pub fn setCapBounds(
c: &<T as CheriRVFuncs<T>>::Cap,
base: <T as CheriRVFuncs<T>>::CapAddrBits,
top: <T as CheriRVFuncs<T>>::CapLen
) -> (bool, <T as CheriRVFuncs<T>>::Cap)
c: &<T as CheriRVFuncs<T>>::Cap,
base: <T as CheriRVFuncs<T>>::CapAddrBits,
top: <T as CheriRVFuncs<T>>::CapLen
) -> (bool, <T as CheriRVFuncs<T>>::Cap)
pub fn setCapAddr(
c: &<T as CheriRVFuncs<T>>::Cap,
addr: <T as CheriRVFuncs<T>>::CapAddrBits
) -> (bool, <T as CheriRVFuncs<T>>::Cap)
c: &<T as CheriRVFuncs<T>>::Cap,
addr: <T as CheriRVFuncs<T>>::CapAddrBits
) -> (bool, <T as CheriRVFuncs<T>>::Cap)
pub fn setCapOffset(
c: &<T as CheriRVFuncs<T>>::Cap,
offset: <T as CheriRVFuncs<T>>::CapAddrBits
) -> (bool, <T as CheriRVFuncs<T>>::Cap)
c: &<T as CheriRVFuncs<T>>::Cap,
offset: <T as CheriRVFuncs<T>>::CapAddrBits
) -> (bool, <T as CheriRVFuncs<T>>::Cap)
pub fn incCapOffset(
c: &<T as CheriRVFuncs<T>>::Cap,
offset_inc: <T as CheriRVFuncs<T>>::CapAddrBits
) -> (bool, <T as CheriRVFuncs<T>>::Cap)
c: &<T as CheriRVFuncs<T>>::Cap,
offset_inc: <T as CheriRVFuncs<T>>::CapAddrBits
) -> (bool, <T as CheriRVFuncs<T>>::Cap)
pub fn getRepresentableAlignmentMask(
val: <T as CheriRVFuncs<T>>::CapLen
) -> <T as CheriRVFuncs<T>>::CapLen
val: <T as CheriRVFuncs<T>>::CapLen
) -> <T as CheriRVFuncs<T>>::CapLen
pub fn getRepresentableLength(
val: <T as CheriRVFuncs<T>>::CapLen
) -> <T as CheriRVFuncs<T>>::CapLen
val: <T as CheriRVFuncs<T>>::CapLen
) -> <T as CheriRVFuncs<T>>::CapLen
pub fn sealCap(
c: &<T as CheriRVFuncs<T>>::Cap,
otype: <T as CheriRVFuncs<T>>::OType
) -> <T as CheriRVFuncs<T>>::Cap
c: &<T as CheriRVFuncs<T>>::Cap,
otype: <T as CheriRVFuncs<T>>::OType
) -> <T as CheriRVFuncs<T>>::Cap
pub fn unsealCap(c: &<T as CheriRVFuncs<T>>::Cap) -> <T as CheriRVFuncs<T>>::Cap
pub fn isCapSealed(c: &<T as CheriRVFuncs<T>>::Cap) -> bool
pub fn hasReservedOType(c: &<T as CheriRVFuncs<T>>::Cap) -> bool
pub fn invalidateCap(
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::Cap
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::Cap
pub fn getCapPerms(
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::Perms
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::Perms
pub fn setCapPerms(
c: &<T as CheriRVFuncs<T>>::Cap,
perms: <T as CheriRVFuncs<T>>::Perms
) -> <T as CheriRVFuncs<T>>::Cap
c: &<T as CheriRVFuncs<T>>::Cap,
perms: <T as CheriRVFuncs<T>>::Perms
) -> <T as CheriRVFuncs<T>>::Cap
pub fn getCapFlags(
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::Flags
c: &<T as CheriRVFuncs<T>>::Cap
) -> <T as CheriRVFuncs<T>>::Flags
pub fn setCapFlags(
c: &<T as CheriRVFuncs<T>>::Cap,
flags: <T as CheriRVFuncs<T>>::Flags
) -> <T as CheriRVFuncs<T>>::Cap
c: &<T as CheriRVFuncs<T>>::Cap,
flags: <T as CheriRVFuncs<T>>::Flags
) -> <T as CheriRVFuncs<T>>::Cap