]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo/src/Full_Demo/reg_test.S
Update to MIT licensed FreeRTOS V10.0.0 - see https://www.freertos.org/History.txt
[freertos] / FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702 / RTOSDemo / src / Full_Demo / reg_test.S
1 /*\r
2  * FreeRTOS Kernel V10.0.0\r
3  * Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
4  *\r
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
6  * this software and associated documentation files (the "Software"), to deal in\r
7  * the Software without restriction, including without limitation the rights to\r
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r
9  * the Software, and to permit persons to whom the Software is furnished to do so,\r
10  * subject to the following conditions:\r
11  *\r
12  * The above copyright notice and this permission notice shall be included in all\r
13  * copies or substantial portions of the Software. If you wish to use our Amazon\r
14  * FreeRTOS name, please do so in a fair use way that does not cause confusion.\r
15  *\r
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
18  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
19  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
20  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
21  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
22  *\r
23  * http://www.FreeRTOS.org\r
24  * http://aws.amazon.com/freertos\r
25  *\r
26  * 1 tab == 4 spaces!\r
27  */\r
28 \r
29         .global vRegTest1Implementation\r
30         .global vRegTest2Implementation\r
31         .extern ulRegTest1LoopCounter\r
32         .extern ulRegTest2LoopCounter\r
33 \r
34         .text\r
35         .arm\r
36 \r
37         /* This function is explained in the comments at the top of main-full.c. */\r
38 .type vRegTest1Implementation, %function\r
39 vRegTest1Implementation:\r
40 \r
41         /* Fill each general purpose register with a known value. */\r
42         mov             r0,  #0xFF\r
43         mov             r1,  #0x11\r
44         mov             r2,  #0x22\r
45         mov             r3,  #0x33\r
46         mov     r4,  #0x44\r
47         mov     r5,  #0x55\r
48         mov     r6,  #0x66\r
49         mov     r7,  #0x77\r
50         mov     r8,  #0x88\r
51         mov     r9,  #0x99\r
52         mov     r10, #0xAA\r
53         mov     r11, #0xBB\r
54         mov     r12, #0xCC\r
55         mov             r14, #0xEE\r
56 \r
57         /* Fill each FPU register with a known value. */\r
58         vmov    d0, r0, r1\r
59         vmov    d1, r2, r3\r
60         vmov    d2, r4, r5\r
61         vmov    d3, r6, r7\r
62         vmov    d4, r8, r9\r
63         vmov    d5, r10, r11\r
64         vmov    d6, r0, r1\r
65         vmov    d7, r2, r3\r
66         vmov    d8, r4, r5\r
67         vmov    d9, r6, r7\r
68         vmov    d10, r8, r9\r
69         vmov    d11, r10, r11\r
70         vmov    d12, r0, r1\r
71         vmov    d13, r2, r3\r
72         vmov    d14, r4, r5\r
73         vmov    d15, r6, r7\r
74 \r
75         vmov    d16, r0, r1\r
76         vmov    d17, r2, r3\r
77         vmov    d18, r4, r5\r
78         vmov    d19, r6, r7\r
79         vmov    d20, r8, r9\r
80         vmov    d21, r10, r11\r
81         vmov    d22, r0, r1\r
82         vmov    d23, r2, r3\r
83         vmov    d24, r4, r5\r
84         vmov    d25, r6, r7\r
85         vmov    d26, r8, r9\r
86         vmov    d27, r10, r11\r
87         vmov    d28, r0, r1\r
88         vmov    d29, r2, r3\r
89         vmov    d30, r4, r5\r
90         vmov    d31, r6, r7\r
91 \r
92         /* Loop, checking each iteration that each register still contains the\r
93         expected value. */\r
94 reg1_loop:\r
95         /* Yield to increase test coverage */\r
96         svc 0\r
97 \r
98         /* Check all the VFP registers still contain the values set above.\r
99         First save registers that are clobbered by the test. */\r
100         push { r0-r1 }\r
101 \r
102         vmov    r0, r1, d0\r
103         cmp     r0, #0xFF\r
104         bne     reg1_error_loopf\r
105         cmp     r1, #0x11\r
106         bne     reg1_error_loopf\r
107         vmov    r0, r1, d1\r
108         cmp     r0, #0x22\r
109         bne     reg1_error_loopf\r
110         cmp     r1, #0x33\r
111         bne     reg1_error_loopf\r
112         vmov    r0, r1, d2\r
113         cmp     r0, #0x44\r
114         bne     reg1_error_loopf\r
115         cmp     r1, #0x55\r
116         bne     reg1_error_loopf\r
117         vmov    r0, r1, d3\r
118         cmp     r0, #0x66\r
119         bne     reg1_error_loopf\r
120         cmp     r1, #0x77\r
121         bne     reg1_error_loopf\r
122         vmov    r0, r1, d4\r
123         cmp     r0, #0x88\r
124         bne     reg1_error_loopf\r
125         cmp     r1, #0x99\r
126         bne     reg1_error_loopf\r
127         vmov    r0, r1, d5\r
128         cmp     r0, #0xAA\r
129         bne     reg1_error_loopf\r
130         cmp     r1, #0xBB\r
131         bne     reg1_error_loopf\r
132         vmov    r0, r1, d6\r
133         cmp     r0, #0xFF\r
134         bne     reg1_error_loopf\r
135         cmp     r1, #0x11\r
136         bne     reg1_error_loopf\r
137         vmov    r0, r1, d7\r
138         cmp     r0, #0x22\r
139         bne     reg1_error_loopf\r
140         cmp     r1, #0x33\r
141         bne     reg1_error_loopf\r
142         vmov    r0, r1, d8\r
143         cmp     r0, #0x44\r
144         bne     reg1_error_loopf\r
145         cmp     r1, #0x55\r
146         bne     reg1_error_loopf\r
147         vmov    r0, r1, d9\r
148         cmp     r0, #0x66\r
149         bne     reg1_error_loopf\r
150         cmp     r1, #0x77\r
151         bne     reg1_error_loopf\r
152         vmov    r0, r1, d10\r
153         cmp     r0, #0x88\r
154         bne     reg1_error_loopf\r
155         cmp     r1, #0x99\r
156         bne     reg1_error_loopf\r
157         vmov    r0, r1, d11\r
158         cmp     r0, #0xAA\r
159         bne     reg1_error_loopf\r
160         cmp     r1, #0xBB\r
161         bne     reg1_error_loopf\r
162         vmov    r0, r1, d12\r
163         cmp     r0, #0xFF\r
164         bne     reg1_error_loopf\r
165         cmp     r1, #0x11\r
166         bne     reg1_error_loopf\r
167         vmov    r0, r1, d13\r
168         cmp     r0, #0x22\r
169         bne     reg1_error_loopf\r
170         cmp     r1, #0x33\r
171         bne     reg1_error_loopf\r
172         vmov    r0, r1, d14\r
173         cmp     r0, #0x44\r
174         bne     reg1_error_loopf\r
175         cmp     r1, #0x55\r
176         bne     reg1_error_loopf\r
177         vmov    r0, r1, d15\r
178         cmp     r0, #0x66\r
179         bne     reg1_error_loopf\r
180         cmp     r1, #0x77\r
181         bne     reg1_error_loopf\r
182 \r
183         vmov    r0, r1, d16\r
184         cmp     r0, #0xFF\r
185         bne     reg1_error_loopf\r
186         cmp     r1, #0x11\r
187         bne     reg1_error_loopf\r
188         vmov    r0, r1, d17\r
189         cmp     r0, #0x22\r
190         bne     reg1_error_loopf\r
191         cmp     r1, #0x33\r
192         bne     reg1_error_loopf\r
193         vmov    r0, r1, d18\r
194         cmp     r0, #0x44\r
195         bne     reg1_error_loopf\r
196         cmp     r1, #0x55\r
197         bne     reg1_error_loopf\r
198         vmov    r0, r1, d19\r
199         cmp     r0, #0x66\r
200         bne     reg1_error_loopf\r
201         cmp     r1, #0x77\r
202         bne     reg1_error_loopf\r
203         vmov    r0, r1, d20\r
204         cmp     r0, #0x88\r
205         bne     reg1_error_loopf\r
206         cmp     r1, #0x99\r
207         bne     reg1_error_loopf\r
208         vmov    r0, r1, d21\r
209         cmp     r0, #0xAA\r
210         bne     reg1_error_loopf\r
211         cmp     r1, #0xBB\r
212         bne     reg1_error_loopf\r
213         vmov    r0, r1, d22\r
214         cmp     r0, #0xFF\r
215         bne     reg1_error_loopf\r
216         cmp     r1, #0x11\r
217         bne     reg1_error_loopf\r
218         vmov    r0, r1, d23\r
219         cmp     r0, #0x22\r
220         bne     reg1_error_loopf\r
221         cmp     r1, #0x33\r
222         bne     reg1_error_loopf\r
223         vmov    r0, r1, d24\r
224         cmp     r0, #0x44\r
225         bne     reg1_error_loopf\r
226         cmp     r1, #0x55\r
227         bne     reg1_error_loopf\r
228         vmov    r0, r1, d25\r
229         cmp     r0, #0x66\r
230         bne     reg1_error_loopf\r
231         cmp     r1, #0x77\r
232         bne     reg1_error_loopf\r
233         vmov    r0, r1, d26\r
234         cmp     r0, #0x88\r
235         bne     reg1_error_loopf\r
236         cmp     r1, #0x99\r
237         bne     reg1_error_loopf\r
238         vmov    r0, r1, d27\r
239         cmp     r0, #0xAA\r
240         bne     reg1_error_loopf\r
241         cmp     r1, #0xBB\r
242         bne     reg1_error_loopf\r
243         vmov    r0, r1, d28\r
244         cmp     r0, #0xFF\r
245         bne     reg1_error_loopf\r
246         cmp     r1, #0x11\r
247         bne     reg1_error_loopf\r
248         vmov    r0, r1, d29\r
249         cmp     r0, #0x22\r
250         bne     reg1_error_loopf\r
251         cmp     r1, #0x33\r
252         bne     reg1_error_loopf\r
253         vmov    r0, r1, d30\r
254         cmp     r0, #0x44\r
255         bne     reg1_error_loopf\r
256         cmp     r1, #0x55\r
257         bne     reg1_error_loopf\r
258         vmov    r0, r1, d31\r
259         cmp     r0, #0x66\r
260         bne     reg1_error_loopf\r
261         cmp     r1, #0x77\r
262         bne     reg1_error_loopf\r
263 \r
264         /* Restore the registers that were clobbered by the test. */\r
265         pop     {r0-r1}\r
266 \r
267         /* VFP register test passed.  Jump to the core register test. */\r
268         b               reg1_loopf_pass\r
269 \r
270 reg1_error_loopf:\r
271         /* If this line is hit then a VFP register value was found to be\r
272         incorrect. */\r
273         b reg1_error_loopf\r
274 \r
275 reg1_loopf_pass:\r
276 \r
277         /* Test each general purpose register to check that it still contains the\r
278         expected known value, jumping to reg1_error_loop if any register contains\r
279         an unexpected value. */\r
280         cmp             r0, #0xFF\r
281         bne             reg1_error_loop\r
282         cmp             r1, #0x11\r
283         bne             reg1_error_loop\r
284         cmp             r2, #0x22\r
285         bne             reg1_error_loop\r
286         cmp             r3, #0x33\r
287         bne             reg1_error_loop\r
288         cmp             r4, #0x44\r
289         bne             reg1_error_loop\r
290         cmp             r5, #0x55\r
291         bne             reg1_error_loop\r
292         cmp             r6, #0x66\r
293         bne             reg1_error_loop\r
294         cmp             r7, #0x77\r
295         bne             reg1_error_loop\r
296         cmp             r8, #0x88\r
297         bne             reg1_error_loop\r
298         cmp             r9, #0x99\r
299         bne             reg1_error_loop\r
300         cmp             r10, #0xAA\r
301         bne             reg1_error_loop\r
302         cmp             r11, #0xBB\r
303         bne             reg1_error_loop\r
304         cmp             r12, #0xCC\r
305         bne             reg1_error_loop\r
306         cmp             r14, #0xEE\r
307         bne             reg1_error_loop\r
308 \r
309         /* Everything passed, increment the loop counter. */\r
310         push { r0-r1 }\r
311         ldr     r0, =ulRegTest1LoopCounter\r
312         ldr r1, [r0]\r
313         adds r1, r1, #1\r
314         str r1, [r0]\r
315         pop { r0-r1 }\r
316 \r
317         /* Start again. */\r
318         b reg1_loop\r
319 \r
320 reg1_error_loop:\r
321         /* If this line is hit then there was an error in a core register value.\r
322         The loop ensures the loop counter stops incrementing. */\r
323         b reg1_error_loop\r
324         nop\r
325 \r
326 /*-----------------------------------------------------------*/\r
327 \r
328 .type vRegTest2Implementation, %function\r
329 vRegTest2Implementation:\r
330 \r
331         /* Put a known value in each register. */\r
332         mov             r0,  #0xFF000000\r
333         mov             r1,  #0x11000000\r
334         mov             r2,  #0x22000000\r
335         mov             r3,  #0x33000000\r
336         mov     r4,  #0x44000000\r
337         mov     r5,  #0x55000000\r
338         mov     r6,  #0x66000000\r
339         mov     r7,  #0x77000000\r
340         mov     r8,  #0x88000000\r
341         mov     r9,  #0x99000000\r
342         mov     r10, #0xAA000000\r
343         mov     r11, #0xBB000000\r
344         mov     r12, #0xCC000000\r
345         mov     r14, #0xEE000000\r
346 \r
347         /* Likewise the floating point registers */\r
348         vmov    d0, r0, r1\r
349         vmov    d1, r2, r3\r
350         vmov    d2, r4, r5\r
351         vmov    d3, r6, r7\r
352         vmov    d4, r8, r9\r
353         vmov    d5, r10, r11\r
354         vmov    d6, r0, r1\r
355         vmov    d7, r2, r3\r
356         vmov    d8, r4, r5\r
357         vmov    d9, r6, r7\r
358         vmov    d10, r8, r9\r
359         vmov    d11, r10, r11\r
360         vmov    d12, r0, r1\r
361         vmov    d13, r2, r3\r
362         vmov    d14, r4, r5\r
363         vmov    d15, r6, r7\r
364 \r
365         vmov    d16, r0, r1\r
366         vmov    d17, r2, r3\r
367         vmov    d18, r4, r5\r
368         vmov    d19, r6, r7\r
369         vmov    d20, r8, r9\r
370         vmov    d21, r10, r11\r
371         vmov    d22, r0, r1\r
372         vmov    d23, r2, r3\r
373         vmov    d24, r4, r5\r
374         vmov    d25, r6, r7\r
375         vmov    d26, r8, r9\r
376         vmov    d27, r10, r11\r
377         vmov    d28, r0, r1\r
378         vmov    d29, r2, r3\r
379         vmov    d30, r4, r5\r
380         vmov    d31, r6, r7\r
381 \r
382         /* Loop, checking each iteration that each register still contains the\r
383         expected value. */\r
384 reg2_loop:\r
385         /* Check all the VFP registers still contain the values set above.\r
386         First save registers that are clobbered by the test. */\r
387         push    { r0-r1 }\r
388 \r
389         vmov    r0, r1, d0\r
390         cmp     r0, #0xFF000000\r
391         bne     reg2_error_loopf\r
392         cmp     r1, #0x11000000\r
393         bne     reg2_error_loopf\r
394         vmov    r0, r1, d1\r
395         cmp     r0, #0x22000000\r
396         bne     reg2_error_loopf\r
397         cmp     r1, #0x33000000\r
398         bne     reg2_error_loopf\r
399         vmov    r0, r1, d2\r
400         cmp     r0, #0x44000000\r
401         bne     reg2_error_loopf\r
402         cmp     r1, #0x55000000\r
403         bne     reg2_error_loopf\r
404         vmov    r0, r1, d3\r
405         cmp     r0, #0x66000000\r
406         bne     reg2_error_loopf\r
407         cmp     r1, #0x77000000\r
408         bne     reg2_error_loopf\r
409         vmov    r0, r1, d4\r
410         cmp     r0, #0x88000000\r
411         bne     reg2_error_loopf\r
412         cmp     r1, #0x99000000\r
413         bne     reg2_error_loopf\r
414         vmov    r0, r1, d5\r
415         cmp     r0, #0xAA000000\r
416         bne     reg2_error_loopf\r
417         cmp     r1, #0xBB000000\r
418         bne     reg2_error_loopf\r
419         vmov    r0, r1, d6\r
420         cmp     r0, #0xFF000000\r
421         bne     reg2_error_loopf\r
422         cmp     r1, #0x11000000\r
423         bne     reg2_error_loopf\r
424         vmov    r0, r1, d7\r
425         cmp     r0, #0x22000000\r
426         bne     reg2_error_loopf\r
427         cmp     r1, #0x33000000\r
428         bne     reg2_error_loopf\r
429         vmov    r0, r1, d8\r
430         cmp     r0, #0x44000000\r
431         bne     reg2_error_loopf\r
432         cmp     r1, #0x55000000\r
433         bne     reg2_error_loopf\r
434         vmov    r0, r1, d9\r
435         cmp     r0, #0x66000000\r
436         bne     reg2_error_loopf\r
437         cmp     r1, #0x77000000\r
438         bne     reg2_error_loopf\r
439         vmov    r0, r1, d10\r
440         cmp     r0, #0x88000000\r
441         bne     reg2_error_loopf\r
442         cmp     r1, #0x99000000\r
443         bne     reg2_error_loopf\r
444         vmov    r0, r1, d11\r
445         cmp     r0, #0xAA000000\r
446         bne     reg2_error_loopf\r
447         cmp     r1, #0xBB000000\r
448         bne     reg2_error_loopf\r
449         vmov    r0, r1, d12\r
450         cmp     r0, #0xFF000000\r
451         bne     reg2_error_loopf\r
452         cmp     r1, #0x11000000\r
453         bne     reg2_error_loopf\r
454         vmov    r0, r1, d13\r
455         cmp     r0, #0x22000000\r
456         bne     reg2_error_loopf\r
457         cmp     r1, #0x33000000\r
458         bne     reg2_error_loopf\r
459         vmov    r0, r1, d14\r
460         cmp     r0, #0x44000000\r
461         bne     reg2_error_loopf\r
462         cmp     r1, #0x55000000\r
463         bne     reg2_error_loopf\r
464         vmov    r0, r1, d15\r
465         cmp     r0, #0x66000000\r
466         bne     reg2_error_loopf\r
467         cmp     r1, #0x77000000\r
468         bne     reg2_error_loopf\r
469 \r
470         vmov    r0, r1, d16\r
471         cmp     r0, #0xFF000000\r
472         bne     reg2_error_loopf\r
473         cmp     r1, #0x11000000\r
474         bne     reg2_error_loopf\r
475         vmov    r0, r1, d17\r
476         cmp     r0, #0x22000000\r
477         bne     reg2_error_loopf\r
478         cmp     r1, #0x33000000\r
479         bne     reg2_error_loopf\r
480         vmov    r0, r1, d18\r
481         cmp     r0, #0x44000000\r
482         bne     reg2_error_loopf\r
483         cmp     r1, #0x55000000\r
484         bne     reg2_error_loopf\r
485         vmov    r0, r1, d19\r
486         cmp     r0, #0x66000000\r
487         bne     reg2_error_loopf\r
488         cmp     r1, #0x77000000\r
489         bne     reg2_error_loopf\r
490         vmov    r0, r1, d20\r
491         cmp     r0, #0x88000000\r
492         bne     reg2_error_loopf\r
493         cmp     r1, #0x99000000\r
494         bne     reg2_error_loopf\r
495         vmov    r0, r1, d21\r
496         cmp     r0, #0xAA000000\r
497         bne     reg2_error_loopf\r
498         cmp     r1, #0xBB000000\r
499         bne     reg2_error_loopf\r
500         vmov    r0, r1, d22\r
501         cmp     r0, #0xFF000000\r
502         bne     reg2_error_loopf\r
503         cmp     r1, #0x11000000\r
504         bne     reg2_error_loopf\r
505         vmov    r0, r1, d23\r
506         cmp     r0, #0x22000000\r
507         bne     reg2_error_loopf\r
508         cmp     r1, #0x33000000\r
509         bne     reg2_error_loopf\r
510         vmov    r0, r1, d24\r
511         cmp     r0, #0x44000000\r
512         bne     reg2_error_loopf\r
513         cmp     r1, #0x55000000\r
514         bne     reg2_error_loopf\r
515         vmov    r0, r1, d25\r
516         cmp     r0, #0x66000000\r
517         bne     reg2_error_loopf\r
518         cmp     r1, #0x77000000\r
519         bne     reg2_error_loopf\r
520         vmov    r0, r1, d26\r
521         cmp     r0, #0x88000000\r
522         bne     reg2_error_loopf\r
523         cmp     r1, #0x99000000\r
524         bne     reg2_error_loopf\r
525         vmov    r0, r1, d27\r
526         cmp     r0, #0xAA000000\r
527         bne     reg2_error_loopf\r
528         cmp     r1, #0xBB000000\r
529         bne     reg2_error_loopf\r
530         vmov    r0, r1, d28\r
531         cmp     r0, #0xFF000000\r
532         bne     reg2_error_loopf\r
533         cmp     r1, #0x11000000\r
534         bne     reg2_error_loopf\r
535         vmov    r0, r1, d29\r
536         cmp     r0, #0x22000000\r
537         bne     reg2_error_loopf\r
538         cmp     r1, #0x33000000\r
539         bne     reg2_error_loopf\r
540         vmov    r0, r1, d30\r
541         cmp     r0, #0x44000000\r
542         bne     reg2_error_loopf\r
543         cmp     r1, #0x55000000\r
544         bne     reg2_error_loopf\r
545         vmov    r0, r1, d31\r
546         cmp     r0, #0x66000000\r
547         bne     reg2_error_loopf\r
548         cmp     r1, #0x77000000\r
549         bne     reg2_error_loopf\r
550 \r
551         /* Restore the registers that were clobbered by the test. */\r
552         pop     {r0-r1}\r
553 \r
554         /* VFP register test passed.  Jump to the core register test. */\r
555         b               reg2_loopf_pass\r
556 \r
557 reg2_error_loopf:\r
558         /* If this line is hit then a VFP register value was found to be\r
559         incorrect. */\r
560         b               reg2_error_loopf\r
561 \r
562 reg2_loopf_pass:\r
563 \r
564         cmp             r0, #0xFF000000\r
565         bne             reg2_error_loop\r
566         cmp             r1, #0x11000000\r
567         bne             reg2_error_loop\r
568         cmp             r2, #0x22000000\r
569         bne             reg2_error_loop\r
570         cmp             r3, #0x33000000\r
571         bne             reg2_error_loop\r
572         cmp             r4, #0x44000000\r
573         bne             reg2_error_loop\r
574         cmp             r5, #0x55000000\r
575         bne             reg2_error_loop\r
576         cmp             r6, #0x66000000\r
577         bne             reg2_error_loop\r
578         cmp             r7, #0x77000000\r
579         bne             reg2_error_loop\r
580         cmp             r8, #0x88000000\r
581         bne             reg2_error_loop\r
582         cmp             r9, #0x99000000\r
583         bne             reg2_error_loop\r
584         cmp             r10, #0xAA000000\r
585         bne             reg2_error_loop\r
586         cmp             r11, #0xBB000000\r
587         bne             reg2_error_loop\r
588         cmp             r12, #0xCC000000\r
589         bne             reg2_error_loop\r
590         cmp     r14, #0xEE000000\r
591         bne             reg2_error_loop\r
592 \r
593         /* Everything passed, increment the loop counter. */\r
594         push    { r0-r1 }\r
595         ldr             r0, =ulRegTest2LoopCounter\r
596         ldr     r1, [r0]\r
597         adds    r1, r1, #1\r
598         str     r1, [r0]\r
599         pop     { r0-r1 }\r
600 \r
601         /* Start again. */\r
602         b               reg2_loop\r
603 \r
604 reg2_error_loop:\r
605         /* If this line is hit then there was an error in a core register value.\r
606         The loop ensures the loop counter stops incrementing. */\r
607         b               reg2_error_loop\r
608         nop\r
609 \r
610 \r
611         .end\r
612 \r