2 FreeRTOS V8.2.2 - Copyright (C) 2015 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
72 #include <sys/asm.h>
\r
85 /* Reg test tasks call the error loop when they find an error. Sitting in the
\r
86 tight error loop prevents them incrementing their ulRegTestnCycles counter, and
\r
87 so allows the check softwate timer to know an error has been found. */
\r
100 /* Fill the registers with known values. */
\r
104 /* $4 contains the address of the loop counter - don't mess with $4. */
\r
110 addiu $10, $0, 0x110
\r
111 addiu $11, $0, 0x111
\r
112 addiu $12, $0, 0x112
\r
113 addiu $13, $0, 0x113
\r
114 addiu $14, $0, 0x114
\r
115 addiu $15, $0, 0x115
\r
116 addiu $16, $0, 0x116
\r
117 addiu $17, $0, 0x117
\r
118 addiu $18, $0, 0x118
\r
119 addiu $19, $0, 0x119
\r
120 addiu $20, $0, 0x120
\r
121 addiu $21, $0, 0x121
\r
122 addiu $23, $0, 0x123
\r
123 addiu $24, $0, 0x124
\r
124 addiu $25, $0, 0x125
\r
125 addiu $30, $0, 0x130
\r
126 addiu $22, $0, 0x131
\r
128 addiu $22, $0, 0x132
\r
130 addiu $22, $0, 0x133
\r
132 addiu $22, $0, 0x134
\r
134 addiu $22, $0, 0x135
\r
136 addiu $22, $0, 0x136
\r
140 /* Check each register maintains the value assigned to it for the lifetime
\r
142 addiu $22, $0, 0x00
\r
143 addiu $22, $1, -0x11
\r
146 /* The register value was not that expected. Jump to the error loop so the
\r
147 cycle counter stops incrementing. */
\r
151 addiu $22, $0, 0x00
\r
152 addiu $22, $2, -0x12
\r
158 addiu $22, $0, 0x00
\r
159 addiu $22, $3, -0x13
\r
165 addiu $22, $0, 0x00
\r
166 addiu $22, $5, -0x15
\r
172 addiu $22, $0, 0x00
\r
173 addiu $22, $6, -0x16
\r
179 addiu $22, $0, 0x00
\r
180 addiu $22, $7, -0x17
\r
186 addiu $22, $0, 0x00
\r
187 addiu $22, $8, -0x18
\r
193 addiu $22, $0, 0x00
\r
194 addiu $22, $9, -0x19
\r
200 addiu $22, $0, 0x00
\r
201 addiu $22, $10, -0x110
\r
207 addiu $22, $0, 0x00
\r
208 addiu $22, $11, -0x111
\r
214 addiu $22, $0, 0x00
\r
215 addiu $22, $12, -0x112
\r
221 addiu $22, $0, 0x00
\r
222 addiu $22, $13, -0x113
\r
228 addiu $22, $0, 0x00
\r
229 addiu $22, $14, -0x114
\r
235 addiu $22, $0, 0x00
\r
236 addiu $22, $15, -0x115
\r
242 addiu $22, $0, 0x00
\r
243 addiu $22, $16, -0x116
\r
249 addiu $22, $0, 0x00
\r
250 addiu $22, $17, -0x117
\r
256 addiu $22, $0, 0x00
\r
257 addiu $22, $18, -0x118
\r
263 addiu $22, $0, 0x00
\r
264 addiu $22, $19, -0x119
\r
270 addiu $22, $0, 0x00
\r
271 addiu $22, $20, -0x120
\r
277 addiu $22, $0, 0x00
\r
278 addiu $22, $21, -0x121
\r
284 addiu $22, $0, 0x00
\r
285 addiu $22, $23, -0x123
\r
291 addiu $22, $0, 0x00
\r
292 addiu $22, $24, -0x124
\r
298 addiu $22, $0, 0x00
\r
299 addiu $22, $25, -0x125
\r
305 addiu $22, $0, 0x00
\r
306 addiu $22, $30, -0x130
\r
313 addiu $22, $22, -0x131
\r
320 addiu $22, $22, -0x132
\r
327 addiu $22, $22, -0x133
\r
334 addiu $22, $22, -0x134
\r
341 addiu $22, $22, -0x135
\r
348 addiu $22, $22, -0x136
\r
354 /* No errors detected. Increment the loop count so the check timer knows
\r
355 this task is still running without error, then loop back to do it all
\r
356 again. The address of the loop counter is in $4. */
\r
358 addiu $22, $22, 0x01
\r
374 /* $4 contains the address of the loop counter - don't mess with $4. */
\r
380 addiu $10, $0, 0x210
\r
381 addiu $11, $0, 0x211
\r
382 addiu $12, $0, 0x212
\r
383 addiu $13, $0, 0x213
\r
384 addiu $14, $0, 0x214
\r
385 addiu $15, $0, 0x215
\r
386 addiu $16, $0, 0x216
\r
387 addiu $17, $0, 0x217
\r
388 addiu $18, $0, 0x218
\r
389 addiu $19, $0, 0x219
\r
390 addiu $20, $0, 0x220
\r
391 addiu $21, $0, 0x221
\r
392 addiu $23, $0, 0x223
\r
393 addiu $24, $0, 0x224
\r
394 addiu $25, $0, 0x225
\r
395 addiu $30, $0, 0x230
\r
396 addiu $22, $0, 0x231
\r
398 addiu $22, $0, 0x232
\r
400 addiu $22, $0, 0x233
\r
402 addiu $22, $0, 0x234
\r
404 addiu $22, $0, 0x235
\r
406 addiu $22, $0, 0x236
\r
410 addiu $22, $0, 0x00
\r
411 addiu $22, $1, -0x21
\r
417 addiu $22, $0, 0x00
\r
418 addiu $22, $2, -0x22
\r
424 addiu $22, $0, 0x00
\r
425 addiu $22, $3, -0x23
\r
431 addiu $22, $0, 0x00
\r
432 addiu $22, $5, -0x25
\r
438 addiu $22, $0, 0x00
\r
439 addiu $22, $6, -0x26
\r
445 addiu $22, $0, 0x00
\r
446 addiu $22, $7, -0x27
\r
452 addiu $22, $0, 0x00
\r
453 addiu $22, $8, -0x28
\r
459 addiu $22, $0, 0x00
\r
460 addiu $22, $9, -0x29
\r
466 addiu $22, $0, 0x00
\r
467 addiu $22, $10, -0x210
\r
473 addiu $22, $0, 0x00
\r
474 addiu $22, $11, -0x211
\r
480 addiu $22, $0, 0x00
\r
481 addiu $22, $12, -0x212
\r
487 addiu $22, $0, 0x00
\r
488 addiu $22, $13, -0x213
\r
494 addiu $22, $0, 0x00
\r
495 addiu $22, $14, -0x214
\r
501 addiu $22, $0, 0x00
\r
502 addiu $22, $15, -0x215
\r
508 addiu $22, $0, 0x00
\r
509 addiu $22, $16, -0x216
\r
515 addiu $22, $0, 0x00
\r
516 addiu $22, $17, -0x217
\r
522 addiu $22, $0, 0x00
\r
523 addiu $22, $18, -0x218
\r
529 addiu $22, $0, 0x00
\r
530 addiu $22, $19, -0x219
\r
536 addiu $22, $0, 0x00
\r
537 addiu $22, $20, -0x220
\r
543 addiu $22, $0, 0x00
\r
544 addiu $22, $21, -0x221
\r
550 addiu $22, $0, 0x00
\r
551 addiu $22, $23, -0x223
\r
557 addiu $22, $0, 0x00
\r
558 addiu $22, $24, -0x224
\r
564 addiu $22, $0, 0x00
\r
565 addiu $22, $25, -0x225
\r
571 addiu $22, $0, 0x00
\r
572 addiu $22, $30, -0x230
\r
579 addiu $22, $22, -0x231
\r
586 addiu $22, $22, -0x232
\r
593 addiu $22, $22, -0x233
\r
600 addiu $22, $22, -0x234
\r
607 addiu $22, $22, -0x235
\r
614 addiu $22, $22, -0x236
\r
620 /* No errors detected. Increment the loop count so the check timer knows
\r
621 this task is still running without error, then loop back to do it all
\r
622 again. The address of the loop counter is in $4. */
\r
624 addiu $22, $22, 0x01
\r