2 FreeRTOS V8.1.2 - Copyright (C) 2014 Real Time Engineers Ltd.
\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 !<<
\r
28 >>! distribute a combined work that includes FreeRTOS without being !<<
\r
29 >>! obliged to provide the source code for proprietary components !<<
\r
30 >>! outside of the FreeRTOS kernel. !<<
\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
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
68 #include <sys/asm.h>
\r
81 /* Reg test tasks call the error loop when they find an error. Sitting in the
\r
82 tight error loop prevents them incrementing their ulRegTestnCycles counter, and
\r
83 so allows the check softwate timer to know an error has been found. */
\r
96 /* Fill the registers with known values. */
\r
100 /* $4 contains the address of the loop counter - don't mess with $4. */
\r
106 addiu $10, $0, 0x110
\r
107 addiu $11, $0, 0x111
\r
108 addiu $12, $0, 0x112
\r
109 addiu $13, $0, 0x113
\r
110 addiu $14, $0, 0x114
\r
111 addiu $15, $0, 0x115
\r
112 addiu $16, $0, 0x116
\r
113 addiu $17, $0, 0x117
\r
114 addiu $18, $0, 0x118
\r
115 addiu $19, $0, 0x119
\r
116 addiu $20, $0, 0x120
\r
117 addiu $21, $0, 0x121
\r
118 addiu $23, $0, 0x123
\r
119 addiu $24, $0, 0x124
\r
120 addiu $25, $0, 0x125
\r
121 addiu $30, $0, 0x130
\r
122 addiu $22, $0, 0x131
\r
124 addiu $22, $0, 0x132
\r
128 /* Check each register maintains the value assigned to it for the lifetime
\r
130 addiu $22, $0, 0x00
\r
131 addiu $22, $1, -0x11
\r
134 /* The register value was not that expected. Jump to the error loop so the
\r
135 cycle counter stops incrementing. */
\r
139 addiu $22, $0, 0x00
\r
140 addiu $22, $2, -0x12
\r
146 addiu $22, $0, 0x00
\r
147 addiu $22, $3, -0x13
\r
153 addiu $22, $0, 0x00
\r
154 addiu $22, $5, -0x15
\r
160 addiu $22, $0, 0x00
\r
161 addiu $22, $6, -0x16
\r
167 addiu $22, $0, 0x00
\r
168 addiu $22, $7, -0x17
\r
174 addiu $22, $0, 0x00
\r
175 addiu $22, $8, -0x18
\r
181 addiu $22, $0, 0x00
\r
182 addiu $22, $9, -0x19
\r
188 addiu $22, $0, 0x00
\r
189 addiu $22, $10, -0x110
\r
195 addiu $22, $0, 0x00
\r
196 addiu $22, $11, -0x111
\r
202 addiu $22, $0, 0x00
\r
203 addiu $22, $12, -0x112
\r
209 addiu $22, $0, 0x00
\r
210 addiu $22, $13, -0x113
\r
216 addiu $22, $0, 0x00
\r
217 addiu $22, $14, -0x114
\r
223 addiu $22, $0, 0x00
\r
224 addiu $22, $15, -0x115
\r
230 addiu $22, $0, 0x00
\r
231 addiu $22, $16, -0x116
\r
237 addiu $22, $0, 0x00
\r
238 addiu $22, $17, -0x117
\r
244 addiu $22, $0, 0x00
\r
245 addiu $22, $18, -0x118
\r
251 addiu $22, $0, 0x00
\r
252 addiu $22, $19, -0x119
\r
258 addiu $22, $0, 0x00
\r
259 addiu $22, $20, -0x120
\r
265 addiu $22, $0, 0x00
\r
266 addiu $22, $21, -0x121
\r
272 addiu $22, $0, 0x00
\r
273 addiu $22, $23, -0x123
\r
279 addiu $22, $0, 0x00
\r
280 addiu $22, $24, -0x124
\r
286 addiu $22, $0, 0x00
\r
287 addiu $22, $25, -0x125
\r
293 addiu $22, $0, 0x00
\r
294 addiu $22, $30, -0x130
\r
301 addiu $22, $22, -0x131
\r
308 addiu $22, $22, -0x132
\r
314 /* No errors detected. Increment the loop count so the check timer knows
\r
315 this task is still running without error, then loop back to do it all
\r
316 again. The address of the loop counter is in $4. */
\r
318 addiu $22, $22, 0x01
\r
334 /* $4 contains the address of the loop counter - don't mess with $4. */
\r
340 addiu $10, $0, 0x210
\r
341 addiu $11, $0, 0x211
\r
342 addiu $12, $0, 0x212
\r
343 addiu $13, $0, 0x213
\r
344 addiu $14, $0, 0x214
\r
345 addiu $15, $0, 0x215
\r
346 addiu $16, $0, 0x216
\r
347 addiu $17, $0, 0x217
\r
348 addiu $18, $0, 0x218
\r
349 addiu $19, $0, 0x219
\r
350 addiu $20, $0, 0x220
\r
351 addiu $21, $0, 0x221
\r
352 addiu $23, $0, 0x223
\r
353 addiu $24, $0, 0x224
\r
354 addiu $25, $0, 0x225
\r
355 addiu $30, $0, 0x230
\r
356 addiu $22, $0, 0x231
\r
358 addiu $22, $0, 0x232
\r
362 addiu $22, $0, 0x00
\r
363 addiu $22, $1, -0x21
\r
369 addiu $22, $0, 0x00
\r
370 addiu $22, $2, -0x22
\r
376 addiu $22, $0, 0x00
\r
377 addiu $22, $3, -0x23
\r
383 addiu $22, $0, 0x00
\r
384 addiu $22, $5, -0x25
\r
390 addiu $22, $0, 0x00
\r
391 addiu $22, $6, -0x26
\r
397 addiu $22, $0, 0x00
\r
398 addiu $22, $7, -0x27
\r
404 addiu $22, $0, 0x00
\r
405 addiu $22, $8, -0x28
\r
411 addiu $22, $0, 0x00
\r
412 addiu $22, $9, -0x29
\r
418 addiu $22, $0, 0x00
\r
419 addiu $22, $10, -0x210
\r
425 addiu $22, $0, 0x00
\r
426 addiu $22, $11, -0x211
\r
432 addiu $22, $0, 0x00
\r
433 addiu $22, $12, -0x212
\r
439 addiu $22, $0, 0x00
\r
440 addiu $22, $13, -0x213
\r
446 addiu $22, $0, 0x00
\r
447 addiu $22, $14, -0x214
\r
453 addiu $22, $0, 0x00
\r
454 addiu $22, $15, -0x215
\r
460 addiu $22, $0, 0x00
\r
461 addiu $22, $16, -0x216
\r
467 addiu $22, $0, 0x00
\r
468 addiu $22, $17, -0x217
\r
474 addiu $22, $0, 0x00
\r
475 addiu $22, $18, -0x218
\r
481 addiu $22, $0, 0x00
\r
482 addiu $22, $19, -0x219
\r
488 addiu $22, $0, 0x00
\r
489 addiu $22, $20, -0x220
\r
495 addiu $22, $0, 0x00
\r
496 addiu $22, $21, -0x221
\r
502 addiu $22, $0, 0x00
\r
503 addiu $22, $23, -0x223
\r
509 addiu $22, $0, 0x00
\r
510 addiu $22, $24, -0x224
\r
516 addiu $22, $0, 0x00
\r
517 addiu $22, $25, -0x225
\r
523 addiu $22, $0, 0x00
\r
524 addiu $22, $30, -0x230
\r
531 addiu $22, $22, -0x231
\r
538 addiu $22, $22, -0x232
\r
544 /* No errors detected. Increment the loop count so the check timer knows
\r
545 this task is still running without error, then loop back to do it all
\r
546 again. The address of the loop counter is in $4. */
\r
548 addiu $22, $22, 0x01
\r