Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / tools / testing / selftests / powerpc / pmu / ebb / busy_loop.S
1 /*
2  * Copyright 2014, Michael Ellerman, IBM Corp.
3  * Licensed under GPLv2.
4  */
5
6 #include <ppc-asm.h>
7
8         .text
9
10 FUNC_START(core_busy_loop)
11         stdu    %r1, -168(%r1)
12         std     r14, 160(%r1)
13         std     r15, 152(%r1)
14         std     r16, 144(%r1)
15         std     r17, 136(%r1)
16         std     r18, 128(%r1)
17         std     r19, 120(%r1)
18         std     r20, 112(%r1)
19         std     r21, 104(%r1)
20         std     r22, 96(%r1)
21         std     r23, 88(%r1)
22         std     r24, 80(%r1)
23         std     r25, 72(%r1)
24         std     r26, 64(%r1)
25         std     r27, 56(%r1)
26         std     r28, 48(%r1)
27         std     r29, 40(%r1)
28         std     r30, 32(%r1)
29         std     r31, 24(%r1)
30
31         li       r3, 0x3030
32         std      r3, -96(%r1)
33         li       r4, 0x4040
34         std      r4, -104(%r1)
35         li       r5, 0x5050
36         std      r5, -112(%r1)
37         li       r6, 0x6060
38         std      r6, -120(%r1)
39         li       r7, 0x7070
40         std      r7, -128(%r1)
41         li       r8, 0x0808
42         std      r8, -136(%r1)
43         li       r9, 0x0909
44         std      r9, -144(%r1)
45         li      r10, 0x1010
46         std     r10, -152(%r1)
47         li      r11, 0x1111
48         std     r11, -160(%r1)
49         li      r14, 0x1414
50         std     r14, -168(%r1)
51         li      r15, 0x1515
52         std     r15, -176(%r1)
53         li      r16, 0x1616
54         std     r16, -184(%r1)
55         li      r17, 0x1717
56         std     r17, -192(%r1)
57         li      r18, 0x1818
58         std     r18, -200(%r1)
59         li      r19, 0x1919
60         std     r19, -208(%r1)
61         li      r20, 0x2020
62         std     r20, -216(%r1)
63         li      r21, 0x2121
64         std     r21, -224(%r1)
65         li      r22, 0x2222
66         std     r22, -232(%r1)
67         li      r23, 0x2323
68         std     r23, -240(%r1)
69         li      r24, 0x2424
70         std     r24, -248(%r1)
71         li      r25, 0x2525
72         std     r25, -256(%r1)
73         li      r26, 0x2626
74         std     r26, -264(%r1)
75         li      r27, 0x2727
76         std     r27, -272(%r1)
77         li      r28, 0x2828
78         std     r28, -280(%r1)
79         li      r29, 0x2929
80         std     r29, -288(%r1)
81         li      r30, 0x3030
82         li      r31, 0x3131
83
84         li      r3, 0
85 0:      addi    r3, r3, 1
86         cmpwi   r3, 100
87         blt     0b
88
89         /* Return 1 (fail) unless we get through all the checks */
90         li      r3, 1
91
92         /* Check none of our registers have been corrupted */
93         cmpwi   r4,  0x4040
94         bne     1f
95         cmpwi   r5,  0x5050
96         bne     1f
97         cmpwi   r6,  0x6060
98         bne     1f
99         cmpwi   r7,  0x7070
100         bne     1f
101         cmpwi   r8,  0x0808
102         bne     1f
103         cmpwi   r9,  0x0909
104         bne     1f
105         cmpwi   r10, 0x1010
106         bne     1f
107         cmpwi   r11, 0x1111
108         bne     1f
109         cmpwi   r14, 0x1414
110         bne     1f
111         cmpwi   r15, 0x1515
112         bne     1f
113         cmpwi   r16, 0x1616
114         bne     1f
115         cmpwi   r17, 0x1717
116         bne     1f
117         cmpwi   r18, 0x1818
118         bne     1f
119         cmpwi   r19, 0x1919
120         bne     1f
121         cmpwi   r20, 0x2020
122         bne     1f
123         cmpwi   r21, 0x2121
124         bne     1f
125         cmpwi   r22, 0x2222
126         bne     1f
127         cmpwi   r23, 0x2323
128         bne     1f
129         cmpwi   r24, 0x2424
130         bne     1f
131         cmpwi   r25, 0x2525
132         bne     1f
133         cmpwi   r26, 0x2626
134         bne     1f
135         cmpwi   r27, 0x2727
136         bne     1f
137         cmpwi   r28, 0x2828
138         bne     1f
139         cmpwi   r29, 0x2929
140         bne     1f
141         cmpwi   r30, 0x3030
142         bne     1f
143         cmpwi   r31, 0x3131
144         bne     1f
145
146         /* Load junk into all our registers before we reload them from the stack. */
147         li      r3,  0xde
148         li      r4,  0xad
149         li      r5,  0xbe
150         li      r6,  0xef
151         li      r7,  0xde
152         li      r8,  0xad
153         li      r9,  0xbe
154         li      r10, 0xef
155         li      r11, 0xde
156         li      r14, 0xad
157         li      r15, 0xbe
158         li      r16, 0xef
159         li      r17, 0xde
160         li      r18, 0xad
161         li      r19, 0xbe
162         li      r20, 0xef
163         li      r21, 0xde
164         li      r22, 0xad
165         li      r23, 0xbe
166         li      r24, 0xef
167         li      r25, 0xde
168         li      r26, 0xad
169         li      r27, 0xbe
170         li      r28, 0xef
171         li      r29, 0xdd
172
173         ld      r3,     -96(%r1)
174         cmpwi   r3,  0x3030
175         bne     1f
176         ld      r4,     -104(%r1)
177         cmpwi   r4,  0x4040
178         bne     1f
179         ld      r5,     -112(%r1)
180         cmpwi   r5,  0x5050
181         bne     1f
182         ld      r6,     -120(%r1)
183         cmpwi   r6,  0x6060
184         bne     1f
185         ld      r7,     -128(%r1)
186         cmpwi   r7,  0x7070
187         bne     1f
188         ld      r8,     -136(%r1)
189         cmpwi   r8,  0x0808
190         bne     1f
191         ld      r9,     -144(%r1)
192         cmpwi   r9,  0x0909
193         bne     1f
194         ld      r10, -152(%r1)
195         cmpwi   r10, 0x1010
196         bne     1f
197         ld      r11, -160(%r1)
198         cmpwi   r11, 0x1111
199         bne     1f
200         ld      r14, -168(%r1)
201         cmpwi   r14, 0x1414
202         bne     1f
203         ld      r15, -176(%r1)
204         cmpwi   r15, 0x1515
205         bne     1f
206         ld      r16, -184(%r1)
207         cmpwi   r16, 0x1616
208         bne     1f
209         ld      r17, -192(%r1)
210         cmpwi   r17, 0x1717
211         bne     1f
212         ld      r18, -200(%r1)
213         cmpwi   r18, 0x1818
214         bne     1f
215         ld      r19, -208(%r1)
216         cmpwi   r19, 0x1919
217         bne     1f
218         ld      r20, -216(%r1)
219         cmpwi   r20, 0x2020
220         bne     1f
221         ld      r21, -224(%r1)
222         cmpwi   r21, 0x2121
223         bne     1f
224         ld      r22, -232(%r1)
225         cmpwi   r22, 0x2222
226         bne     1f
227         ld      r23, -240(%r1)
228         cmpwi   r23, 0x2323
229         bne     1f
230         ld      r24, -248(%r1)
231         cmpwi   r24, 0x2424
232         bne     1f
233         ld      r25, -256(%r1)
234         cmpwi   r25, 0x2525
235         bne     1f
236         ld      r26, -264(%r1)
237         cmpwi   r26, 0x2626
238         bne     1f
239         ld      r27, -272(%r1)
240         cmpwi   r27, 0x2727
241         bne     1f
242         ld      r28, -280(%r1)
243         cmpwi   r28, 0x2828
244         bne     1f
245         ld      r29, -288(%r1)
246         cmpwi   r29, 0x2929
247         bne     1f
248
249         /* Load 0 (success) to return */
250         li      r3, 0
251
252 1:      ld      r14, 160(%r1)
253         ld      r15, 152(%r1)
254         ld      r16, 144(%r1)
255         ld      r17, 136(%r1)
256         ld      r18, 128(%r1)
257         ld      r19, 120(%r1)
258         ld      r20, 112(%r1)
259         ld      r21, 104(%r1)
260         ld      r22, 96(%r1)
261         ld      r23, 88(%r1)
262         ld      r24, 80(%r1)
263         ld      r25, 72(%r1)
264         ld      r26, 64(%r1)
265         ld      r27, 56(%r1)
266         ld      r28, 48(%r1)
267         ld      r29, 40(%r1)
268         ld      r30, 32(%r1)
269         ld      r31, 24(%r1)
270         addi    %r1, %r1, 168
271         blr