aboutsummaryrefslogtreecommitdiffstats
path: root/xenolinux-2.4.24-sparse/include/asm-xeno/multicall.h
diff options
context:
space:
mode:
authoriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>2004-01-12 08:53:30 +0000
committeriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>2004-01-12 08:53:30 +0000
commit6b5b22582f098f13cce9926f03d17092789ffa5e (patch)
treec5d9ac81db9517973b9a74fb017f1c9c90fca012 /xenolinux-2.4.24-sparse/include/asm-xeno/multicall.h
parentabc73fe73e5760d1f6836ea098813f4d65d2c097 (diff)
downloadxen-6b5b22582f098f13cce9926f03d17092789ffa5e.tar.gz
xen-6b5b22582f098f13cce9926f03d17092789ffa5e.tar.bz2
xen-6b5b22582f098f13cce9926f03d17092789ffa5e.zip
bitkeeper revision 1.671 (4002608aofyioMya1eWuIFZIJHQO4Q)
Upgrade to Linux version 2.4.24
Diffstat (limited to 'xenolinux-2.4.24-sparse/include/asm-xeno/multicall.h')
-rw-r--r--xenolinux-2.4.24-sparse/include/asm-xeno/multicall.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/xenolinux-2.4.24-sparse/include/asm-xeno/multicall.h b/xenolinux-2.4.24-sparse/include/asm-xeno/multicall.h
new file mode 100644
index 0000000000..f0ea5c3a66
--- /dev/null
+++ b/xenolinux-2.4.24-sparse/include/asm-xeno/multicall.h
@@ -0,0 +1,84 @@
+/******************************************************************************
+ * multicall.h
+ */
+
+#ifndef __MULTICALL_H__
+#define __MULTICALL_H__
+
+#include <asm/hypervisor.h>
+
+extern multicall_entry_t multicall_list[];
+extern int nr_multicall_ents;
+
+static inline void queue_multicall0(unsigned long op)
+{
+ int i = nr_multicall_ents;
+ multicall_list[i].op = op;
+ nr_multicall_ents = i+1;
+}
+
+static inline void queue_multicall1(unsigned long op, unsigned long arg1)
+{
+ int i = nr_multicall_ents;
+ multicall_list[i].op = op;
+ multicall_list[i].args[0] = arg1;
+ nr_multicall_ents = i+1;
+}
+
+static inline void queue_multicall2(
+ unsigned long op, unsigned long arg1, unsigned long arg2)
+{
+ int i = nr_multicall_ents;
+ multicall_list[i].op = op;
+ multicall_list[i].args[0] = arg1;
+ multicall_list[i].args[1] = arg2;
+ nr_multicall_ents = i+1;
+}
+
+static inline void queue_multicall3(
+ unsigned long op, unsigned long arg1, unsigned long arg2,
+ unsigned long arg3)
+{
+ int i = nr_multicall_ents;
+ multicall_list[i].op = op;
+ multicall_list[i].args[0] = arg1;
+ multicall_list[i].args[1] = arg2;
+ multicall_list[i].args[2] = arg3;
+ nr_multicall_ents = i+1;
+}
+
+static inline void queue_multicall4(
+ unsigned long op, unsigned long arg1, unsigned long arg2,
+ unsigned long arg3, unsigned long arg4)
+{
+ int i = nr_multicall_ents;
+ multicall_list[i].op = op;
+ multicall_list[i].args[0] = arg1;
+ multicall_list[i].args[1] = arg2;
+ multicall_list[i].args[2] = arg3;
+ multicall_list[i].args[3] = arg4;
+ nr_multicall_ents = i+1;
+}
+
+static inline void queue_multicall5(
+ unsigned long op, unsigned long arg1, unsigned long arg2,
+ unsigned long arg3, unsigned long arg4, unsigned long arg5)
+{
+ int i = nr_multicall_ents;
+ multicall_list[i].op = op;
+ multicall_list[i].args[0] = arg1;
+ multicall_list[i].args[1] = arg2;
+ multicall_list[i].args[2] = arg3;
+ multicall_list[i].args[3] = arg4;
+ multicall_list[i].args[4] = arg5;
+ nr_multicall_ents = i+1;
+}
+
+static inline void execute_multicall_list(void)
+{
+ if ( unlikely(nr_multicall_ents == 0) ) return;
+ (void)HYPERVISOR_multicall(multicall_list, nr_multicall_ents);
+ nr_multicall_ents = 0;
+}
+
+#endif /* __MULTICALL_H__ */