]> git.sur5r.net Git - freertos/blob - Demo/MSP430X_MSP430F5438_IAR/RegTest.s43
Renamed the CORTEX_M4_ATSAM4S_AVR_Studio directory to the correct CORTEX_M4_ATSAM4S_A...
[freertos] / Demo / MSP430X_MSP430F5438_IAR / RegTest.s43
1 /*\r
2     FreeRTOS V7.1.1 - Copyright (C) 2012 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     ***************************************************************************\r
45      *                                                                       *\r
46      *    Having a problem?  Start by reading the FAQ "My application does   *\r
47      *    not run, what could be wrong?                                      *\r
48      *                                                                       *\r
49      *    http://www.FreeRTOS.org/FAQHelp.html                               *\r
50      *                                                                       *\r
51     ***************************************************************************\r
52 \r
53     \r
54     http://www.FreeRTOS.org - Documentation, training, latest information, \r
55     license and contact details.\r
56     \r
57     http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
58     including FreeRTOS+Trace - an indispensable productivity tool.\r
59 \r
60     Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell \r
61     the code with commercial support, indemnification, and middleware, under \r
62     the OpenRTOS brand: http://www.OpenRTOS.com.  High Integrity Systems also\r
63     provide a safety engineered and independently SIL3 certified version under \r
64     the SafeRTOS brand: http://www.SafeRTOS.com.\r
65 */\r
66 #include "msp430.h"\r
67 #include "FreeRTOSConfig.h"\r
68 #include "data_model.h"\r
69 \r
70 /*\r
71  * The definition of the "register test" tasks, as described at the top of\r
72  * main.c\r
73  */\r
74 \r
75 \r
76 \r
77         IMPORT usRegTest1Counter\r
78         IMPORT usRegTest2Counter\r
79         IMPORT vPortYield\r
80         \r
81         EXPORT vRegTest1Task\r
82         EXPORT vRegTest2Task\r
83 \r
84         RSEG CODE\r
85         \r
86         EVEN\r
87 \r
88 vRegTest1Task:\r
89 \r
90         /* Fill each general purpose register with a known value. */\r
91         mov_x   #0x4444, r4\r
92         mov_x   #0x5555, r5\r
93         mov_x   #0x6666, r6\r
94         mov_x   #0x7777, r7\r
95         mov_x   #0x8888, r8\r
96         mov_x   #0x9999, r9\r
97         mov_x   #0xaaaa, r10\r
98         mov_x   #0xbbbb, r11\r
99         mov_x   #0xcccc, r12\r
100         mov_x   #0xdddd, r13\r
101         mov_x   #0xeeee, r14\r
102         mov_x   #0xffff, r15\r
103         \r
104 prvRegTest1Loop:\r
105 \r
106         /* Test each general purpose register to check that it still contains the\r
107         expected known value, jumping to vRegTest1Error if any register contains\r
108         an unexpected value. */\r
109         cmp_x   #0x4444, r4\r
110         jne             vRegTest1Error\r
111         cmp_x   #0x5555, r5\r
112         jne             vRegTest1Error\r
113         cmp_x   #0x6666, r6\r
114         jne             vRegTest1Error\r
115         cmp_x   #0x7777, r7\r
116         jne             vRegTest1Error\r
117         cmp_x   #0x8888, r8\r
118         jne             vRegTest1Error\r
119         cmp_x   #0x9999, r9\r
120         jne             vRegTest1Error\r
121         cmp_x   #0xaaaa, r10\r
122         jne             vRegTest1Error\r
123         cmp_x   #0xbbbb, r11\r
124         jne             vRegTest1Error\r
125         cmp_x   #0xcccc, r12\r
126         jne             vRegTest1Error\r
127         cmp_x   #0xdddd, r13\r
128         jne             vRegTest1Error\r
129         cmp_x   #0xeeee, r14\r
130         jne             vRegTest1Error\r
131         cmp_x   #0xffff, r15\r
132         jne             vRegTest1Error\r
133         \r
134         /* This task is still running without jumping to vRegTest1Error, so increment\r
135         the loop counter so the check task knows the task is running error free. */\r
136         incx.w  &usRegTest1Counter\r
137         \r
138         /* Loop again, performing the same tests. */\r
139         jmp             prvRegTest1Loop\r
140         nop\r
141 \r
142         \r
143         EVEN\r
144         \r
145 vRegTest1Error:\r
146         jmp vRegTest1Error\r
147         nop\r
148         \r
149 /*-----------------------------------------------------------*/\r
150 \r
151 /* See the comments in vRegTest1Task.  This task is the same, it just uses\r
152 different values in its registers. */\r
153 vRegTest2Task:\r
154 \r
155         mov_x   #0x4441, r4\r
156         mov_x   #0x5551, r5\r
157         mov_x   #0x6661, r6\r
158         mov_x   #0x7771, r7\r
159         mov_x   #0x8881, r8\r
160         mov_x   #0x9991, r9\r
161         mov_x   #0xaaa1, r10\r
162         mov_x   #0xbbb1, r11\r
163         mov_x   #0xccc1, r12\r
164         mov_x   #0xddd1, r13\r
165         mov_x   #0xeee1, r14\r
166         mov_x   #0xfff1, r15\r
167         \r
168 prvRegTest2Loop:\r
169 \r
170         cmp_x   #0x4441, r4\r
171         jne             vRegTest2Error\r
172         cmp_x   #0x5551, r5\r
173         jne             vRegTest2Error\r
174         cmp_x   #0x6661, r6\r
175         jne             vRegTest2Error\r
176         cmp_x   #0x7771, r7\r
177         jne             vRegTest2Error\r
178         cmp_x   #0x8881, r8\r
179         jne             vRegTest2Error\r
180         cmp_x   #0x9991, r9\r
181         jne             vRegTest2Error\r
182         cmp_x   #0xaaa1, r10\r
183         jne             vRegTest2Error\r
184         cmp_x   #0xbbb1, r11\r
185         jne             vRegTest2Error\r
186         cmp_x   #0xccc1, r12\r
187         jne             vRegTest2Error\r
188         cmp_x   #0xddd1, r13\r
189         jne             vRegTest2Error\r
190         cmp_x   #0xeee1, r14\r
191         jne             vRegTest2Error\r
192         cmp_x   #0xfff1, r15\r
193         jne             vRegTest2Error\r
194         \r
195         /* Also perform a manual yield, just to increase the scope of the test. */\r
196         calla   #vPortYield\r
197         \r
198         incx.w  &usRegTest2Counter\r
199         jmp             prvRegTest2Loop\r
200         nop\r
201 \r
202         \r
203 vRegTest2Error:\r
204         jmp vRegTest2Error\r
205         nop\r
206 /*-----------------------------------------------------------*/\r
207 \r
208                 \r
209         END\r
210                 \r