jz .Lcstar_cr3_okay
movb $0, STACK_CPUINFO_FIELD(use_pv_cr3)(%rbx)
mov %rcx, %cr3
- movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
+ /* %r12 is still zero at this point. */
+ mov %r12, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
.Lcstar_cr3_okay:
sti
movq VCPU_trap_ctxt(%rbx),%rdi
movl $TRAP_gp_fault,UREGS_entry_vector(%rsp)
subl $2,UREGS_rip(%rsp)
- movl $0,TRAPBOUNCE_error_code(%rdx)
+ /* %r12 is still zero at this point. */
+ mov %r12d, TRAPBOUNCE_error_code(%rdx)
movl TRAP_gp_fault * TRAPINFO_sizeof + TRAPINFO_eip(%rdi),%eax
movzwl TRAP_gp_fault * TRAPINFO_sizeof + TRAPINFO_cs(%rdi),%esi
testb $4,TRAP_gp_fault * TRAPINFO_sizeof + TRAPINFO_flags(%rdi)
jz .Llstar_cr3_okay
movb $0, STACK_CPUINFO_FIELD(use_pv_cr3)(%rbx)
mov %rcx, %cr3
- movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
+ /* %r12 is still zero at this point. */
+ mov %r12, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
.Llstar_cr3_okay:
sti
jz .Lsyse_cr3_okay
movb $0, STACK_CPUINFO_FIELD(use_pv_cr3)(%rbx)
mov %rcx, %cr3
- movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
+ /* %r12 is still zero at this point. */
+ mov %r12, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
.Lsyse_cr3_okay:
sti
jz .Lint80_cr3_okay
movb $0, STACK_CPUINFO_FIELD(use_pv_cr3)(%rbx)
mov %rcx, %cr3
- movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
+ /* %r12 is still zero at this point. */
+ mov %r12, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
.Lint80_cr3_okay:
sti
jz .Lintr_cr3_okay
movb $0, STACK_CPUINFO_FIELD(use_pv_cr3)(%r14)
mov %rcx, %cr3
- xor %ecx, %ecx
- mov %rcx, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
+ /* %r12 is still zero at this point. */
+ mov %r12, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
testb $3, UREGS_cs(%rsp)
- cmovnz %rcx, %r15
- cmovnz %rcx, %rbx
+ cmovnz %r12, %r15
+ cmovnz %r12d, %ebx
.Lintr_cr3_okay:
CR4_PV32_RESTORE
jz .Lxcpt_cr3_okay
movb $0, STACK_CPUINFO_FIELD(use_pv_cr3)(%r14)
mov %rcx, %cr3
- xor %ecx, %ecx
- mov %rcx, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
+ /* %r12 is still zero at this point. */
+ mov %r12, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
testb $3, UREGS_cs(%rsp)
- cmovnz %rcx, %r15
- cmovnz %rcx, %r13
+ cmovnz %r12, %r15
+ cmovnz %r12d, %r13d
.Lxcpt_cr3_okay:
handle_exception_saved:
jz .Ldblf_cr3_okay
movb $0, STACK_CPUINFO_FIELD(use_pv_cr3)(%r14)
mov %rbx, %cr3
- movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
+ /* %r12 is still zero at this point. */
+ mov %r12, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
.Ldblf_cr3_okay:
movq %rsp,%rdi
jz .List_cr3_okay
movb $0, STACK_CPUINFO_FIELD(use_pv_cr3)(%r14)
mov %rcx, %cr3
- movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
+ /* %r12 is still zero at this point. */
+ mov %r12, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
.List_cr3_okay:
CR4_PV32_RESTORE