2 ; FreeRTOS V8.2.0 - Copyright (C) 2014 Real Time Engineers Ltd.
\r
3 ; All rights reserved
\r
5 ; VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
\r
7 ; ***************************************************************************
\r
9 ; * FreeRTOS provides completely free yet professionally developed, *
\r
10 ; * robust, strictly quality controlled, supported, and cross *
\r
11 ; * platform software that has become a de facto standard. *
\r
13 ; * Help yourself get started quickly and support the FreeRTOS *
\r
14 ; * project by purchasing a FreeRTOS tutorial book, reference *
\r
15 ; * manual, or both from: http://www.FreeRTOS.org/Documentation *
\r
19 ; ***************************************************************************
\r
21 ; This file is part of the FreeRTOS distribution.
\r
23 ; FreeRTOS is free software; you can redistribute it and/or modify it under
\r
24 ; the terms of the GNU General Public License (version 2) as published by the
\r
25 ; Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
\r
27 ; >>! NOTE: The modification to the GPL is included to allow you to distribute
\r
28 ; >>! a combined work that includes FreeRTOS without being obliged to provide
\r
29 ; >>! the source code for proprietary components outside of the FreeRTOS
\r
32 ; FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
\r
33 ; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
\r
34 ; FOR A PARTICULAR PURPOSE. Full license text is available from the following
\r
35 ; link: http://www.freertos.org/a00114.html
\r
37 ; 1 tab == 4 spaces!
\r
39 ; ***************************************************************************
\r
41 ; * Having a problem? Start by reading the FAQ "My application does *
\r
42 ; * not run, what could be wrong?" *
\r
44 ; * http://www.FreeRTOS.org/FAQHelp.html *
\r
46 ; ***************************************************************************
\r
48 ; http://www.FreeRTOS.org - Documentation, books, training, latest versions,
\r
49 ; license and Real Time Engineers Ltd. contact details.;
\r
51 ; http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
\r
52 ; including FreeRTOS+Trace - an indispensable productivity tool, a DOS
\r
53 ; compatible FAT file system, and our tiny thread aware UDP/IP stack.
\r
55 ; http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
\r
56 ; Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
\r
57 ; licenses offer ticketed support, indemnification and middleware.
\r
59 ; http://www.SafeRTOS.com - High Integrity Systems also provide a safety
\r
60 ; engineered and independently SIL3 certified version for use in safety and
\r
61 ; mission critical applications that require provable dependability.
\r
63 ; 1 tab == 4 spaces!
\r
66 .GLB _vRegTest1Implementation
\r
67 .GLB _vRegTest2Implementation
\r
69 .GLB _ulRegTest1LoopCounter
\r
70 .GLB _ulRegTest2LoopCounter
\r
75 ;/* This function is explained in the comments at the top of main.c. */
\r
76 _vRegTest1Implementation:
\r
78 ;/* Put a known value in the guard byte of the accumulators. */
\r
84 ;/* Put a known value in each register. */
\r
101 ;/* Put a known value in the hi and low of the accumulators. */
\r
107 ;/* Loop, checking each itteration that each register still contains the
\r
108 ;expected value. */
\r
111 ;/* Push the registers that are going to get clobbered. */
\r
114 ;/* Increment the loop counter to show this task is still getting CPU time. */
\r
115 MOV.L #_ulRegTest1LoopCounter, R14
\r
120 ;/* Yield to extend the text coverage. Set the bit in the ITU SWINTR register. */
\r
122 MOV.L #0872E0H, R15
\r
127 ;/* Check accumulators. */
\r
128 MVFACHI #0, A0, R15
\r
131 MVFACLO #0, A0, R15
\r
134 MVFACGU #0, A0, R15
\r
137 MVFACHI #0, A1, R15
\r
140 MVFACLO #0, A1, R15
\r
143 MVFACGU #0, A1, R15
\r
147 ;/* Restore the clobbered registers. */
\r
150 ;/* Now compare each register to ensure it still contains the value that was
\r
151 ;set before this loop was entered. */
\r
183 ;/* All comparisons passed, start a new itteratio of this loop. */
\r
187 ;/* A compare failed, just loop here so the loop counter stops incrementing
\r
188 ;- causing the check task to indicate the error. */
\r
190 ;/*-----------------------------------------------------------*/
\r
192 ;/* This function is explained in the comments at the top of main.c. */
\r
193 _vRegTest2Implementation:
\r
195 ;/* Put a known value in the guard byte of the accumulators. */
\r
201 ;/* Put a known value in each general purpose register. */
\r
218 ;/* Put a known value in the hi and low of the accumulators. */
\r
224 ;/* Loop, checking each itteration that each register still contains the
\r
225 ;expected value. */
\r
228 ;/* Push the registers that are going to get clobbered. */
\r
231 ;/* Increment the loop counter to show this task is still getting CPU time. */
\r
232 MOV.L #_ulRegTest2LoopCounter, R14
\r
237 ;/* Check accumulators. */
\r
238 MVFACHI #0, A0, R15
\r
241 MVFACLO #0, A0, R15
\r
244 MVFACGU #0, A0, R15
\r
247 MVFACHI #0, A1, R15
\r
250 MVFACLO #0, A1, R15
\r
253 MVFACGU #0, A1, R15
\r
257 ;/* Restore the clobbered registers. */
\r
260 ;/* Now compare each register to ensure it still contains the value that was
\r
261 ;set before this loop was entered. */
\r
293 ;/* All comparisons passed, start a new itteratio of this loop. */
\r
297 ;/* A compare failed, just loop here so the loop counter stops incrementing
\r
298 ;- causing the check task to indicate the error. */
\r