2 FreeRTOS V9.0.0rc2 - Copyright (C) 2016 Real Time Engineers Ltd.
\r
5 VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
\r
7 This file is part of the FreeRTOS distribution.
\r
9 FreeRTOS is free software; you can redistribute it and/or modify it under
\r
10 the terms of the GNU General Public License (version 2) as published by the
\r
11 Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.
\r
13 ***************************************************************************
\r
14 >>! NOTE: The modification to the GPL is included to allow you to !<<
\r
15 >>! distribute a combined work that includes FreeRTOS without being !<<
\r
16 >>! obliged to provide the source code for proprietary components !<<
\r
17 >>! outside of the FreeRTOS kernel. !<<
\r
18 ***************************************************************************
\r
20 FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
\r
21 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
\r
22 FOR A PARTICULAR PURPOSE. Full license text is available on the following
\r
23 link: http://www.freertos.org/a00114.html
\r
25 ***************************************************************************
\r
27 * FreeRTOS provides completely free yet professionally developed, *
\r
28 * robust, strictly quality controlled, supported, and cross *
\r
29 * platform software that is more than just the market leader, it *
\r
30 * is the industry's de facto standard. *
\r
32 * Help yourself get started quickly while simultaneously helping *
\r
33 * to support the FreeRTOS project by purchasing a FreeRTOS *
\r
34 * tutorial book, reference manual, or both: *
\r
35 * http://www.FreeRTOS.org/Documentation *
\r
37 ***************************************************************************
\r
39 http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
\r
40 the FAQ page "My application does not run, what could be wrong?". Have you
\r
41 defined configASSERT()?
\r
43 http://www.FreeRTOS.org/support - In return for receiving this top quality
\r
44 embedded software for free we request you assist our global community by
\r
45 participating in the support forum.
\r
47 http://www.FreeRTOS.org/training - Investing in training allows your team to
\r
48 be as productive as possible as early as possible. Now you can receive
\r
49 FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
\r
50 Ltd, and the world's leading authority on the world's leading RTOS.
\r
52 http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
\r
53 including FreeRTOS+Trace - an indispensable productivity tool, a DOS
\r
54 compatible FAT file system, and our tiny thread aware UDP/IP stack.
\r
56 http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
\r
57 Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
\r
59 http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
\r
60 Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
\r
61 licenses offer ticketed support, indemnification and commercial middleware.
\r
63 http://www.SafeRTOS.com - High Integrity Systems also provide a safety
\r
64 engineered and independently SIL3 certified version for use in safety and
\r
65 mission critical applications that require provable dependability.
\r
70 .global vRegTest1Implementation
\r
71 .global vRegTest2Implementation
\r
72 .extern ullRegTest1LoopCounter
\r
73 .extern ullRegTest2LoopCounter
\r
77 /* This function is explained in the comments at the top of main-full.c. */
\r
78 .type vRegTest1Implementation, %function
\r
79 vRegTest1Implementation:
\r
81 /* Fill each general purpose register with a known value. */
\r
114 /* Fill each FPU register with a known value. */
\r
148 /* Loop, checking each itteration that each register still contains the
\r
151 /* Yield to increase test coverage */
\r
154 /* Test each general purpose register to check that it still contains the
\r
155 expected known value, jumping to reg1_error_loop if any register contains
\r
156 an unexpected value. */
\r
158 bne reg1_error_loop
\r
160 bne reg1_error_loop
\r
162 bne reg1_error_loop
\r
164 bne reg1_error_loop
\r
166 bne reg1_error_loop
\r
168 bne reg1_error_loop
\r
170 bne reg1_error_loop
\r
172 bne reg1_error_loop
\r
174 bne reg1_error_loop
\r
176 bne reg1_error_loop
\r
178 bne reg1_error_loop
\r
180 bne reg1_error_loop
\r
182 bne reg1_error_loop
\r
184 bne reg1_error_loop
\r
186 bne reg1_error_loop
\r
188 bne reg1_error_loop
\r
190 bne reg1_error_loop
\r
192 bne reg1_error_loop
\r
194 bne reg1_error_loop
\r
196 bne reg1_error_loop
\r
198 bne reg1_error_loop
\r
200 bne reg1_error_loop
\r
202 bne reg1_error_loop
\r
204 bne reg1_error_loop
\r
206 bne reg1_error_loop
\r
208 bne reg1_error_loop
\r
210 bne reg1_error_loop
\r
212 bne reg1_error_loop
\r
214 bne reg1_error_loop
\r
216 bne reg1_error_loop
\r
218 bne reg1_error_loop
\r
220 /* Check every floating point register to ensure it contains the expected
\r
221 value. First save the registers clobbered by the test. */
\r
222 stp x0, x1, [sp,#-0x10]!
\r
226 bne reg1_error_loop
\r
229 bne reg1_error_loop
\r
232 bne reg1_error_loop
\r
235 bne reg1_error_loop
\r
238 bne reg1_error_loop
\r
241 bne reg1_error_loop
\r
244 bne reg1_error_loop
\r
247 bne reg1_error_loop
\r
250 bne reg1_error_loop
\r
253 bne reg1_error_loop
\r
256 bne reg1_error_loop
\r
259 bne reg1_error_loop
\r
262 bne reg1_error_loop
\r
265 bne reg1_error_loop
\r
268 bne reg1_error_loop
\r
271 bne reg1_error_loop
\r
274 bne reg1_error_loop
\r
277 bne reg1_error_loop
\r
280 bne reg1_error_loop
\r
283 bne reg1_error_loop
\r
286 bne reg1_error_loop
\r
289 bne reg1_error_loop
\r
292 bne reg1_error_loop
\r
295 bne reg1_error_loop
\r
298 bne reg1_error_loop
\r
301 bne reg1_error_loop
\r
304 bne reg1_error_loop
\r
307 bne reg1_error_loop
\r
310 bne reg1_error_loop
\r
313 bne reg1_error_loop
\r
316 bne reg1_error_loop
\r
319 bne reg1_error_loop
\r
321 /* Restore the registers clobbered by the test. */
\r
322 ldp x0, x1, [sp], #0x10
\r
324 /* Everything passed, increment the loop counter. */
\r
325 stp x0, x1, [sp,#-0x10]!
\r
326 ldr x0, =ullRegTest1LoopCounter
\r
330 ldp x0, x1, [sp], #0x10
\r
336 /* If this line is hit then there was an error in a core register value.
\r
337 The loop ensures the loop counter stops incrementing. */
\r
341 /*-----------------------------------------------------------*/
\r
343 .type vRegTest2Implementation, %function
\r
344 vRegTest2Implementation:
\r
346 /* Fill each general purpose register with a known value. */
\r
379 /* Fill each FPU register with a known value. */
\r
413 /* Loop, checking each itteration that each register still contains the
\r
417 /* Test each general purpose register to check that it still contains the
\r
418 expected known value, jumping to reg2_error_loop if any register contains
\r
419 an unexpected value. */
\r
421 bne reg2_error_loop
\r
423 bne reg2_error_loop
\r
425 bne reg2_error_loop
\r
427 bne reg2_error_loop
\r
429 bne reg2_error_loop
\r
431 bne reg2_error_loop
\r
433 bne reg2_error_loop
\r
435 bne reg2_error_loop
\r
437 bne reg2_error_loop
\r
439 bne reg2_error_loop
\r
441 bne reg2_error_loop
\r
443 bne reg2_error_loop
\r
445 bne reg2_error_loop
\r
447 bne reg2_error_loop
\r
449 bne reg2_error_loop
\r
451 bne reg2_error_loop
\r
453 bne reg2_error_loop
\r
455 bne reg2_error_loop
\r
457 bne reg2_error_loop
\r
459 bne reg2_error_loop
\r
461 bne reg2_error_loop
\r
463 bne reg2_error_loop
\r
465 bne reg2_error_loop
\r
467 bne reg2_error_loop
\r
469 bne reg2_error_loop
\r
471 bne reg2_error_loop
\r
473 bne reg2_error_loop
\r
475 bne reg2_error_loop
\r
477 bne reg2_error_loop
\r
479 bne reg2_error_loop
\r
481 bne reg2_error_loop
\r
483 /* Check every floating point register to ensure it contains the expected
\r
484 value. First save the registers clobbered by the test. */
\r
485 stp x0, x1, [sp,#-0x10]!
\r
489 bne reg1_error_loop
\r
492 bne reg1_error_loop
\r
495 bne reg1_error_loop
\r
498 bne reg1_error_loop
\r
501 bne reg1_error_loop
\r
504 bne reg1_error_loop
\r
507 bne reg1_error_loop
\r
510 bne reg1_error_loop
\r
513 bne reg1_error_loop
\r
516 bne reg1_error_loop
\r
519 bne reg1_error_loop
\r
522 bne reg1_error_loop
\r
525 bne reg1_error_loop
\r
528 bne reg1_error_loop
\r
531 bne reg1_error_loop
\r
534 bne reg1_error_loop
\r
537 bne reg1_error_loop
\r
540 bne reg1_error_loop
\r
543 bne reg1_error_loop
\r
546 bne reg1_error_loop
\r
549 bne reg1_error_loop
\r
552 bne reg1_error_loop
\r
555 bne reg1_error_loop
\r
558 bne reg1_error_loop
\r
561 bne reg1_error_loop
\r
564 bne reg1_error_loop
\r
567 bne reg1_error_loop
\r
570 bne reg1_error_loop
\r
573 bne reg1_error_loop
\r
576 bne reg1_error_loop
\r
579 bne reg1_error_loop
\r
582 bne reg1_error_loop
\r
584 /* Restore the registers clobbered by the test. */
\r
585 ldp x0, x1, [sp], #0x10
\r
587 /* Everything passed, increment the loop counter. */
\r
588 stp x0, x1, [sp,#-0x10]!
\r
589 ldr x0, =ullRegTest2LoopCounter
\r
593 ldp x0, x1, [sp], #0x10
\r
599 /* If this line is hit then there was an error in a core register value.
\r
600 The loop ensures the loop counter stops incrementing. */
\r