aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/compat.c
diff options
context:
space:
mode:
authorEmmanuel Ackaouy <ack@xensource.com>2007-01-05 17:34:32 +0000
committerEmmanuel Ackaouy <ack@xensource.com>2007-01-05 17:34:32 +0000
commit248b44f921e1823a7976b7f5629e3dda308555f0 (patch)
treedffa98b7823f07e042530c70b533f75d99826448 /xen/arch/x86/compat.c
parent6630b25a6c268116f5cc816d5a7da7c7bd700510 (diff)
downloadxen-248b44f921e1823a7976b7f5629e3dda308555f0.tar.gz
xen-248b44f921e1823a7976b7f5629e3dda308555f0.tar.bz2
xen-248b44f921e1823a7976b7f5629e3dda308555f0.zip
Enable compatibility mode operation for HYPERVISOR_physdev_op and
HYPERVISOR_event_channel_op. Signed-off-by: Jan Beulich <jbeulich@novell.com>
Diffstat (limited to 'xen/arch/x86/compat.c')
-rw-r--r--xen/arch/x86/compat.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/xen/arch/x86/compat.c b/xen/arch/x86/compat.c
index 431c4560fd..a4fda062d6 100644
--- a/xen/arch/x86/compat.c
+++ b/xen/arch/x86/compat.c
@@ -9,17 +9,23 @@
#include <xen/guest_access.h>
#include <xen/hypercall.h>
+#ifndef COMPAT
+typedef long ret_t;
+#endif
+
/* Legacy hypercall (as of 0x00030202). */
-long do_physdev_op_compat(XEN_GUEST_HANDLE(physdev_op_t) uop)
+ret_t do_physdev_op_compat(XEN_GUEST_HANDLE(physdev_op_t) uop)
{
struct physdev_op op;
if ( unlikely(copy_from_guest(&op, uop, 1) != 0) )
return -EFAULT;
- return do_physdev_op(op.cmd, (XEN_GUEST_HANDLE(void)) { &uop.p->u });
+ return do_physdev_op(op.cmd, guest_handle_from_ptr(&uop.p->u, void));
}
+#ifndef COMPAT
+
/* Legacy hypercall (as of 0x00030202). */
long do_event_channel_op_compat(XEN_GUEST_HANDLE(evtchn_op_t) uop)
{
@@ -28,5 +34,7 @@ long do_event_channel_op_compat(XEN_GUEST_HANDLE(evtchn_op_t) uop)
if ( unlikely(copy_from_guest(&op, uop, 1) != 0) )
return -EFAULT;
- return do_event_channel_op(op.cmd, (XEN_GUEST_HANDLE(void)) {&uop.p->u });
+ return do_event_channel_op(op.cmd, guest_handle_from_ptr(&uop.p->u, void));
}
+
+#endif