diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 4252339978..53a86ba373 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -1255,6 +1255,14 @@ int arch_set_info_guest( if ( !compat ) { + v->arch.user_regs.r15 = c.nat->user_regs.r15; + v->arch.user_regs.r14 = c.nat->user_regs.r14; + v->arch.user_regs.r13 = c.nat->user_regs.r13; + v->arch.user_regs.r12 = c.nat->user_regs.r12; + v->arch.user_regs.r11 = c.nat->user_regs.r11; + v->arch.user_regs.r10 = c.nat->user_regs.r10; + v->arch.user_regs.r9 = c.nat->user_regs.r9; + v->arch.user_regs.r8 = c.nat->user_regs.r8; v->arch.user_regs.rbx = c.nat->user_regs.rbx; v->arch.user_regs.rcx = c.nat->user_regs.rcx; v->arch.user_regs.rdx = c.nat->user_regs.rdx; diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 07f712a0a4..3ea4c650ee 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -1481,6 +1481,14 @@ void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c) if ( !compat ) { /* Backing memory is pre-zeroed. */ + c.nat->user_regs.r15 = v->arch.user_regs.r15; + c.nat->user_regs.r14 = v->arch.user_regs.r14; + c.nat->user_regs.r13 = v->arch.user_regs.r13; + c.nat->user_regs.r12 = v->arch.user_regs.r12; + c.nat->user_regs.r11 = v->arch.user_regs.r11; + c.nat->user_regs.r10 = v->arch.user_regs.r10; + c.nat->user_regs.r9 = v->arch.user_regs.r9; + c.nat->user_regs.r8 = v->arch.user_regs.r8; c.nat->user_regs.rbx = v->arch.user_regs.rbx; c.nat->user_regs.rcx = v->arch.user_regs.rcx; c.nat->user_regs.rdx = v->arch.user_regs.rdx;