[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [IA64] Paravirtualize syscall path in file fsys.S
# HG changeset patch # User awilliam@xxxxxxxxxxxx # Date 1168974063 25200 # Node ID 43115ffc6635fe2526c1c5ccc98b93bfd80495b6 # Parent 7a2c224a9252bb9ca6ada21cf372f22f37ad98fe [IA64] Paravirtualize syscall path in file fsys.S Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx> --- linux-2.6-xen-sparse/arch/ia64/kernel/fsys.S | 41 +++++++++++++++++++++++++++ 1 files changed, 41 insertions(+) diff -r 7a2c224a9252 -r 43115ffc6635 linux-2.6-xen-sparse/arch/ia64/kernel/fsys.S --- a/linux-2.6-xen-sparse/arch/ia64/kernel/fsys.S Tue Jan 16 11:51:45 2007 -0700 +++ b/linux-2.6-xen-sparse/arch/ia64/kernel/fsys.S Tue Jan 16 12:01:03 2007 -0700 @@ -516,11 +516,34 @@ ENTRY(fsys_fallback_syscall) adds r17=-1024,r15 movl r14=sys_call_table ;; +#ifdef CONFIG_XEN + movl r18=running_on_xen;; + ld4 r18=[r18];; + // p14 = running_on_xen + // p15 = !running_on_xen + cmp.ne p14,p15=r0,r18 + ;; +(p14) movl r18=XSI_PSR_I_ADDR;; +(p14) ld8 r18=[r18] +(p14) mov r29=1;; +(p14) st1 [r18]=r29 +(p15) rsm psr.i +#else rsm psr.i +#endif shladd r18=r17,3,r14 ;; ld8 r18=[r18] // load normal (heavy-weight) syscall entry-point +#ifdef CONFIG_XEN +(p14) mov r27=r8 +(p14) XEN_HYPER_GET_PSR + ;; +(p14) mov r29=r8 +(p14) mov r8=r27 +(p15) mov r29=psr // read psr (12 cyc load latency) +#else mov r29=psr // read psr (12 cyc load latency) +#endif mov r27=ar.rsc mov r21=ar.fpsr mov r26=ar.pfs @@ -632,7 +655,25 @@ GLOBAL_ENTRY(fsys_bubble_down) mov rp=r14 // I0 set the real return addr and r3=_TIF_SYSCALL_TRACEAUDIT,r3 // A ;; +#ifdef CONFIG_XEN + movl r14=running_on_xen;; + ld4 r14=[r14];; + // p14 = running_on_xen + // p15 = !running_on_xen + cmp.ne p14,p15=r0,r14 + ;; +(p14) movl r28=XSI_PSR_I_ADDR;; +(p14) ld8 r28=[r28];; +(p14) adds r28=-1,r28;; // event_pending +(p14) ld1 r14=[r28];; +(p14) cmp.ne.unc p13,p14=r14,r0;; +(p13) XEN_HYPER_SSM_I +(p14) adds r28=1,r28;; // event_mask +(p14) st1 [r28]=r0;; +(p15) ssm psr.i +#else ssm psr.i // M2 we're on kernel stacks now, reenable irqs +#endif cmp.eq p8,p0=r3,r0 // A (p10) br.cond.spnt.many ia64_ret_from_syscall // B return if bad call-frame or r15 is a NaT _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |