1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* |
3 | * test helper assembly functions |
4 | * |
5 | * Copyright (C) 2016 Simon Guo, IBM Corporation. |
6 | */ |
7 | #include <ppc-asm.h> |
8 | #include "reg.h" |
9 | |
10 | |
11 | /* Non volatile GPR - unsigned long buf[18] */ |
12 | FUNC_START(load_gpr) |
13 | ld 14, 0*8(3) |
14 | ld 15, 1*8(3) |
15 | ld 16, 2*8(3) |
16 | ld 17, 3*8(3) |
17 | ld 18, 4*8(3) |
18 | ld 19, 5*8(3) |
19 | ld 20, 6*8(3) |
20 | ld 21, 7*8(3) |
21 | ld 22, 8*8(3) |
22 | ld 23, 9*8(3) |
23 | ld 24, 10*8(3) |
24 | ld 25, 11*8(3) |
25 | ld 26, 12*8(3) |
26 | ld 27, 13*8(3) |
27 | ld 28, 14*8(3) |
28 | ld 29, 15*8(3) |
29 | ld 30, 16*8(3) |
30 | ld 31, 17*8(3) |
31 | blr |
32 | FUNC_END(load_gpr) |
33 | |
34 | FUNC_START(store_gpr) |
35 | std 14, 0*8(3) |
36 | std 15, 1*8(3) |
37 | std 16, 2*8(3) |
38 | std 17, 3*8(3) |
39 | std 18, 4*8(3) |
40 | std 19, 5*8(3) |
41 | std 20, 6*8(3) |
42 | std 21, 7*8(3) |
43 | std 22, 8*8(3) |
44 | std 23, 9*8(3) |
45 | std 24, 10*8(3) |
46 | std 25, 11*8(3) |
47 | std 26, 12*8(3) |
48 | std 27, 13*8(3) |
49 | std 28, 14*8(3) |
50 | std 29, 15*8(3) |
51 | std 30, 16*8(3) |
52 | std 31, 17*8(3) |
53 | blr |
54 | FUNC_END(store_gpr) |
55 | |
56 | /* Double Precision Float - double buf[32] */ |
57 | FUNC_START(store_fpr) |
58 | stfd 0, 0*8(3) |
59 | stfd 1, 1*8(3) |
60 | stfd 2, 2*8(3) |
61 | stfd 3, 3*8(3) |
62 | stfd 4, 4*8(3) |
63 | stfd 5, 5*8(3) |
64 | stfd 6, 6*8(3) |
65 | stfd 7, 7*8(3) |
66 | stfd 8, 8*8(3) |
67 | stfd 9, 9*8(3) |
68 | stfd 10, 10*8(3) |
69 | stfd 11, 11*8(3) |
70 | stfd 12, 12*8(3) |
71 | stfd 13, 13*8(3) |
72 | stfd 14, 14*8(3) |
73 | stfd 15, 15*8(3) |
74 | stfd 16, 16*8(3) |
75 | stfd 17, 17*8(3) |
76 | stfd 18, 18*8(3) |
77 | stfd 19, 19*8(3) |
78 | stfd 20, 20*8(3) |
79 | stfd 21, 21*8(3) |
80 | stfd 22, 22*8(3) |
81 | stfd 23, 23*8(3) |
82 | stfd 24, 24*8(3) |
83 | stfd 25, 25*8(3) |
84 | stfd 26, 26*8(3) |
85 | stfd 27, 27*8(3) |
86 | stfd 28, 28*8(3) |
87 | stfd 29, 29*8(3) |
88 | stfd 30, 30*8(3) |
89 | stfd 31, 31*8(3) |
90 | blr |
91 | FUNC_END(store_fpr) |
92 | |
93 | /* VMX/VSX registers - unsigned long buf[128] */ |
94 | FUNC_START(loadvsx) |
95 | lis 4, 0 |
96 | LXVD2X (0,(4),(3)) |
97 | addi 4, 4, 16 |
98 | LXVD2X (1,(4),(3)) |
99 | addi 4, 4, 16 |
100 | LXVD2X (2,(4),(3)) |
101 | addi 4, 4, 16 |
102 | LXVD2X (3,(4),(3)) |
103 | addi 4, 4, 16 |
104 | LXVD2X (4,(4),(3)) |
105 | addi 4, 4, 16 |
106 | LXVD2X (5,(4),(3)) |
107 | addi 4, 4, 16 |
108 | LXVD2X (6,(4),(3)) |
109 | addi 4, 4, 16 |
110 | LXVD2X (7,(4),(3)) |
111 | addi 4, 4, 16 |
112 | LXVD2X (8,(4),(3)) |
113 | addi 4, 4, 16 |
114 | LXVD2X (9,(4),(3)) |
115 | addi 4, 4, 16 |
116 | LXVD2X (10,(4),(3)) |
117 | addi 4, 4, 16 |
118 | LXVD2X (11,(4),(3)) |
119 | addi 4, 4, 16 |
120 | LXVD2X (12,(4),(3)) |
121 | addi 4, 4, 16 |
122 | LXVD2X (13,(4),(3)) |
123 | addi 4, 4, 16 |
124 | LXVD2X (14,(4),(3)) |
125 | addi 4, 4, 16 |
126 | LXVD2X (15,(4),(3)) |
127 | addi 4, 4, 16 |
128 | LXVD2X (16,(4),(3)) |
129 | addi 4, 4, 16 |
130 | LXVD2X (17,(4),(3)) |
131 | addi 4, 4, 16 |
132 | LXVD2X (18,(4),(3)) |
133 | addi 4, 4, 16 |
134 | LXVD2X (19,(4),(3)) |
135 | addi 4, 4, 16 |
136 | LXVD2X (20,(4),(3)) |
137 | addi 4, 4, 16 |
138 | LXVD2X (21,(4),(3)) |
139 | addi 4, 4, 16 |
140 | LXVD2X (22,(4),(3)) |
141 | addi 4, 4, 16 |
142 | LXVD2X (23,(4),(3)) |
143 | addi 4, 4, 16 |
144 | LXVD2X (24,(4),(3)) |
145 | addi 4, 4, 16 |
146 | LXVD2X (25,(4),(3)) |
147 | addi 4, 4, 16 |
148 | LXVD2X (26,(4),(3)) |
149 | addi 4, 4, 16 |
150 | LXVD2X (27,(4),(3)) |
151 | addi 4, 4, 16 |
152 | LXVD2X (28,(4),(3)) |
153 | addi 4, 4, 16 |
154 | LXVD2X (29,(4),(3)) |
155 | addi 4, 4, 16 |
156 | LXVD2X (30,(4),(3)) |
157 | addi 4, 4, 16 |
158 | LXVD2X (31,(4),(3)) |
159 | addi 4, 4, 16 |
160 | LXVD2X (32,(4),(3)) |
161 | addi 4, 4, 16 |
162 | LXVD2X (33,(4),(3)) |
163 | addi 4, 4, 16 |
164 | LXVD2X (34,(4),(3)) |
165 | addi 4, 4, 16 |
166 | LXVD2X (35,(4),(3)) |
167 | addi 4, 4, 16 |
168 | LXVD2X (36,(4),(3)) |
169 | addi 4, 4, 16 |
170 | LXVD2X (37,(4),(3)) |
171 | addi 4, 4, 16 |
172 | LXVD2X (38,(4),(3)) |
173 | addi 4, 4, 16 |
174 | LXVD2X (39,(4),(3)) |
175 | addi 4, 4, 16 |
176 | LXVD2X (40,(4),(3)) |
177 | addi 4, 4, 16 |
178 | LXVD2X (41,(4),(3)) |
179 | addi 4, 4, 16 |
180 | LXVD2X (42,(4),(3)) |
181 | addi 4, 4, 16 |
182 | LXVD2X (43,(4),(3)) |
183 | addi 4, 4, 16 |
184 | LXVD2X (44,(4),(3)) |
185 | addi 4, 4, 16 |
186 | LXVD2X (45,(4),(3)) |
187 | addi 4, 4, 16 |
188 | LXVD2X (46,(4),(3)) |
189 | addi 4, 4, 16 |
190 | LXVD2X (47,(4),(3)) |
191 | addi 4, 4, 16 |
192 | LXVD2X (48,(4),(3)) |
193 | addi 4, 4, 16 |
194 | LXVD2X (49,(4),(3)) |
195 | addi 4, 4, 16 |
196 | LXVD2X (50,(4),(3)) |
197 | addi 4, 4, 16 |
198 | LXVD2X (51,(4),(3)) |
199 | addi 4, 4, 16 |
200 | LXVD2X (52,(4),(3)) |
201 | addi 4, 4, 16 |
202 | LXVD2X (53,(4),(3)) |
203 | addi 4, 4, 16 |
204 | LXVD2X (54,(4),(3)) |
205 | addi 4, 4, 16 |
206 | LXVD2X (55,(4),(3)) |
207 | addi 4, 4, 16 |
208 | LXVD2X (56,(4),(3)) |
209 | addi 4, 4, 16 |
210 | LXVD2X (57,(4),(3)) |
211 | addi 4, 4, 16 |
212 | LXVD2X (58,(4),(3)) |
213 | addi 4, 4, 16 |
214 | LXVD2X (59,(4),(3)) |
215 | addi 4, 4, 16 |
216 | LXVD2X (60,(4),(3)) |
217 | addi 4, 4, 16 |
218 | LXVD2X (61,(4),(3)) |
219 | addi 4, 4, 16 |
220 | LXVD2X (62,(4),(3)) |
221 | addi 4, 4, 16 |
222 | LXVD2X (63,(4),(3)) |
223 | blr |
224 | FUNC_END(loadvsx) |
225 | |
226 | FUNC_START(storevsx) |
227 | lis 4, 0 |
228 | STXVD2X (0,(4),(3)) |
229 | addi 4, 4, 16 |
230 | STXVD2X (1,(4),(3)) |
231 | addi 4, 4, 16 |
232 | STXVD2X (2,(4),(3)) |
233 | addi 4, 4, 16 |
234 | STXVD2X (3,(4),(3)) |
235 | addi 4, 4, 16 |
236 | STXVD2X (4,(4),(3)) |
237 | addi 4, 4, 16 |
238 | STXVD2X (5,(4),(3)) |
239 | addi 4, 4, 16 |
240 | STXVD2X (6,(4),(3)) |
241 | addi 4, 4, 16 |
242 | STXVD2X (7,(4),(3)) |
243 | addi 4, 4, 16 |
244 | STXVD2X (8,(4),(3)) |
245 | addi 4, 4, 16 |
246 | STXVD2X (9,(4),(3)) |
247 | addi 4, 4, 16 |
248 | STXVD2X (10,(4),(3)) |
249 | addi 4, 4, 16 |
250 | STXVD2X (11,(4),(3)) |
251 | addi 4, 4, 16 |
252 | STXVD2X (12,(4),(3)) |
253 | addi 4, 4, 16 |
254 | STXVD2X (13,(4),(3)) |
255 | addi 4, 4, 16 |
256 | STXVD2X (14,(4),(3)) |
257 | addi 4, 4, 16 |
258 | STXVD2X (15,(4),(3)) |
259 | addi 4, 4, 16 |
260 | STXVD2X (16,(4),(3)) |
261 | addi 4, 4, 16 |
262 | STXVD2X (17,(4),(3)) |
263 | addi 4, 4, 16 |
264 | STXVD2X (18,(4),(3)) |
265 | addi 4, 4, 16 |
266 | STXVD2X (19,(4),(3)) |
267 | addi 4, 4, 16 |
268 | STXVD2X (20,(4),(3)) |
269 | addi 4, 4, 16 |
270 | STXVD2X (21,(4),(3)) |
271 | addi 4, 4, 16 |
272 | STXVD2X (22,(4),(3)) |
273 | addi 4, 4, 16 |
274 | STXVD2X (23,(4),(3)) |
275 | addi 4, 4, 16 |
276 | STXVD2X (24,(4),(3)) |
277 | addi 4, 4, 16 |
278 | STXVD2X (25,(4),(3)) |
279 | addi 4, 4, 16 |
280 | STXVD2X (26,(4),(3)) |
281 | addi 4, 4, 16 |
282 | STXVD2X (27,(4),(3)) |
283 | addi 4, 4, 16 |
284 | STXVD2X (28,(4),(3)) |
285 | addi 4, 4, 16 |
286 | STXVD2X (29,(4),(3)) |
287 | addi 4, 4, 16 |
288 | STXVD2X (30,(4),(3)) |
289 | addi 4, 4, 16 |
290 | STXVD2X (31,(4),(3)) |
291 | addi 4, 4, 16 |
292 | STXVD2X (32,(4),(3)) |
293 | addi 4, 4, 16 |
294 | STXVD2X (33,(4),(3)) |
295 | addi 4, 4, 16 |
296 | STXVD2X (34,(4),(3)) |
297 | addi 4, 4, 16 |
298 | STXVD2X (35,(4),(3)) |
299 | addi 4, 4, 16 |
300 | STXVD2X (36,(4),(3)) |
301 | addi 4, 4, 16 |
302 | STXVD2X (37,(4),(3)) |
303 | addi 4, 4, 16 |
304 | STXVD2X (38,(4),(3)) |
305 | addi 4, 4, 16 |
306 | STXVD2X (39,(4),(3)) |
307 | addi 4, 4, 16 |
308 | STXVD2X (40,(4),(3)) |
309 | addi 4, 4, 16 |
310 | STXVD2X (41,(4),(3)) |
311 | addi 4, 4, 16 |
312 | STXVD2X (42,(4),(3)) |
313 | addi 4, 4, 16 |
314 | STXVD2X (43,(4),(3)) |
315 | addi 4, 4, 16 |
316 | STXVD2X (44,(4),(3)) |
317 | addi 4, 4, 16 |
318 | STXVD2X (45,(4),(3)) |
319 | addi 4, 4, 16 |
320 | STXVD2X (46,(4),(3)) |
321 | addi 4, 4, 16 |
322 | STXVD2X (47,(4),(3)) |
323 | addi 4, 4, 16 |
324 | STXVD2X (48,(4),(3)) |
325 | addi 4, 4, 16 |
326 | STXVD2X (49,(4),(3)) |
327 | addi 4, 4, 16 |
328 | STXVD2X (50,(4),(3)) |
329 | addi 4, 4, 16 |
330 | STXVD2X (51,(4),(3)) |
331 | addi 4, 4, 16 |
332 | STXVD2X (52,(4),(3)) |
333 | addi 4, 4, 16 |
334 | STXVD2X (53,(4),(3)) |
335 | addi 4, 4, 16 |
336 | STXVD2X (54,(4),(3)) |
337 | addi 4, 4, 16 |
338 | STXVD2X (55,(4),(3)) |
339 | addi 4, 4, 16 |
340 | STXVD2X (56,(4),(3)) |
341 | addi 4, 4, 16 |
342 | STXVD2X (57,(4),(3)) |
343 | addi 4, 4, 16 |
344 | STXVD2X (58,(4),(3)) |
345 | addi 4, 4, 16 |
346 | STXVD2X (59,(4),(3)) |
347 | addi 4, 4, 16 |
348 | STXVD2X (60,(4),(3)) |
349 | addi 4, 4, 16 |
350 | STXVD2X (61,(4),(3)) |
351 | addi 4, 4, 16 |
352 | STXVD2X (62,(4),(3)) |
353 | addi 4, 4, 16 |
354 | STXVD2X (63,(4),(3)) |
355 | blr |
356 | FUNC_END(storevsx) |
357 | |