4 * Alternate PAL routines for Xen. Heavily leveraged from
7 * Copyright (C) 2005 Hewlett-Packard Co
8 * Dan Magenheimer <dan.magenheimer@.hp.com>
11 #include <asm/asmmacro.h>
12 #include <asm/processor.h>
14 GLOBAL_ENTRY(xen_pal_call_static)
15 .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(5)
16 alloc loc1 = ar.pfs,5,5,0,0
18 movl r22=running_on_xen;;
21 (p7) br.cond.spnt.many __ia64_pal_call_static;;
23 movl loc2 = pal_entry_point
30 ld8 loc2 = [loc2] // loc2 <- entry point
31 tbit.nz p6,p7 = in4, 0
33 mov loc4=ar.rsc // save RSE configuration
35 mov ar.rsc=0 // put RSE in enforced lazy, LE mode
42 // this is low priority for paravirtualization, but is called
43 // from the idle loop so confuses privop counting
48 (p7) adds r31=XSI_PSR_I_ADDR_OFS-XSI_PSR_IC_OFS,r31
59 (p6) rsm psr.i | psr.ic
70 mov ar.rsc = loc4 // restore RSE configuration
74 srlz.d // seralize restoration of psr.l
76 END(xen_pal_call_static)