WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [IA64] Support continuation for hypercall

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [IA64] Support continuation for hypercall in hvm.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 23 Jan 2008 01:11:23 -0800
Delivery-date: Wed, 23 Jan 2008 01:17:13 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1200597128 25200
# Node ID 44aca51a4b7b9e8b19fd5bf83dd2aff7fb54dd37
# Parent  7238393ef22030463a88f35163a94031f7d5fd4c
[IA64] Support continuation for hypercall in hvm.

Signed-off-by: Tristan Gingold <tgingold@xxxxxxx>
---
 xen/arch/ia64/vmx/vmx_ivt.S |   44 ++++++++++++++++++++++++++------------------
 1 files changed, 26 insertions(+), 18 deletions(-)

diff -r 7238393ef220 -r 44aca51a4b7b xen/arch/ia64/vmx/vmx_ivt.S
--- a/xen/arch/ia64/vmx/vmx_ivt.S       Thu Jan 17 12:11:01 2008 -0700
+++ b/xen/arch/ia64/vmx/vmx_ivt.S       Thu Jan 17 12:12:08 2008 -0700
@@ -566,7 +566,6 @@ ENTRY(vmx_break_fault)
 
     mov.m r25=ar.unat                  // M2 (5 cyc)
     dep r29=r8,r29,41,2                        // I0   insert new ei into 
cr.ipsr
-//  adds r15=1024,r15                  // A    restore original syscall number
    //
    // If any of the above loads miss in L1D, we'll stall here until
    // the data arrives.
@@ -574,34 +573,43 @@ ENTRY(vmx_break_fault)
 ///////////////////////////////////////////////////////////////////////
 //    st1 [r16]=r0                             // M2|3 clear 
current->thread.on_ustack flag
     mov b6=r30                         // I0   setup syscall handler branch 
reg early
-//    cmp.ne pKStk,pUStk=r0,r0         // A    were we on kernel stacks 
already?
-
-//  and r9=_TIF_SYSCALL_TRACEAUDIT,r9  // A    mask trace or audit
+
     mov r18=ar.bsp                             // M2 (12 cyc)
    ;;
-//(pUStk) addl r1=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r1 // A    compute base of 
memory stack
     addl r1=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r1 // A    compute base of 
memory stack
-//  cmp.eq p14,p0=r9,r0                        // A    are syscalls being 
traced/audited?
-//    br.call.sptk.many b7=ia64_syscall_setup  // B
     br.call.sptk.many b7=ia64_hypercall_setup  // B
 1:
     mov ar.rsc=0x3                             // M2   set eager mode, pl 0, 
LE, loadrs=0
-//    nop 0
-//    bsw.1                                    // B (6 cyc) regs are saved, 
switch to bank 1
     ;;
     ssm psr.ic | PSR_DEFAULT_BITS              // M2   now it's safe to 
re-enable intr.-collection
-//    movl r3=ia64_ret_from_syscall            // X
-    movl r3=ia64_leave_hypercall               // X
     ;;
 
     srlz.i                                     // M0   ensure interruption 
collection is on
-    mov rp=r3                          // I0   set the real return addr
-    //(p10) br.cond.spnt.many ia64_ret_from_syscall    // B    return if bad 
call-frame or r15 is a NaT
-    (p15)   ssm psr.i                          // M2   restore psr.i
-    //(p14) br.call.sptk.many b6=b6                    // B    invoke 
syscall-handker (ignore return addr)
-    br.call.sptk.many b6=b6                    // B    invoke syscall-handker 
(ignore return addr)
-//  br.cond.spnt.many ia64_trace_syscall       // B    do syscall-tracing 
thingamagic
-   ;;
+(p15)   ssm psr.i                              // M2   restore psr.i
+    br.call.sptk.many b0=b6                    // B    invoke syscall-handker 
(ignore return addr)
+       ;; 
+       //restore hypercall argument if continuation
+       adds r2=IA64_VCPU_HYPERCALL_CONTINUATION_OFS,r13
+       ;;
+       ld1 r20=[r2]
+       ;;
+       st1 [r2]=r0
+       cmp.ne p6,p0=r20,r0
+       ;;
+(p6)   adds r2=PT(R16)+16,r12
+(p6)   adds r3=PT(R17)+16,r12
+       ;;
+(p6)   ld8 r32=[r2],16
+(p6)   ld8 r33=[r3],16
+       ;;
+(p6)   ld8 r34=[r2],16
+(p6)   ld8 r35=[r3],16
+       ;;
+(p6)   ld8 r36=[r2],16
+       ;;
+       br.sptk.many ia64_leave_hypercall
+       ;;
+
    VMX_FAULT(11)
 END(vmx_break_fault)
 

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [IA64] Support continuation for hypercall in hvm., Xen patchbot-unstable <=