]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src
90a23d31c3f72f1168fb3421c61095e57de02787
[freertos] / FreeRTOS / Demo / SuperH_SH7216_Renesas / RTOSDemo / regtest.src
1 ;/*\r
2 ; * FreeRTOS Kernel V10.0.0\r
3 ; * Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
4 ; *\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
11 ; *\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
15 ; *\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
22 ; *\r
23 ; * http://www.FreeRTOS.org\r
24 ; * http://aws.amazon.com/freertos\r
25 ; *\r
26 ; * 1 tab == 4 spaces!\r
27 ; */\r
28 \r
29         .import _ulRegTest1CycleCount\r
30         .import _ulRegTest2CycleCount\r
31         .import _vPortYield\r
32 \r
33         .export _vRegTest1Task\r
34         .export _vRegTest2Task\r
35 \r
36     .section    P, code, align=4\r
37         \r
38         \r
39         \r
40 _vRegTest1Task:\r
41 \r
42         ; Fill the registers with known values.\r
43         mov             #2, r1\r
44         mov             #3, r2\r
45         mov             #4, r3\r
46         mov             #5, r4\r
47         mov             #6, r5\r
48         mov             #7, r6\r
49         mov             #8, r7\r
50         mov             #9, r8\r
51         mov             #10, r9\r
52         mov             #11, r10\r
53         mov             #12, r11\r
54         mov             #13, r12\r
55         mov             #14, r13\r
56         mov             #15, r14\r
57 \r
58         mov             #16, r0\r
59         lds             r0, macl\r
60         mov             #17, r0\r
61         lds             r0, mach\r
62         mov             #18, r0\r
63         ldc             r0, gbr\r
64 \r
65         ; Also fill the flop registers with known values.\r
66         lds             r1, fpul\r
67         fsts    fpul, fr1\r
68         lds             r2, fpul\r
69         fsts    fpul, fr2\r
70         lds             r3, fpul\r
71         fsts    fpul, fr3\r
72         lds             r4, fpul\r
73         fsts    fpul, fr4\r
74         lds             r5, fpul\r
75         fsts    fpul, fr5\r
76         lds             r6, fpul\r
77         fsts    fpul, fr6\r
78         lds             r7, fpul\r
79         fsts    fpul, fr7\r
80         lds             r8, fpul\r
81         fsts    fpul, fr8\r
82         lds             r9, fpul\r
83         fsts    fpul, fr9\r
84         lds             r10, fpul\r
85         fsts    fpul, fr10\r
86         lds             r11, fpul\r
87         fsts    fpul, fr11\r
88         lds             r12, fpul\r
89         fsts    fpul, fr12\r
90         lds             r13, fpul\r
91         fsts    fpul, fr13\r
92         lds             r14, fpul\r
93         fsts    fpul, fr14\r
94         \r
95 _vRegTest1Loop:\r
96 \r
97         ; Reset r1 which was used in the tests.\r
98         mov             #2, r1\r
99 \r
100         ; Test that the registers still contain the expected values.  If not, jump to\r
101         ; vRegTestError, which will stop this function looping and so cause it to stop\r
102         ; incrementing its loop counter.  Both the standard and flop registers are \r
103         ; checked.      \r
104         mov             #2, r0\r
105         cmp/eq  r0, r1\r
106         bf              _vRegTest1Error\r
107         flds    fr1, fpul\r
108         sts             fpul, r1\r
109         cmp/eq  r0, r1\r
110         bf              _vRegTest1Error\r
111         \r
112         mov             #3, r0\r
113         cmp/eq  r0, r2\r
114         bf              _vRegTest1Error\r
115         flds    fr2, fpul\r
116         sts             fpul, r1\r
117         cmp/eq  r0, r1\r
118         bf              _vRegTest1Error\r
119 \r
120         mov             #4, r0\r
121         cmp/eq  r0, r3\r
122         bf              _vRegTest1Error\r
123         flds    fr3, fpul\r
124         sts             fpul, r1\r
125         cmp/eq  r0, r1\r
126         bf              _vRegTest1Error\r
127 \r
128         mov             #5, r0\r
129         cmp/eq  r0, r4\r
130         bf              _vRegTest1Error\r
131         flds    fr4, fpul\r
132         sts             fpul, r1\r
133         cmp/eq  r0, r1\r
134         bf              _vRegTest1Error\r
135 \r
136         mov             #6, r0\r
137         cmp/eq  r0, r5\r
138         bf              _vRegTest1Error\r
139         flds    fr5, fpul\r
140         sts             fpul, r1\r
141         cmp/eq  r0, r1\r
142         bf              _vRegTest1Error\r
143 \r
144         mov             #7, r0\r
145         cmp/eq  r0, r6\r
146         bf              _vRegTest1Error\r
147         flds    fr6, fpul\r
148         sts             fpul, r1\r
149         cmp/eq  r0, r1\r
150         bf              _vRegTest1Error\r
151 \r
152         mov             #8, r0\r
153         cmp/eq  r0, r7\r
154         bf              _vRegTest1Error\r
155         flds    fr7, fpul\r
156         sts             fpul, r1\r
157         cmp/eq  r0, r1\r
158         bf              _vRegTest1Error\r
159 \r
160         mov             #9, r0\r
161         cmp/eq  r0, r8\r
162         bf              _vRegTest1Error\r
163         flds    fr8, fpul\r
164         sts             fpul, r1\r
165         cmp/eq  r0, r1\r
166         bf              _vRegTest1Error\r
167 \r
168         mov             #10, r0\r
169         cmp/eq  r0, r9\r
170         bf              _vRegTest1Error\r
171         flds    fr9, fpul\r
172         sts             fpul, r1\r
173         cmp/eq  r0, r1\r
174         bf              _vRegTest1Error\r
175 \r
176         mov             #11, r0\r
177         cmp/eq  r0, r10\r
178         bf              _vRegTest1Error\r
179         flds    fr10, fpul\r
180         sts             fpul, r1\r
181         cmp/eq  r0, r1\r
182         bf              _vRegTest1Error\r
183 \r
184         mov             #12, r0\r
185         cmp/eq  r0, r11\r
186         bf              _vRegTest1Error\r
187         flds    fr11, fpul\r
188         sts             fpul, r1\r
189         cmp/eq  r0, r1\r
190         bf              _vRegTest1Error\r
191 \r
192         mov             #13, r0\r
193         cmp/eq  r0, r12\r
194         bf              _vRegTest1Error\r
195         flds    fr12, fpul\r
196         sts             fpul, r1\r
197         cmp/eq  r0, r1\r
198         bf              _vRegTest1Error\r
199 \r
200         mov             #14, r0\r
201         cmp/eq  r0, r13\r
202         bf              _vRegTest1Error\r
203         flds    fr13, fpul\r
204         sts             fpul, r1\r
205         cmp/eq  r0, r1\r
206         bf              _vRegTest1Error\r
207 \r
208         mov             #15, r0\r
209         cmp/eq  r0, r14\r
210         bf              _vRegTest1Error\r
211         flds    fr14, fpul\r
212         sts             fpul, r1\r
213         cmp/eq  r0, r1\r
214         bf              _vRegTest1Error\r
215 \r
216         sts             macl, r0\r
217         mov             #16, r1\r
218         cmp/eq  r0, r1\r
219         bf              _vRegTest1Error\r
220 \r
221         sts             mach, r0\r
222         mov             #17, r1\r
223         cmp/eq  r0, r1\r
224         bf              _vRegTest1Error\r
225 \r
226         stc             gbr, r0\r
227         mov             #18, r1\r
228         cmp/eq  r0, r1\r
229         bf              _vRegTest1Error\r
230 \r
231         ; Increment the loop counter to indicate that this task is still running and\r
232         ; still healthy.\r
233         mov.l   #_ulRegTest1CycleCount, r0\r
234         mov.l   @r0, r1\r
235         add             #1, r1\r
236         mov.l   r1, @r0\r
237 \r
238         ; Jump back to test all the registers again.\r
239         bra             _vRegTest1Loop\r
240         nop\r
241 \r
242 ;-----------------------------------------------------------\r
243 \r
244 _vRegTest1Error:\r
245         bra             _vRegTest1Error \r
246         nop\r
247 \r
248 ;-----------------------------------------------------------\r
249 \r
250 _vRegTest2Task:\r
251 \r
252         ; Fill the standard registers with known values.\r
253         mov             #12, r1\r
254         mov             #13, r2\r
255         mov             #14, r3\r
256         mov             #15, r4\r
257         mov             #16, r5\r
258         mov             #17, r6\r
259         mov             #18, r7\r
260         mov             #19, r8\r
261         mov             #110, r9\r
262         mov             #111, r10\r
263         mov             #112, r11\r
264         mov             #113, r12\r
265         mov             #114, r13\r
266 \r
267         mov             #115, r0\r
268         lds             r0, macl\r
269         mov             #116, r0\r
270         lds             r0, mach\r
271         mov             #117, r0\r
272         ldc             r0, gbr\r
273         \r
274         ; Also fill the flop registers with known values.\r
275         lds             r1, fpul\r
276         fsts    fpul, fr1\r
277         lds             r2, fpul\r
278         fsts    fpul, fr2\r
279         lds             r3, fpul\r
280         fsts    fpul, fr3\r
281         lds             r4, fpul\r
282         fsts    fpul, fr4\r
283         lds             r5, fpul\r
284         fsts    fpul, fr5\r
285         lds             r6, fpul\r
286         fsts    fpul, fr6\r
287         lds             r7, fpul\r
288         fsts    fpul, fr7\r
289         lds             r8, fpul\r
290         fsts    fpul, fr8\r
291         lds             r9, fpul\r
292         fsts    fpul, fr9\r
293         lds             r10, fpul\r
294         fsts    fpul, fr10\r
295         lds             r11, fpul\r
296         fsts    fpul, fr11\r
297         lds             r12, fpul\r
298         fsts    fpul, fr12\r
299         lds             r13, fpul\r
300         fsts    fpul, fr13\r
301         lds             r14, fpul\r
302         fsts    fpul, fr14\r
303 \r
304 _vRegTest2Loop:\r
305 \r
306         ; Reset r1 which was used in the tests.\r
307         mov             #12, r1\r
308 \r
309         ; Test that the registers still contain the expected values.  If not, jump to\r
310         ; vRegTestError, which will stop this function looping and so cause it to stop\r
311         ; incrementing its loop counter.  Both the standard and flop registers are \r
312         ; checked.      \r
313         mov             #12, r0\r
314         cmp/eq  r0, r1\r
315         bf              _vRegTest2Error\r
316         flds    fr1, fpul\r
317         sts             fpul, r1\r
318         cmp/eq  r0, r1\r
319         bf              _vRegTest2Error\r
320         \r
321         mov             #13, r0\r
322         cmp/eq  r0, r2\r
323         bf              _vRegTest2Error\r
324         flds    fr2, fpul\r
325         sts             fpul, r1\r
326         cmp/eq  r0, r1\r
327         bf              _vRegTest2Error\r
328 \r
329         mov             #14, r0\r
330         cmp/eq  r0, r3\r
331         bf              _vRegTest2Error\r
332         flds    fr3, fpul\r
333         sts             fpul, r1\r
334         cmp/eq  r0, r1\r
335         bf              _vRegTest2Error\r
336 \r
337         mov             #15, r0\r
338         cmp/eq  r0, r4\r
339         bf              _vRegTest2Error\r
340         flds    fr4, fpul\r
341         sts             fpul, r1\r
342         cmp/eq  r0, r1\r
343         bf              _vRegTest2Error\r
344 \r
345         mov             #16, r0\r
346         cmp/eq  r0, r5\r
347         bf              _vRegTest2Error\r
348         flds    fr5, fpul\r
349         sts             fpul, r1\r
350         cmp/eq  r0, r1\r
351         bf              _vRegTest2Error\r
352 \r
353         mov             #17, r0\r
354         cmp/eq  r0, r6\r
355         bf              _vRegTest2Error\r
356         flds    fr6, fpul\r
357         sts             fpul, r1\r
358         cmp/eq  r0, r1\r
359         bf              _vRegTest2Error\r
360 \r
361         mov             #18, r0\r
362         cmp/eq  r0, r7\r
363         bf              _vRegTest2Error\r
364         flds    fr7, fpul\r
365         sts             fpul, r1\r
366         cmp/eq  r0, r1\r
367         bf              _vRegTest2Error\r
368 \r
369         mov             #19, r0\r
370         cmp/eq  r0, r8\r
371         bf              _vRegTest2Error\r
372         flds    fr8, fpul\r
373         sts             fpul, r1\r
374         cmp/eq  r0, r1\r
375         bf              _vRegTest2Error\r
376 \r
377         mov             #110, r0\r
378         cmp/eq  r0, r9\r
379         bf              _vRegTest2Error\r
380         flds    fr9, fpul\r
381         sts             fpul, r1\r
382         cmp/eq  r0, r1\r
383         bf              _vRegTest2Error\r
384 \r
385         mov             #111, r0\r
386         cmp/eq  r0, r10\r
387         bf              _vRegTest2Error\r
388         flds    fr10, fpul\r
389         sts             fpul, r1\r
390         cmp/eq  r0, r1\r
391         bf              _vRegTest2Error\r
392 \r
393         mov             #112, r0\r
394         cmp/eq  r0, r11\r
395         bf              _vRegTest2Error\r
396         flds    fr11, fpul\r
397         sts             fpul, r1\r
398         cmp/eq  r0, r1\r
399         bf              _vRegTest2Error\r
400 \r
401         mov             #113, r0\r
402         cmp/eq  r0, r12\r
403         bf              _vRegTest2Error\r
404         flds    fr12, fpul\r
405         sts             fpul, r1\r
406         cmp/eq  r0, r1\r
407         bf              _vRegTest2Error\r
408 \r
409         mov             #114, r0\r
410         cmp/eq  r0, r13\r
411         bf              _vRegTest2Error\r
412         flds    fr13, fpul\r
413         sts             fpul, r1\r
414         cmp/eq  r0, r1\r
415         bf              _vRegTest2Error\r
416 \r
417         sts             macl, r0\r
418         mov             #115, r1\r
419         cmp/eq  r0, r1\r
420         bf              _vRegTest2Error\r
421 \r
422         sts             mach, r0\r
423         mov             #116, r1\r
424         cmp/eq  r0, r1\r
425         bf              _vRegTest2Error\r
426 \r
427         stc             gbr, r0\r
428         mov             #117, r1\r
429         cmp/eq  r0, r1\r
430         bf              _vRegTest2Error\r
431 \r
432         ; Increment the loop counter to indicate that this task is still running and\r
433         ; still healthy.\r
434         mov.l   #_ulRegTest2CycleCount, r0\r
435         mov.l   @r0, r1\r
436         add             #1, r1\r
437         mov.l   r1, @r0\r
438 \r
439         ; Jump back to test all the registers again.\r
440         bra             _vRegTest2Loop\r
441         nop\r
442 \r
443 ;-----------------------------------------------------------\r
444 \r
445 _vRegTest2Error:\r
446 \r
447         bra             _vRegTest2Error\r
448         nop     \r
449 \r
450 \r
451         .end\r
452                 \r