[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Xen-devel] [PATCH 4/4] SVM: streamline entry.S code
On 08/23/2013 10:04 AM, Jan Beulich wrote:
mov UREGS_eflags(%rsp),%rax
mov %rax,VMCB_rflags(%rcx)
- mov VCPU_svm_vmcb_pa(%rbx),%rax
-
pop %r15
pop %r14
pop %r13
pop %r12
pop %rbp
+ mov VCPU_svm_vmcb_pa(%rbx),%rax
pop %rbx
pop %r11
pop %r10
@@ -92,25 +97,26 @@ UNLIKELY_END(svm_trace)
VMRUN
+ GET_CURRENT(%rax)
push %rdi
push %rsi
push %rdx
push %rcx
+ mov VCPU_svm_vmcb(%rax),%rcx
push %rax
push %r8
push %r9
push %r10
push %r11
push %rbx
+ mov %rax,%rbx
Can you continue with using %rax as 'current' pointer below and not save it
to %rbx? %rax appears to be a temp register so perhaps you can use, say,
%rdi, for that purpose.
-boris
push %rbp
push %r12
push %r13
push %r14
push %r15
- GET_CURRENT(%rbx)
movb $0,VCPU_svm_vmcb_in_sync(%rbx)
- mov VCPU_svm_vmcb(%rbx),%rcx
mov VMCB_rax(%rcx),%rax
mov %rax,UREGS_rax(%rsp)
mov VMCB_rip(%rcx),%rax
@@ -120,33 +126,14 @@ UNLIKELY_END(svm_trace)
mov VMCB_rflags(%rcx),%rax
mov %rax,UREGS_eflags(%rsp)
-#ifndef NDEBUG
- mov $0xbeef,%ax
- mov %ax,UREGS_error_code(%rsp)
- mov %ax,UREGS_entry_vector(%rsp)
- mov %ax,UREGS_saved_upcall_mask(%rsp)
- mov %ax,UREGS_cs(%rsp)
- mov %ax,UREGS_ds(%rsp)
- mov %ax,UREGS_es(%rsp)
- mov %ax,UREGS_fs(%rsp)
- mov %ax,UREGS_gs(%rsp)
- mov %ax,UREGS_ss(%rsp)
-#endif
-
STGI
.globl svm_stgi_label
svm_stgi_label:
mov %rsp,%rdi
call svm_vmexit_handler
- jmp svm_asm_do_resume
+ jmp .Lsvm_do_resume
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|