]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A5_SAMA5D4x_EK_IAR/Full_Demo/reg_test.S
Update to MIT licensed FreeRTOS V10.0.0 - see https://www.freertos.org/History.txt
[freertos] / FreeRTOS / Demo / CORTEX_A5_SAMA5D4x_EK_IAR / 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 #include "FreeRTOSConfig.h"\r
30 \r
31         EXPORT vRegTest1Implementation\r
32         EXPORT vRegTest2Implementation\r
33 \r
34         ; This file is built with IAR and ARM compilers.  When the ARM compiler\r
35         ; is used the compiler options must define __IASMARM__ as 0 using the\r
36         ; --predefine "__IASMARM__ SETA 0" command line option.  When compiling\r
37         ; with IAR __IASMARM__ is automatically set to 1 so no additional assembler\r
38         ; options are required.\r
39         SECTION .text:CODE:ROOT(2)\r
40         ARM\r
41 \r
42         ; This function is explained in the comments at the top of main-full.c.\r
43 vRegTest1Implementation\r
44 \r
45         PRESERVE8\r
46         IMPORT ulRegTest1LoopCounter\r
47 \r
48         ; Fill each general purpose register with a known value.\r
49         mov             r0,  #0xFF\r
50         mov             r1,  #0x11\r
51         mov             r2,  #0x22\r
52         mov             r3,  #0x33\r
53         mov     r4,  #0x44\r
54         mov     r5,  #0x55\r
55         mov     r6,  #0x66\r
56         mov     r7,  #0x77\r
57         mov     r8,  #0x88\r
58         mov     r9,  #0x99\r
59         mov     r10, #0xAA\r
60         mov     r11, #0xBB\r
61         mov     r12, #0xCC\r
62         mov             r14, #0xEE\r
63 \r
64         ; Fill each FPU register with a known value.\r
65         vmov    d0, r0, r1\r
66         vmov    d1, r2, r3\r
67         vmov    d2, r4, r5\r
68         vmov    d3, r6, r7\r
69         vmov    d4, r8, r9\r
70         vmov    d5, r10, r11\r
71         vmov    d6, r0, r1\r
72         vmov    d7, r2, r3\r
73         vmov    d8, r4, r5\r
74         vmov    d9, r6, r7\r
75         vmov    d10, r8, r9\r
76         vmov    d11, r10, r11\r
77         vmov    d12, r0, r1\r
78         vmov    d13, r2, r3\r
79         vmov    d14, r4, r5\r
80         vmov    d15, r6, r7\r
81 \r
82         vmov    d16, r0, r1\r
83         vmov    d17, r2, r3\r
84         vmov    d18, r4, r5\r
85         vmov    d19, r6, r7\r
86         vmov    d20, r8, r9\r
87         vmov    d21, r10, r11\r
88         vmov    d22, r0, r1\r
89         vmov    d23, r2, r3\r
90         vmov    d24, r4, r5\r
91         vmov    d25, r6, r7\r
92         vmov    d26, r8, r9\r
93         vmov    d27, r10, r11\r
94         vmov    d28, r0, r1\r
95         vmov    d29, r2, r3\r
96         vmov    d30, r4, r5\r
97         vmov    d31, r6, r7\r
98 \r
99         ; Loop, checking each iteration that each register still contains the\r
100         ; expected value.\r
101 reg1_loop\r
102         ; Yield to increase test coverage\r
103         svc 0\r
104 \r
105         ; Check all the VFP registers still contain the values set above.\r
106         ; First save registers that are clobbered by the test.\r
107         push { r0-r1 }\r
108 \r
109         vmov    r0, r1, d0\r
110         cmp     r0, #0xFF\r
111         bne     reg1_error_loopf\r
112         cmp     r1, #0x11\r
113         bne     reg1_error_loopf\r
114         vmov    r0, r1, d1\r
115         cmp     r0, #0x22\r
116         bne     reg1_error_loopf\r
117         cmp     r1, #0x33\r
118         bne     reg1_error_loopf\r
119         vmov    r0, r1, d2\r
120         cmp     r0, #0x44\r
121         bne     reg1_error_loopf\r
122         cmp     r1, #0x55\r
123         bne     reg1_error_loopf\r
124         vmov    r0, r1, d3\r
125         cmp     r0, #0x66\r
126         bne     reg1_error_loopf\r
127         cmp     r1, #0x77\r
128         bne     reg1_error_loopf\r
129         vmov    r0, r1, d4\r
130         cmp     r0, #0x88\r
131         bne     reg1_error_loopf\r
132         cmp     r1, #0x99\r
133         bne     reg1_error_loopf\r
134         vmov    r0, r1, d5\r
135         cmp     r0, #0xAA\r
136         bne     reg1_error_loopf\r
137         cmp     r1, #0xBB\r
138         bne     reg1_error_loopf\r
139         vmov    r0, r1, d6\r
140         cmp     r0, #0xFF\r
141         bne     reg1_error_loopf\r
142         cmp     r1, #0x11\r
143         bne     reg1_error_loopf\r
144         vmov    r0, r1, d7\r
145         cmp     r0, #0x22\r
146         bne     reg1_error_loopf\r
147         cmp     r1, #0x33\r
148         bne     reg1_error_loopf\r
149         vmov    r0, r1, d8\r
150         cmp     r0, #0x44\r
151         bne     reg1_error_loopf\r
152         cmp     r1, #0x55\r
153         bne     reg1_error_loopf\r
154         vmov    r0, r1, d9\r
155         cmp     r0, #0x66\r
156         bne     reg1_error_loopf\r
157         cmp     r1, #0x77\r
158         bne     reg1_error_loopf\r
159         vmov    r0, r1, d10\r
160         cmp     r0, #0x88\r
161         bne     reg1_error_loopf\r
162         cmp     r1, #0x99\r
163         bne     reg1_error_loopf\r
164         vmov    r0, r1, d11\r
165         cmp     r0, #0xAA\r
166         bne     reg1_error_loopf\r
167         cmp     r1, #0xBB\r
168         bne     reg1_error_loopf\r
169         vmov    r0, r1, d12\r
170         cmp     r0, #0xFF\r
171         bne     reg1_error_loopf\r
172         cmp     r1, #0x11\r
173         bne     reg1_error_loopf\r
174         vmov    r0, r1, d13\r
175         cmp     r0, #0x22\r
176         bne     reg1_error_loopf\r
177         cmp     r1, #0x33\r
178         bne     reg1_error_loopf\r
179         vmov    r0, r1, d14\r
180         cmp     r0, #0x44\r
181         bne     reg1_error_loopf\r
182         cmp     r1, #0x55\r
183         bne     reg1_error_loopf\r
184         vmov    r0, r1, d15\r
185         cmp     r0, #0x66\r
186         bne     reg1_error_loopf\r
187         cmp     r1, #0x77\r
188         bne     reg1_error_loopf\r
189 \r
190         vmov    r0, r1, d16\r
191         cmp     r0, #0xFF\r
192         bne     reg1_error_loopf\r
193         cmp     r1, #0x11\r
194         bne     reg1_error_loopf\r
195         vmov    r0, r1, d17\r
196         cmp     r0, #0x22\r
197         bne     reg1_error_loopf\r
198         cmp     r1, #0x33\r
199         bne     reg1_error_loopf\r
200         vmov    r0, r1, d18\r
201         cmp     r0, #0x44\r
202         bne     reg1_error_loopf\r
203         cmp     r1, #0x55\r
204         bne     reg1_error_loopf\r
205         vmov    r0, r1, d19\r
206         cmp     r0, #0x66\r
207         bne     reg1_error_loopf\r
208         cmp     r1, #0x77\r
209         bne     reg1_error_loopf\r
210         vmov    r0, r1, d20\r
211         cmp     r0, #0x88\r
212         bne     reg1_error_loopf\r
213         cmp     r1, #0x99\r
214         bne     reg1_error_loopf\r
215         vmov    r0, r1, d21\r
216         cmp     r0, #0xAA\r
217         bne     reg1_error_loopf\r
218         cmp     r1, #0xBB\r
219         bne     reg1_error_loopf\r
220         vmov    r0, r1, d22\r
221         cmp     r0, #0xFF\r
222         bne     reg1_error_loopf\r
223         cmp     r1, #0x11\r
224         bne     reg1_error_loopf\r
225         vmov    r0, r1, d23\r
226         cmp     r0, #0x22\r
227         bne     reg1_error_loopf\r
228         cmp     r1, #0x33\r
229         bne     reg1_error_loopf\r
230         vmov    r0, r1, d24\r
231         cmp     r0, #0x44\r
232         bne     reg1_error_loopf\r
233         cmp     r1, #0x55\r
234         bne     reg1_error_loopf\r
235         vmov    r0, r1, d25\r
236         cmp     r0, #0x66\r
237         bne     reg1_error_loopf\r
238         cmp     r1, #0x77\r
239         bne     reg1_error_loopf\r
240         vmov    r0, r1, d26\r
241         cmp     r0, #0x88\r
242         bne     reg1_error_loopf\r
243         cmp     r1, #0x99\r
244         bne     reg1_error_loopf\r
245         vmov    r0, r1, d27\r
246         cmp     r0, #0xAA\r
247         bne     reg1_error_loopf\r
248         cmp     r1, #0xBB\r
249         bne     reg1_error_loopf\r
250         vmov    r0, r1, d28\r
251         cmp     r0, #0xFF\r
252         bne     reg1_error_loopf\r
253         cmp     r1, #0x11\r
254         bne     reg1_error_loopf\r
255         vmov    r0, r1, d29\r
256         cmp     r0, #0x22\r
257         bne     reg1_error_loopf\r
258         cmp     r1, #0x33\r
259         bne     reg1_error_loopf\r
260         vmov    r0, r1, d30\r
261         cmp     r0, #0x44\r
262         bne     reg1_error_loopf\r
263         cmp     r1, #0x55\r
264         bne     reg1_error_loopf\r
265         vmov    r0, r1, d31\r
266         cmp     r0, #0x66\r
267         bne     reg1_error_loopf\r
268         cmp     r1, #0x77\r
269         bne     reg1_error_loopf\r
270 \r
271         ; Restore the registers that were clobbered by the test.\r
272         pop     {r0-r1}\r
273 \r
274         ; VFP register test passed.  Jump to the core register test.\r
275         b               reg1_loopf_pass\r
276 \r
277 reg1_error_loopf\r
278         ; If this line is hit then a VFP register value was found to be\r
279         ; incorrect.\r
280         b reg1_error_loopf\r
281 \r
282 reg1_loopf_pass\r
283 \r
284         ; Test each general purpose register to check that it still contains the\r
285         ; expected known value, jumping to reg1_error_loop if any register contains\r
286         ; an unexpected value.\r
287         cmp             r0, #0xFF\r
288         bne             reg1_error_loop\r
289         cmp             r1, #0x11\r
290         bne             reg1_error_loop\r
291         cmp             r2, #0x22\r
292         bne             reg1_error_loop\r
293         cmp             r3, #0x33\r
294         bne             reg1_error_loop\r
295         cmp             r4, #0x44\r
296         bne             reg1_error_loop\r
297         cmp             r5, #0x55\r
298         bne             reg1_error_loop\r
299         cmp             r6, #0x66\r
300         bne             reg1_error_loop\r
301         cmp             r7, #0x77\r
302         bne             reg1_error_loop\r
303         cmp             r8, #0x88\r
304         bne             reg1_error_loop\r
305         cmp             r9, #0x99\r
306         bne             reg1_error_loop\r
307         cmp             r10, #0xAA\r
308         bne             reg1_error_loop\r
309         cmp             r11, #0xBB\r
310         bne             reg1_error_loop\r
311         cmp             r12, #0xCC\r
312         bne             reg1_error_loop\r
313         cmp             r14, #0xEE\r
314         bne             reg1_error_loop\r
315 \r
316         ; Everything passed, increment the loop counter.\r
317         push { r0-r1 }\r
318         ldr     r0, =ulRegTest1LoopCounter\r
319         ldr r1, [r0]\r
320         adds r1, r1, #1\r
321         str r1, [r0]\r
322         pop { r0-r1 }\r
323 \r
324         ; Start again.\r
325         b reg1_loop\r
326 \r
327 reg1_error_loop\r
328         ; If this line is hit then there was an error in a core register value.\r
329         ; The loop ensures the loop counter stops incrementing.\r
330         b reg1_error_loop\r
331         nop\r
332 \r
333 ;/*-----------------------------------------------------------*/\r
334 \r
335 vRegTest2Implementation\r
336 \r
337         PRESERVE8\r
338         IMPORT ulRegTest2LoopCounter\r
339 \r
340         ; Put a known value in each register.\r
341         mov             r0,  #0xFF000000\r
342         mov             r1,  #0x11000000\r
343         mov             r2,  #0x22000000\r
344         mov             r3,  #0x33000000\r
345         mov     r4,  #0x44000000\r
346         mov     r5,  #0x55000000\r
347         mov     r6,  #0x66000000\r
348         mov     r7,  #0x77000000\r
349         mov     r8,  #0x88000000\r
350         mov     r9,  #0x99000000\r
351         mov     r10, #0xAA000000\r
352         mov     r11, #0xBB000000\r
353         mov     r12, #0xCC000000\r
354         mov     r14, #0xEE000000\r
355 \r
356         ; Likewise the floating point registers\r
357         vmov    d0, r0, r1\r
358         vmov    d1, r2, r3\r
359         vmov    d2, r4, r5\r
360         vmov    d3, r6, r7\r
361         vmov    d4, r8, r9\r
362         vmov    d5, r10, r11\r
363         vmov    d6, r0, r1\r
364         vmov    d7, r2, r3\r
365         vmov    d8, r4, r5\r
366         vmov    d9, r6, r7\r
367         vmov    d10, r8, r9\r
368         vmov    d11, r10, r11\r
369         vmov    d12, r0, r1\r
370         vmov    d13, r2, r3\r
371         vmov    d14, r4, r5\r
372         vmov    d15, r6, r7\r
373 \r
374         vmov    d16, r0, r1\r
375         vmov    d17, r2, r3\r
376         vmov    d18, r4, r5\r
377         vmov    d19, r6, r7\r
378         vmov    d20, r8, r9\r
379         vmov    d21, r10, r11\r
380         vmov    d22, r0, r1\r
381         vmov    d23, r2, r3\r
382         vmov    d24, r4, r5\r
383         vmov    d25, r6, r7\r
384         vmov    d26, r8, r9\r
385         vmov    d27, r10, r11\r
386         vmov    d28, r0, r1\r
387         vmov    d29, r2, r3\r
388         vmov    d30, r4, r5\r
389         vmov    d31, r6, r7\r
390 \r
391         ; Loop, checking each iteration that each register still contains the\r
392         ; expected value.\r
393 reg2_loop\r
394         ; Check all the VFP registers still contain the values set above.\r
395         ; First save registers that are clobbered by the test.\r
396         push    { r0-r1 }\r
397 \r
398         vmov    r0, r1, d0\r
399         cmp     r0, #0xFF000000\r
400         bne     reg2_error_loopf\r
401         cmp     r1, #0x11000000\r
402         bne     reg2_error_loopf\r
403         vmov    r0, r1, d1\r
404         cmp     r0, #0x22000000\r
405         bne     reg2_error_loopf\r
406         cmp     r1, #0x33000000\r
407         bne     reg2_error_loopf\r
408         vmov    r0, r1, d2\r
409         cmp     r0, #0x44000000\r
410         bne     reg2_error_loopf\r
411         cmp     r1, #0x55000000\r
412         bne     reg2_error_loopf\r
413         vmov    r0, r1, d3\r
414         cmp     r0, #0x66000000\r
415         bne     reg2_error_loopf\r
416         cmp     r1, #0x77000000\r
417         bne     reg2_error_loopf\r
418         vmov    r0, r1, d4\r
419         cmp     r0, #0x88000000\r
420         bne     reg2_error_loopf\r
421         cmp     r1, #0x99000000\r
422         bne     reg2_error_loopf\r
423         vmov    r0, r1, d5\r
424         cmp     r0, #0xAA000000\r
425         bne     reg2_error_loopf\r
426         cmp     r1, #0xBB000000\r
427         bne     reg2_error_loopf\r
428         vmov    r0, r1, d6\r
429         cmp     r0, #0xFF000000\r
430         bne     reg2_error_loopf\r
431         cmp     r1, #0x11000000\r
432         bne     reg2_error_loopf\r
433         vmov    r0, r1, d7\r
434         cmp     r0, #0x22000000\r
435         bne     reg2_error_loopf\r
436         cmp     r1, #0x33000000\r
437         bne     reg2_error_loopf\r
438         vmov    r0, r1, d8\r
439         cmp     r0, #0x44000000\r
440         bne     reg2_error_loopf\r
441         cmp     r1, #0x55000000\r
442         bne     reg2_error_loopf\r
443         vmov    r0, r1, d9\r
444         cmp     r0, #0x66000000\r
445         bne     reg2_error_loopf\r
446         cmp     r1, #0x77000000\r
447         bne     reg2_error_loopf\r
448         vmov    r0, r1, d10\r
449         cmp     r0, #0x88000000\r
450         bne     reg2_error_loopf\r
451         cmp     r1, #0x99000000\r
452         bne     reg2_error_loopf\r
453         vmov    r0, r1, d11\r
454         cmp     r0, #0xAA000000\r
455         bne     reg2_error_loopf\r
456         cmp     r1, #0xBB000000\r
457         bne     reg2_error_loopf\r
458         vmov    r0, r1, d12\r
459         cmp     r0, #0xFF000000\r
460         bne     reg2_error_loopf\r
461         cmp     r1, #0x11000000\r
462         bne     reg2_error_loopf\r
463         vmov    r0, r1, d13\r
464         cmp     r0, #0x22000000\r
465         bne     reg2_error_loopf\r
466         cmp     r1, #0x33000000\r
467         bne     reg2_error_loopf\r
468         vmov    r0, r1, d14\r
469         cmp     r0, #0x44000000\r
470         bne     reg2_error_loopf\r
471         cmp     r1, #0x55000000\r
472         bne     reg2_error_loopf\r
473         vmov    r0, r1, d15\r
474         cmp     r0, #0x66000000\r
475         bne     reg2_error_loopf\r
476         cmp     r1, #0x77000000\r
477         bne     reg2_error_loopf\r
478 \r
479         vmov    r0, r1, d16\r
480         cmp     r0, #0xFF000000\r
481         bne     reg2_error_loopf\r
482         cmp     r1, #0x11000000\r
483         bne     reg2_error_loopf\r
484         vmov    r0, r1, d17\r
485         cmp     r0, #0x22000000\r
486         bne     reg2_error_loopf\r
487         cmp     r1, #0x33000000\r
488         bne     reg2_error_loopf\r
489         vmov    r0, r1, d18\r
490         cmp     r0, #0x44000000\r
491         bne     reg2_error_loopf\r
492         cmp     r1, #0x55000000\r
493         bne     reg2_error_loopf\r
494         vmov    r0, r1, d19\r
495         cmp     r0, #0x66000000\r
496         bne     reg2_error_loopf\r
497         cmp     r1, #0x77000000\r
498         bne     reg2_error_loopf\r
499         vmov    r0, r1, d20\r
500         cmp     r0, #0x88000000\r
501         bne     reg2_error_loopf\r
502         cmp     r1, #0x99000000\r
503         bne     reg2_error_loopf\r
504         vmov    r0, r1, d21\r
505         cmp     r0, #0xAA000000\r
506         bne     reg2_error_loopf\r
507         cmp     r1, #0xBB000000\r
508         bne     reg2_error_loopf\r
509         vmov    r0, r1, d22\r
510         cmp     r0, #0xFF000000\r
511         bne     reg2_error_loopf\r
512         cmp     r1, #0x11000000\r
513         bne     reg2_error_loopf\r
514         vmov    r0, r1, d23\r
515         cmp     r0, #0x22000000\r
516         bne     reg2_error_loopf\r
517         cmp     r1, #0x33000000\r
518         bne     reg2_error_loopf\r
519         vmov    r0, r1, d24\r
520         cmp     r0, #0x44000000\r
521         bne     reg2_error_loopf\r
522         cmp     r1, #0x55000000\r
523         bne     reg2_error_loopf\r
524         vmov    r0, r1, d25\r
525         cmp     r0, #0x66000000\r
526         bne     reg2_error_loopf\r
527         cmp     r1, #0x77000000\r
528         bne     reg2_error_loopf\r
529         vmov    r0, r1, d26\r
530         cmp     r0, #0x88000000\r
531         bne     reg2_error_loopf\r
532         cmp     r1, #0x99000000\r
533         bne     reg2_error_loopf\r
534         vmov    r0, r1, d27\r
535         cmp     r0, #0xAA000000\r
536         bne     reg2_error_loopf\r
537         cmp     r1, #0xBB000000\r
538         bne     reg2_error_loopf\r
539         vmov    r0, r1, d28\r
540         cmp     r0, #0xFF000000\r
541         bne     reg2_error_loopf\r
542         cmp     r1, #0x11000000\r
543         bne     reg2_error_loopf\r
544         vmov    r0, r1, d29\r
545         cmp     r0, #0x22000000\r
546         bne     reg2_error_loopf\r
547         cmp     r1, #0x33000000\r
548         bne     reg2_error_loopf\r
549         vmov    r0, r1, d30\r
550         cmp     r0, #0x44000000\r
551         bne     reg2_error_loopf\r
552         cmp     r1, #0x55000000\r
553         bne     reg2_error_loopf\r
554         vmov    r0, r1, d31\r
555         cmp     r0, #0x66000000\r
556         bne     reg2_error_loopf\r
557         cmp     r1, #0x77000000\r
558         bne     reg2_error_loopf\r
559 \r
560         ; Restore the registers that were clobbered by the test.\r
561         pop     {r0-r1}\r
562 \r
563         ; VFP register test passed.  Jump to the core register test.\r
564         b               reg2_loopf_pass\r
565 \r
566 reg2_error_loopf\r
567         ; If this line is hit then a VFP register value was found to be\r
568         ; incorrect.\r
569         b               reg2_error_loopf\r
570 \r
571 reg2_loopf_pass\r
572 \r
573         cmp             r0, #0xFF000000\r
574         bne             reg2_error_loop\r
575         cmp             r1, #0x11000000\r
576         bne             reg2_error_loop\r
577         cmp             r2, #0x22000000\r
578         bne             reg2_error_loop\r
579         cmp             r3, #0x33000000\r
580         bne             reg2_error_loop\r
581         cmp             r4, #0x44000000\r
582         bne             reg2_error_loop\r
583         cmp             r5, #0x55000000\r
584         bne             reg2_error_loop\r
585         cmp             r6, #0x66000000\r
586         bne             reg2_error_loop\r
587         cmp             r7, #0x77000000\r
588         bne             reg2_error_loop\r
589         cmp             r8, #0x88000000\r
590         bne             reg2_error_loop\r
591         cmp             r9, #0x99000000\r
592         bne             reg2_error_loop\r
593         cmp             r10, #0xAA000000\r
594         bne             reg2_error_loop\r
595         cmp             r11, #0xBB000000\r
596         bne             reg2_error_loop\r
597         cmp             r12, #0xCC000000\r
598         bne             reg2_error_loop\r
599         cmp     r14, #0xEE000000\r
600         bne             reg2_error_loop\r
601 \r
602         ; Everything passed, increment the loop counter.\r
603         push    { r0-r1 }\r
604         ldr             r0, =ulRegTest2LoopCounter\r
605         ldr     r1, [r0]\r
606         adds    r1, r1, #1\r
607         str     r1, [r0]\r
608         pop     { r0-r1 }\r
609 \r
610         ; Start again.\r
611         b               reg2_loop\r
612 \r
613 reg2_error_loop\r
614         ; If this line is hit then there was an error in a core register value.\r
615         ; The loop ensures the loop counter stops incrementing.\r
616         b               reg2_error_loop\r
617         nop\r
618 \r
619         END\r