[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] 32-on-64: All argument registers must be zero extended to 64 bits



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1169662824 0
# Node ID e68bf334ecb877189d718122894170a43de43575
# Parent  2932d0e7c5545167901afeb7ac87dc0c1edf4bfd
32-on-64: All argument registers must be zero extended to 64 bits
(%rdx was missed).
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/arch/x86/x86_64/compat/entry.S |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff -r 2932d0e7c554 -r e68bf334ecb8 xen/arch/x86/x86_64/compat/entry.S
--- a/xen/arch/x86/x86_64/compat/entry.S        Wed Jan 24 18:06:14 2007 +0000
+++ b/xen/arch/x86/x86_64/compat/entry.S        Wed Jan 24 18:20:24 2007 +0000
@@ -16,7 +16,8 @@ ENTRY(compat_hypercall)
         jae   compat_bad_hypercall
 #ifndef NDEBUG
         /* Deliberately corrupt parameter regs not used by this hypercall. */
-        pushq UREGS_rbx(%rsp); pushq %rcx; pushq %rdx; pushq %rsi; pushq %rdi; 
pushq UREGS_rbp+5*8(%rsp)
+        pushq UREGS_rbx(%rsp); pushq %rcx; pushq %rdx; pushq %rsi; pushq %rdi
+        pushq UREGS_rbp+5*8(%rsp)
         leaq  compat_hypercall_args_table(%rip),%r10
         movq  $6,%rcx
         subb  (%r10,%rax,1),%cl
@@ -28,11 +29,13 @@ ENTRY(compat_hypercall)
         pushq %rax
         pushq UREGS_rip+8(%rsp)
 #else
-        movl  %eax,%eax
-        movl  %ebp,%r9d
-        movl  %edi,%r8d
-        xchgl  %ecx,%esi
-        movl  UREGS_rbx(%rsp),%edi
+        /* Relocate argument registers and zero-extend to 64 bits. */
+        movl  %eax,%eax              /* Hypercall #  */
+        movl  UREGS_rbx(%rsp),%edi   /* Arg 1        */
+        xchgl %ecx,%esi              /* Arg 2, Arg 4 */
+        movl  %edx,%edx              /* Arg 3        */
+        movl  %edi,%r8d              /* Arg 5        */
+        movl  %ebp,%r9d              /* Arg 6        */
 #endif
         leaq  compat_hypercall_table(%rip),%r10
         PERFC_INCR(PERFC_hypercalls, %rax)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.