Index: 2006-10-04/xen/arch/x86/x86_64/compat/entry.S ==================================================================--- 2006-10-04.orig/xen/arch/x86/x86_64/compat/entry.S 2006-10-04 15:20:16.000000000 +0200 +++ 2006-10-04/xen/arch/x86/x86_64/compat/entry.S 2006-10-04 15:20:20.000000000 +0200 @@ -276,13 +276,18 @@ CFIX14: .quad CFLT14,CFIX14 .previous +compat_arch_sched_op: + # Ensure we return success even if we return via schedule_tail() + xorl %eax,%eax + GET_GUEST_REGS(%r10) + movl %eax,UREGS_rax(%r10) + jmp compat_sched_op + .section .rodata, "a", @progbits #define compat_platform_op domain_crash_synchronous -#define compat_set_timer_op domain_crash_synchronous #define compat_grant_table_op domain_crash_synchronous #define compat_acm_op domain_crash_synchronous -#define compat_arch_sched_op domain_crash_synchronous #define compat_xenoprof_op domain_crash_synchronous #define compat_sysctl domain_crash_synchronous #define compat_domctl domain_crash_synchronous Index: 2006-10-04/xen/common/Makefile ==================================================================--- 2006-10-04.orig/xen/common/Makefile 2006-10-04 15:09:52.000000000 +0200 +++ 2006-10-04/xen/common/Makefile 2006-10-04 15:20:20.000000000 +0200 @@ -34,3 +34,8 @@ subdir-$(CONFIG_COMPAT) += compat # Object file contains changeset and compiler information. version.o: $(BASEDIR)/include/xen/compile.h + +ifeq ($(CONFIG_COMPAT),y) +# extra dependencies +schedule.o: compat/schedule.c +endif Index: 2006-10-04/xen/common/compat/schedule.c ==================================================================--- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ 2006-10-04/xen/common/compat/schedule.c 2006-10-04 15:20:20.000000000 +0200 @@ -0,0 +1,51 @@ +/**************************************************************************** + * schedule.c + * + */ + +#include <compat/sched.h> + +#define COMPAT +#define ret_t int + +#define do_sched_op compat_sched_op + +#define xen_sched_shutdown sched_shutdown +CHECK_sched_shutdown +#undef xen_sched_shutdown + +#define xen_sched_remote_shutdown sched_remote_shutdown +CHECK_sched_remote_shutdown +#undef xen_sched_remote_shutdown + +static int compat_poll(struct compat_sched_poll *compat) +{ + struct sched_poll native; + +#define XLAT_sched_poll_HNDL_ports(_d_, _s_) \ + guest_from_compat_handle((_d_)->ports, (_s_)->ports) + XLAT_sched_poll(&native, compat); +#undef XLAT_sched_poll_HNDL_ports + + return do_poll(&native); +} + +#define do_poll compat_poll +#define sched_poll compat_sched_poll + +#include "../schedule.c" + +int compat_set_timer_op(u32 lo, s32 hi) +{ + return do_set_timer_op(((s64)hi << 32) | lo); +} + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ Index: 2006-10-04/xen/common/schedule.c ==================================================================--- 2006-10-04.orig/xen/common/schedule.c 2006-10-04 15:11:03.000000000 +0200 +++ 2006-10-04/xen/common/schedule.c 2006-10-04 15:20:20.000000000 +0200 @@ -13,6 +13,7 @@ * */ +#ifndef COMPAT #include <xen/config.h> #include <xen/init.h> #include <xen/lib.h> @@ -366,9 +367,13 @@ long do_sched_op_compat(int cmd, unsigne return ret; } -long do_sched_op(int cmd, XEN_GUEST_HANDLE(void) arg) +typedef long ret_t; + +#endif /* !COMPAT */ + +ret_t do_sched_op(int cmd, XEN_GUEST_HANDLE(void) arg) { - long ret = 0; + ret_t ret = 0; switch ( cmd ) { @@ -445,6 +450,8 @@ long do_sched_op(int cmd, XEN_GUEST_HAND return ret; } +#ifndef COMPAT + /* Per-domain one-shot-timer hypercall. */ long do_set_timer_op(s_time_t timeout) { @@ -735,6 +742,12 @@ void dump_runq(unsigned char key) local_irq_restore(flags); } +#ifdef CONFIG_COMPAT +#include "compat/schedule.c" +#endif + +#endif /* !COMPAT */ + /* * Local variables: * mode: C Index: 2006-10-04/xen/include/xlat.lst ==================================================================--- 2006-10-04.orig/xen/include/xlat.lst 2006-10-04 15:20:09.000000000 +0200 +++ 2006-10-04/xen/include/xlat.lst 2006-10-04 15:20:20.000000000 +0200 @@ -25,4 +25,7 @@ ! memory_map memory.h ! memory_reservation memory.h ! translate_gpfn_list memory.h +! sched_poll sched.h +? sched_remote_shutdown sched.h +? sched_shutdown sched.h ! vcpu_runstate_info vcpu.h _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel