Commit | Line | Data |
---|---|---|
4563a860 JB |
1 | .syntax unified |
2 | .cpu cortex-a8 | |
3 | .thumb | |
4 | .text | |
5 | ||
6 | @ expansion 32 bytes | |
7 | .macro bw1 | |
8 | 1: | |
9 | add.w r0, r1, r2 | |
10 | blx.w arm_target | |
11 | add.w r0, r1, r2 | |
12 | blx.w arm_target | |
13 | add.w r0, r1, r2 | |
14 | blx.w arm_target | |
15 | add.w r0, r1, r2 | |
16 | blx.w arm_target | |
17 | .endm | |
18 | ||
19 | @ expansion 128 bytes | |
20 | .macro bw2 | |
21 | bw1 | |
22 | bw1 | |
23 | bw1 | |
24 | bw1 | |
25 | .endm | |
26 | ||
27 | @ expansion 32 bytes | |
28 | .macro bw3 | |
29 | 1: | |
30 | add.w r0, r1, r2 | |
31 | bne.w 1b | |
32 | add.w r0, r1, r2 | |
33 | bne.w 1b | |
34 | add.w r0, r1, r2 | |
35 | bne.w 1b | |
36 | add.w r0, r1, r2 | |
37 | bne.w 1b | |
38 | .endm | |
39 | ||
40 | @ expansion 128 bytes | |
41 | .macro bw4 | |
42 | bw3 | |
43 | bw3 | |
44 | bw3 | |
45 | bw3 | |
46 | .endm | |
47 | ||
48 | .align 3 | |
49 | .global _start | |
50 | ||
51 | .thumb | |
52 | .thumb_func | |
53 | .type _start, %function | |
54 | _start: | |
55 | nop | |
56 | ||
57 | @ Trigger Cortex-A8 erratum workaround with b<cond> instructions. | |
58 | bw4 | |
59 | bw4 | |
60 | ||
61 | nop | |
62 | ||
63 | .rept 957 | |
64 | nop.w | |
65 | .endr | |
66 | ||
67 | .arm | |
68 | arm_target: | |
69 | add r3, r4, r5 | |
70 | bx lr | |
71 | ||
72 | .thumb | |
73 | bl_insns: | |
74 | ||
75 | nop | |
76 | ||
77 | @ ...and again with bl instructions. | |
78 | bw2 | |
79 | bw2 | |
80 | ||
81 | bx lr |