Struct simics_api_sys::bindings::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
impl Clone for x86_reg_access_interface
source§fn clone(&self) -> x86_reg_access_interface
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)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for x86_reg_access_interface
impl Debug for x86_reg_access_interface
source§impl Default for x86_reg_access_interface
impl Default for x86_reg_access_interface
source§fn default() -> x86_reg_access_interface
fn default() -> x86_reg_access_interface
Returns the “default value” for a type. Read more
source§impl Hash for x86_reg_access_interface
impl Hash for x86_reg_access_interface
source§impl Ord for x86_reg_access_interface
impl Ord for x86_reg_access_interface
source§fn cmp(&self, other: &x86_reg_access_interface) -> Ordering
fn cmp(&self, other: &x86_reg_access_interface) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
source§impl PartialEq for x86_reg_access_interface
impl PartialEq for x86_reg_access_interface
source§impl PartialOrd for x86_reg_access_interface
impl PartialOrd for x86_reg_access_interface
impl Copy for x86_reg_access_interface
impl Eq for x86_reg_access_interface
impl StructuralPartialEq for x86_reg_access_interface
Auto Trait Implementations§
impl Freeze for x86_reg_access_interface
impl RefUnwindSafe for x86_reg_access_interface
impl Send for x86_reg_access_interface
impl Sync for x86_reg_access_interface
impl Unpin for x86_reg_access_interface
impl UnwindSafe for x86_reg_access_interface
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)