[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [IA64] Fix multicall hypercall



# HG changeset patch
# User awilliam@xxxxxxxxxxxx
# Date 1168811931 25200
# Node ID 43c5302ee92dc0a12df02084c07e6172f2b6ebe8
# Parent  809043a22786e2b31972577e1aca881ae6683a06
[IA64] Fix multicall hypercall

Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx>
---
 xen/arch/ia64/linux-xen/entry.S  |    9 +++++++++
 xen/include/asm-ia64/multicall.h |   12 ++++++------
 2 files changed, 15 insertions(+), 6 deletions(-)

diff -r 809043a22786 -r 43c5302ee92d xen/arch/ia64/linux-xen/entry.S
--- a/xen/arch/ia64/linux-xen/entry.S   Fri Jan 12 13:01:25 2007 -0700
+++ b/xen/arch/ia64/linux-xen/entry.S   Sun Jan 14 14:58:51 2007 -0700
@@ -1472,6 +1472,15 @@ END(unw_init_running)
 END(unw_init_running)
 
 #ifdef XEN
+GLOBAL_ENTRY(ia64_do_multicall_call)
+       movl r2=ia64_hypercall_table;;
+       shladd r2=r38,3,r2;;
+       ld8 r2=[r2];;
+       mov b6=r2
+       br.sptk.many b6;;
+END(ia64_do_multicall_call)
+
+    
        .rodata
        .align 8
        .globl ia64_hypercall_table
diff -r 809043a22786 -r 43c5302ee92d xen/include/asm-ia64/multicall.h
--- a/xen/include/asm-ia64/multicall.h  Fri Jan 12 13:01:25 2007 -0700
+++ b/xen/include/asm-ia64/multicall.h  Sun Jan 14 14:58:51 2007 -0700
@@ -4,26 +4,26 @@
 #include <public/xen.h>
 #include <xen/errno.h>
 
-typedef unsigned long (*hypercall_t)(
+extern unsigned long ia64_do_multicall_call(
                        unsigned long arg0,
                        unsigned long arg1,
                        unsigned long arg2,
                        unsigned long arg3,
                        unsigned long arg4,
-                       unsigned long arg5);
-
-extern const hypercall_t ia64_hypercall_table[];
+                       unsigned long arg5,
+                       unsigned long op);
 
 static inline void do_multicall_call(multicall_entry_t *call)
 {
        if (call->op < NR_hypercalls)
-               call->result = (*ia64_hypercall_table[call->op])(
+               call->result = ia64_do_multicall_call(
                        call->args[0],
                        call->args[1],
                        call->args[2],
                        call->args[3],
                        call->args[4],
-                       call->args[5]);
+                       call->args[5],
+                       call->op);
        else
                call->result = -ENOSYS;
 }

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.