@@ -48,18 +48,11 @@ use mshv_bindings::{
4848 hv_partition_property_code_HV_PARTITION_PROPERTY_SYNTHETIC_PROC_FEATURES,
4949 hv_partition_synthetic_processor_features,
5050} ;
51- #[ cfg( feature = "trace_guest" ) ]
52- use mshv_bindings:: {
53- hv_register_name, hv_register_name_HV_X64_REGISTER_RAX, hv_register_name_HV_X64_REGISTER_RBP,
54- hv_register_name_HV_X64_REGISTER_RCX, hv_register_name_HV_X64_REGISTER_RSP,
55- } ;
5651use mshv_ioctls:: { Mshv , VcpuFd , VmFd } ;
5752use tracing:: { Span , instrument} ;
5853#[ cfg( crashdump) ]
5954use { super :: crashdump, std:: path:: Path } ;
6055
61- #[ cfg( feature = "trace_guest" ) ]
62- use super :: TraceRegister ;
6356use super :: fpu:: { FP_CONTROL_WORD_DEFAULT , FP_TAG_WORD_DEFAULT , MXCSR_DEFAULT } ;
6457#[ cfg( gdb) ]
6558use super :: gdb:: {
@@ -73,6 +66,8 @@ use super::{
7366use super :: { HyperlightExit , Hypervisor , InterruptHandle , LinuxInterruptHandle , VirtualCPU } ;
7467#[ cfg( gdb) ]
7568use crate :: HyperlightError ;
69+ #[ cfg( feature = "trace_guest" ) ]
70+ use crate :: hypervisor:: arch:: X86_64Regs ;
7671use crate :: hypervisor:: get_memory_access_violation;
7772use crate :: mem:: memory_region:: { MemoryRegion , MemoryRegionFlags } ;
7873use crate :: mem:: ptr:: { GuestPtr , RawPtr } ;
@@ -93,7 +88,8 @@ mod debug {
9388
9489 use super :: mshv_bindings:: hv_x64_exception_intercept_message;
9590 use super :: { HypervLinuxDriver , * } ;
96- use crate :: hypervisor:: gdb:: { DebugMsg , DebugResponse , VcpuStopReason , X86_64Regs } ;
91+ use crate :: hypervisor:: arch:: X86_64Regs ;
92+ use crate :: hypervisor:: gdb:: { DebugMsg , DebugResponse , VcpuStopReason } ;
9793 use crate :: mem:: shared_mem:: HostSharedMemory ;
9894 use crate :: sandbox:: mem_mgr:: MemMgrWrapper ;
9995 use crate :: { Result , new_error} ;
@@ -564,19 +560,6 @@ impl Debug for HypervLinuxDriver {
564560 }
565561}
566562
567- #[ cfg( feature = "trace_guest" ) ]
568- impl From < TraceRegister > for hv_register_name {
569- fn from ( r : TraceRegister ) -> Self {
570- match r {
571- TraceRegister :: RAX => hv_register_name_HV_X64_REGISTER_RAX,
572- TraceRegister :: RCX => hv_register_name_HV_X64_REGISTER_RCX,
573- TraceRegister :: RIP => hv_register_name_HV_X64_REGISTER_RIP,
574- TraceRegister :: RSP => hv_register_name_HV_X64_REGISTER_RSP,
575- TraceRegister :: RBP => hv_register_name_HV_X64_REGISTER_RBP,
576- }
577- }
578- }
579-
580563impl Hypervisor for HypervLinuxDriver {
581564 #[ instrument( err( Debug ) , skip_all, parent = Span :: current( ) , level = "Trace" ) ]
582565 fn initialise (
@@ -1161,14 +1144,8 @@ impl Hypervisor for HypervLinuxDriver {
11611144 }
11621145
11631146 #[ cfg( feature = "trace_guest" ) ]
1164- fn read_trace_reg ( & self , reg : TraceRegister ) -> Result < u64 > {
1165- let mut assoc = [ hv_register_assoc {
1166- name : reg. into ( ) ,
1167- ..Default :: default ( )
1168- } ] ;
1169- self . vcpu_fd . get_reg ( & mut assoc) ?;
1170- // safety: all registers that we currently support are 64-bit
1171- unsafe { Ok ( assoc[ 0 ] . value . reg64 ) }
1147+ fn read_regs ( & self ) -> Result < X86_64Regs > {
1148+ Ok ( X86_64Regs :: from ( self . vcpu_fd . get_regs ( ) ?) )
11721149 }
11731150
11741151 #[ cfg( feature = "trace_guest" ) ]
0 commit comments