From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: Re: [PATCH 4/4] SVM: streamline entry.S code Date: Wed, 04 Sep 2013 10:39:14 -0400 Message-ID: <52274612.4040506@oracle.com> References: <521786A002000078000EE064@nat28.tlf.novell.com> <521787FA02000078000EE083@nat28.tlf.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1VHEDJ-0000Wq-4d for xen-devel@lists.xenproject.org; Wed, 04 Sep 2013 14:37:45 +0000 In-Reply-To: <521787FA02000078000EE083@nat28.tlf.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich Cc: xen-devel , Keir Fraser , Jacob Shin , suravee.suthikulpanit@amd.com List-Id: xen-devel@lists.xenproject.org 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 >