hypercall.h (95a0c7c2d6cfde3fb5fdb713428ed0df4d6bdd58) hypercall.h (f5caf621ee357279e759c0911daf6d55c7d36f03)
1/******************************************************************************
2 * hypercall.h
3 *
4 * Linux-specific hypervisor handling.
5 *
6 * Copyright (c) 2002-2004, K A Fraser
7 *
8 * This program is free software; you can redistribute it and/or

--- 99 unchanged lines hidden (view full) ---

108#endif
109
110#define __HYPERCALL_DECLS \
111 register unsigned long __res asm(__HYPERCALL_RETREG); \
112 register unsigned long __arg1 asm(__HYPERCALL_ARG1REG) = __arg1; \
113 register unsigned long __arg2 asm(__HYPERCALL_ARG2REG) = __arg2; \
114 register unsigned long __arg3 asm(__HYPERCALL_ARG3REG) = __arg3; \
115 register unsigned long __arg4 asm(__HYPERCALL_ARG4REG) = __arg4; \
1/******************************************************************************
2 * hypercall.h
3 *
4 * Linux-specific hypervisor handling.
5 *
6 * Copyright (c) 2002-2004, K A Fraser
7 *
8 * This program is free software; you can redistribute it and/or

--- 99 unchanged lines hidden (view full) ---

108#endif
109
110#define __HYPERCALL_DECLS \
111 register unsigned long __res asm(__HYPERCALL_RETREG); \
112 register unsigned long __arg1 asm(__HYPERCALL_ARG1REG) = __arg1; \
113 register unsigned long __arg2 asm(__HYPERCALL_ARG2REG) = __arg2; \
114 register unsigned long __arg3 asm(__HYPERCALL_ARG3REG) = __arg3; \
115 register unsigned long __arg4 asm(__HYPERCALL_ARG4REG) = __arg4; \
116 register unsigned long __arg5 asm(__HYPERCALL_ARG5REG) = __arg5; \
117 register void *__sp asm(_ASM_SP);
116 register unsigned long __arg5 asm(__HYPERCALL_ARG5REG) = __arg5;
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)
121#define __HYPERCALL_2PARAM __HYPERCALL_1PARAM, "+r" (__arg2)
122#define __HYPERCALL_3PARAM __HYPERCALL_2PARAM, "+r" (__arg3)
123#define __HYPERCALL_4PARAM __HYPERCALL_3PARAM, "+r" (__arg4)
124#define __HYPERCALL_5PARAM __HYPERCALL_4PARAM, "+r" (__arg5)
125
126#define __HYPERCALL_0ARG()
127#define __HYPERCALL_1ARG(a1) \

--- 419 unchanged lines hidden (view full) ---

547
548 trace_xen_mc_entry(mcl, sizeof(new_val) == sizeof(long) ? 4 : 5);
549}
550
551static inline void
552MULTI_update_descriptor(struct multicall_entry *mcl, u64 maddr,
553 struct desc_struct desc)
554{
119#define __HYPERCALL_1PARAM __HYPERCALL_0PARAM, "+r" (__arg1)
120#define __HYPERCALL_2PARAM __HYPERCALL_1PARAM, "+r" (__arg2)
121#define __HYPERCALL_3PARAM __HYPERCALL_2PARAM, "+r" (__arg3)
122#define __HYPERCALL_4PARAM __HYPERCALL_3PARAM, "+r" (__arg4)
123#define __HYPERCALL_5PARAM __HYPERCALL_4PARAM, "+r" (__arg5)
124
125#define __HYPERCALL_0ARG()
126#define __HYPERCALL_1ARG(a1) \

--- 419 unchanged lines hidden (view full) ---

546
547 trace_xen_mc_entry(mcl, sizeof(new_val) == sizeof(long) ? 4 : 5);
548}
549
550static inline void
551MULTI_update_descriptor(struct multicall_entry *mcl, u64 maddr,
552 struct desc_struct desc)
553{
554 u32 *p = (u32 *) &desc;
555
555 mcl->op = __HYPERVISOR_update_descriptor;
556 if (sizeof(maddr) == sizeof(long)) {
557 mcl->args[0] = maddr;
558 mcl->args[1] = *(unsigned long *)&desc;
559 } else {
560 mcl->args[0] = maddr;
561 mcl->args[1] = maddr >> 32;
556 mcl->op = __HYPERVISOR_update_descriptor;
557 if (sizeof(maddr) == sizeof(long)) {
558 mcl->args[0] = maddr;
559 mcl->args[1] = *(unsigned long *)&desc;
560 } else {
561 mcl->args[0] = maddr;
562 mcl->args[1] = maddr >> 32;
562 mcl->args[2] = desc.a;
563 mcl->args[3] = desc.b;
563 mcl->args[2] = *p++;
564 mcl->args[3] = *p;
564 }
565
566 trace_xen_mc_entry(mcl, sizeof(maddr) == sizeof(long) ? 2 : 4);
567}
568
569static inline void
570MULTI_memory_op(struct multicall_entry *mcl, unsigned int cmd, void *arg)
571{

--- 55 unchanged lines hidden ---
565 }
566
567 trace_xen_mc_entry(mcl, sizeof(maddr) == sizeof(long) ? 2 : 4);
568}
569
570static inline void
571MULTI_memory_op(struct multicall_entry *mcl, unsigned int cmd, void *arg)
572{

--- 55 unchanged lines hidden ---