xref: /openbmc/u-boot/arch/arc/lib/_millicodethunk.S (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (C) 1995, 1997, 2007-2013 Free Software Foundation, Inc.
4  */
5 
6  /* ANSI concatenation macros.  */
7 
8  #define CONCAT1(a, b) CONCAT2(a, b)
9  #define CONCAT2(a, b) a ## b
10 
11  /* Use the right prefix for global labels.  */
12 
13  #define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
14 
15 #ifndef WORKING_ASSEMBLER
16 #define abs_l abs
17 #define asl_l asl
18 #define mov_l mov
19 #endif
20 
21 #define FUNC(X)         .type SYM(X),@function
22 #define HIDDEN_FUNC(X)	FUNC(X)` .hidden X
23 #define ENDFUNC0(X)     .Lfe_##X: .size X,.Lfe_##X-X
24 #define ENDFUNC(X)      ENDFUNC0(X)
25 
26 	.section .text
27 	.align 4
28 	.global SYM(__st_r13_to_r15)
29 	.global SYM(__st_r13_to_r16)
30 	.global SYM(__st_r13_to_r17)
31 	.global SYM(__st_r13_to_r18)
32 	.global SYM(__st_r13_to_r19)
33 	.global SYM(__st_r13_to_r20)
34 	.global SYM(__st_r13_to_r21)
35 	.global SYM(__st_r13_to_r22)
36 	.global SYM(__st_r13_to_r23)
37 	.global SYM(__st_r13_to_r24)
38 	.global SYM(__st_r13_to_r25)
39 	HIDDEN_FUNC(__st_r13_to_r15)
40 	HIDDEN_FUNC(__st_r13_to_r16)
41 	HIDDEN_FUNC(__st_r13_to_r17)
42 	HIDDEN_FUNC(__st_r13_to_r18)
43 	HIDDEN_FUNC(__st_r13_to_r19)
44 	HIDDEN_FUNC(__st_r13_to_r20)
45 	HIDDEN_FUNC(__st_r13_to_r21)
46 	HIDDEN_FUNC(__st_r13_to_r22)
47 	HIDDEN_FUNC(__st_r13_to_r23)
48 	HIDDEN_FUNC(__st_r13_to_r24)
49 	HIDDEN_FUNC(__st_r13_to_r25)
50 	.align 4
51 SYM(__st_r13_to_r25):
52 	st r25, [sp,48]
53 SYM(__st_r13_to_r24):
54 	st r24, [sp,44]
55 SYM(__st_r13_to_r23):
56 	st r23, [sp,40]
57 SYM(__st_r13_to_r22):
58 	st r22, [sp,36]
59 SYM(__st_r13_to_r21):
60 	st r21, [sp,32]
61 SYM(__st_r13_to_r20):
62 	st r20, [sp,28]
63 SYM(__st_r13_to_r19):
64 	st r19, [sp,24]
65 SYM(__st_r13_to_r18):
66 	st r18, [sp,20]
67 SYM(__st_r13_to_r17):
68 	st r17, [sp,16]
69 SYM(__st_r13_to_r16):
70 	st r16, [sp,12]
71 SYM(__st_r13_to_r15):
72 #ifdef __ARC700__
73 	st r15, [sp,8] ; minimum function size to avoid stall: 6 bytes.
74 #else
75 	st_s r15, [sp,8]
76 #endif
77 	st_s r14, [sp,4]
78 	j_s.d [%blink]
79 	st_s r13, [sp,0]
80 	ENDFUNC(__st_r13_to_r15)
81 	ENDFUNC(__st_r13_to_r16)
82 	ENDFUNC(__st_r13_to_r17)
83 	ENDFUNC(__st_r13_to_r18)
84 	ENDFUNC(__st_r13_to_r19)
85 	ENDFUNC(__st_r13_to_r20)
86 	ENDFUNC(__st_r13_to_r21)
87 	ENDFUNC(__st_r13_to_r22)
88 	ENDFUNC(__st_r13_to_r23)
89 	ENDFUNC(__st_r13_to_r24)
90 	ENDFUNC(__st_r13_to_r25)
91 
92 	.section .text
93 	.align 4
94 ;	==================================
95 ;	the loads
96 
97 	.global SYM(__ld_r13_to_r15)
98 	.global SYM(__ld_r13_to_r16)
99 	.global SYM(__ld_r13_to_r17)
100 	.global SYM(__ld_r13_to_r18)
101 	.global SYM(__ld_r13_to_r19)
102 	.global SYM(__ld_r13_to_r20)
103 	.global SYM(__ld_r13_to_r21)
104 	.global SYM(__ld_r13_to_r22)
105 	.global SYM(__ld_r13_to_r23)
106 	.global SYM(__ld_r13_to_r24)
107 	.global SYM(__ld_r13_to_r25)
108 	HIDDEN_FUNC(__ld_r13_to_r15)
109 	HIDDEN_FUNC(__ld_r13_to_r16)
110 	HIDDEN_FUNC(__ld_r13_to_r17)
111 	HIDDEN_FUNC(__ld_r13_to_r18)
112 	HIDDEN_FUNC(__ld_r13_to_r19)
113 	HIDDEN_FUNC(__ld_r13_to_r20)
114 	HIDDEN_FUNC(__ld_r13_to_r21)
115 	HIDDEN_FUNC(__ld_r13_to_r22)
116 	HIDDEN_FUNC(__ld_r13_to_r23)
117 	HIDDEN_FUNC(__ld_r13_to_r24)
118 	HIDDEN_FUNC(__ld_r13_to_r25)
119 SYM(__ld_r13_to_r25):
120 	ld r25, [sp,48]
121 SYM(__ld_r13_to_r24):
122 	ld r24, [sp,44]
123 SYM(__ld_r13_to_r23):
124 	ld r23, [sp,40]
125 SYM(__ld_r13_to_r22):
126 	ld r22, [sp,36]
127 SYM(__ld_r13_to_r21):
128 	ld r21, [sp,32]
129 SYM(__ld_r13_to_r20):
130 	ld r20, [sp,28]
131 SYM(__ld_r13_to_r19):
132 	ld r19, [sp,24]
133 SYM(__ld_r13_to_r18):
134 	ld r18, [sp,20]
135 SYM(__ld_r13_to_r17):
136 	ld r17, [sp,16]
137 SYM(__ld_r13_to_r16):
138 	ld r16, [sp,12]
139 SYM(__ld_r13_to_r15):
140 #ifdef __ARC700__
141 	ld r15, [sp,8] ; minimum function size to avoid stall: 6 bytes.
142 #else
143 	ld_s r15, [sp,8]
144 #endif
145 	ld_s r14, [sp,4]
146 	j_s.d [%blink]
147 	ld_s r13, [sp,0]
148 	ENDFUNC(__ld_r13_to_r15)
149 	ENDFUNC(__ld_r13_to_r16)
150 	ENDFUNC(__ld_r13_to_r17)
151 	ENDFUNC(__ld_r13_to_r18)
152 	ENDFUNC(__ld_r13_to_r19)
153 	ENDFUNC(__ld_r13_to_r20)
154 	ENDFUNC(__ld_r13_to_r21)
155 	ENDFUNC(__ld_r13_to_r22)
156 	ENDFUNC(__ld_r13_to_r23)
157 	ENDFUNC(__ld_r13_to_r24)
158 	ENDFUNC(__ld_r13_to_r25)
159 
160 	.global SYM(__ld_r13_to_r14_ret)
161 	.global SYM(__ld_r13_to_r15_ret)
162 	.global SYM(__ld_r13_to_r16_ret)
163 	.global SYM(__ld_r13_to_r17_ret)
164 	.global SYM(__ld_r13_to_r18_ret)
165 	.global SYM(__ld_r13_to_r19_ret)
166 	.global SYM(__ld_r13_to_r20_ret)
167 	.global SYM(__ld_r13_to_r21_ret)
168 	.global SYM(__ld_r13_to_r22_ret)
169 	.global SYM(__ld_r13_to_r23_ret)
170 	.global SYM(__ld_r13_to_r24_ret)
171 	.global SYM(__ld_r13_to_r25_ret)
172 	HIDDEN_FUNC(__ld_r13_to_r14_ret)
173 	HIDDEN_FUNC(__ld_r13_to_r15_ret)
174 	HIDDEN_FUNC(__ld_r13_to_r16_ret)
175 	HIDDEN_FUNC(__ld_r13_to_r17_ret)
176 	HIDDEN_FUNC(__ld_r13_to_r18_ret)
177 	HIDDEN_FUNC(__ld_r13_to_r19_ret)
178 	HIDDEN_FUNC(__ld_r13_to_r20_ret)
179 	HIDDEN_FUNC(__ld_r13_to_r21_ret)
180 	HIDDEN_FUNC(__ld_r13_to_r22_ret)
181 	HIDDEN_FUNC(__ld_r13_to_r23_ret)
182 	HIDDEN_FUNC(__ld_r13_to_r24_ret)
183 	HIDDEN_FUNC(__ld_r13_to_r25_ret)
184 	.section .text
185 	.align 4
186 SYM(__ld_r13_to_r25_ret):
187 	ld r25, [sp,48]
188 SYM(__ld_r13_to_r24_ret):
189 	ld r24, [sp,44]
190 SYM(__ld_r13_to_r23_ret):
191 	ld r23, [sp,40]
192 SYM(__ld_r13_to_r22_ret):
193 	ld r22, [sp,36]
194 SYM(__ld_r13_to_r21_ret):
195 	ld r21, [sp,32]
196 SYM(__ld_r13_to_r20_ret):
197 	ld r20, [sp,28]
198 SYM(__ld_r13_to_r19_ret):
199 	ld r19, [sp,24]
200 SYM(__ld_r13_to_r18_ret):
201 	ld r18, [sp,20]
202 SYM(__ld_r13_to_r17_ret):
203 	ld r17, [sp,16]
204 SYM(__ld_r13_to_r16_ret):
205 	ld r16, [sp,12]
206 SYM(__ld_r13_to_r15_ret):
207 	ld r15, [sp,8]
208 SYM(__ld_r13_to_r14_ret):
209 	ld blink,[sp,r12]
210 	ld_s r14, [sp,4]
211 	ld.ab r13, [sp,r12]
212 	j_s.d [%blink]
213 	add_s sp,sp,4
214 	ENDFUNC(__ld_r13_to_r14_ret)
215 	ENDFUNC(__ld_r13_to_r15_ret)
216 	ENDFUNC(__ld_r13_to_r16_ret)
217 	ENDFUNC(__ld_r13_to_r17_ret)
218 	ENDFUNC(__ld_r13_to_r18_ret)
219 	ENDFUNC(__ld_r13_to_r19_ret)
220 	ENDFUNC(__ld_r13_to_r20_ret)
221 	ENDFUNC(__ld_r13_to_r21_ret)
222 	ENDFUNC(__ld_r13_to_r22_ret)
223 	ENDFUNC(__ld_r13_to_r23_ret)
224 	ENDFUNC(__ld_r13_to_r24_ret)
225 	ENDFUNC(__ld_r13_to_r25_ret)
226