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