@@ -269,23 +269,6 @@ static int32_t get_vmcs_field(int ident)
269
269
}
270
270
}
271
271
272
- static enum vm_cpu_mode get_vmx_cpu_mode (void )
273
- {
274
- uint32_t csar ;
275
-
276
- if (exec_vmread (VMX_GUEST_IA32_EFER_FULL ) & EFER_LMA ) {
277
- csar = exec_vmread (VMX_GUEST_CS_ATTR );
278
- if (csar & 0x2000 )
279
- return CPU_MODE_64BIT ; /* CS.L = 1 */
280
- else
281
- return CPU_MODE_COMPATIBILITY ;
282
- } else if (exec_vmread (VMX_GUEST_CR0 ) & CR0_PE ) {
283
- return CPU_MODE_PROTECTED ;
284
- } else {
285
- return CPU_MODE_REAL ;
286
- }
287
- }
288
-
289
272
static void get_guest_paging_info (struct vcpu * vcpu , struct emul_cnx * emul_cnx )
290
273
{
291
274
uint32_t cpl , csar ;
@@ -297,7 +280,7 @@ static void get_guest_paging_info(struct vcpu *vcpu, struct emul_cnx *emul_cnx)
297
280
emul_cnx -> paging .cr3 =
298
281
vcpu -> arch_vcpu .contexts [vcpu -> arch_vcpu .cur_context ].cr3 ;
299
282
emul_cnx -> paging .cpl = cpl ;
300
- emul_cnx -> paging .cpu_mode = get_vmx_cpu_mode ( );
283
+ emul_cnx -> paging .cpu_mode = get_vcpu_mode ( vcpu );
301
284
emul_cnx -> paging .paging_mode = PAGING_MODE_FLAT ;/*maybe change later*/
302
285
}
303
286
@@ -358,7 +341,7 @@ uint8_t decode_instruction(struct vcpu *vcpu)
358
341
359
342
get_guest_paging_info (vcpu , emul_cnx );
360
343
csar = exec_vmread (VMX_GUEST_CS_ATTR );
361
- cpu_mode = get_vmx_cpu_mode ( );
344
+ cpu_mode = get_vcpu_mode ( vcpu );
362
345
363
346
retval = __decode_instruction (vcpu , guest_rip_gva ,
364
347
cpu_mode , SEG_DESC_DEF32 (csar ), & emul_cnx -> vie );
0 commit comments