diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index 45d9842d09..1cd7d93892 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -767,12 +767,14 @@ ENTRY(double_fault) /* WARNING! `ret`, `call *`, `jmp *` not safe before this point. */ mov STACK_CPUINFO_FIELD(xen_cr3)(%r14), %rbx - test %rbx, %rbx + neg %rbx jz .Ldblf_cr3_okay jns .Ldblf_cr3_load + mov %rbx, STACK_CPUINFO_FIELD(xen_cr3)(%r14) neg %rbx .Ldblf_cr3_load: mov %rbx, %cr3 + movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%r14) .Ldblf_cr3_okay: movq %rsp,%rdi