diff options
author | Emmanuel Ackaouy <ack@xensource.com> | 2007-01-05 17:34:32 +0000 |
---|---|---|
committer | Emmanuel Ackaouy <ack@xensource.com> | 2007-01-05 17:34:32 +0000 |
commit | 248b44f921e1823a7976b7f5629e3dda308555f0 (patch) | |
tree | dffa98b7823f07e042530c70b533f75d99826448 /xen/arch/x86/compat.c | |
parent | 6630b25a6c268116f5cc816d5a7da7c7bd700510 (diff) | |
download | xen-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.c | 14 |
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 |