2 * FreeRTOS Kernel V10.0.0
\r
3 * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
\r
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of
\r
6 * this software and associated documentation files (the "Software"), to deal in
\r
7 * the Software without restriction, including without limitation the rights to
\r
8 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
\r
9 * the Software, and to permit persons to whom the Software is furnished to do so,
\r
10 * subject to the following conditions:
\r
12 * The above copyright notice and this permission notice shall be included in all
\r
13 * copies or substantial portions of the Software. If you wish to use our Amazon
\r
14 * FreeRTOS name, please do so in a fair use way that does not cause confusion.
\r
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
\r
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
\r
18 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
\r
19 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
\r
20 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
\r
21 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
23 * http://www.FreeRTOS.org
\r
24 * http://aws.amazon.com/freertos
\r
26 * 1 tab == 4 spaces!
\r
31 #include <sys/asm.h>
\r
44 /* Reg test tasks call the error loop when they find an error. Sitting in the
\r
45 tight error loop prevents them incrementing their ulRegTestnCycles counter, and
\r
46 so allows the check softwate timer to know an error has been found. */
\r
59 /* Fill the registers with known values. */
\r
63 /* $4 contains the address of the loop counter - don't mess with $4. */
\r
69 addiu $10, $0, 0x110
\r
70 addiu $11, $0, 0x111
\r
71 addiu $12, $0, 0x112
\r
72 addiu $13, $0, 0x113
\r
73 addiu $14, $0, 0x114
\r
74 addiu $15, $0, 0x115
\r
75 addiu $16, $0, 0x116
\r
76 addiu $17, $0, 0x117
\r
77 addiu $18, $0, 0x118
\r
78 addiu $19, $0, 0x119
\r
79 addiu $20, $0, 0x120
\r
80 addiu $21, $0, 0x121
\r
81 addiu $23, $0, 0x123
\r
82 addiu $24, $0, 0x124
\r
83 addiu $25, $0, 0x125
\r
84 addiu $30, $0, 0x130
\r
85 addiu $22, $0, 0x131
\r
87 addiu $22, $0, 0x132
\r
91 /* Check each register maintains the value assigned to it for the lifetime
\r
94 addiu $22, $1, -0x11
\r
97 /* The register value was not that expected. Jump to the error loop so the
\r
98 cycle counter stops incrementing. */
\r
102 addiu $22, $0, 0x00
\r
103 addiu $22, $2, -0x12
\r
109 addiu $22, $0, 0x00
\r
110 addiu $22, $3, -0x13
\r
116 addiu $22, $0, 0x00
\r
117 addiu $22, $5, -0x15
\r
123 addiu $22, $0, 0x00
\r
124 addiu $22, $6, -0x16
\r
130 addiu $22, $0, 0x00
\r
131 addiu $22, $7, -0x17
\r
137 addiu $22, $0, 0x00
\r
138 addiu $22, $8, -0x18
\r
144 addiu $22, $0, 0x00
\r
145 addiu $22, $9, -0x19
\r
151 addiu $22, $0, 0x00
\r
152 addiu $22, $10, -0x110
\r
158 addiu $22, $0, 0x00
\r
159 addiu $22, $11, -0x111
\r
165 addiu $22, $0, 0x00
\r
166 addiu $22, $12, -0x112
\r
172 addiu $22, $0, 0x00
\r
173 addiu $22, $13, -0x113
\r
179 addiu $22, $0, 0x00
\r
180 addiu $22, $14, -0x114
\r
186 addiu $22, $0, 0x00
\r
187 addiu $22, $15, -0x115
\r
193 addiu $22, $0, 0x00
\r
194 addiu $22, $16, -0x116
\r
200 addiu $22, $0, 0x00
\r
201 addiu $22, $17, -0x117
\r
207 addiu $22, $0, 0x00
\r
208 addiu $22, $18, -0x118
\r
214 addiu $22, $0, 0x00
\r
215 addiu $22, $19, -0x119
\r
221 addiu $22, $0, 0x00
\r
222 addiu $22, $20, -0x120
\r
228 addiu $22, $0, 0x00
\r
229 addiu $22, $21, -0x121
\r
235 addiu $22, $0, 0x00
\r
236 addiu $22, $23, -0x123
\r
242 addiu $22, $0, 0x00
\r
243 addiu $22, $24, -0x124
\r
249 addiu $22, $0, 0x00
\r
250 addiu $22, $25, -0x125
\r
256 addiu $22, $0, 0x00
\r
257 addiu $22, $30, -0x130
\r
264 addiu $22, $22, -0x131
\r
271 addiu $22, $22, -0x132
\r
277 /* No errors detected. Increment the loop count so the check timer knows
\r
278 this task is still running without error, then loop back to do it all
\r
279 again. The address of the loop counter is in $4. */
\r
281 addiu $22, $22, 0x01
\r
297 /* $4 contains the address of the loop counter - don't mess with $4. */
\r
303 addiu $10, $0, 0x210
\r
304 addiu $11, $0, 0x211
\r
305 addiu $12, $0, 0x212
\r
306 addiu $13, $0, 0x213
\r
307 addiu $14, $0, 0x214
\r
308 addiu $15, $0, 0x215
\r
309 addiu $16, $0, 0x216
\r
310 addiu $17, $0, 0x217
\r
311 addiu $18, $0, 0x218
\r
312 addiu $19, $0, 0x219
\r
313 addiu $20, $0, 0x220
\r
314 addiu $21, $0, 0x221
\r
315 addiu $23, $0, 0x223
\r
316 addiu $24, $0, 0x224
\r
317 addiu $25, $0, 0x225
\r
318 addiu $30, $0, 0x230
\r
319 addiu $22, $0, 0x231
\r
321 addiu $22, $0, 0x232
\r
325 addiu $22, $0, 0x00
\r
326 addiu $22, $1, -0x21
\r
332 addiu $22, $0, 0x00
\r
333 addiu $22, $2, -0x22
\r
339 addiu $22, $0, 0x00
\r
340 addiu $22, $3, -0x23
\r
346 addiu $22, $0, 0x00
\r
347 addiu $22, $5, -0x25
\r
353 addiu $22, $0, 0x00
\r
354 addiu $22, $6, -0x26
\r
360 addiu $22, $0, 0x00
\r
361 addiu $22, $7, -0x27
\r
367 addiu $22, $0, 0x00
\r
368 addiu $22, $8, -0x28
\r
374 addiu $22, $0, 0x00
\r
375 addiu $22, $9, -0x29
\r
381 addiu $22, $0, 0x00
\r
382 addiu $22, $10, -0x210
\r
388 addiu $22, $0, 0x00
\r
389 addiu $22, $11, -0x211
\r
395 addiu $22, $0, 0x00
\r
396 addiu $22, $12, -0x212
\r
402 addiu $22, $0, 0x00
\r
403 addiu $22, $13, -0x213
\r
409 addiu $22, $0, 0x00
\r
410 addiu $22, $14, -0x214
\r
416 addiu $22, $0, 0x00
\r
417 addiu $22, $15, -0x215
\r
423 addiu $22, $0, 0x00
\r
424 addiu $22, $16, -0x216
\r
430 addiu $22, $0, 0x00
\r
431 addiu $22, $17, -0x217
\r
437 addiu $22, $0, 0x00
\r
438 addiu $22, $18, -0x218
\r
444 addiu $22, $0, 0x00
\r
445 addiu $22, $19, -0x219
\r
451 addiu $22, $0, 0x00
\r
452 addiu $22, $20, -0x220
\r
458 addiu $22, $0, 0x00
\r
459 addiu $22, $21, -0x221
\r
465 addiu $22, $0, 0x00
\r
466 addiu $22, $23, -0x223
\r
472 addiu $22, $0, 0x00
\r
473 addiu $22, $24, -0x224
\r
479 addiu $22, $0, 0x00
\r
480 addiu $22, $25, -0x225
\r
486 addiu $22, $0, 0x00
\r
487 addiu $22, $30, -0x230
\r
494 addiu $22, $22, -0x231
\r
501 addiu $22, $22, -0x232
\r
507 /* No errors detected. Increment the loop count so the check timer knows
\r
508 this task is still running without error, then loop back to do it all
\r
509 again. The address of the loop counter is in $4. */
\r
511 addiu $22, $22, 0x01
\r