source: mainline/boot/arch/ia64/src/pal_asm.S@ c4026aa

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since c4026aa was f31aed5, checked in by Jakub Jermar <jakub@…>, 13 years ago

Make sure PSR.I is cleared before calling PAL.

  • Property mode set to 100644
File size: 2.0 KB
Line 
1#
2# Copyright (c) 2011 Jakub Jermar
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8#
9# - Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# - 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.
14# - The name of the author may not be used to endorse or promote products
15# derived from this software without specific prior written permission.
16#
17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27#
28
29.explicit
30
31.global pal_static_call
32
33pal_static_call:
34 alloc loc0 = ar.pfs, 7, 6, 0, 0
35
36 mov loc1 = psr ;;
37 mov psr.l = r0 ;;
38 srlz.i
39 srlz.d
40
41 mov loc2 = gp
42 mov loc3 = rp
43
44 addl loc4 = @gprel(pal_proc), gp
45
46 mov r28 = in0
47 mov r29 = in1
48 mov r30 = in2
49 mov r31 = in3 ;;
50
51 ld8 loc4 = [loc4]
52 movl loc5 = 0f ;;
53
54 mov b6 = loc4
55 mov rp = loc5 ;;
56 br.cond.sptk.many b6
57
580:
59 mov psr.l = loc1 ;;
60 srlz.i
61 srlz.d
62
63 cmp.ne p7,p0 = 0, in4
64 cmp.ne p8,p0 = 0, in5
65 cmp.ne p9,p0 = 0, in6 ;;
66
67(p7) st8 [in4] = r9
68(p8) st8 [in5] = r10
69(p9) st8 [in6] = r11
70
71 mov gp = loc2
72 mov rp = loc3 ;;
73
74 mov ar.pfs = loc0
75 br.ret.sptk.many rp
76
Note: See TracBrowser for help on using the repository browser.