Merge git://git.denx.de/u-boot-imx
[oweals/u-boot.git] / arch / arc / lib / _millicodethunk.S
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
52 SYM(__st_r13_to_r25):
53         st r25, [sp,48]
54 SYM(__st_r13_to_r24):
55         st r24, [sp,44]
56 SYM(__st_r13_to_r23):
57         st r23, [sp,40]
58 SYM(__st_r13_to_r22):
59         st r22, [sp,36]
60 SYM(__st_r13_to_r21):
61         st r21, [sp,32]
62 SYM(__st_r13_to_r20):
63         st r20, [sp,28]
64 SYM(__st_r13_to_r19):
65         st r19, [sp,24]
66 SYM(__st_r13_to_r18):
67         st r18, [sp,20]
68 SYM(__st_r13_to_r17):
69         st r17, [sp,16]
70 SYM(__st_r13_to_r16):
71         st r16, [sp,12]
72 SYM(__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)
120 SYM(__ld_r13_to_r25):
121         ld r25, [sp,48]
122 SYM(__ld_r13_to_r24):
123         ld r24, [sp,44]
124 SYM(__ld_r13_to_r23):
125         ld r23, [sp,40]
126 SYM(__ld_r13_to_r22):
127         ld r22, [sp,36]
128 SYM(__ld_r13_to_r21):
129         ld r21, [sp,32]
130 SYM(__ld_r13_to_r20):
131         ld r20, [sp,28]
132 SYM(__ld_r13_to_r19):
133         ld r19, [sp,24]
134 SYM(__ld_r13_to_r18):
135         ld r18, [sp,20]
136 SYM(__ld_r13_to_r17):
137         ld r17, [sp,16]
138 SYM(__ld_r13_to_r16):
139         ld r16, [sp,12]
140 SYM(__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
187 SYM(__ld_r13_to_r25_ret):
188         ld r25, [sp,48]
189 SYM(__ld_r13_to_r24_ret):
190         ld r24, [sp,44]
191 SYM(__ld_r13_to_r23_ret):
192         ld r23, [sp,40]
193 SYM(__ld_r13_to_r22_ret):
194         ld r22, [sp,36]
195 SYM(__ld_r13_to_r21_ret):
196         ld r21, [sp,32]
197 SYM(__ld_r13_to_r20_ret):
198         ld r20, [sp,28]
199 SYM(__ld_r13_to_r19_ret):
200         ld r19, [sp,24]
201 SYM(__ld_r13_to_r18_ret):
202         ld r18, [sp,20]
203 SYM(__ld_r13_to_r17_ret):
204         ld r17, [sp,16]
205 SYM(__ld_r13_to_r16_ret):
206         ld r16, [sp,12]
207 SYM(__ld_r13_to_r15_ret):
208         ld r15, [sp,8]
209 SYM(__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)