@@ -199,59 +199,33 @@ impl VcpuFd {
199199    /// Returns the vCPU general purpose registers. 
200200#[ cfg( not( target_arch = "aarch64" ) ) ]  
201201    pub  fn  get_regs ( & self )  -> Result < StandardRegisters >  { 
202-         let  reg_names = [ 
203-             hv_register_name_HV_X64_REGISTER_RAX, 
204-             hv_register_name_HV_X64_REGISTER_RBX, 
205-             hv_register_name_HV_X64_REGISTER_RCX, 
206-             hv_register_name_HV_X64_REGISTER_RDX, 
207-             hv_register_name_HV_X64_REGISTER_RSI, 
208-             hv_register_name_HV_X64_REGISTER_RDI, 
209-             hv_register_name_HV_X64_REGISTER_RSP, 
210-             hv_register_name_HV_X64_REGISTER_RBP, 
211-             hv_register_name_HV_X64_REGISTER_R8, 
212-             hv_register_name_HV_X64_REGISTER_R9, 
213-             hv_register_name_HV_X64_REGISTER_R10, 
214-             hv_register_name_HV_X64_REGISTER_R11, 
215-             hv_register_name_HV_X64_REGISTER_R12, 
216-             hv_register_name_HV_X64_REGISTER_R13, 
217-             hv_register_name_HV_X64_REGISTER_R14, 
218-             hv_register_name_HV_X64_REGISTER_R15, 
219-             hv_register_name_HV_X64_REGISTER_RIP, 
220-             hv_register_name_HV_X64_REGISTER_RFLAGS, 
221-         ] ; 
222-         let  mut  reg_assocs:  Vec < hv_register_assoc >  = reg_names
223-             . iter ( ) 
224-             . map ( |name| hv_register_assoc  { 
225-                 name :  * name, 
226-                 ..Default :: default ( ) 
227-             } ) 
228-             . collect ( ) ; 
229-         self . get_reg ( & mut  reg_assocs) ?; 
202+         let  vp_reg_page = self . get_vp_reg_page ( ) ; 
230203        let  mut  ret_regs = StandardRegisters :: default ( ) ; 
231204        // SAFETY: access union fields 
232205        unsafe  { 
233-             ret_regs. rax  = reg_assocs [ 0 ] . value . reg64 ; 
234-             ret_regs. rbx  = reg_assocs [ 1 ] . value . reg64 ; 
235-             ret_regs. rcx  = reg_assocs [ 2 ] . value . reg64 ; 
236-             ret_regs. rdx  = reg_assocs [ 3 ] . value . reg64 ; 
237-             ret_regs. rsi  = reg_assocs [ 4 ] . value . reg64 ; 
238-             ret_regs. rdi  = reg_assocs [ 5 ] . value . reg64 ; 
239-             ret_regs. rsp  = reg_assocs [ 6 ] . value . reg64 ; 
240-             ret_regs. rbp  = reg_assocs [ 7 ] . value . reg64 ; 
241-             ret_regs. r8  = reg_assocs [ 8 ] . value . reg64 ; 
242-             ret_regs. r9  = reg_assocs [ 9 ] . value . reg64 ; 
243-             ret_regs. r10  = reg_assocs [ 10 ] . value . reg64 ; 
244-             ret_regs. r11  = reg_assocs [ 11 ] . value . reg64 ; 
245-             ret_regs. r12  = reg_assocs [ 12 ] . value . reg64 ; 
246-             ret_regs. r13  = reg_assocs [ 13 ] . value . reg64 ; 
247-             ret_regs. r14  = reg_assocs [ 14 ] . value . reg64 ; 
248-             ret_regs. r15  = reg_assocs [ 15 ] . value . reg64 ; 
249-             ret_regs. rip  = reg_assocs [ 16 ] . value . reg64 ; 
250-             ret_regs. rflags  = reg_assocs [ 17 ] . value . reg64 ; 
206+             ret_regs. rax  = get_gp_regs_field_ptr ! ( vp_reg_page ,  rax ) ; 
207+             ret_regs. rbx  = get_gp_regs_field_ptr ! ( vp_reg_page ,  rbx ) ; 
208+             ret_regs. rcx  = get_gp_regs_field_ptr ! ( vp_reg_page ,  rcx ) ; 
209+             ret_regs. rdx  = get_gp_regs_field_ptr ! ( vp_reg_page ,  rdx ) ; 
210+             ret_regs. rsi  = get_gp_regs_field_ptr ! ( vp_reg_page ,  rsi ) ; 
211+             ret_regs. rdi  = get_gp_regs_field_ptr ! ( vp_reg_page ,  rdi ) ; 
212+             ret_regs. rsp  = get_gp_regs_field_ptr ! ( vp_reg_page ,  rsp ) ; 
213+             ret_regs. rbp  = get_gp_regs_field_ptr ! ( vp_reg_page ,  rbp ) ; 
214+             ret_regs. r8  = get_gp_regs_field_ptr ! ( vp_reg_page ,  r8 ) ; 
215+             ret_regs. r9  = get_gp_regs_field_ptr ! ( vp_reg_page ,  r9 ) ; 
216+             ret_regs. r10  = get_gp_regs_field_ptr ! ( vp_reg_page ,  r10 ) ; 
217+             ret_regs. r11  = get_gp_regs_field_ptr ! ( vp_reg_page ,  r11 ) ; 
218+             ret_regs. r12  = get_gp_regs_field_ptr ! ( vp_reg_page ,  r12 ) ; 
219+             ret_regs. r13  = get_gp_regs_field_ptr ! ( vp_reg_page ,  r13 ) ; 
220+             ret_regs. r14  = get_gp_regs_field_ptr ! ( vp_reg_page ,  r14 ) ; 
221+             ret_regs. r15  = get_gp_regs_field_ptr ! ( vp_reg_page ,  r15 ) ; 
222+             ret_regs. rip  = ( * vp_reg_page ) . __bindgen_anon_1 . __bindgen_anon_1 . rip ; 
223+             ret_regs. rflags  = ( * vp_reg_page ) . __bindgen_anon_1 . __bindgen_anon_1 . rflags ; 
251224        } 
252225
253226        Ok ( ret_regs) 
254227    } 
228+ 
255229    /// Returns the vCPU special registers. 
256230#[ cfg( not( target_arch = "aarch64" ) ) ]  
257231    pub  fn  get_sregs ( & self )  -> Result < SpecialRegisters >  { 
0 commit comments