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 --- |