1 /****************************************************************************** 2 * multicall.c 3 */ 4 5 asm(".file \"" __FILE__ "\""); 6 7 #include <xen/types.h> 8 #include <xen/multicall.h> 9 #include <xen/trace.h> 10 11 #define COMPAT 12 typedef int ret_t; 13 #undef do_multicall_call 14 xlat_multicall_entry(struct mc_state * mcs)15static inline void xlat_multicall_entry(struct mc_state *mcs) 16 { 17 int i; 18 for (i=0; i<6; i++) 19 mcs->compat_call.args[i] = mcs->call.args[i]; 20 } 21 22 DEFINE_XEN_GUEST_HANDLE(multicall_entry_compat_t); 23 #define multicall_entry compat_multicall_entry 24 #define multicall_entry_t multicall_entry_compat_t 25 #define do_multicall_call compat_multicall_call 26 #define call compat_call 27 #define do_multicall(l, n) compat_multicall(_##l, n) 28 #define _XEN_GUEST_HANDLE(t) XEN_GUEST_HANDLE(t) 29 #define _XEN_GUEST_HANDLE_PARAM(t) XEN_GUEST_HANDLE(t) 30 __trace_multicall_call(multicall_entry_t * call)31static void __trace_multicall_call(multicall_entry_t *call) 32 { 33 xen_ulong_t args[6]; 34 int i; 35 36 for ( i = 0; i < ARRAY_SIZE(args); i++ ) 37 args[i] = call->args[i]; 38 39 __trace_hypercall(TRC_PV_HYPERCALL_SUBCALL, call->op, args); 40 } 41 42 #include "../multicall.c" 43 44 /* 45 * Local variables: 46 * mode: C 47 * c-file-style: "BSD" 48 * c-basic-offset: 4 49 * tab-width: 4 50 * indent-tabs-mode: nil 51 * End: 52 */ 53