Type Alias simics_api_sys::x86_reg_access_interface_t

source ·
pub type x86_reg_access_interface_t = x86_reg_access_interface;

Aliased Type§

struct x86_reg_access_interface_t {
Show 51 fields pub get_gpr: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32) -> u64>, pub set_gpr: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32, _: u64)>, pub get_rip: Option<unsafe extern "C" fn(_: *mut conf_object) -> u64>, pub set_rip: Option<unsafe extern "C" fn(_: *mut conf_object, _: u64)>, pub get_rflags: Option<unsafe extern "C" fn(_: *mut conf_object) -> u64>, pub set_rflags: Option<unsafe extern "C" fn(_: *mut conf_object, _: u64)>, pub set_status_flags: Option<unsafe extern "C" fn(_: *mut conf_object, _: u16)>, pub get_seg: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_seg_t) -> x86_seg_reg_t>, pub set_seg: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_seg_t, _: x86_seg_reg_t)>, pub get_system_seg: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_system_seg_t) -> x86_system_seg_reg_t>, pub set_system_seg: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_system_seg_t, _: x86_system_seg_reg_t)>, pub get_cr: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_cr_t) -> u64>, pub set_cr: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_cr_t, _: u64)>, pub get_efer: Option<unsafe extern "C" fn(_: *mut conf_object) -> u64>, pub set_efer: Option<unsafe extern "C" fn(_: *mut conf_object, _: u64)>, pub get_xcr: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_xcr_t) -> u64>, pub set_xcr: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_xcr_t, _: u64)>, pub get_freg: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32) -> x86_fpu_reg_t>, pub set_freg: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32, _: x86_fpu_reg_t)>, pub get_fpu_env: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_fpu_env_t>, pub set_fpu_env: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_fpu_env_t)>, pub get_xmm: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32) -> xmm_reg_t>, pub set_xmm: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32, _: xmm_reg_t)>, pub get_ymm: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32) -> ymm_reg_t>, pub set_ymm: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32, _: ymm_reg_t)>, pub get_mxcsr: Option<unsafe extern "C" fn(_: *mut conf_object) -> u32>, pub set_mxcsr: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32)>, pub get_dr: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_dr_t) -> u64>, pub set_dr: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_dr_t, _: u64)>, pub get_in_smm: Option<unsafe extern "C" fn(_: *mut conf_object) -> bool>, pub set_in_smm: Option<unsafe extern "C" fn(_: *mut conf_object, _: bool)>, pub get_smm_base: Option<unsafe extern "C" fn(_: *mut conf_object) -> u64>, pub set_smm_base: Option<unsafe extern "C" fn(_: *mut conf_object, _: u64)>, pub get_monitor_info: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_monitor_info_t>, pub set_monitor_info: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_monitor_info_t)>, pub get_mwait_info: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_mwait_info_t>, pub set_mwait_info: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_mwait_info_t)>, pub get_activity_state: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_activity_t>, pub set_activity_state: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_activity_t)>, pub get_interruptibility_state: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_intstate_t>, pub set_interruptibility_state: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_intstate_t)>, pub get_pending_debug_exc: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_pending_debug_exc_t>, pub set_pending_debug_exc: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_pending_debug_exc_t)>, pub get_xmode_info: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_xmode_info_t>, pub get_exec_mode: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_exec_mode_t>, pub get_mxcsr_mask: Option<unsafe extern "C" fn(_: *mut conf_object) -> u32>, pub get_ext_state_dirty_bits: Option<unsafe extern "C" fn(_: *mut conf_object) -> u64>, pub or_ext_state_dirty_bits: Option<unsafe extern "C" fn(_: *mut conf_object, _: u64)>, pub and_ext_state_dirty_bits: Option<unsafe extern "C" fn(_: *mut conf_object, _: u64)>, pub get_pdpte: Option<unsafe extern "C" fn(_: *mut conf_object, _: i32) -> u64>, pub set_pdpte: Option<unsafe extern "C" fn(_: *mut conf_object, _: i32, _: u64)>,
}

Fields§

§get_gpr: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32) -> u64>§set_gpr: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32, _: u64)>§get_rip: Option<unsafe extern "C" fn(_: *mut conf_object) -> u64>§set_rip: Option<unsafe extern "C" fn(_: *mut conf_object, _: u64)>§get_rflags: Option<unsafe extern "C" fn(_: *mut conf_object) -> u64>§set_rflags: Option<unsafe extern "C" fn(_: *mut conf_object, _: u64)>§set_status_flags: Option<unsafe extern "C" fn(_: *mut conf_object, _: u16)>

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

§get_seg: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_seg_t) -> x86_seg_reg_t>

Regular segment registers

§set_seg: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_seg_t, _: x86_seg_reg_t)>§get_system_seg: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_system_seg_t) -> x86_system_seg_reg_t>

IDTR and GDTR

§set_system_seg: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_system_seg_t, _: x86_system_seg_reg_t)>§get_cr: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_cr_t) -> u64>

Control registers

§set_cr: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_cr_t, _: u64)>§get_efer: Option<unsafe extern "C" fn(_: *mut conf_object) -> u64>§set_efer: Option<unsafe extern "C" fn(_: *mut conf_object, _: u64)>§get_xcr: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_xcr_t) -> u64>§set_xcr: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_xcr_t, _: u64)>§get_freg: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32) -> x86_fpu_reg_t>

x87 FPU

§set_freg: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32, _: x86_fpu_reg_t)>§get_fpu_env: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_fpu_env_t>§set_fpu_env: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_fpu_env_t)>§get_xmm: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32) -> xmm_reg_t>

SIMD

§set_xmm: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32, _: xmm_reg_t)>§get_ymm: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32) -> ymm_reg_t>§set_ymm: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32, _: ymm_reg_t)>§get_mxcsr: Option<unsafe extern "C" fn(_: *mut conf_object) -> u32>§set_mxcsr: Option<unsafe extern "C" fn(_: *mut conf_object, _: u32)>§get_dr: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_dr_t) -> u64>

Debug registers

§set_dr: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_dr_t, _: u64)>§get_in_smm: Option<unsafe extern "C" fn(_: *mut conf_object) -> bool>

SMM

§set_in_smm: Option<unsafe extern "C" fn(_: *mut conf_object, _: bool)>§get_smm_base: Option<unsafe extern "C" fn(_: *mut conf_object) -> u64>§set_smm_base: Option<unsafe extern "C" fn(_: *mut conf_object, _: u64)>§get_monitor_info: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_monitor_info_t>

Monitor/Mwait

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

Non-register state

§set_activity_state: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_activity_t)>§get_interruptibility_state: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_intstate_t>§set_interruptibility_state: Option<unsafe extern "C" fn(_: *mut conf_object, _: x86_intstate_t)>§get_pending_debug_exc: Option<unsafe extern "C" fn(_: *mut conf_object) -> 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(_: *mut conf_object, _: x86_pending_debug_exc_t)>§get_xmode_info: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_xmode_info_t>

Derived state for fast/easy access

§get_exec_mode: Option<unsafe extern "C" fn(_: *mut conf_object) -> x86_exec_mode_t>§get_mxcsr_mask: Option<unsafe extern "C" fn(_: *mut conf_object) -> u32>

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

§get_ext_state_dirty_bits: Option<unsafe extern "C" fn(_: *mut conf_object) -> u64>

Extension state dirty bit modification (for XSAVE)

§or_ext_state_dirty_bits: Option<unsafe extern "C" fn(_: *mut conf_object, _: u64)>§and_ext_state_dirty_bits: Option<unsafe extern "C" fn(_: *mut conf_object, _: u64)>§get_pdpte: Option<unsafe extern "C" fn(_: *mut conf_object, _: i32) -> u64>

PDPTE registers used in PAE paging mode

§set_pdpte: Option<unsafe extern "C" fn(_: *mut conf_object, _: i32, _: u64)>