~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/powerpc/lib/feature-fixups-test.S

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-or-later */
  2 /*
  3  * Copyright 2008 Michael Ellerman, IBM Corporation.
  4  */
  5 
  6 #include <asm/feature-fixups.h>
  7 #include <asm/ppc_asm.h>
  8 #include <asm/synch.h>
  9 #include <asm/asm-compat.h>
 10 #include <asm/ppc-opcode.h>
 11 
 12         .text
 13 
 14 #define globl(x)                \
 15         .globl x;       \
 16 x:
 17 
 18 globl(ftr_fixup_test1)
 19         or      1,1,1
 20         or      2,2,2   /* fixup will nop out this instruction */
 21         or      3,3,3
 22 
 23 globl(end_ftr_fixup_test1)
 24 
 25 globl(ftr_fixup_test1_orig)
 26         or      1,1,1
 27         or      2,2,2
 28         or      3,3,3
 29 
 30 globl(ftr_fixup_test1_expected)
 31         or      1,1,1
 32         nop
 33         or      3,3,3
 34 
 35 globl(ftr_fixup_test2)
 36         or      1,1,1
 37         or      2,2,2   /* fixup will replace this with ftr_fixup_test2_alt */
 38         or      3,3,3
 39 
 40 globl(end_ftr_fixup_test2)
 41 
 42 globl(ftr_fixup_test2_orig)
 43         or      1,1,1
 44         or      2,2,2
 45         or      3,3,3
 46 
 47 globl(ftr_fixup_test2_alt)
 48         or      31,31,31
 49 
 50 globl(ftr_fixup_test2_expected)
 51         or      1,1,1
 52         or      31,31,31
 53         or      3,3,3
 54 
 55 globl(ftr_fixup_test3)
 56         or      1,1,1
 57         or      2,2,2   /* fixup will fail to replace this */
 58         or      3,3,3
 59 
 60 globl(end_ftr_fixup_test3)
 61 
 62 globl(ftr_fixup_test3_orig)
 63         or      1,1,1
 64         or      2,2,2
 65         or      3,3,3
 66 
 67 globl(ftr_fixup_test3_alt)
 68         or      31,31,31
 69         or      31,31,31
 70 
 71 globl(ftr_fixup_test4)
 72         or      1,1,1
 73         or      2,2,2
 74         or      2,2,2
 75         or      2,2,2
 76         or      2,2,2
 77         or      3,3,3
 78 
 79 globl(end_ftr_fixup_test4)
 80 
 81 globl(ftr_fixup_test4_expected)
 82         or      1,1,1
 83         or      31,31,31
 84         or      31,31,31
 85         nop
 86         nop
 87         or      3,3,3
 88 
 89 globl(ftr_fixup_test4_orig)
 90         or      1,1,1
 91         or      2,2,2
 92         or      2,2,2
 93         or      2,2,2
 94         or      2,2,2
 95         or      3,3,3
 96 
 97 globl(ftr_fixup_test4_alt)
 98         or      31,31,31
 99         or      31,31,31
100 
101 
102 globl(ftr_fixup_test5)
103         or      1,1,1
104 BEGIN_FTR_SECTION
105         or      2,2,2
106         or      2,2,2
107         or      2,2,2
108         or      2,2,2
109         or      2,2,2
110         or      2,2,2
111         or      2,2,2
112 FTR_SECTION_ELSE
113 2:      b       3f
114 3:      or      5,5,5
115         beq     3b
116         b       1f
117         or      6,6,6
118         b       2b
119 1:      bdnz    3b
120 ALT_FTR_SECTION_END(0, 1)
121         or      1,1,1
122 
123 globl(end_ftr_fixup_test5)
124 
125 globl(ftr_fixup_test5_expected)
126         or      1,1,1
127 2:      b       3f
128 3:      or      5,5,5
129         beq     3b
130         b       1f
131         or      6,6,6
132         b       2b
133 1:      bdnz    3b
134         or      1,1,1
135 
136 globl(ftr_fixup_test6)
137 1:      or      1,1,1
138 BEGIN_FTR_SECTION
139         or      5,5,5
140 2:      PPC_LCMPI       r3,0
141         beq     4f
142         blt     2b
143         b       1b
144         b       4f
145 FTR_SECTION_ELSE
146 2:      or      2,2,2
147         PPC_LCMPI       r3,1
148         beq     3f
149         blt     2b
150         b       3f
151         b       1b
152 ALT_FTR_SECTION_END(0, 1)
153 3:      or      1,1,1
154         or      2,2,2
155 4:      or      3,3,3
156 
157 globl(end_ftr_fixup_test6)
158 
159 globl(ftr_fixup_test6_expected)
160 1:      or      1,1,1
161 2:      or      2,2,2
162         PPC_LCMPI       r3,1
163         beq     3f
164         blt     2b
165         b       3f
166         b       1b
167 3:      or      1,1,1
168         or      2,2,2
169         or      3,3,3
170 
171 globl(ftr_fixup_test7)
172         or      1,1,1
173 BEGIN_FTR_SECTION
174         or      2,2,2
175         or      2,2,2
176         or      2,2,2
177         or      2,2,2
178         or      2,2,2
179         or      2,2,2
180         or      2,2,2
181 FTR_SECTION_ELSE
182 2:      b       3f
183 3:      or      5,5,5
184         beq     3b
185         b       1f
186         or      6,6,6
187         b       2b
188         bdnz    3b
189 1:
190 ALT_FTR_SECTION_END(0, 1)
191         or      1,1,1
192         or      1,1,1
193 
194 globl(end_ftr_fixup_test7)
195         nop
196 
197 globl(ftr_fixup_test7_expected)
198         or      1,1,1
199 2:      b       3f
200 3:      or      5,5,5
201         beq     3b
202         b       1f
203         or      6,6,6
204         b       2b
205         bdnz    3b
206 1:      or      1,1,1
207 
208 #if 0
209 /* Test that if we have a larger else case the assembler spots it and
210  * reports an error. #if 0'ed so as not to break the build normally.
211  */
212 ftr_fixup_test_too_big:
213         or      1,1,1
214 BEGIN_FTR_SECTION
215         or      2,2,2
216         or      2,2,2
217         or      2,2,2
218 FTR_SECTION_ELSE
219         or      3,3,3
220         or      3,3,3
221         or      3,3,3
222         or      3,3,3
223 ALT_FTR_SECTION_END(0, 1)
224         or      1,1,1
225 #endif
226 
227 #define MAKE_MACRO_TEST(TYPE)                                           \
228 globl(ftr_fixup_test_ ##TYPE##_macros)                                  \
229         or      1,1,1;                                                  \
230         /* Basic test, this section should all be nop'ed */             \
231 BEGIN_##TYPE##_SECTION                                                  \
232         or      2,2,2;                                                  \
233         or      2,2,2;                                                  \
234         or      2,2,2;                                                  \
235 END_##TYPE##_SECTION(0, 1)                                              \
236         or      1,1,1;                                                  \
237         or      1,1,1;                                                  \
238         /* Basic test, this section should NOT be nop'ed */             \
239 BEGIN_##TYPE##_SECTION                                                  \
240         or      2,2,2;                                                  \
241         or      2,2,2;                                                  \
242         or      2,2,2;                                                  \
243 END_##TYPE##_SECTION(0, 0)                                              \
244         or      1,1,1;                                                  \
245         or      1,1,1;                                                  \
246         /* Nesting test, inner section should be nop'ed */              \
247 BEGIN_##TYPE##_SECTION                                                  \
248         or      2,2,2;                                                  \
249         or      2,2,2;                                                  \
250 BEGIN_##TYPE##_SECTION_NESTED(80)                                       \
251         or      3,3,3;                                                  \
252         or      3,3,3;                                                  \
253 END_##TYPE##_SECTION_NESTED(0, 1, 80)                                   \
254         or      2,2,2;                                                  \
255         or      2,2,2;                                                  \
256 END_##TYPE##_SECTION(0, 0)                                              \
257         or      1,1,1;                                                  \
258         or      1,1,1;                                                  \
259         /* Nesting test, whole section should be nop'ed */              \
260 BEGIN_##TYPE##_SECTION                                                  \
261         or      2,2,2;                                                  \
262         or      2,2,2;                                                  \
263 BEGIN_##TYPE##_SECTION_NESTED(80)                                       \
264         or      3,3,3;                                                  \
265         or      3,3,3;                                                  \
266 END_##TYPE##_SECTION_NESTED(0, 0, 80)                                   \
267         or      2,2,2;                                                  \
268         or      2,2,2;                                                  \
269 END_##TYPE##_SECTION(0, 1)                                              \
270         or      1,1,1;                                                  \
271         or      1,1,1;                                                  \
272         /* Nesting test, none should be nop'ed */                       \
273 BEGIN_##TYPE##_SECTION                                                  \
274         or      2,2,2;                                                  \
275         or      2,2,2;                                                  \
276 BEGIN_##TYPE##_SECTION_NESTED(80)                                       \
277         or      3,3,3;                                                  \
278         or      3,3,3;                                                  \
279 END_##TYPE##_SECTION_NESTED(0, 0, 80)                                   \
280         or      2,2,2;                                                  \
281         or      2,2,2;                                                  \
282 END_##TYPE##_SECTION(0, 0)                                              \
283         or      1,1,1;                                                  \
284         or      1,1,1;                                                  \
285         /* Basic alt section test, default case should be taken */      \
286 BEGIN_##TYPE##_SECTION                                                  \
287         or      3,3,3;                                                  \
288         or      3,3,3;                                                  \
289         or      3,3,3;                                                  \
290 ##TYPE##_SECTION_ELSE                                                   \
291         or      5,5,5;                                                  \
292         or      5,5,5;                                                  \
293 ALT_##TYPE##_SECTION_END(0, 0)                                          \
294         or      1,1,1;                                                  \
295         or      1,1,1;                                                  \
296         /* Basic alt section test, else case should be taken */         \
297 BEGIN_##TYPE##_SECTION                                                  \
298         or      3,3,3;                                                  \
299         or      3,3,3;                                                  \
300         or      3,3,3;                                                  \
301 ##TYPE##_SECTION_ELSE                                                   \
302         or      31,31,31;                                               \
303         or      31,31,31;                                               \
304         or      31,31,31;                                               \
305 ALT_##TYPE##_SECTION_END(0, 1)                                          \
306         or      1,1,1;                                                  \
307         or      1,1,1;                                                  \
308         /* Alt with smaller else case, should be padded with nops */    \
309 BEGIN_##TYPE##_SECTION                                                  \
310         or      3,3,3;                                                  \
311         or      3,3,3;                                                  \
312         or      3,3,3;                                                  \
313 ##TYPE##_SECTION_ELSE                                                   \
314         or      31,31,31;                                               \
315 ALT_##TYPE##_SECTION_END(0, 1)                                          \
316         or      1,1,1;                                                  \
317         or      1,1,1;                                                  \
318         /* Alt section with nested section in default case */           \
319         /* Default case should be taken, with nop'ed inner section */   \
320 BEGIN_##TYPE##_SECTION                                                  \
321         or      3,3,3;                                                  \
322 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
323         or      3,3,3;                                                  \
324         or      3,3,3;                                                  \
325 END_##TYPE##_SECTION_NESTED(0, 1, 95)                                   \
326         or      3,3,3;                                                  \
327 ##TYPE##_SECTION_ELSE                                                   \
328         or      2,2,2;                                                  \
329         or      2,2,2;                                                  \
330 ALT_##TYPE##_SECTION_END(0, 0)                                          \
331         or      1,1,1;                                                  \
332         or      1,1,1;                                                  \
333         /* Alt section with nested section in else, default taken */    \
334 BEGIN_##TYPE##_SECTION                                                  \
335         or      3,3,3;                                                  \
336         or      3,3,3;                                                  \
337         or      3,3,3;                                                  \
338 ##TYPE##_SECTION_ELSE                                                   \
339         or      5,5,5;                                                  \
340 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
341         or      3,3,3;                                                  \
342 END_##TYPE##_SECTION_NESTED(0, 1, 95)                                   \
343         or      5,5,5;                                                  \
344 ALT_##TYPE##_SECTION_END(0, 0)                                          \
345         or      1,1,1;                                                  \
346         or      1,1,1;                                                  \
347         /* Alt section with nested section in else, else taken & nop */ \
348 BEGIN_##TYPE##_SECTION                                                  \
349         or      3,3,3;                                                  \
350         or      3,3,3;                                                  \
351         or      3,3,3;                                                  \
352 ##TYPE##_SECTION_ELSE                                                   \
353         or      5,5,5;                                                  \
354 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
355         or      3,3,3;                                                  \
356 END_##TYPE##_SECTION_NESTED(0, 1, 95)                                   \
357         or      5,5,5;                                                  \
358 ALT_##TYPE##_SECTION_END(0, 1)                                          \
359         or      1,1,1;                                                  \
360         or      1,1,1;                                                  \
361         /* Feature section with nested alt section, default taken */    \
362 BEGIN_##TYPE##_SECTION                                                  \
363         or      2,2,2;                                                  \
364 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
365         or      1,1,1;                                                  \
366 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
367         or      5,5,5;                                                  \
368 ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)                               \
369         or      2,2,2;                                                  \
370 END_##TYPE##_SECTION(0, 0)                                              \
371         or      1,1,1;                                                  \
372         or      1,1,1;                                                  \
373         /* Feature section with nested alt section, else taken */       \
374 BEGIN_##TYPE##_SECTION                                                  \
375         or      2,2,2;                                                  \
376 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
377         or      1,1,1;                                                  \
378 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
379         or      5,5,5;                                                  \
380 ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)                               \
381         or      2,2,2;                                                  \
382 END_##TYPE##_SECTION(0, 0)                                              \
383         or      1,1,1;                                                  \
384         or      1,1,1;                                                  \
385         /* Feature section with nested alt section, all nop'ed */       \
386 BEGIN_##TYPE##_SECTION                                                  \
387         or      2,2,2;                                                  \
388 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
389         or      1,1,1;                                                  \
390 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
391         or      5,5,5;                                                  \
392 ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)                               \
393         or      2,2,2;                                                  \
394 END_##TYPE##_SECTION(0, 1)                                              \
395         or      1,1,1;                                                  \
396         or      1,1,1;                                                  \
397         /* Nested alt sections, default with inner default taken */     \
398 BEGIN_##TYPE##_SECTION                                                  \
399         or      2,2,2;                                                  \
400 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
401         or      1,1,1;                                                  \
402 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
403         or      5,5,5;                                                  \
404 ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95)                               \
405         or      2,2,2;                                                  \
406 ##TYPE##_SECTION_ELSE                                                   \
407         or      31,31,31;                                               \
408 BEGIN_##TYPE##_SECTION_NESTED(94)                                       \
409         or      5,5,5;                                                  \
410 ##TYPE##_SECTION_ELSE_NESTED(94)                                        \
411         or      1,1,1;                                                  \
412 ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)                               \
413         or      31,31,31;                                               \
414 ALT_##TYPE##_SECTION_END(0, 0)                                          \
415         or      1,1,1;                                                  \
416         or      1,1,1;                                                  \
417         /* Nested alt sections, default with inner else taken */        \
418 BEGIN_##TYPE##_SECTION                                                  \
419         or      2,2,2;                                                  \
420 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
421         or      1,1,1;                                                  \
422 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
423         or      5,5,5;                                                  \
424 ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)                               \
425         or      2,2,2;                                                  \
426 ##TYPE##_SECTION_ELSE                                                   \
427         or      31,31,31;                                               \
428 BEGIN_##TYPE##_SECTION_NESTED(94)                                       \
429         or      5,5,5;                                                  \
430 ##TYPE##_SECTION_ELSE_NESTED(94)                                        \
431         or      1,1,1;                                                  \
432 ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)                               \
433         or      31,31,31;                                               \
434 ALT_##TYPE##_SECTION_END(0, 0)                                          \
435         or      1,1,1;                                                  \
436         or      1,1,1;                                                  \
437         /* Nested alt sections, else with inner default taken */        \
438 BEGIN_##TYPE##_SECTION                                                  \
439         or      2,2,2;                                                  \
440 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
441         or      1,1,1;                                                  \
442 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
443         or      5,5,5;                                                  \
444 ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)                               \
445         or      2,2,2;                                                  \
446 ##TYPE##_SECTION_ELSE                                                   \
447         or      31,31,31;                                               \
448 BEGIN_##TYPE##_SECTION_NESTED(94)                                       \
449         or      5,5,5;                                                  \
450 ##TYPE##_SECTION_ELSE_NESTED(94)                                        \
451         or      1,1,1;                                                  \
452 ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94)                               \
453         or      31,31,31;                                               \
454 ALT_##TYPE##_SECTION_END(0, 1)                                          \
455         or      1,1,1;                                                  \
456         or      1,1,1;                                                  \
457         /* Nested alt sections, else with inner else taken */           \
458 BEGIN_##TYPE##_SECTION                                                  \
459         or      2,2,2;                                                  \
460 BEGIN_##TYPE##_SECTION_NESTED(95)                                       \
461         or      1,1,1;                                                  \
462 ##TYPE##_SECTION_ELSE_NESTED(95)                                        \
463         or      5,5,5;                                                  \
464 ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95)                               \
465         or      2,2,2;                                                  \
466 ##TYPE##_SECTION_ELSE                                                   \
467         or      31,31,31;                                               \
468 BEGIN_##TYPE##_SECTION_NESTED(94)                                       \
469         or      5,5,5;                                                  \
470 ##TYPE##_SECTION_ELSE_NESTED(94)                                        \
471         or      1,1,1;                                                  \
472 ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94)                               \
473         or      31,31,31;                                               \
474 ALT_##TYPE##_SECTION_END(0, 1)                                          \
475         or      1,1,1;                                                  \
476         or      1,1,1;                                                  \
477         /* Nested alt sections, else can have large else case */        \
478 BEGIN_##TYPE##_SECTION                                                  \
479         or      2,2,2;                                                  \
480         or      2,2,2;                                                  \
481         or      2,2,2;                                                  \
482         or      2,2,2;                                                  \
483 ##TYPE##_SECTION_ELSE                                                   \
484 BEGIN_##TYPE##_SECTION_NESTED(94)                                       \
485         or      5,5,5;                                                  \
486         or      5,5,5;                                                  \
487         or      5,5,5;                                                  \
488         or      5,5,5;                                                  \
489 ##TYPE##_SECTION_ELSE_NESTED(94)                                        \
490         or      1,1,1;                                                  \
491         or      1,1,1;                                                  \
492         or      1,1,1;                                                  \
493         or      1,1,1;                                                  \
494 ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94)                               \
495 ALT_##TYPE##_SECTION_END(0, 1)                                          \
496         or      1,1,1;                                                  \
497         or      1,1,1;
498 
499 #define MAKE_MACRO_TEST_EXPECTED(TYPE)                                  \
500 globl(ftr_fixup_test_ ##TYPE##_macros_expected)                         \
501         or      1,1,1;                                                  \
502         /* Basic test, this section should all be nop'ed */             \
503 /* BEGIN_##TYPE##_SECTION */                                            \
504         nop;                                                            \
505         nop;                                                            \
506         nop;                                                            \
507 /* END_##TYPE##_SECTION(0, 1) */                                        \
508         or      1,1,1;                                                  \
509         or      1,1,1;                                                  \
510         /* Basic test, this section should NOT be nop'ed */             \
511 /* BEGIN_##TYPE##_SECTION */                                            \
512         or      2,2,2;                                                  \
513         or      2,2,2;                                                  \
514         or      2,2,2;                                                  \
515 /* END_##TYPE##_SECTION(0, 0) */                                        \
516         or      1,1,1;                                                  \
517         or      1,1,1;                                                  \
518         /* Nesting test, inner section should be nop'ed */              \
519 /* BEGIN_##TYPE##_SECTION */                                            \
520         or      2,2,2;                                                  \
521         or      2,2,2;                                                  \
522 /* BEGIN_##TYPE##_SECTION_NESTED(80) */                                 \
523         nop;                                                            \
524         nop;                                                            \
525 /* END_##TYPE##_SECTION_NESTED(0, 1, 80) */                             \
526         or      2,2,2;                                                  \
527         or      2,2,2;                                                  \
528 /* END_##TYPE##_SECTION(0, 0) */                                        \
529         or      1,1,1;                                                  \
530         or      1,1,1;                                                  \
531         /* Nesting test, whole section should be nop'ed */              \
532         /* NB. inner section is not nop'ed, but then entire outer is */ \
533 /* BEGIN_##TYPE##_SECTION */                                            \
534         nop;                                                            \
535         nop;                                                            \
536 /* BEGIN_##TYPE##_SECTION_NESTED(80) */                                 \
537         nop;                                                            \
538         nop;                                                            \
539 /* END_##TYPE##_SECTION_NESTED(0, 0, 80) */                             \
540         nop;                                                            \
541         nop;                                                            \
542 /* END_##TYPE##_SECTION(0, 1) */                                        \
543         or      1,1,1;                                                  \
544         or      1,1,1;                                                  \
545         /* Nesting test, none should be nop'ed */                       \
546 /* BEGIN_##TYPE##_SECTION */                                            \
547         or      2,2,2;                                                  \
548         or      2,2,2;                                                  \
549 /* BEGIN_##TYPE##_SECTION_NESTED(80) */                                 \
550         or      3,3,3;                                                  \
551         or      3,3,3;                                                  \
552 /* END_##TYPE##_SECTION_NESTED(0, 0, 80) */                             \
553         or      2,2,2;                                                  \
554         or      2,2,2;                                                  \
555 /* END_##TYPE##_SECTION(0, 0) */                                        \
556         or      1,1,1;                                                  \
557         or      1,1,1;                                                  \
558         /* Basic alt section test, default case should be taken */      \
559 /* BEGIN_##TYPE##_SECTION */                                            \
560         or      3,3,3;                                                  \
561         or      3,3,3;                                                  \
562         or      3,3,3;                                                  \
563 /* ##TYPE##_SECTION_ELSE */                                             \
564         /* or   5,5,5; */                                               \
565         /* or   5,5,5; */                                               \
566 /* ALT_##TYPE##_SECTION_END(0, 0) */                                    \
567         or      1,1,1;                                                  \
568         or      1,1,1;                                                  \
569         /* Basic alt section test, else case should be taken */         \
570 /* BEGIN_##TYPE##_SECTION */                                            \
571         /* or   3,3,3; */                                               \
572         /* or   3,3,3; */                                               \
573         /* or   3,3,3; */                                               \
574 /* ##TYPE##_SECTION_ELSE */                                             \
575         or      31,31,31;                                               \
576         or      31,31,31;                                               \
577         or      31,31,31;                                               \
578 /* ALT_##TYPE##_SECTION_END(0, 1) */                                    \
579         or      1,1,1;                                                  \
580         or      1,1,1;                                                  \
581         /* Alt with smaller else case, should be padded with nops */    \
582 /* BEGIN_##TYPE##_SECTION */                                            \
583         /* or   3,3,3; */                                               \
584         /* or   3,3,3; */                                               \
585         /* or   3,3,3; */                                               \
586 /* ##TYPE##_SECTION_ELSE */                                             \
587         or      31,31,31;                                               \
588         nop;                                                            \
589         nop;                                                            \
590 /* ALT_##TYPE##_SECTION_END(0, 1) */                                    \
591         or      1,1,1;                                                  \
592         or      1,1,1;                                                  \
593         /* Alt section with nested section in default case */           \
594         /* Default case should be taken, with nop'ed inner section */   \
595 /* BEGIN_##TYPE##_SECTION */                                            \
596         or      3,3,3;                                                  \
597 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
598         nop;                                                            \
599         nop;                                                            \
600 /* END_##TYPE##_SECTION_NESTED(0, 1, 95) */                             \
601         or      3,3,3;                                                  \
602 /* ##TYPE##_SECTION_ELSE */                                             \
603         /* or   2,2,2; */                                               \
604         /* or   2,2,2; */                                               \
605 /* ALT_##TYPE##_SECTION_END(0, 0) */                                    \
606         or      1,1,1;                                                  \
607         or      1,1,1;                                                  \
608         /* Alt section with nested section in else, default taken */    \
609 /* BEGIN_##TYPE##_SECTION */                                            \
610         or      3,3,3;                                                  \
611         or      3,3,3;                                                  \
612         or      3,3,3;                                                  \
613 /* ##TYPE##_SECTION_ELSE */                                             \
614         /* or   5,5,5; */                                               \
615 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
616         /* or   3,3,3; */                                               \
617 /* END_##TYPE##_SECTION_NESTED(0, 1, 95) */                             \
618         /* or   5,5,5; */                                               \
619 /* ALT_##TYPE##_SECTION_END(0, 0) */                                    \
620         or      1,1,1;                                                  \
621         or      1,1,1;                                                  \
622         /* Alt section with nested section in else, else taken & nop */ \
623 /* BEGIN_##TYPE##_SECTION */                                            \
624         /* or   3,3,3; */                                               \
625         /* or   3,3,3; */                                               \
626         /* or   3,3,3; */                                               \
627 /* ##TYPE##_SECTION_ELSE */                                             \
628         or      5,5,5;                                                  \
629 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
630         nop;                                                            \
631 /* END_##TYPE##_SECTION_NESTED(0, 1, 95) */                             \
632         or      5,5,5;                                                  \
633 /* ALT_##TYPE##_SECTION_END(0, 1) */                                    \
634         or      1,1,1;                                                  \
635         or      1,1,1;                                                  \
636         /* Feature section with nested alt section, default taken */    \
637 /* BEGIN_##TYPE##_SECTION */                                            \
638         or      2,2,2;                                                  \
639 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
640         or      1,1,1;                                                  \
641 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
642         /* or   5,5,5; */                                               \
643 /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */                         \
644         or      2,2,2;                                                  \
645 /* END_##TYPE##_SECTION(0, 0) */                                        \
646         or      1,1,1;                                                  \
647         or      1,1,1;                                                  \
648         /* Feature section with nested alt section, else taken */       \
649 /* BEGIN_##TYPE##_SECTION */                                            \
650         or      2,2,2;                                                  \
651 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
652         /* or   1,1,1; */                                               \
653 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
654         or      5,5,5;                                                  \
655 /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */                         \
656         or      2,2,2;                                                  \
657 /* END_##TYPE##_SECTION(0, 0) */                                        \
658         or      1,1,1;                                                  \
659         or      1,1,1;                                                  \
660         /* Feature section with nested alt section, all nop'ed */       \
661 /* BEGIN_##TYPE##_SECTION */                                            \
662         nop;                                                            \
663 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
664         nop;                                                            \
665 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
666         /* or   5,5,5; */                                               \
667 /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */                         \
668         nop;                                                            \
669 /* END_##TYPE##_SECTION(0, 1) */                                        \
670         or      1,1,1;                                                  \
671         or      1,1,1;                                                  \
672         /* Nested alt sections, default with inner default taken */     \
673 /* BEGIN_##TYPE##_SECTION */                                            \
674         or      2,2,2;                                                  \
675 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
676         or      1,1,1;                                                  \
677 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
678         /* or   5,5,5; */                                               \
679 /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */                         \
680         or      2,2,2;                                                  \
681 /* ##TYPE##_SECTION_ELSE */                                             \
682         /* or   31,31,31; */                                            \
683 /* BEGIN_##TYPE##_SECTION_NESTED(94) */                                 \
684         /* or   5,5,5; */                                               \
685 /* ##TYPE##_SECTION_ELSE_NESTED(94) */                                  \
686         /* or   1,1,1; */                                               \
687 /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */                         \
688         /* or   31,31,31; */                                            \
689 /* ALT_##TYPE##_SECTION_END(0, 0) */                                    \
690         or      1,1,1;                                                  \
691         or      1,1,1;                                                  \
692         /* Nested alt sections, default with inner else taken */        \
693 /* BEGIN_##TYPE##_SECTION */                                            \
694         or      2,2,2;                                                  \
695 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
696         /* or   1,1,1; */                                               \
697 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
698         or      5,5,5;                                                  \
699 /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */                         \
700         or      2,2,2;                                                  \
701 /* ##TYPE##_SECTION_ELSE */                                             \
702         /* or   31,31,31; */                                            \
703 /* BEGIN_##TYPE##_SECTION_NESTED(94) */                                 \
704         /* or   5,5,5; */                                               \
705 /* ##TYPE##_SECTION_ELSE_NESTED(94) */                                  \
706         /* or   1,1,1; */                                               \
707 /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */                         \
708         /* or   31,31,31; */                                            \
709 /* ALT_##TYPE##_SECTION_END(0, 0) */                                    \
710         or      1,1,1;                                                  \
711         or      1,1,1;                                                  \
712         /* Nested alt sections, else with inner default taken */        \
713 /* BEGIN_##TYPE##_SECTION */                                            \
714         /* or   2,2,2; */                                               \
715 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
716         /* or   1,1,1; */                                               \
717 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
718         /* or   5,5,5; */                                               \
719 /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */                         \
720         /* or   2,2,2; */                                               \
721 /* ##TYPE##_SECTION_ELSE */                                             \
722         or      31,31,31;                                               \
723 /* BEGIN_##TYPE##_SECTION_NESTED(94) */                                 \
724         or      5,5,5;                                                  \
725 /* ##TYPE##_SECTION_ELSE_NESTED(94) */                                  \
726         /* or   1,1,1; */                                               \
727 /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */                         \
728         or      31,31,31;                                               \
729 /* ALT_##TYPE##_SECTION_END(0, 1) */                                    \
730         or      1,1,1;                                                  \
731         or      1,1,1;                                                  \
732         /* Nested alt sections, else with inner else taken */           \
733 /* BEGIN_##TYPE##_SECTION */                                            \
734         /* or   2,2,2; */                                               \
735 /* BEGIN_##TYPE##_SECTION_NESTED(95) */                                 \
736         /* or   1,1,1; */                                               \
737 /* ##TYPE##_SECTION_ELSE_NESTED(95) */                                  \
738         /* or   5,5,5; */                                               \
739 /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */                         \
740         /* or   2,2,2; */                                               \
741 /* ##TYPE##_SECTION_ELSE */                                             \
742         or      31,31,31;                                               \
743 /* BEGIN_##TYPE##_SECTION_NESTED(94) */                                 \
744         /* or   5,5,5; */                                               \
745 /* ##TYPE##_SECTION_ELSE_NESTED(94) */                                  \
746         or      1,1,1;                                                  \
747 /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */                         \
748         or      31,31,31;                                               \
749 /* ALT_##TYPE##_SECTION_END(0, 1) */                                    \
750         or      1,1,1;                                                  \
751         or      1,1,1;                                                  \
752         /* Nested alt sections, else can have large else case */        \
753 /* BEGIN_##TYPE##_SECTION */                                            \
754         /* or   2,2,2; */                                               \
755         /* or   2,2,2; */                                               \
756         /* or   2,2,2; */                                               \
757         /* or   2,2,2; */                                               \
758 /* ##TYPE##_SECTION_ELSE */                                             \
759 /* BEGIN_##TYPE##_SECTION_NESTED(94) */                                 \
760         /* or   5,5,5; */                                               \
761         /* or   5,5,5; */                                               \
762         /* or   5,5,5; */                                               \
763         /* or   5,5,5; */                                               \
764 /* ##TYPE##_SECTION_ELSE_NESTED(94) */                                  \
765         or      1,1,1;                                                  \
766         or      1,1,1;                                                  \
767         or      1,1,1;                                                  \
768         or      1,1,1;                                                  \
769 /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */                         \
770 /* ALT_##TYPE##_SECTION_END(0, 1) */                                    \
771         or      1,1,1;                                                  \
772         or      1,1,1;
773 
774 MAKE_MACRO_TEST(FTR);
775 MAKE_MACRO_TEST_EXPECTED(FTR);
776 
777 #ifdef CONFIG_PPC64
778 MAKE_MACRO_TEST(FW_FTR);
779 MAKE_MACRO_TEST_EXPECTED(FW_FTR);
780 #endif
781 
782 globl(lwsync_fixup_test)
783 1:      or      1,1,1
784         LWSYNC
785 globl(end_lwsync_fixup_test)
786 
787 globl(lwsync_fixup_test_expected_LWSYNC)
788 1:      or      1,1,1
789         lwsync
790 
791 globl(lwsync_fixup_test_expected_SYNC)
792 1:      or      1,1,1
793         sync
794 
795 globl(ftr_fixup_prefix1)
796         or      1,1,1
797         .long OP_PREFIX << 26
798         .long 0x0000000
799         or      2,2,2
800 globl(end_ftr_fixup_prefix1)
801 
802 globl(ftr_fixup_prefix1_orig)
803         or      1,1,1
804         .long OP_PREFIX << 26
805         .long 0x0000000
806         or      2,2,2
807 
808 globl(ftr_fixup_prefix1_expected)
809         or      1,1,1
810         nop
811         nop
812         or      2,2,2
813 
814 globl(ftr_fixup_prefix2)
815         or      1,1,1
816         .long OP_PREFIX << 26
817         .long 0x0000000
818         or      2,2,2
819 globl(end_ftr_fixup_prefix2)
820 
821 globl(ftr_fixup_prefix2_orig)
822         or      1,1,1
823         .long OP_PREFIX << 26
824         .long 0x0000000
825         or      2,2,2
826 
827 globl(ftr_fixup_prefix2_alt)
828         .long OP_PREFIX << 26
829         .long 0x0000001
830 
831 globl(ftr_fixup_prefix2_expected)
832         or      1,1,1
833         .long OP_PREFIX << 26
834         .long 0x0000001
835         or      2,2,2
836 
837 globl(ftr_fixup_prefix3)
838         or      1,1,1
839         .long OP_PREFIX << 26
840         .long 0x0000000
841         or      2,2,2
842         or      3,3,3
843 globl(end_ftr_fixup_prefix3)
844 
845 globl(ftr_fixup_prefix3_orig)
846         or      1,1,1
847         .long OP_PREFIX << 26
848         .long 0x0000000
849         or      2,2,2
850         or      3,3,3
851 
852 globl(ftr_fixup_prefix3_alt)
853         .long OP_PREFIX << 26
854         .long 0x0000001
855         nop
856 
857 globl(ftr_fixup_prefix3_expected)
858         or      1,1,1
859         .long OP_PREFIX << 26
860         .long 0x0000001
861         nop
862         or      3,3,3

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php