pub struct Efer(/* private fields */);
Expand description
Bit flags for the Extended Feature Enable Register (EFER) Msr
.
This MSR was added by AMD in the K6 processor, and became part of the architecture in AMD64. It controls features related to entering long mode.
To access the EFER, use the Msr::ia32_efer
constructor.
Implementations§
Source§impl Efer
impl Efer
Sourcepub const SYSTEM_CALL_EXTENSIONS: Pack64<bool, Self>
pub const SYSTEM_CALL_EXTENSIONS: Pack64<bool, Self>
System Call Extensions (SCE).
This enables the SYSCALL
and SYSRET
instructions.
Sourcepub const LONG_MODE_ENABLE: Pack64<bool, Self>
pub const LONG_MODE_ENABLE: Pack64<bool, Self>
Long Mode Enable (LME).
Setting this bit enables long mode.
Sourcepub const LONG_MODE_ACTIVE: Pack64<bool, Self>
pub const LONG_MODE_ACTIVE: Pack64<bool, Self>
Long Mode Active (LMA).
This bit is set if the processor is in long mode.
Sourcepub const NO_EXECUTE_ENABLE: Pack64<bool, Self>
pub const NO_EXECUTE_ENABLE: Pack64<bool, Self>
No-Execute Enable (NXE).
Sourcepub const SECURE_VM_ENABLE: Pack64<bool, Self>
pub const SECURE_VM_ENABLE: Pack64<bool, Self>
Secure Virtual Machine Enable (SVME).
Sourcepub const LONG_MODE_SEGMENT_LIMIT_ENABLE: Pack64<bool, Self>
pub const LONG_MODE_SEGMENT_LIMIT_ENABLE: Pack64<bool, Self>
Long Mode Segment Limit Enable (LMSLE).
Sourcepub const FAST_FXSAVE_FXRSTOR: Pack64<bool, Self>
pub const FAST_FXSAVE_FXRSTOR: Pack64<bool, Self>
Fast FXSAVE
/FXRSTOR
(FFXSR).
Sourcepub const TRANSLATION_CACHE_EXTENSION: Pack64<bool, Self>
pub const TRANSLATION_CACHE_EXTENSION: Pack64<bool, Self>
Translation Cache Extension (TCE).
Sourcepub const fn from_bits(bits: u64) -> Self
pub const fn from_bits(bits: u64) -> Self
Constructs a new instance of Self
from the provided raw bits.
Sourcepub fn with<T>(self, field: Pack64<T, Self>, value: T) -> Self
pub fn with<T>(self, field: Pack64<T, Self>, value: T) -> Self
Packs the bit representation of value
into self
at the bit
range designated by field
, returning a new bitfield.
Sourcepub fn set<T>(&mut self, field: Pack64<T, Self>, value: T) -> &mut Self
pub fn set<T>(&mut self, field: Pack64<T, Self>, value: T) -> &mut Self
Packs the bit representation of value
into self
at the range
designated by field
, mutating self
in place.
Sourcepub fn get<T>(self, field: Pack64<T, Self>) -> T
pub fn get<T>(self, field: Pack64<T, Self>) -> T
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.
Sourcepub fn try_get<T>(self, field: Pack64<T, Self>) -> Result<T, T::Error>
pub fn try_get<T>(self, field: Pack64<T, Self>) -> Result<T, T::Error>
Unpacks the bit range represented by field
from self
and attempts to convert it into a T
-typed value.
§Returns
Ok(T)
if aT
-typed value could be constructed from the bits insrc
Err(T::Error)
ifsrc
does not contain a valid bit pattern for aT
-typed value, as determined byT
’s [FromBits::try_from_bits
implementation.
Sourcepub fn assert_valid()
pub fn assert_valid()
Asserts that all the packing specs for this type are valid.
This is intended to be used in unit tests.
Sourcepub fn display_ascii(&self) -> impl Display
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.
Sourcepub fn display_unicode(&self) -> impl Display
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.