# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1201607590 0
# Node ID 2db30156cb5b4450c535ddf5d7f099c0de633e5c
# Parent 6157dbf408cf9c50a658eb9fdacfc78ca72bd06a
linux/x86-64: don't use explicit moves in 4- and 5-argument hypercall macros
.., allowing the compiler to schedule the moves earlier or even avoid
an extra move.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---
include/asm-x86_64/mach-xen/asm/hypercall.h | 22 +++++++++++-----------
1 files changed, 11 insertions(+), 11 deletions(-)
diff -r 6157dbf408cf -r 2db30156cb5b include/asm-x86_64/mach-xen/asm/hypercall.h
--- a/include/asm-x86_64/mach-xen/asm/hypercall.h Mon Jan 28 10:29:58
2008 +0000
+++ b/include/asm-x86_64/mach-xen/asm/hypercall.h Tue Jan 29 11:53:10
2008 +0000
@@ -103,29 +103,29 @@
#define _hypercall4(type, name, a1, a2, a3, a4) \
({ \
long __res, __ign1, __ign2, __ign3; \
- asm volatile ( \
- "movq %7,%%r10; " \
+ register long __arg4 asm("r10") = (long)(a4); \
+ asm volatile ( \
HYPERCALL_STR(name) \
: "=a" (__res), "=D" (__ign1), "=S" (__ign2), \
- "=d" (__ign3) \
+ "=d" (__ign3), "+r" (__arg4) \
: "1" ((long)(a1)), "2" ((long)(a2)), \
- "3" ((long)(a3)), "g" ((long)(a4)) \
- : "memory", "r10" ); \
+ "3" ((long)(a3)) \
+ : "memory" ); \
(type)__res; \
})
#define _hypercall5(type, name, a1, a2, a3, a4, a5) \
({ \
long __res, __ign1, __ign2, __ign3; \
- asm volatile ( \
- "movq %7,%%r10; movq %8,%%r8; " \
+ register long __arg4 asm("r10") = (long)(a4); \
+ register long __arg5 asm("r8") = (long)(a5); \
+ asm volatile ( \
HYPERCALL_STR(name) \
: "=a" (__res), "=D" (__ign1), "=S" (__ign2), \
- "=d" (__ign3) \
+ "=d" (__ign3), "+r" (__arg4), "+r" (__arg5) \
: "1" ((long)(a1)), "2" ((long)(a2)), \
- "3" ((long)(a3)), "g" ((long)(a4)), \
- "g" ((long)(a5)) \
- : "memory", "r10", "r8" ); \
+ "3" ((long)(a3)) \
+ : "memory" ); \
(type)__res; \
})
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|