Struct simics_api_sys::x86_reg_access_interface

source ·
#[repr(C)]
pub struct x86_reg_access_interface {
Show 51 fields pub get_gpr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint) -> uint64>, pub set_gpr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint, val: uint64)>, pub get_rip: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint64>, pub set_rip: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, rip: uint64)>, pub get_rflags: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint64>, pub set_rflags: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, rflags: uint64)>, pub set_status_flags: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, flags: uint16)>, pub get_seg: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_seg_t) -> x86_seg_reg_t>, pub set_seg: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_seg_t, seg: x86_seg_reg_t)>, pub get_system_seg: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_system_seg_t) -> x86_system_seg_reg_t>, pub set_system_seg: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_system_seg_t, seg: x86_system_seg_reg_t)>, pub get_cr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_cr_t) -> uint64>, pub set_cr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_cr_t, val: uint64)>, pub get_efer: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint64>, pub set_efer: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, efer: uint64)>, pub get_xcr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_xcr_t) -> uint64>, pub set_xcr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_xcr_t, val: uint64)>, pub get_freg: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint) -> x86_fpu_reg_t>, pub set_freg: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint, freg: x86_fpu_reg_t)>, pub get_fpu_env: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_fpu_env_t>, pub set_fpu_env: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, state: x86_fpu_env_t)>, pub get_xmm: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint) -> xmm_reg_t>, pub set_xmm: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint, val: xmm_reg_t)>, pub get_ymm: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint) -> ymm_reg_t>, pub set_ymm: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint, val: ymm_reg_t)>, pub get_mxcsr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint32>, pub set_mxcsr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, mxcsr: uint32)>, pub get_dr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_dr_t) -> uint64>, pub set_dr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_dr_t, val: uint64)>, pub get_in_smm: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> bool>, pub set_in_smm: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: bool)>, pub get_smm_base: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint64>, pub set_smm_base: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: uint64)>, pub get_monitor_info: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_monitor_info_t>, pub set_monitor_info: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: x86_monitor_info_t)>, pub get_mwait_info: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_mwait_info_t>, pub set_mwait_info: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: x86_mwait_info_t)>, pub get_activity_state: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_activity_t>, pub set_activity_state: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: x86_activity_t)>, pub get_interruptibility_state: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_intstate_t>, pub set_interruptibility_state: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: x86_intstate_t)>, pub get_pending_debug_exc: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_pending_debug_exc_t>, pub set_pending_debug_exc: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: x86_pending_debug_exc_t)>, pub get_xmode_info: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_xmode_info_t>, pub get_exec_mode: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_exec_mode_t>, pub get_mxcsr_mask: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint32>, pub get_ext_state_dirty_bits: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint64>, pub or_ext_state_dirty_bits: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, dirty_bits: uint64)>, pub and_ext_state_dirty_bits: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, dirty_bits: uint64)>, pub get_pdpte: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, num: c_int) -> uint64>, pub set_pdpte: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, num: c_int, val: uint64)>,
}

Fields§

§get_gpr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint) -> uint64>§set_gpr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint, val: uint64)>§get_rip: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint64>§set_rip: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, rip: uint64)>§get_rflags: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint64>§set_rflags: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, rflags: uint64)>§set_status_flags: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, flags: uint16)>

Possibly faster method for setting only cf,pf,af,zf,sf,of

§get_seg: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_seg_t) -> x86_seg_reg_t>

Regular segment registers

§set_seg: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_seg_t, seg: x86_seg_reg_t)>§get_system_seg: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_system_seg_t) -> x86_system_seg_reg_t>

IDTR and GDTR

§set_system_seg: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_system_seg_t, seg: x86_system_seg_reg_t)>§get_cr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_cr_t) -> uint64>

Control registers

§set_cr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_cr_t, val: uint64)>§get_efer: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint64>§set_efer: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, efer: uint64)>§get_xcr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_xcr_t) -> uint64>§set_xcr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_xcr_t, val: uint64)>§get_freg: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint) -> x86_fpu_reg_t>

x87 FPU

§set_freg: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint, freg: x86_fpu_reg_t)>§get_fpu_env: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_fpu_env_t>§set_fpu_env: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, state: x86_fpu_env_t)>§get_xmm: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint) -> xmm_reg_t>

SIMD

§set_xmm: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint, val: xmm_reg_t)>§get_ymm: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint) -> ymm_reg_t>§set_ymm: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, index: c_uint, val: ymm_reg_t)>§get_mxcsr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint32>§set_mxcsr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, mxcsr: uint32)>§get_dr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_dr_t) -> uint64>

Debug registers

§set_dr: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, n: x86_dr_t, val: uint64)>§get_in_smm: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> bool>

SMM

§set_in_smm: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: bool)>§get_smm_base: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint64>§set_smm_base: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: uint64)>§get_monitor_info: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_monitor_info_t>

Monitor/Mwait

§set_monitor_info: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: x86_monitor_info_t)>§get_mwait_info: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_mwait_info_t>§set_mwait_info: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: x86_mwait_info_t)>§get_activity_state: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_activity_t>

Non-register state

§set_activity_state: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: x86_activity_t)>§get_interruptibility_state: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_intstate_t>§set_interruptibility_state: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: x86_intstate_t)>§get_pending_debug_exc: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_pending_debug_exc_t>

A debug exception is pending if triggered by the last instruction, but not yet taken.

§set_pending_debug_exc: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, val: x86_pending_debug_exc_t)>§get_xmode_info: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_xmode_info_t>

Derived state for fast/easy access

§get_exec_mode: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> x86_exec_mode_t>§get_mxcsr_mask: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint32>

This is configuration info. No need for a set method.

§get_ext_state_dirty_bits: Option<unsafe extern "C" fn(cpu: *mut conf_object_t) -> uint64>

Extension state dirty bit modification (for XSAVE)

§or_ext_state_dirty_bits: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, dirty_bits: uint64)>§and_ext_state_dirty_bits: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, dirty_bits: uint64)>§get_pdpte: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, num: c_int) -> uint64>

PDPTE registers used in PAE paging mode

§set_pdpte: Option<unsafe extern "C" fn(cpu: *mut conf_object_t, num: c_int, val: uint64)>

Trait Implementations§

source§

impl Clone for x86_reg_access_interface

source§

fn clone(&self) -> x86_reg_access_interface

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 x86_reg_access_interface

source§

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

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

impl Default for x86_reg_access_interface

source§

fn default() -> x86_reg_access_interface

Returns the “default value” for a type. Read more
source§

impl Hash for x86_reg_access_interface

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for x86_reg_access_interface

source§

fn cmp(&self, other: &x86_reg_access_interface) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for x86_reg_access_interface

source§

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

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

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

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

impl PartialOrd for x86_reg_access_interface

source§

fn partial_cmp(&self, other: &x86_reg_access_interface) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Copy for x86_reg_access_interface

source§

impl Eq for x86_reg_access_interface

source§

impl StructuralPartialEq for x86_reg_access_interface

Auto Trait Implementations§

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> 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<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

source§

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, U> TryFrom<U> for T
where U: Into<T>,

source§

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>,

source§

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.