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
126 addiu $22, $0, 0x133
\r
128 addiu $22, $0, 0x134
\r
130 addiu $22, $0, 0x135
\r
132 addiu $22, $0, 0x136
\r
136 /* Check each register maintains the value assigned to it for the lifetime
\r
138 addiu $22, $0, 0x00
\r
139 addiu $22, $1, -0x11
\r
142 /* The register value was not that expected. Jump to the error loop so the
\r
143 cycle counter stops incrementing. */
\r
147 addiu $22, $0, 0x00
\r
148 addiu $22, $2, -0x12
\r
154 addiu $22, $0, 0x00
\r
155 addiu $22, $3, -0x13
\r
161 addiu $22, $0, 0x00
\r
162 addiu $22, $5, -0x15
\r
168 addiu $22, $0, 0x00
\r
169 addiu $22, $6, -0x16
\r
175 addiu $22, $0, 0x00
\r
176 addiu $22, $7, -0x17
\r
182 addiu $22, $0, 0x00
\r
183 addiu $22, $8, -0x18
\r
189 addiu $22, $0, 0x00
\r
190 addiu $22, $9, -0x19
\r
196 addiu $22, $0, 0x00
\r
197 addiu $22, $10, -0x110
\r
203 addiu $22, $0, 0x00
\r
204 addiu $22, $11, -0x111
\r
210 addiu $22, $0, 0x00
\r
211 addiu $22, $12, -0x112
\r
217 addiu $22, $0, 0x00
\r
218 addiu $22, $13, -0x113
\r
224 addiu $22, $0, 0x00
\r
225 addiu $22, $14, -0x114
\r
231 addiu $22, $0, 0x00
\r
232 addiu $22, $15, -0x115
\r
238 addiu $22, $0, 0x00
\r
239 addiu $22, $16, -0x116
\r
245 addiu $22, $0, 0x00
\r
246 addiu $22, $17, -0x117
\r
252 addiu $22, $0, 0x00
\r
253 addiu $22, $18, -0x118
\r
259 addiu $22, $0, 0x00
\r
260 addiu $22, $19, -0x119
\r
266 addiu $22, $0, 0x00
\r
267 addiu $22, $20, -0x120
\r
273 addiu $22, $0, 0x00
\r
274 addiu $22, $21, -0x121
\r
280 addiu $22, $0, 0x00
\r
281 addiu $22, $23, -0x123
\r
287 addiu $22, $0, 0x00
\r
288 addiu $22, $24, -0x124
\r
294 addiu $22, $0, 0x00
\r
295 addiu $22, $25, -0x125
\r
301 addiu $22, $0, 0x00
\r
302 addiu $22, $30, -0x130
\r
309 addiu $22, $22, -0x131
\r
316 addiu $22, $22, -0x132
\r
323 addiu $22, $22, -0x133
\r
330 addiu $22, $22, -0x134
\r
337 addiu $22, $22, -0x135
\r
344 addiu $22, $22, -0x136
\r
350 /* No errors detected. Increment the loop count so the check timer knows
\r
351 this task is still running without error, then loop back to do it all
\r
352 again. The address of the loop counter is in $4. */
\r
354 addiu $22, $22, 0x01
\r
370 /* $4 contains the address of the loop counter - don't mess with $4. */
\r
376 addiu $10, $0, 0x210
\r
377 addiu $11, $0, 0x211
\r
378 addiu $12, $0, 0x212
\r
379 addiu $13, $0, 0x213
\r
380 addiu $14, $0, 0x214
\r
381 addiu $15, $0, 0x215
\r
382 addiu $16, $0, 0x216
\r
383 addiu $17, $0, 0x217
\r
384 addiu $18, $0, 0x218
\r
385 addiu $19, $0, 0x219
\r
386 addiu $20, $0, 0x220
\r
387 addiu $21, $0, 0x221
\r
388 addiu $23, $0, 0x223
\r
389 addiu $24, $0, 0x224
\r
390 addiu $25, $0, 0x225
\r
391 addiu $30, $0, 0x230
\r
392 addiu $22, $0, 0x231
\r
394 addiu $22, $0, 0x232
\r
396 addiu $22, $0, 0x233
\r
398 addiu $22, $0, 0x234
\r
400 addiu $22, $0, 0x235
\r
402 addiu $22, $0, 0x236
\r
406 addiu $22, $0, 0x00
\r
407 addiu $22, $1, -0x21
\r
413 addiu $22, $0, 0x00
\r
414 addiu $22, $2, -0x22
\r
420 addiu $22, $0, 0x00
\r
421 addiu $22, $3, -0x23
\r
427 addiu $22, $0, 0x00
\r
428 addiu $22, $5, -0x25
\r
434 addiu $22, $0, 0x00
\r
435 addiu $22, $6, -0x26
\r
441 addiu $22, $0, 0x00
\r
442 addiu $22, $7, -0x27
\r
448 addiu $22, $0, 0x00
\r
449 addiu $22, $8, -0x28
\r
455 addiu $22, $0, 0x00
\r
456 addiu $22, $9, -0x29
\r
462 addiu $22, $0, 0x00
\r
463 addiu $22, $10, -0x210
\r
469 addiu $22, $0, 0x00
\r
470 addiu $22, $11, -0x211
\r
476 addiu $22, $0, 0x00
\r
477 addiu $22, $12, -0x212
\r
483 addiu $22, $0, 0x00
\r
484 addiu $22, $13, -0x213
\r
490 addiu $22, $0, 0x00
\r
491 addiu $22, $14, -0x214
\r
497 addiu $22, $0, 0x00
\r
498 addiu $22, $15, -0x215
\r
504 addiu $22, $0, 0x00
\r
505 addiu $22, $16, -0x216
\r
511 addiu $22, $0, 0x00
\r
512 addiu $22, $17, -0x217
\r
518 addiu $22, $0, 0x00
\r
519 addiu $22, $18, -0x218
\r
525 addiu $22, $0, 0x00
\r
526 addiu $22, $19, -0x219
\r
532 addiu $22, $0, 0x00
\r
533 addiu $22, $20, -0x220
\r
539 addiu $22, $0, 0x00
\r
540 addiu $22, $21, -0x221
\r
546 addiu $22, $0, 0x00
\r
547 addiu $22, $23, -0x223
\r
553 addiu $22, $0, 0x00
\r
554 addiu $22, $24, -0x224
\r
560 addiu $22, $0, 0x00
\r
561 addiu $22, $25, -0x225
\r
567 addiu $22, $0, 0x00
\r
568 addiu $22, $30, -0x230
\r
575 addiu $22, $22, -0x231
\r
582 addiu $22, $22, -0x232
\r
589 addiu $22, $22, -0x233
\r
596 addiu $22, $22, -0x234
\r
603 addiu $22, $22, -0x235
\r
610 addiu $22, $22, -0x236
\r
616 /* No errors detected. Increment the loop count so the check timer knows
\r
617 this task is still running without error, then loop back to do it all
\r
618 again. The address of the loop counter is in $4. */
\r
620 addiu $22, $22, 0x01
\r