]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/PIC32MZ_MPLAB/RegisterTestTasks.S
Update version number to 8.1.2 after moving the defaulting of configUSE_PORT_OPTIMISE...
[freertos] / FreeRTOS / Demo / PIC32MZ_MPLAB / RegisterTestTasks.S
1         /*\r
2     FreeRTOS V8.1.2 - Copyright (C) 2014 Real Time Engineers Ltd.\r
3     All rights reserved\r
4 \r
5     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
6 \r
7     ***************************************************************************\r
8      *                                                                       *\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
12      *                                                                       *\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
16      *                                                                       *\r
17      *    Thank you!                                                         *\r
18      *                                                                       *\r
19     ***************************************************************************\r
20 \r
21     This file is part of the FreeRTOS distribution.\r
22 \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
26 \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
31 \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
36 \r
37     1 tab == 4 spaces!\r
38 \r
39     ***************************************************************************\r
40      *                                                                       *\r
41      *    Having a problem?  Start by reading the FAQ "My application does   *\r
42      *    not run, what could be wrong?"                                     *\r
43      *                                                                       *\r
44      *    http://www.FreeRTOS.org/FAQHelp.html                               *\r
45      *                                                                       *\r
46     ***************************************************************************\r
47 \r
48     http://www.FreeRTOS.org - Documentation, books, training, latest versions,\r
49     license and Real Time Engineers Ltd. contact details.\r
50 \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
54 \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
58 \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
62 \r
63     1 tab == 4 spaces!\r
64 */\r
65 \r
66 \r
67 #include <xc.h>\r
68 #include <sys/asm.h>\r
69 \r
70         .set    nomips16\r
71         .set    noreorder\r
72 \r
73 \r
74         .global vRegTest1\r
75         .global vRegTest2\r
76 \r
77         .set    noreorder\r
78         .set    noat\r
79         .ent    error_loop\r
80 \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
84 error_loop:\r
85         b               .\r
86         nop\r
87 \r
88         .end error_loop\r
89 \r
90 \r
91         .set    noreorder\r
92         .set    noat\r
93         .ent    vRegTest1\r
94 \r
95 vRegTest1:\r
96         /* Fill the registers with known values. */\r
97         addiu   $1, $0, 0x11\r
98         addiu   $2, $0, 0x12\r
99         addiu   $3, $0, 0x13\r
100         /* $4 contains the address of the loop counter - don't mess with $4. */\r
101         addiu   $5, $0, 0x15\r
102         addiu   $6, $0, 0x16\r
103         addiu   $7, $0, 0x17\r
104         addiu   $8, $0, 0x18\r
105         addiu   $9, $0, 0x19\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
123         mthi    $22, $ac1\r
124         addiu   $22, $0, 0x132\r
125         mtlo    $22, $ac1\r
126         addiu   $22, $0, 0x133\r
127         mthi    $22, $ac2\r
128         addiu   $22, $0, 0x134\r
129         mtlo    $22, $ac2\r
130         addiu   $22, $0, 0x135\r
131         mthi    $22, $ac3\r
132         addiu   $22, $0, 0x136\r
133         mtlo    $22, $ac3\r
134 \r
135 vRegTest1Loop:\r
136         /* Check each register maintains the value assigned to it for the lifetime\r
137         of the task. */\r
138         addiu   $22, $0, 0x00\r
139         addiu   $22, $1, -0x11\r
140         beq             $22, $0, .+16\r
141         nop\r
142         /* The register value was not that expected.  Jump to the error loop so the\r
143         cycle counter stops incrementing. */\r
144         b               error_loop\r
145         nop\r
146 \r
147         addiu   $22, $0, 0x00\r
148         addiu   $22, $2, -0x12\r
149         beq             $22, $0, .+16\r
150         nop\r
151         b               error_loop\r
152         nop\r
153 \r
154         addiu   $22, $0, 0x00\r
155         addiu   $22, $3, -0x13\r
156         beq             $22, $0, .+16\r
157         nop\r
158         b               error_loop\r
159         nop\r
160 \r
161         addiu   $22, $0, 0x00\r
162         addiu   $22, $5, -0x15\r
163         beq             $22, $0, .+16\r
164         nop\r
165         b               error_loop\r
166         nop\r
167 \r
168         addiu   $22, $0, 0x00\r
169         addiu   $22, $6, -0x16\r
170         beq             $22, $0, .+16\r
171         nop\r
172         b               error_loop\r
173         nop\r
174 \r
175         addiu   $22, $0, 0x00\r
176         addiu   $22, $7, -0x17\r
177         beq             $22, $0, .+16\r
178         nop\r
179         b               error_loop\r
180         nop\r
181 \r
182         addiu   $22, $0, 0x00\r
183         addiu   $22, $8, -0x18\r
184         beq             $22, $0, .+16\r
185         nop\r
186         b               error_loop\r
187         nop\r
188 \r
189         addiu   $22, $0, 0x00\r
190         addiu   $22, $9, -0x19\r
191         beq             $22, $0, .+16\r
192         nop\r
193         b               error_loop\r
194         nop\r
195 \r
196         addiu   $22, $0, 0x00\r
197         addiu   $22, $10, -0x110\r
198         beq             $22, $0, .+16\r
199         nop\r
200         b               error_loop\r
201         nop\r
202 \r
203         addiu   $22, $0, 0x00\r
204         addiu   $22, $11, -0x111\r
205         beq             $22, $0, .+16\r
206         nop\r
207         b               error_loop\r
208         nop\r
209 \r
210         addiu   $22, $0, 0x00\r
211         addiu   $22, $12, -0x112\r
212         beq             $22, $0, .+16\r
213         nop\r
214         b               error_loop\r
215         nop\r
216 \r
217         addiu   $22, $0, 0x00\r
218         addiu   $22, $13, -0x113\r
219         beq             $22, $0, .+16\r
220         nop\r
221         b               error_loop\r
222         nop\r
223 \r
224         addiu   $22, $0, 0x00\r
225         addiu   $22, $14, -0x114\r
226         beq             $22, $0, .+16\r
227         nop\r
228         b               error_loop\r
229         nop\r
230 \r
231         addiu   $22, $0, 0x00\r
232         addiu   $22, $15, -0x115\r
233         beq             $22, $0, .+16\r
234         nop\r
235         b               error_loop\r
236         nop\r
237 \r
238         addiu   $22, $0, 0x00\r
239         addiu   $22, $16, -0x116\r
240         beq             $22, $0, .+16\r
241         nop\r
242         b               error_loop\r
243         nop\r
244 \r
245         addiu   $22, $0, 0x00\r
246         addiu   $22, $17, -0x117\r
247         beq             $22, $0, .+16\r
248         nop\r
249         b               error_loop\r
250         nop\r
251 \r
252         addiu   $22, $0, 0x00\r
253         addiu   $22, $18, -0x118\r
254         beq             $22, $0, .+16\r
255         nop\r
256         b               error_loop\r
257         nop\r
258 \r
259         addiu   $22, $0, 0x00\r
260         addiu   $22, $19, -0x119\r
261         beq             $22, $0, .+16\r
262         nop\r
263         b               error_loop\r
264         nop\r
265 \r
266         addiu   $22, $0, 0x00\r
267         addiu   $22, $20, -0x120\r
268         beq             $22, $0, .+16\r
269         nop\r
270         b               error_loop\r
271         nop\r
272 \r
273         addiu   $22, $0, 0x00\r
274         addiu   $22, $21, -0x121\r
275         beq             $22, $0, .+16\r
276         nop\r
277         b               error_loop\r
278         nop\r
279 \r
280         addiu   $22, $0, 0x00\r
281         addiu   $22, $23, -0x123\r
282         beq             $22, $0, .+16\r
283         nop\r
284         b               error_loop\r
285         nop\r
286 \r
287         addiu   $22, $0, 0x00\r
288         addiu   $22, $24, -0x124\r
289         beq             $22, $0, .+16\r
290         nop\r
291         b               error_loop\r
292         nop\r
293 \r
294         addiu   $22, $0, 0x00\r
295         addiu   $22, $25, -0x125\r
296         beq             $22, $0, .+16\r
297         nop\r
298         b               error_loop\r
299         nop\r
300 \r
301         addiu   $22, $0, 0x00\r
302         addiu   $22, $30, -0x130\r
303         beq             $22, $0, .+16\r
304         nop\r
305         b               error_loop\r
306         nop\r
307 \r
308         mfhi    $22, $ac1\r
309         addiu   $22, $22, -0x131\r
310         beq             $22, $0, .+16\r
311         nop\r
312         b               error_loop\r
313         nop\r
314 \r
315         mflo    $22, $ac1\r
316         addiu   $22, $22, -0x132\r
317         beq             $22, $0, .+16\r
318         nop\r
319         b               error_loop\r
320         nop\r
321 \r
322         mfhi    $22, $ac2\r
323         addiu   $22, $22, -0x133\r
324         beq             $22, $0, .+16\r
325         nop\r
326         b               error_loop\r
327         nop\r
328 \r
329         mflo    $22, $ac2\r
330         addiu   $22, $22, -0x134\r
331         beq             $22, $0, .+16\r
332         nop\r
333         b               error_loop\r
334         nop\r
335 \r
336         mfhi    $22, $ac3\r
337         addiu   $22, $22, -0x135\r
338         beq             $22, $0, .+16\r
339         nop\r
340         b               error_loop\r
341         nop\r
342 \r
343         mflo    $22, $ac3\r
344         addiu   $22, $22, -0x136\r
345         beq             $22, $0, .+16\r
346         nop\r
347         b               error_loop\r
348         nop\r
349 \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
353         lw              $22, 0( $4 )\r
354         addiu   $22, $22, 0x01\r
355         sw              $22, 0( $4 )\r
356         b               vRegTest1Loop\r
357         nop\r
358 \r
359         .end    vRegTest1\r
360 \r
361 \r
362         .set    noreorder\r
363         .set    noat\r
364         .ent    vRegTest2\r
365 \r
366 vRegTest2:\r
367         addiu   $1, $0, 0x21\r
368         addiu   $2, $0, 0x22\r
369         addiu   $3, $0, 0x23\r
370         /* $4 contains the address of the loop counter - don't mess with $4. */\r
371         addiu   $5, $0, 0x25\r
372         addiu   $6, $0, 0x26\r
373         addiu   $7, $0, 0x27\r
374         addiu   $8, $0, 0x28\r
375         addiu   $9, $0, 0x29\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
393         mthi    $22, $ac1\r
394         addiu   $22, $0, 0x232\r
395         mtlo    $22, $ac1\r
396         addiu   $22, $0, 0x233\r
397         mthi    $22, $ac2\r
398         addiu   $22, $0, 0x234\r
399         mtlo    $22, $ac2\r
400         addiu   $22, $0, 0x235\r
401         mthi    $22, $ac3\r
402         addiu   $22, $0, 0x236\r
403         mtlo    $22, $ac3\r
404 \r
405 vRegTest2Loop:\r
406         addiu   $22, $0, 0x00\r
407         addiu   $22, $1, -0x21\r
408         beq             $22, $0, .+16\r
409         nop\r
410         b               error_loop\r
411         nop\r
412 \r
413         addiu   $22, $0, 0x00\r
414         addiu   $22, $2, -0x22\r
415         beq             $22, $0, .+16\r
416         nop\r
417         b               error_loop\r
418         nop\r
419 \r
420         addiu   $22, $0, 0x00\r
421         addiu   $22, $3, -0x23\r
422         beq             $22, $0, .+16\r
423         nop\r
424         b               error_loop\r
425         nop\r
426 \r
427         addiu   $22, $0, 0x00\r
428         addiu   $22, $5, -0x25\r
429         beq             $22, $0, .+16\r
430         nop\r
431         b               error_loop\r
432         nop\r
433 \r
434         addiu   $22, $0, 0x00\r
435         addiu   $22, $6, -0x26\r
436         beq             $22, $0, .+16\r
437         nop\r
438         b               error_loop\r
439         nop\r
440 \r
441         addiu   $22, $0, 0x00\r
442         addiu   $22, $7, -0x27\r
443         beq             $22, $0, .+16\r
444         nop\r
445         b               error_loop\r
446         nop\r
447 \r
448         addiu   $22, $0, 0x00\r
449         addiu   $22, $8, -0x28\r
450         beq             $22, $0, .+16\r
451         nop\r
452         b               error_loop\r
453         nop\r
454 \r
455         addiu   $22, $0, 0x00\r
456         addiu   $22, $9, -0x29\r
457         beq             $22, $0, .+16\r
458         nop\r
459         b               error_loop\r
460         nop\r
461 \r
462         addiu   $22, $0, 0x00\r
463         addiu   $22, $10, -0x210\r
464         beq             $22, $0, .+16\r
465         nop\r
466         b               error_loop\r
467         nop\r
468 \r
469         addiu   $22, $0, 0x00\r
470         addiu   $22, $11, -0x211\r
471         beq             $22, $0, .+16\r
472         nop\r
473         b               error_loop\r
474         nop\r
475 \r
476         addiu   $22, $0, 0x00\r
477         addiu   $22, $12, -0x212\r
478         beq             $22, $0, .+16\r
479         nop\r
480         b               error_loop\r
481         nop\r
482 \r
483         addiu   $22, $0, 0x00\r
484         addiu   $22, $13, -0x213\r
485         beq             $22, $0, .+16\r
486         nop\r
487         b               error_loop\r
488         nop\r
489 \r
490         addiu   $22, $0, 0x00\r
491         addiu   $22, $14, -0x214\r
492         beq             $22, $0, .+16\r
493         nop\r
494         b               error_loop\r
495         nop\r
496 \r
497         addiu   $22, $0, 0x00\r
498         addiu   $22, $15, -0x215\r
499         beq             $22, $0, .+16\r
500         nop\r
501         b               error_loop\r
502         nop\r
503 \r
504         addiu   $22, $0, 0x00\r
505         addiu   $22, $16, -0x216\r
506         beq             $22, $0, .+16\r
507         nop\r
508         b               error_loop\r
509         nop\r
510 \r
511         addiu   $22, $0, 0x00\r
512         addiu   $22, $17, -0x217\r
513         beq             $22, $0, .+16\r
514         nop\r
515         b               error_loop\r
516         nop\r
517 \r
518         addiu   $22, $0, 0x00\r
519         addiu   $22, $18, -0x218\r
520         beq             $22, $0, .+16\r
521         nop\r
522         b               error_loop\r
523         nop\r
524 \r
525         addiu   $22, $0, 0x00\r
526         addiu   $22, $19, -0x219\r
527         beq             $22, $0, .+16\r
528         nop\r
529         b               error_loop\r
530         nop\r
531 \r
532         addiu   $22, $0, 0x00\r
533         addiu   $22, $20, -0x220\r
534         beq             $22, $0, .+16\r
535         nop\r
536         b               error_loop\r
537         nop\r
538 \r
539         addiu   $22, $0, 0x00\r
540         addiu   $22, $21, -0x221\r
541         beq             $22, $0, .+16\r
542         nop\r
543         b               error_loop\r
544         nop\r
545 \r
546         addiu   $22, $0, 0x00\r
547         addiu   $22, $23, -0x223\r
548         beq             $22, $0, .+16\r
549         nop\r
550         b               error_loop\r
551         nop\r
552 \r
553         addiu   $22, $0, 0x00\r
554         addiu   $22, $24, -0x224\r
555         beq             $22, $0, .+16\r
556         nop\r
557         b               error_loop\r
558         nop\r
559 \r
560         addiu   $22, $0, 0x00\r
561         addiu   $22, $25, -0x225\r
562         beq             $22, $0, .+16\r
563         nop\r
564         b               error_loop\r
565         nop\r
566 \r
567         addiu   $22, $0, 0x00\r
568         addiu   $22, $30, -0x230\r
569         beq             $22, $0, .+16\r
570         nop\r
571         b               error_loop\r
572         nop\r
573 \r
574         mfhi    $22, $ac1\r
575         addiu   $22, $22, -0x231\r
576         beq             $22, $0, .+16\r
577         nop\r
578         b               error_loop\r
579         nop\r
580 \r
581         mflo    $22, $ac1\r
582         addiu   $22, $22, -0x232\r
583         beq             $22, $0, .+16\r
584         nop\r
585         b               error_loop\r
586         nop\r
587 \r
588         mfhi    $22, $ac2\r
589         addiu   $22, $22, -0x233\r
590         beq             $22, $0, .+16\r
591         nop\r
592         b               error_loop\r
593         nop\r
594 \r
595         mflo    $22, $ac2\r
596         addiu   $22, $22, -0x234\r
597         beq             $22, $0, .+16\r
598         nop\r
599         b               error_loop\r
600         nop\r
601 \r
602         mfhi    $22, $ac3\r
603         addiu   $22, $22, -0x235\r
604         beq             $22, $0, .+16\r
605         nop\r
606         b               error_loop\r
607         nop\r
608 \r
609         mflo    $22, $ac3\r
610         addiu   $22, $22, -0x236\r
611         beq             $22, $0, .+16\r
612         nop\r
613         b               error_loop\r
614         nop\r
615 \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
619         lw              $22, 0( $4 )\r
620         addiu   $22, $22, 0x01\r
621         sw              $22, 0( $4 )\r
622         b               vRegTest2Loop\r
623         nop\r
624 \r
625         .end    vRegTest2\r
626 \r
627 \r
628 \r