2 FreeRTOS V9.0.0 - 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
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
132 /* Check each register maintains the value assigned to it for the lifetime
\r
134 addiu $22, $0, 0x00
\r
135 addiu $22, $1, -0x11
\r
138 /* The register value was not that expected. Jump to the error loop so the
\r
139 cycle counter stops incrementing. */
\r
143 addiu $22, $0, 0x00
\r
144 addiu $22, $2, -0x12
\r
150 addiu $22, $0, 0x00
\r
151 addiu $22, $3, -0x13
\r
157 addiu $22, $0, 0x00
\r
158 addiu $22, $5, -0x15
\r
164 addiu $22, $0, 0x00
\r
165 addiu $22, $6, -0x16
\r
171 addiu $22, $0, 0x00
\r
172 addiu $22, $7, -0x17
\r
178 addiu $22, $0, 0x00
\r
179 addiu $22, $8, -0x18
\r
185 addiu $22, $0, 0x00
\r
186 addiu $22, $9, -0x19
\r
192 addiu $22, $0, 0x00
\r
193 addiu $22, $10, -0x110
\r
199 addiu $22, $0, 0x00
\r
200 addiu $22, $11, -0x111
\r
206 addiu $22, $0, 0x00
\r
207 addiu $22, $12, -0x112
\r
213 addiu $22, $0, 0x00
\r
214 addiu $22, $13, -0x113
\r
220 addiu $22, $0, 0x00
\r
221 addiu $22, $14, -0x114
\r
227 addiu $22, $0, 0x00
\r
228 addiu $22, $15, -0x115
\r
234 addiu $22, $0, 0x00
\r
235 addiu $22, $16, -0x116
\r
241 addiu $22, $0, 0x00
\r
242 addiu $22, $17, -0x117
\r
248 addiu $22, $0, 0x00
\r
249 addiu $22, $18, -0x118
\r
255 addiu $22, $0, 0x00
\r
256 addiu $22, $19, -0x119
\r
262 addiu $22, $0, 0x00
\r
263 addiu $22, $20, -0x120
\r
269 addiu $22, $0, 0x00
\r
270 addiu $22, $21, -0x121
\r
276 addiu $22, $0, 0x00
\r
277 addiu $22, $23, -0x123
\r
283 addiu $22, $0, 0x00
\r
284 addiu $22, $24, -0x124
\r
290 addiu $22, $0, 0x00
\r
291 addiu $22, $25, -0x125
\r
297 addiu $22, $0, 0x00
\r
298 addiu $22, $30, -0x130
\r
305 addiu $22, $22, -0x131
\r
312 addiu $22, $22, -0x132
\r
318 /* No errors detected. Increment the loop count so the check timer knows
\r
319 this task is still running without error, then loop back to do it all
\r
320 again. The address of the loop counter is in $4. */
\r
322 addiu $22, $22, 0x01
\r
338 /* $4 contains the address of the loop counter - don't mess with $4. */
\r
344 addiu $10, $0, 0x210
\r
345 addiu $11, $0, 0x211
\r
346 addiu $12, $0, 0x212
\r
347 addiu $13, $0, 0x213
\r
348 addiu $14, $0, 0x214
\r
349 addiu $15, $0, 0x215
\r
350 addiu $16, $0, 0x216
\r
351 addiu $17, $0, 0x217
\r
352 addiu $18, $0, 0x218
\r
353 addiu $19, $0, 0x219
\r
354 addiu $20, $0, 0x220
\r
355 addiu $21, $0, 0x221
\r
356 addiu $23, $0, 0x223
\r
357 addiu $24, $0, 0x224
\r
358 addiu $25, $0, 0x225
\r
359 addiu $30, $0, 0x230
\r
360 addiu $22, $0, 0x231
\r
362 addiu $22, $0, 0x232
\r
366 addiu $22, $0, 0x00
\r
367 addiu $22, $1, -0x21
\r
373 addiu $22, $0, 0x00
\r
374 addiu $22, $2, -0x22
\r
380 addiu $22, $0, 0x00
\r
381 addiu $22, $3, -0x23
\r
387 addiu $22, $0, 0x00
\r
388 addiu $22, $5, -0x25
\r
394 addiu $22, $0, 0x00
\r
395 addiu $22, $6, -0x26
\r
401 addiu $22, $0, 0x00
\r
402 addiu $22, $7, -0x27
\r
408 addiu $22, $0, 0x00
\r
409 addiu $22, $8, -0x28
\r
415 addiu $22, $0, 0x00
\r
416 addiu $22, $9, -0x29
\r
422 addiu $22, $0, 0x00
\r
423 addiu $22, $10, -0x210
\r
429 addiu $22, $0, 0x00
\r
430 addiu $22, $11, -0x211
\r
436 addiu $22, $0, 0x00
\r
437 addiu $22, $12, -0x212
\r
443 addiu $22, $0, 0x00
\r
444 addiu $22, $13, -0x213
\r
450 addiu $22, $0, 0x00
\r
451 addiu $22, $14, -0x214
\r
457 addiu $22, $0, 0x00
\r
458 addiu $22, $15, -0x215
\r
464 addiu $22, $0, 0x00
\r
465 addiu $22, $16, -0x216
\r
471 addiu $22, $0, 0x00
\r
472 addiu $22, $17, -0x217
\r
478 addiu $22, $0, 0x00
\r
479 addiu $22, $18, -0x218
\r
485 addiu $22, $0, 0x00
\r
486 addiu $22, $19, -0x219
\r
492 addiu $22, $0, 0x00
\r
493 addiu $22, $20, -0x220
\r
499 addiu $22, $0, 0x00
\r
500 addiu $22, $21, -0x221
\r
506 addiu $22, $0, 0x00
\r
507 addiu $22, $23, -0x223
\r
513 addiu $22, $0, 0x00
\r
514 addiu $22, $24, -0x224
\r
520 addiu $22, $0, 0x00
\r
521 addiu $22, $25, -0x225
\r
527 addiu $22, $0, 0x00
\r
528 addiu $22, $30, -0x230
\r
535 addiu $22, $22, -0x231
\r
542 addiu $22, $22, -0x232
\r
548 /* No errors detected. Increment the loop count so the check timer knows
\r
549 this task is still running without error, then loop back to do it all
\r
550 again. The address of the loop counter is in $4. */
\r
552 addiu $22, $22, 0x01
\r