2 * Copyright (c) 2011 Marcel Moolenaar
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 #include <machine/asm.h>
30 #include <machine/ia64_cpu.h>
35 * u_long ia64_efi_physical(ia64_efi_f, u_long, u_long, u_long, u_long)
44 ENTRY(ia64_efi_physical, 5)
48 alloc loc0=ar.pfs,5,6,4,0
54 mov loc2=psr // save psr
55 movl r16=IA64_PSR_I | IA64_PSR_IT | IA64_PSR_DT | \
56 IA64_PSR_RT | IA64_PSR_DFL | IA64_PSR_DFH
63 or r16=r14,r15 // new psr
69 mov loc3=sp // save sp
71 mov loc4=ar.bsp // save ar.bsp
74 tpa r19=loc4 // new bspstore
77 tpa r20=loc3 // new sp
111 br.call.sptk.many rp=b6
141 END(ia64_efi_physical)
145 * ia64_pal_ret ia64_pal_physical(ia64_fw_f, u_long, u_long, u_long, u_long)
154 ENTRY(ia64_pal_physical, 5)
158 alloc loc0=ar.pfs,5,6,4,0
164 mov loc2=psr // save psr
165 movl r16=IA64_PSR_I | IA64_PSR_IT | IA64_PSR_DT | \
166 IA64_PSR_RT | IA64_PSR_DFL | IA64_PSR_DFH
173 or r16=r14,r15 // new psr
179 mov loc3=sp // save sp
181 mov loc4=ar.bsp // save ar.bsp
187 tpa r19=r14 // new bspstore
190 tpa r20=r15 // new sp
191 movl r21=ia64_pal_entry
228 br.call.sptk.many rp=b6
258 END(ia64_pal_physical)