From cbea0c26e718191b57783f847ad2c805670439e8 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 2 Apr 2015 14:13:55 +0200 Subject: [PATCH] target-i386: save 64-bit CR3 in 64-bit SMM state save area The x86_64 CR3 register is 64 bits wide, save all of them! Signed-off-by: Paolo Bonzini --- target-i386/smm_helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target-i386/smm_helper.c b/target-i386/smm_helper.c index 58051d3bcc..c62f46847c 100644 --- a/target-i386/smm_helper.c +++ b/target-i386/smm_helper.c @@ -101,7 +101,7 @@ void do_smm_enter(X86CPU *cpu) stl_phys(cs->as, sm_state + 0x7f60, env->dr[7]); stl_phys(cs->as, sm_state + 0x7f48, env->cr[4]); - stl_phys(cs->as, sm_state + 0x7f50, env->cr[3]); + stq_phys(cs->as, sm_state + 0x7f50, env->cr[3]); stl_phys(cs->as, sm_state + 0x7f58, env->cr[0]); stl_phys(cs->as, sm_state + 0x7efc, SMM_REVISION_ID); @@ -236,7 +236,7 @@ void helper_rsm(CPUX86State *env) env->dr[7] = ldl_phys(cs->as, sm_state + 0x7f60); cpu_x86_update_cr4(env, ldl_phys(cs->as, sm_state + 0x7f48)); - cpu_x86_update_cr3(env, ldl_phys(cs->as, sm_state + 0x7f50)); + cpu_x86_update_cr3(env, ldq_phys(cs->as, sm_state + 0x7f50)); cpu_x86_update_cr0(env, ldl_phys(cs->as, sm_state + 0x7f58)); for (i = 0; i < 6; i++) { -- 2.11.4.GIT