source: mainline/boot/arch/ia64/src/sal_asm.S@ cb7be8f

Last change on this file since cb7be8f was cb7be8f, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 3 years ago

Update headers in .S files that incorrectly use #-style comments

  • Property mode set to 100644
File size: 1.3 KB
Line 
1/*
2 * SPDX-FileCopyrightText: 2011 Jakub Jermar
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include <abi/asmtool.h>
8
9.explicit
10
11#define STACK_SCRATCH_AREA 16
12#define STACK_IN8 (0 + STACK_SCRATCH_AREA)
13#define STACK_IN9 (8 + STACK_SCRATCH_AREA)
14#define STACK_IN10 (16 + STACK_SCRATCH_AREA)
15
16#
17# Assume the following PSR bits are already 0, as expected by SAL:
18#
19# be, cpl, is, da, dd, ss, ri, ed, ia
20#
21# Assume PSR.bn is 1, as expected by SAL.
22#
23FUNCTION_BEGIN(sal_call)
24 alloc loc0 = ar.pfs, 8, 8, 8, 0
25
26 adds sp = -STACK_SCRATCH_AREA, sp
27
28 mov loc1 = gp
29 mov loc2 = rp
30
31 addl loc3 = @gprel(sal_proc), gp
32 addl loc4 = @gprel(sal_proc_gp), gp
33
34 mov out0 = in0
35 mov out1 = in1
36 mov out2 = in2
37 mov out3 = in3
38 mov out4 = in4
39 mov out5 = in5
40 mov out6 = in6
41 mov out7 = in7 ;;
42
43 ld8 loc3 = [loc3]
44 ld8 gp = [loc4]
45
46 adds r14 = STACK_IN8 + STACK_SCRATCH_AREA, sp
47 adds r15 = STACK_IN9 + STACK_SCRATCH_AREA, sp
48 adds r16 = STACK_IN10 + STACK_SCRATCH_AREA, sp ;;
49
50 ld8 loc5 = [r14]
51 ld8 loc6 = [r15]
52 ld8 loc7 = [r16]
53
54 mov b6 = loc3 ;;
55 br.call.sptk.many rp = b6
56
57 cmp.ne p7,p0 = 0, loc5
58 cmp.ne p8,p0 = 0, loc6
59 cmp.ne p9,p0 = 0, loc7 ;;
60
61(p7) st8 [loc5] = r9
62(p8) st8 [loc6] = r10
63(p9) st8 [loc7] = r11
64
65 mov gp = loc1
66 mov rp = loc2
67
68 adds sp = STACK_SCRATCH_AREA, sp ;;
69
70 mov ar.pfs = loc0
71 br.ret.sptk.many rp
72FUNCTION_END(sal_call)
73
Note: See TracBrowser for help on using the repository browser.