diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-02-20 11:15:03 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-02-20 11:15:03 +0000 |
commit | 92207c117ac7c3b4f3304fb6855575844da73980 (patch) | |
tree | 3e9d4af5dbfb9619d7288c0f84d22643a5cd1b71 /xenolinux-2.4.25-sparse/include/asm-xeno/multicall.h | |
parent | b39cfce3243dfbfa5d877425adad77a108fb1094 (diff) | |
download | xen-92207c117ac7c3b4f3304fb6855575844da73980.tar.gz xen-92207c117ac7c3b4f3304fb6855575844da73980.tar.bz2 xen-92207c117ac7c3b4f3304fb6855575844da73980.zip |
bitkeeper revision 1.735 (4035ec37QrObBVUp0-0jtnp646Qg3g)
xenolinux-sparse:
new file
Many files:
Port to linux-2.4.25
.del-xenolinux-sparse~6c1e6e8b9138ffe9:
Delete: xenolinux-sparse
Many files:
mvdir
Diffstat (limited to 'xenolinux-2.4.25-sparse/include/asm-xeno/multicall.h')
-rw-r--r-- | xenolinux-2.4.25-sparse/include/asm-xeno/multicall.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/xenolinux-2.4.25-sparse/include/asm-xeno/multicall.h b/xenolinux-2.4.25-sparse/include/asm-xeno/multicall.h new file mode 100644 index 0000000000..f0ea5c3a66 --- /dev/null +++ b/xenolinux-2.4.25-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__ */ |