]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src
Update version number to 9.0.0rc2.
[freertos] / FreeRTOS / Demo / SuperH_SH7216_Renesas / RTOSDemo / regtest.src
1 ;/*\r
2 ;    FreeRTOS V9.0.0rc2 - Copyright (C) 2016 Real Time Engineers Ltd.\r
3 ;       \r
4 ;\r
5 ;    ***************************************************************************\r
6 ;     *                                                                       *\r
7 ;     *    FreeRTOS tutorial books are available in pdf and paperback.        *\r
8 ;     *    Complete, revised, and edited pdf reference manuals are also       *\r
9 ;     *    available.                                                         *\r
10 ;     *                                                                       *\r
11 ;     *    Purchasing FreeRTOS documentation will not only help you, by       *\r
12 ;     *    ensuring you get running as quickly as possible and with an        *\r
13 ;     *    in-depth knowledge of how to use FreeRTOS, it will also help       *\r
14 ;     *    the FreeRTOS project to continue with its mission of providing     *\r
15 ;     *    professional grade, cross platform, de facto standard solutions    *\r
16 ;     *    for microcontrollers - completely free of charge!                  *\r
17 ;     *                                                                       *\r
18 ;     *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *\r
19 ;     *                                                                       *\r
20 ;     *    Thank you for using FreeRTOS, and thank you for your support!      *\r
21 ;     *                                                                       *\r
22 ;    ***************************************************************************\r
23 ;\r
24 ;\r
25 ;    This file is part of the FreeRTOS distribution.\r
26 ;\r
27 ;    FreeRTOS is free software; you can redistribute it and/or modify it under\r
28 ;    the terms of the GNU General Public License (version 2) as published by the\r
29 ;    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
30 ;    >>>NOTE<<< The modification to the GPL is included to allow you to\r
31 ;    distribute a combined work that includes FreeRTOS without being obliged to\r
32 ;    provide the source code for proprietary components outside of the FreeRTOS\r
33 ;    kernel.  FreeRTOS is distributed in the hope that it will be useful, but\r
34 ;    WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
35 ;    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
36 ;    more details. You should have received a copy of the GNU General Public\r
37 ;    License and the FreeRTOS license exception along with FreeRTOS; if not it\r
38 ;    can be viewed here: http://www.freertos.org/a00114.html and also obtained\r
39 ;    by writing to Richard Barry, contact details for whom are available on the\r
40 ;    FreeRTOS WEB site.\r
41 ;\r
42 ;    1 tab == 4 spaces!\r
43 ;\r
44 ;    http://www.FreeRTOS.org - Documentation, latest information, license and\r
45 ;    contact details.\r
46 ;\r
47 ;    http://www.SafeRTOS.com - A version that is certified for use in safety\r
48 ;    critical systems.\r
49 ;\r
50 ;    http://www.OpenRTOS.com - Commercial support, development, porting,\r
51 ;    licensing and training services.\r
52 ;*/\r
53 \r
54         .import _ulRegTest1CycleCount\r
55         .import _ulRegTest2CycleCount\r
56         .import _vPortYield\r
57 \r
58         .export _vRegTest1Task\r
59         .export _vRegTest2Task\r
60 \r
61     .section    P, code, align=4\r
62         \r
63         \r
64         \r
65 _vRegTest1Task:\r
66 \r
67         ; Fill the registers with known values.\r
68         mov             #2, r1\r
69         mov             #3, r2\r
70         mov             #4, r3\r
71         mov             #5, r4\r
72         mov             #6, r5\r
73         mov             #7, r6\r
74         mov             #8, r7\r
75         mov             #9, r8\r
76         mov             #10, r9\r
77         mov             #11, r10\r
78         mov             #12, r11\r
79         mov             #13, r12\r
80         mov             #14, r13\r
81         mov             #15, r14\r
82 \r
83         mov             #16, r0\r
84         lds             r0, macl\r
85         mov             #17, r0\r
86         lds             r0, mach\r
87         mov             #18, r0\r
88         ldc             r0, gbr\r
89 \r
90         ; Also fill the flop registers with known values.\r
91         lds             r1, fpul\r
92         fsts    fpul, fr1\r
93         lds             r2, fpul\r
94         fsts    fpul, fr2\r
95         lds             r3, fpul\r
96         fsts    fpul, fr3\r
97         lds             r4, fpul\r
98         fsts    fpul, fr4\r
99         lds             r5, fpul\r
100         fsts    fpul, fr5\r
101         lds             r6, fpul\r
102         fsts    fpul, fr6\r
103         lds             r7, fpul\r
104         fsts    fpul, fr7\r
105         lds             r8, fpul\r
106         fsts    fpul, fr8\r
107         lds             r9, fpul\r
108         fsts    fpul, fr9\r
109         lds             r10, fpul\r
110         fsts    fpul, fr10\r
111         lds             r11, fpul\r
112         fsts    fpul, fr11\r
113         lds             r12, fpul\r
114         fsts    fpul, fr12\r
115         lds             r13, fpul\r
116         fsts    fpul, fr13\r
117         lds             r14, fpul\r
118         fsts    fpul, fr14\r
119         \r
120 _vRegTest1Loop:\r
121 \r
122         ; Reset r1 which was used in the tests.\r
123         mov             #2, r1\r
124 \r
125         ; Test that the registers still contain the expected values.  If not, jump to\r
126         ; vRegTestError, which will stop this function looping and so cause it to stop\r
127         ; incrementing its loop counter.  Both the standard and flop registers are \r
128         ; checked.      \r
129         mov             #2, r0\r
130         cmp/eq  r0, r1\r
131         bf              _vRegTest1Error\r
132         flds    fr1, fpul\r
133         sts             fpul, r1\r
134         cmp/eq  r0, r1\r
135         bf              _vRegTest1Error\r
136         \r
137         mov             #3, r0\r
138         cmp/eq  r0, r2\r
139         bf              _vRegTest1Error\r
140         flds    fr2, fpul\r
141         sts             fpul, r1\r
142         cmp/eq  r0, r1\r
143         bf              _vRegTest1Error\r
144 \r
145         mov             #4, r0\r
146         cmp/eq  r0, r3\r
147         bf              _vRegTest1Error\r
148         flds    fr3, fpul\r
149         sts             fpul, r1\r
150         cmp/eq  r0, r1\r
151         bf              _vRegTest1Error\r
152 \r
153         mov             #5, r0\r
154         cmp/eq  r0, r4\r
155         bf              _vRegTest1Error\r
156         flds    fr4, fpul\r
157         sts             fpul, r1\r
158         cmp/eq  r0, r1\r
159         bf              _vRegTest1Error\r
160 \r
161         mov             #6, r0\r
162         cmp/eq  r0, r5\r
163         bf              _vRegTest1Error\r
164         flds    fr5, fpul\r
165         sts             fpul, r1\r
166         cmp/eq  r0, r1\r
167         bf              _vRegTest1Error\r
168 \r
169         mov             #7, r0\r
170         cmp/eq  r0, r6\r
171         bf              _vRegTest1Error\r
172         flds    fr6, fpul\r
173         sts             fpul, r1\r
174         cmp/eq  r0, r1\r
175         bf              _vRegTest1Error\r
176 \r
177         mov             #8, r0\r
178         cmp/eq  r0, r7\r
179         bf              _vRegTest1Error\r
180         flds    fr7, fpul\r
181         sts             fpul, r1\r
182         cmp/eq  r0, r1\r
183         bf              _vRegTest1Error\r
184 \r
185         mov             #9, r0\r
186         cmp/eq  r0, r8\r
187         bf              _vRegTest1Error\r
188         flds    fr8, fpul\r
189         sts             fpul, r1\r
190         cmp/eq  r0, r1\r
191         bf              _vRegTest1Error\r
192 \r
193         mov             #10, r0\r
194         cmp/eq  r0, r9\r
195         bf              _vRegTest1Error\r
196         flds    fr9, fpul\r
197         sts             fpul, r1\r
198         cmp/eq  r0, r1\r
199         bf              _vRegTest1Error\r
200 \r
201         mov             #11, r0\r
202         cmp/eq  r0, r10\r
203         bf              _vRegTest1Error\r
204         flds    fr10, fpul\r
205         sts             fpul, r1\r
206         cmp/eq  r0, r1\r
207         bf              _vRegTest1Error\r
208 \r
209         mov             #12, r0\r
210         cmp/eq  r0, r11\r
211         bf              _vRegTest1Error\r
212         flds    fr11, fpul\r
213         sts             fpul, r1\r
214         cmp/eq  r0, r1\r
215         bf              _vRegTest1Error\r
216 \r
217         mov             #13, r0\r
218         cmp/eq  r0, r12\r
219         bf              _vRegTest1Error\r
220         flds    fr12, fpul\r
221         sts             fpul, r1\r
222         cmp/eq  r0, r1\r
223         bf              _vRegTest1Error\r
224 \r
225         mov             #14, r0\r
226         cmp/eq  r0, r13\r
227         bf              _vRegTest1Error\r
228         flds    fr13, fpul\r
229         sts             fpul, r1\r
230         cmp/eq  r0, r1\r
231         bf              _vRegTest1Error\r
232 \r
233         mov             #15, r0\r
234         cmp/eq  r0, r14\r
235         bf              _vRegTest1Error\r
236         flds    fr14, fpul\r
237         sts             fpul, r1\r
238         cmp/eq  r0, r1\r
239         bf              _vRegTest1Error\r
240 \r
241         sts             macl, r0\r
242         mov             #16, r1\r
243         cmp/eq  r0, r1\r
244         bf              _vRegTest1Error\r
245 \r
246         sts             mach, r0\r
247         mov             #17, r1\r
248         cmp/eq  r0, r1\r
249         bf              _vRegTest1Error\r
250 \r
251         stc             gbr, r0\r
252         mov             #18, r1\r
253         cmp/eq  r0, r1\r
254         bf              _vRegTest1Error\r
255 \r
256         ; Increment the loop counter to indicate that this task is still running and\r
257         ; still healthy.\r
258         mov.l   #_ulRegTest1CycleCount, r0\r
259         mov.l   @r0, r1\r
260         add             #1, r1\r
261         mov.l   r1, @r0\r
262 \r
263         ; Jump back to test all the registers again.\r
264         bra             _vRegTest1Loop\r
265         nop\r
266 \r
267 ;-----------------------------------------------------------\r
268 \r
269 _vRegTest1Error:\r
270         bra             _vRegTest1Error \r
271         nop\r
272 \r
273 ;-----------------------------------------------------------\r
274 \r
275 _vRegTest2Task:\r
276 \r
277         ; Fill the standard registers with known values.\r
278         mov             #12, r1\r
279         mov             #13, r2\r
280         mov             #14, r3\r
281         mov             #15, r4\r
282         mov             #16, r5\r
283         mov             #17, r6\r
284         mov             #18, r7\r
285         mov             #19, r8\r
286         mov             #110, r9\r
287         mov             #111, r10\r
288         mov             #112, r11\r
289         mov             #113, r12\r
290         mov             #114, r13\r
291 \r
292         mov             #115, r0\r
293         lds             r0, macl\r
294         mov             #116, r0\r
295         lds             r0, mach\r
296         mov             #117, r0\r
297         ldc             r0, gbr\r
298         \r
299         ; Also fill the flop registers with known values.\r
300         lds             r1, fpul\r
301         fsts    fpul, fr1\r
302         lds             r2, fpul\r
303         fsts    fpul, fr2\r
304         lds             r3, fpul\r
305         fsts    fpul, fr3\r
306         lds             r4, fpul\r
307         fsts    fpul, fr4\r
308         lds             r5, fpul\r
309         fsts    fpul, fr5\r
310         lds             r6, fpul\r
311         fsts    fpul, fr6\r
312         lds             r7, fpul\r
313         fsts    fpul, fr7\r
314         lds             r8, fpul\r
315         fsts    fpul, fr8\r
316         lds             r9, fpul\r
317         fsts    fpul, fr9\r
318         lds             r10, fpul\r
319         fsts    fpul, fr10\r
320         lds             r11, fpul\r
321         fsts    fpul, fr11\r
322         lds             r12, fpul\r
323         fsts    fpul, fr12\r
324         lds             r13, fpul\r
325         fsts    fpul, fr13\r
326         lds             r14, fpul\r
327         fsts    fpul, fr14\r
328 \r
329 _vRegTest2Loop:\r
330 \r
331         ; Reset r1 which was used in the tests.\r
332         mov             #12, r1\r
333 \r
334         ; Test that the registers still contain the expected values.  If not, jump to\r
335         ; vRegTestError, which will stop this function looping and so cause it to stop\r
336         ; incrementing its loop counter.  Both the standard and flop registers are \r
337         ; checked.      \r
338         mov             #12, r0\r
339         cmp/eq  r0, r1\r
340         bf              _vRegTest2Error\r
341         flds    fr1, fpul\r
342         sts             fpul, r1\r
343         cmp/eq  r0, r1\r
344         bf              _vRegTest2Error\r
345         \r
346         mov             #13, r0\r
347         cmp/eq  r0, r2\r
348         bf              _vRegTest2Error\r
349         flds    fr2, fpul\r
350         sts             fpul, r1\r
351         cmp/eq  r0, r1\r
352         bf              _vRegTest2Error\r
353 \r
354         mov             #14, r0\r
355         cmp/eq  r0, r3\r
356         bf              _vRegTest2Error\r
357         flds    fr3, fpul\r
358         sts             fpul, r1\r
359         cmp/eq  r0, r1\r
360         bf              _vRegTest2Error\r
361 \r
362         mov             #15, r0\r
363         cmp/eq  r0, r4\r
364         bf              _vRegTest2Error\r
365         flds    fr4, fpul\r
366         sts             fpul, r1\r
367         cmp/eq  r0, r1\r
368         bf              _vRegTest2Error\r
369 \r
370         mov             #16, r0\r
371         cmp/eq  r0, r5\r
372         bf              _vRegTest2Error\r
373         flds    fr5, fpul\r
374         sts             fpul, r1\r
375         cmp/eq  r0, r1\r
376         bf              _vRegTest2Error\r
377 \r
378         mov             #17, r0\r
379         cmp/eq  r0, r6\r
380         bf              _vRegTest2Error\r
381         flds    fr6, fpul\r
382         sts             fpul, r1\r
383         cmp/eq  r0, r1\r
384         bf              _vRegTest2Error\r
385 \r
386         mov             #18, r0\r
387         cmp/eq  r0, r7\r
388         bf              _vRegTest2Error\r
389         flds    fr7, fpul\r
390         sts             fpul, r1\r
391         cmp/eq  r0, r1\r
392         bf              _vRegTest2Error\r
393 \r
394         mov             #19, r0\r
395         cmp/eq  r0, r8\r
396         bf              _vRegTest2Error\r
397         flds    fr8, fpul\r
398         sts             fpul, r1\r
399         cmp/eq  r0, r1\r
400         bf              _vRegTest2Error\r
401 \r
402         mov             #110, r0\r
403         cmp/eq  r0, r9\r
404         bf              _vRegTest2Error\r
405         flds    fr9, fpul\r
406         sts             fpul, r1\r
407         cmp/eq  r0, r1\r
408         bf              _vRegTest2Error\r
409 \r
410         mov             #111, r0\r
411         cmp/eq  r0, r10\r
412         bf              _vRegTest2Error\r
413         flds    fr10, fpul\r
414         sts             fpul, r1\r
415         cmp/eq  r0, r1\r
416         bf              _vRegTest2Error\r
417 \r
418         mov             #112, r0\r
419         cmp/eq  r0, r11\r
420         bf              _vRegTest2Error\r
421         flds    fr11, fpul\r
422         sts             fpul, r1\r
423         cmp/eq  r0, r1\r
424         bf              _vRegTest2Error\r
425 \r
426         mov             #113, r0\r
427         cmp/eq  r0, r12\r
428         bf              _vRegTest2Error\r
429         flds    fr12, fpul\r
430         sts             fpul, r1\r
431         cmp/eq  r0, r1\r
432         bf              _vRegTest2Error\r
433 \r
434         mov             #114, r0\r
435         cmp/eq  r0, r13\r
436         bf              _vRegTest2Error\r
437         flds    fr13, fpul\r
438         sts             fpul, r1\r
439         cmp/eq  r0, r1\r
440         bf              _vRegTest2Error\r
441 \r
442         sts             macl, r0\r
443         mov             #115, r1\r
444         cmp/eq  r0, r1\r
445         bf              _vRegTest2Error\r
446 \r
447         sts             mach, r0\r
448         mov             #116, r1\r
449         cmp/eq  r0, r1\r
450         bf              _vRegTest2Error\r
451 \r
452         stc             gbr, r0\r
453         mov             #117, r1\r
454         cmp/eq  r0, r1\r
455         bf              _vRegTest2Error\r
456 \r
457         ; Increment the loop counter to indicate that this task is still running and\r
458         ; still healthy.\r
459         mov.l   #_ulRegTest2CycleCount, r0\r
460         mov.l   @r0, r1\r
461         add             #1, r1\r
462         mov.l   r1, @r0\r
463 \r
464         ; Jump back to test all the registers again.\r
465         bra             _vRegTest2Loop\r
466         nop\r
467 \r
468 ;-----------------------------------------------------------\r
469 \r
470 _vRegTest2Error:\r
471 \r
472         bra             _vRegTest2Error\r
473         nop     \r
474 \r
475 \r
476         .end\r
477                 \r