2 * FreeRTOS Kernel V10.2.1
\r
3 * Copyright (C) 2019 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.
\r
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
\r
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
\r
17 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
\r
18 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
\r
19 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
\r
20 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
22 * http://www.FreeRTOS.org
\r
23 * http://aws.amazon.com/freertos
\r
25 * 1 tab == 4 spaces!
\r
30 #include <sys/asm.h>
\r
43 /* Reg test tasks call the error loop when they find an error. Sitting in the
\r
44 tight error loop prevents them incrementing their ulRegTestnCycles counter, and
\r
45 so allows the check softwate timer to know an error has been found. */
\r
58 /* Fill the registers with known values. */
\r
62 /* $4 contains the address of the loop counter - don't mess with $4. */
\r
68 addiu $10, $0, 0x110
\r
69 addiu $11, $0, 0x111
\r
70 addiu $12, $0, 0x112
\r
71 addiu $13, $0, 0x113
\r
72 addiu $14, $0, 0x114
\r
73 addiu $15, $0, 0x115
\r
74 addiu $16, $0, 0x116
\r
75 addiu $17, $0, 0x117
\r
76 addiu $18, $0, 0x118
\r
77 addiu $19, $0, 0x119
\r
78 addiu $20, $0, 0x120
\r
79 addiu $21, $0, 0x121
\r
80 addiu $23, $0, 0x123
\r
81 addiu $24, $0, 0x124
\r
82 addiu $25, $0, 0x125
\r
83 addiu $30, $0, 0x130
\r
84 addiu $22, $0, 0x131
\r
86 addiu $22, $0, 0x132
\r
90 /* Check each register maintains the value assigned to it for the lifetime
\r
93 addiu $22, $1, -0x11
\r
96 /* The register value was not that expected. Jump to the error loop so the
\r
97 cycle counter stops incrementing. */
\r
101 addiu $22, $0, 0x00
\r
102 addiu $22, $2, -0x12
\r
108 addiu $22, $0, 0x00
\r
109 addiu $22, $3, -0x13
\r
115 addiu $22, $0, 0x00
\r
116 addiu $22, $5, -0x15
\r
122 addiu $22, $0, 0x00
\r
123 addiu $22, $6, -0x16
\r
129 addiu $22, $0, 0x00
\r
130 addiu $22, $7, -0x17
\r
136 addiu $22, $0, 0x00
\r
137 addiu $22, $8, -0x18
\r
143 addiu $22, $0, 0x00
\r
144 addiu $22, $9, -0x19
\r
150 addiu $22, $0, 0x00
\r
151 addiu $22, $10, -0x110
\r
157 addiu $22, $0, 0x00
\r
158 addiu $22, $11, -0x111
\r
164 addiu $22, $0, 0x00
\r
165 addiu $22, $12, -0x112
\r
171 addiu $22, $0, 0x00
\r
172 addiu $22, $13, -0x113
\r
178 addiu $22, $0, 0x00
\r
179 addiu $22, $14, -0x114
\r
185 addiu $22, $0, 0x00
\r
186 addiu $22, $15, -0x115
\r
192 addiu $22, $0, 0x00
\r
193 addiu $22, $16, -0x116
\r
199 addiu $22, $0, 0x00
\r
200 addiu $22, $17, -0x117
\r
206 addiu $22, $0, 0x00
\r
207 addiu $22, $18, -0x118
\r
213 addiu $22, $0, 0x00
\r
214 addiu $22, $19, -0x119
\r
220 addiu $22, $0, 0x00
\r
221 addiu $22, $20, -0x120
\r
227 addiu $22, $0, 0x00
\r
228 addiu $22, $21, -0x121
\r
234 addiu $22, $0, 0x00
\r
235 addiu $22, $23, -0x123
\r
241 addiu $22, $0, 0x00
\r
242 addiu $22, $24, -0x124
\r
248 addiu $22, $0, 0x00
\r
249 addiu $22, $25, -0x125
\r
255 addiu $22, $0, 0x00
\r
256 addiu $22, $30, -0x130
\r
263 addiu $22, $22, -0x131
\r
270 addiu $22, $22, -0x132
\r
276 /* No errors detected. Increment the loop count so the check timer knows
\r
277 this task is still running without error, then loop back to do it all
\r
278 again. The address of the loop counter is in $4. */
\r
280 addiu $22, $22, 0x01
\r
296 /* $4 contains the address of the loop counter - don't mess with $4. */
\r
302 addiu $10, $0, 0x210
\r
303 addiu $11, $0, 0x211
\r
304 addiu $12, $0, 0x212
\r
305 addiu $13, $0, 0x213
\r
306 addiu $14, $0, 0x214
\r
307 addiu $15, $0, 0x215
\r
308 addiu $16, $0, 0x216
\r
309 addiu $17, $0, 0x217
\r
310 addiu $18, $0, 0x218
\r
311 addiu $19, $0, 0x219
\r
312 addiu $20, $0, 0x220
\r
313 addiu $21, $0, 0x221
\r
314 addiu $23, $0, 0x223
\r
315 addiu $24, $0, 0x224
\r
316 addiu $25, $0, 0x225
\r
317 addiu $30, $0, 0x230
\r
318 addiu $22, $0, 0x231
\r
320 addiu $22, $0, 0x232
\r
324 addiu $22, $0, 0x00
\r
325 addiu $22, $1, -0x21
\r
331 addiu $22, $0, 0x00
\r
332 addiu $22, $2, -0x22
\r
338 addiu $22, $0, 0x00
\r
339 addiu $22, $3, -0x23
\r
345 addiu $22, $0, 0x00
\r
346 addiu $22, $5, -0x25
\r
352 addiu $22, $0, 0x00
\r
353 addiu $22, $6, -0x26
\r
359 addiu $22, $0, 0x00
\r
360 addiu $22, $7, -0x27
\r
366 addiu $22, $0, 0x00
\r
367 addiu $22, $8, -0x28
\r
373 addiu $22, $0, 0x00
\r
374 addiu $22, $9, -0x29
\r
380 addiu $22, $0, 0x00
\r
381 addiu $22, $10, -0x210
\r
387 addiu $22, $0, 0x00
\r
388 addiu $22, $11, -0x211
\r
394 addiu $22, $0, 0x00
\r
395 addiu $22, $12, -0x212
\r
401 addiu $22, $0, 0x00
\r
402 addiu $22, $13, -0x213
\r
408 addiu $22, $0, 0x00
\r
409 addiu $22, $14, -0x214
\r
415 addiu $22, $0, 0x00
\r
416 addiu $22, $15, -0x215
\r
422 addiu $22, $0, 0x00
\r
423 addiu $22, $16, -0x216
\r
429 addiu $22, $0, 0x00
\r
430 addiu $22, $17, -0x217
\r
436 addiu $22, $0, 0x00
\r
437 addiu $22, $18, -0x218
\r
443 addiu $22, $0, 0x00
\r
444 addiu $22, $19, -0x219
\r
450 addiu $22, $0, 0x00
\r
451 addiu $22, $20, -0x220
\r
457 addiu $22, $0, 0x00
\r
458 addiu $22, $21, -0x221
\r
464 addiu $22, $0, 0x00
\r
465 addiu $22, $23, -0x223
\r
471 addiu $22, $0, 0x00
\r
472 addiu $22, $24, -0x224
\r
478 addiu $22, $0, 0x00
\r
479 addiu $22, $25, -0x225
\r
485 addiu $22, $0, 0x00
\r
486 addiu $22, $30, -0x230
\r
493 addiu $22, $22, -0x231
\r
500 addiu $22, $22, -0x232
\r
506 /* No errors detected. Increment the loop count so the check timer knows
\r
507 this task is still running without error, then loop back to do it all
\r
508 again. The address of the loop counter is in $4. */
\r
510 addiu $22, $22, 0x01
\r