pub struct Cr4(/* private fields */);
Expand description

Control Register 4

Implementations§

source§

impl Cr4

source

pub const VIRTUAL_8086_MODE_EXTENSIONS: Pack64<bool, Self> = _

Virtual 8086 Mode Extensions (VME).

source

pub const PROTECTED_MODE_VIRTUAL_INTERRUPTS: Pack64<bool, Self> = _

Protected-Mode Virtual Interrupts (PVI).

source

pub const TIME_STAMP_DISABLE: Pack64<bool, Self> = _

Time Stamp Disable (TSD).

source

pub const DEBUGGING_EXTENSIONS: Pack64<bool, Self> = _

Debugging Extensions (DE).

source

pub const PAGE_SIZE_EXTENSION: Pack64<bool, Self> = _

Page Size Extension (PSE).

This enables the use of 4MB physical pages; always ignored in long mode.

source

pub const PHYSICAL_ADDRESS_EXTENSION: Pack64<bool, Self> = _

Physical Address Extension (PAE).

Enables the use of 2MB physical pages. Required in long mode.

source

pub const MACHINE_CHECK_EXCEPTION: Pack64<bool, Self> = _

Machine Check Exception Enable (MCE).

source

pub const PAGE_GLOBAL_ENABLE: Pack64<bool, Self> = _

Page Global Enable (PGE).

Allows marking pages as global.

source

pub const PERFORMANCE_MONITOR_COUNTER: Pack64<bool, Self> = _

Performance-Monitoring Counter Enable (PCE).

Allows the

source

pub const OSFXSR: Pack64<bool, Self> = _

Operating System FXSAVE/FXRSTOR Support

If enabled, the FXSAVE and FXRSTOR instructions are available in both 64-bit and compatibility mode.

source

pub const OSXMMEXCPT: Pack64<bool, Self> = _

Operating System Support for Unmasked Floating-Point Exceptions

source

pub const USER_MODE_INSTRUCTION_PREVENTION: Pack64<bool, Self> = _

User-Mode Instruction Prevention (UMIP).

If set, SGDT, SIDT, SLDT, SMSW, and STR, instructions will result in a general protection fault (#GP) when in ring > 0.

source

pub const VIRTUAL_MACHINE_EXTENSIONS: Pack64<bool, Self> = _

Virtual Machine Extensions (VMX) Enable

Note: this extension is INTEL ONLY.

source

pub const SAFER_MODE_EXTENSIONS: Pack64<bool, Self> = _

Safer Mode Extensions (SMX) Enable

Note: this extension is INTEL ONLY.

source

pub const FSGSBASE: Pack64<bool, Self> = _

FSBASE/GSBASE Enable.

Enables the instructions RDFSBASE,RDGSBASE, WRFSBASE, and WRGSBASE.

source

pub const PCID_ENABLE: Pack64<bool, Self> = _

PCID Enable (PCIDE).

source

pub const OSXSAVE: Pack64<bool, Self> = _

OS Support for XSAVE and Processor Extended States Enable

source

pub const SUPERVISOR_EXECUTION_PROTECTION: Pack64<bool, Self> = _

Supervisor Mode Execution Protection Enable (SMEP).

source

pub const SUPERVISOR_ACCESS_PREVENTION: Pack64<bool, Self> = _

Supervisor Mode Access Prevention Enable (`SMAP)

source

pub const PROTECTION_KEY_USER: Pack64<bool, Self> = _

Protection Key (Used) Enable (PKE).

Enables protection keys for user-mode pages.

source

pub const CONTROL_FLOW_ENFORCEMENT: Pack64<bool, Self> = _

Control-flow Enforcement Technology Enable (CET).

source

pub const PROTECTION_KEY_SUPERVISOR: Pack64<bool, Self> = _

Protection Key (Supervisor) Enable (PKS).

Enables protection keys for user-mode pages.

source

pub const fn from_bits(bits: u64) -> Self

Constructs a new instance of Self from the provided raw bits.

source

pub const fn new() -> Self

Constructs a new instance of Self with all bits set to 0.

source

pub const fn bits(self) -> u64

Returns the raw bit representatiion of self as an integer.

source

pub fn with<T>(self, field: Pack64<T, Self>, value: T) -> Self
where T: FromBits<u64>,

Packs the bit representation of value into self at the bit range designated by field, returning a new bitfield.

source

pub fn set<T>(&mut self, field: Pack64<T, Self>, value: T) -> &mut Self
where T: FromBits<u64>,

Packs the bit representation of value into self at the range designated by field, mutating self in place.

source

pub fn get<T>(self, field: Pack64<T, Self>) -> T
where T: FromBits<u64>,

Unpacks the bit range represented by field from self, and converts it into a T-typed value.

Panics

This method panics if self does not contain a valid bit pattern for a T-typed value, as determined by T’s FromBits::try_from_bits implementation.

source

pub fn try_get<T>(self, field: Pack64<T, Self>) -> Result<T, T::Error>
where T: FromBits<u64>,

Unpacks the bit range represented by field from self and attempts to convert it into a T-typed value.

Returns
  • Ok(T) if a T-typed value could be constructed from the bits in src
  • Err(T::Error) if src does not contain a valid bit pattern for a T-typed value, as determined by T’s [FromBits::try_from_bits implementation.
source

pub fn assert_valid()

Asserts that all the packing specs for this type are valid.

This is intended to be used in unit tests.

source

pub fn display_ascii(&self) -> impl Display

Returns a value that formats this bitfield in a multi-line format, using only ASCII characters.

This is equivalent to formatting this bitfield using a {} display specifier, but will never use Unicode box-drawing characters, even when an upstream formatter uses the {:#} fmt::Display specifier. This is intended for use on platforms where Unicode box drawing characters are never available.

source

pub fn display_unicode(&self) -> impl Display

Returns a value that formats this bitfield in a multi-line format, always using Unicode box-drawing characters.

This is equivalent to formatting this bitfield using a {:#} format specifier, but will always use Unicode box-drawing characters, even when an upstream formatter uses the {} fmt::Display specifier.

source§

impl Cr4

source

pub fn read() -> Self

source

pub unsafe fn write(value: Self)

Safety

Writing to CR4 can do stuff.

source

pub unsafe fn update(f: impl FnOnce(Self) -> Self)

Safety

Writing to CR4 can do stuff.

Trait Implementations§

source§

impl Binary for Cr4

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Clone for Cr4

source§

fn clone(&self) -> Cr4

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Cr4

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Cr4

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Cr4> for u64

source§

fn from(Cr4: Cr4) -> Self

Converts to this type from the input type.
source§

impl From<u64> for Cr4

source§

fn from(val: u64) -> Self

Converts to this type from the input type.
source§

impl LowerHex for Cr4

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl PartialEq for Cr4

source§

fn eq(&self, other: &Cr4) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl UpperHex for Cr4

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for Cr4

source§

impl Eq for Cr4

source§

impl StructuralEq for Cr4

source§

impl StructuralPartialEq for Cr4

Auto Trait Implementations§

§

impl RefUnwindSafe for Cr4

§

impl Send for Cr4

§

impl Sync for Cr4

§

impl Unpin for Cr4

§

impl UnwindSafe for Cr4

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.