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