This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / arch / ia64 / xen / xensetup.S
1 /*
2  * Support routines for Xen
3  *
4  * Copyright (C) 2005 Dan Magenheimer <dan.magenheimer@hp.com>
5  */
6
7 #include <asm/processor.h>
8 #include <asm/asmmacro.h>
9
10 #define isBP    p3      // are we the Bootstrap Processor?
11
12         .text
13 GLOBAL_ENTRY(early_xen_setup)
14         mov r8=ar.rsc           // Initialized in head.S
15 (isBP)  movl r9=running_on_xen;;
16         extr.u r8=r8,2,2;;      // Extract pl fields
17         cmp.eq p7,p0=r8,r0      // p7: !running on xen
18         mov r8=1                // booleanize.
19 (p7)    br.ret.sptk.many rp;;
20 (isBP)  st4 [r9]=r8
21         movl r10=xen_ivt;;
22         
23         mov cr.iva=r10
24
25 #if XSI_BASE != 0xf100000000000000UL
26         /* Backward compatibility.  */
27 (isBP)  mov r2=0x600
28 (isBP)  movl r28=XSI_BASE;;
29 (isBP)  break 0x1000;;
30 #endif
31
32         br.ret.sptk.many rp
33         ;;
34 END(early_xen_setup)
35
36 #include <xen/interface/xen.h>
37
38 /* Stub for suspend.
39    Just force the stacked registers to be written in memory.  */        
40 GLOBAL_ENTRY(HYPERVISOR_suspend)
41         alloc r20=ar.pfs,0,0,0,0
42         mov r14=2
43         mov r15=r12
44         ;;
45         /* We don't want to deal with RSE.  */
46         flushrs
47         mov r2=__HYPERVISOR_sched_op
48         st4 [r12]=r14
49         ;;
50         break 0x1000
51         ;; 
52         mov ar.pfs=r20
53         br.ret.sptk.many b0
54 END(HYPERVISOR_suspend)