diff options
Diffstat (limited to 'arch/x86/include/asm/xen/hypercall.h')
-rw-r--r-- | arch/x86/include/asm/xen/hypercall.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/arch/x86/include/asm/xen/hypercall.h b/arch/x86/include/asm/xen/hypercall.h index 9606688caa4b..7cb282e9e587 100644 --- a/arch/x86/include/asm/xen/hypercall.h +++ b/arch/x86/include/asm/xen/hypercall.h | |||
@@ -113,10 +113,9 @@ extern struct { char _entry[32]; } hypercall_page[]; | |||
113 | register unsigned long __arg2 asm(__HYPERCALL_ARG2REG) = __arg2; \ | 113 | register unsigned long __arg2 asm(__HYPERCALL_ARG2REG) = __arg2; \ |
114 | register unsigned long __arg3 asm(__HYPERCALL_ARG3REG) = __arg3; \ | 114 | register unsigned long __arg3 asm(__HYPERCALL_ARG3REG) = __arg3; \ |
115 | register unsigned long __arg4 asm(__HYPERCALL_ARG4REG) = __arg4; \ | 115 | register unsigned long __arg4 asm(__HYPERCALL_ARG4REG) = __arg4; \ |
116 | register unsigned long __arg5 asm(__HYPERCALL_ARG5REG) = __arg5; \ | 116 | register unsigned long __arg5 asm(__HYPERCALL_ARG5REG) = __arg5; |
117 | register void *__sp asm(_ASM_SP); | ||
118 | 117 | ||
119 | #define __HYPERCALL_0PARAM "=r" (__res), "+r" (__sp) | 118 | #define __HYPERCALL_0PARAM "=r" (__res), ASM_CALL_CONSTRAINT |
120 | #define __HYPERCALL_1PARAM __HYPERCALL_0PARAM, "+r" (__arg1) | 119 | #define __HYPERCALL_1PARAM __HYPERCALL_0PARAM, "+r" (__arg1) |
121 | #define __HYPERCALL_2PARAM __HYPERCALL_1PARAM, "+r" (__arg2) | 120 | #define __HYPERCALL_2PARAM __HYPERCALL_1PARAM, "+r" (__arg2) |
122 | #define __HYPERCALL_3PARAM __HYPERCALL_2PARAM, "+r" (__arg3) | 121 | #define __HYPERCALL_3PARAM __HYPERCALL_2PARAM, "+r" (__arg3) |
@@ -552,13 +551,13 @@ static inline void | |||
552 | MULTI_update_descriptor(struct multicall_entry *mcl, u64 maddr, | 551 | MULTI_update_descriptor(struct multicall_entry *mcl, u64 maddr, |
553 | struct desc_struct desc) | 552 | struct desc_struct desc) |
554 | { | 553 | { |
555 | u32 *p = (u32 *) &desc; | ||
556 | |||
557 | mcl->op = __HYPERVISOR_update_descriptor; | 554 | mcl->op = __HYPERVISOR_update_descriptor; |
558 | if (sizeof(maddr) == sizeof(long)) { | 555 | if (sizeof(maddr) == sizeof(long)) { |
559 | mcl->args[0] = maddr; | 556 | mcl->args[0] = maddr; |
560 | mcl->args[1] = *(unsigned long *)&desc; | 557 | mcl->args[1] = *(unsigned long *)&desc; |
561 | } else { | 558 | } else { |
559 | u32 *p = (u32 *)&desc; | ||
560 | |||
562 | mcl->args[0] = maddr; | 561 | mcl->args[0] = maddr; |
563 | mcl->args[1] = maddr >> 32; | 562 | mcl->args[1] = maddr >> 32; |
564 | mcl->args[2] = *p++; | 563 | mcl->args[2] = *p++; |