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