]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/RX100-RSK_IAR/reg_test.s
Update version numbers to V7.4.1.
[freertos] / FreeRTOS / Demo / RX100-RSK_IAR / reg_test.s
1 /*\r
2     FreeRTOS V7.4.1 - Copyright (C) 2013 Real Time Engineers Ltd.\r
3 \r
4     FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME.  PLEASE VISIT\r
5     http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
6 \r
7     ***************************************************************************\r
8      *                                                                       *\r
9      *    FreeRTOS tutorial books are available in pdf and paperback.        *\r
10      *    Complete, revised, and edited pdf reference manuals are also       *\r
11      *    available.                                                         *\r
12      *                                                                       *\r
13      *    Purchasing FreeRTOS documentation will not only help you, by       *\r
14      *    ensuring you get running as quickly as possible and with an        *\r
15      *    in-depth knowledge of how to use FreeRTOS, it will also help       *\r
16      *    the FreeRTOS project to continue with its mission of providing     *\r
17      *    professional grade, cross platform, de facto standard solutions    *\r
18      *    for microcontrollers - completely free of charge!                  *\r
19      *                                                                       *\r
20      *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *\r
21      *                                                                       *\r
22      *    Thank you for using FreeRTOS, and thank you for your support!      *\r
23      *                                                                       *\r
24     ***************************************************************************\r
25 \r
26 \r
27     This file is part of the FreeRTOS distribution.\r
28 \r
29     FreeRTOS is free software; you can redistribute it and/or modify it under\r
30     the terms of the GNU General Public License (version 2) as published by the\r
31     Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
32 \r
33     >>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to\r
34     distribute a combined work that includes FreeRTOS without being obliged to\r
35     provide the source code for proprietary components outside of the FreeRTOS\r
36     kernel.\r
37 \r
38     FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
39     WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
40     FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\r
41     details. You should have received a copy of the GNU General Public License\r
42     and the FreeRTOS license exception along with FreeRTOS; if not it can be\r
43     viewed here: http://www.freertos.org/a00114.html and also obtained by\r
44     writing to Real Time Engineers Ltd., contact details for whom are available\r
45     on the FreeRTOS WEB site.\r
46 \r
47     1 tab == 4 spaces!\r
48 \r
49     ***************************************************************************\r
50      *                                                                       *\r
51      *    Having a problem?  Start by reading the FAQ "My application does   *\r
52      *    not run, what could be wrong?"                                     *\r
53      *                                                                       *\r
54      *    http://www.FreeRTOS.org/FAQHelp.html                               *\r
55      *                                                                       *\r
56     ***************************************************************************\r
57 \r
58 \r
59     http://www.FreeRTOS.org - Documentation, books, training, latest versions,\r
60     license and Real Time Engineers Ltd. contact details.\r
61 \r
62     http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
63     including FreeRTOS+Trace - an indispensable productivity tool, and our new\r
64     fully thread aware and reentrant UDP/IP stack.\r
65 \r
66     http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High\r
67     Integrity Systems, who sell the code with commercial support,\r
68     indemnification and middleware, under the OpenRTOS brand.\r
69 \r
70     http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
71     engineered and independently SIL3 certified version for use in safety and\r
72     mission critical applications that require provable dependability.\r
73 */\r
74 \r
75         PUBLIC _vRegTest1Implementation\r
76         PUBLIC _vRegTest2Implementation\r
77 \r
78         EXTERN _ulRegTest1CycleCount\r
79         EXTERN _ulRegTest2CycleCount\r
80 \r
81         RSEG CODE:CODE(4)\r
82 \r
83 _vRegTest1Implementation:\r
84 \r
85                 /* Set each register to a known value. */\r
86                 MOV.L   #0x33333333, R15\r
87                 MVTACHI R15\r
88                 MOV.L   #0x44444444, R15\r
89                 MVTACLO R15\r
90                 MOV.L   #1, R1\r
91                 MOV.L   #2, R2\r
92                 MOV.L   #3, R3\r
93                 MOV.L   #4, R4\r
94                 MOV.L   #5, R5\r
95                 MOV.L   #6, R6\r
96                 MOV.L   #7, R7\r
97                 MOV.L   #8, R8\r
98                 MOV.L   #9, R9\r
99                 MOV.L   #10, R10\r
100                 MOV.L   #11, R11\r
101                 MOV.L   #12, R12\r
102                 MOV.L   #13, R13\r
103                 MOV.L   #14, R14\r
104                 MOV.L   #15, R15\r
105 \r
106         /* Loop, checking each iteration that each register still contains the\r
107         expected value. */\r
108         TestLoop1:\r
109 \r
110                 /* Push the registers that are going to get clobbered. */\r
111                 PUSHM   R14-R15\r
112 \r
113                 /* Increment the loop counter to show this task is still getting CPU\r
114                 time. */\r
115                 MOV.L   #_ulRegTest1CycleCount, R14\r
116                 MOV.L   [ R14 ], R15\r
117                 ADD             #1, R15\r
118                 MOV.L   R15, [ R14 ]\r
119 \r
120                 /* Yield to extend the text coverage.  Set the bit in the ITU SWINTR\r
121                 register. */\r
122                 MOV.L   #1, R14\r
123                 MOV.L   #0872E0H, R15\r
124                 MOV.B   R14, [R15]\r
125                 NOP\r
126                 NOP\r
127 \r
128                 /* Check the accumulator value. */\r
129                 MVFACHI R15\r
130                 CMP             #0x33333333, R15\r
131                 BNE             RegTest2Error\r
132                 MVFACMI R15\r
133                 CMP             #0x33334444, R15\r
134                 BNE             RegTest2Error\r
135 \r
136                 /* Restore the clobbered registers. */\r
137                 POPM    R14-R15\r
138 \r
139                 /* Now compare each register to ensure it still contains the value that\r
140                 was set before this loop was entered. */\r
141                 CMP             #1, R1\r
142                 BNE             RegTest1Error\r
143                 CMP             #2, R2\r
144                 BNE             RegTest1Error\r
145                 CMP             #3, R3\r
146                 BNE             RegTest1Error\r
147                 CMP             #4, R4\r
148                 BNE             RegTest1Error\r
149                 CMP             #5, R5\r
150                 BNE             RegTest1Error\r
151                 CMP             #6, R6\r
152                 BNE             RegTest1Error\r
153                 CMP             #7, R7\r
154                 BNE             RegTest1Error\r
155                 CMP             #8, R8\r
156                 BNE             RegTest1Error\r
157                 CMP             #9, R9\r
158                 BNE             RegTest1Error\r
159                 CMP             #10, R10\r
160                 BNE             RegTest1Error\r
161                 CMP             #11, R11\r
162                 BNE             RegTest1Error\r
163                 CMP             #12, R12\r
164                 BNE             RegTest1Error\r
165                 CMP             #13, R13\r
166                 BNE             RegTest1Error\r
167                 CMP             #14, R14\r
168                 BNE             RegTest1Error\r
169                 CMP             #15, R15\r
170                 BNE             RegTest1Error\r
171 \r
172                 /* All comparisons passed, start a new iteration of this loop. */\r
173                 BRA             TestLoop1\r
174 \r
175         /* A compare failed, just loop here so the loop counter stops\r
176         incrementing causing the check timer to indicate the error. */\r
177         RegTest1Error:\r
178                 BRA RegTest1Error\r
179 \r
180 /*-----------------------------------------------------------*/\r
181 \r
182 _vRegTest2Implementation:\r
183 \r
184                 /* Set each register to a known value. */\r
185                 MOV.L   #0x11111111, R15\r
186                 MVTACHI R15\r
187                 MOV.L   #0x22222222, R15\r
188                 MVTACLO R15\r
189                 MOV.L   #100, R1\r
190                 MOV.L   #200, R2\r
191                 MOV.L   #300, R3\r
192                 MOV.L   #400, R4\r
193                 MOV.L   #500, R5\r
194                 MOV.L   #600, R6\r
195                 MOV.L   #700, R7\r
196                 MOV.L   #800, R8\r
197                 MOV.L   #900, R9\r
198                 MOV.L   #1000, R10\r
199                 MOV.L   #1001, R11\r
200                 MOV.L   #1002, R12\r
201                 MOV.L   #1003, R13\r
202                 MOV.L   #1004, R14\r
203                 MOV.L   #1005, R15\r
204 \r
205         /* Loop, checking each iteration that each register still contains the\r
206         expected value. */\r
207         TestLoop2:\r
208 \r
209                 /* Push the registers that are going to get clobbered. */\r
210                 PUSHM   R14-R15\r
211 \r
212                 /* Increment the loop counter to show this task is still getting CPU\r
213                 time. */\r
214                 MOV.L   #_ulRegTest2CycleCount, R14\r
215                 MOV.L   [ R14 ], R15\r
216                 ADD             #1, R15\r
217                 MOV.L   R15, [ R14 ]\r
218 \r
219                 /* Check the accumulator value. */\r
220                 MVFACHI R15\r
221                 CMP             #0x11111111, R15\r
222                 BNE             RegTest2Error\r
223                 MVFACMI R15\r
224                 CMP             #0x11112222, R15\r
225                 BNE             RegTest2Error\r
226 \r
227                 /* Restore the clobbered registers. */\r
228                 POPM    R14-R15\r
229 \r
230                 /* Now compare each register to ensure it still contains the value that\r
231                 was set before this loop was entered. */\r
232                 CMP             #100, R1\r
233                 BNE             RegTest2Error\r
234                 CMP             #200, R2\r
235                 BNE             RegTest2Error\r
236                 CMP             #300, R3\r
237                 BNE             RegTest2Error\r
238                 CMP             #400, R4\r
239                 BNE             RegTest2Error\r
240                 CMP             #500, R5\r
241                 BNE             RegTest2Error\r
242                 CMP             #600, R6\r
243                 BNE             RegTest2Error\r
244                 CMP             #700, R7\r
245                 BNE             RegTest2Error\r
246                 CMP             #800, R8\r
247                 BNE             RegTest2Error\r
248                 CMP             #900, R9\r
249                 BNE             RegTest2Error\r
250                 CMP             #1000, R10\r
251                 BNE             RegTest2Error\r
252                 CMP             #1001, R11\r
253                 BNE             RegTest2Error\r
254                 CMP             #1002, R12\r
255                 BNE             RegTest2Error\r
256                 CMP             #1003, R13\r
257                 BNE             RegTest2Error\r
258                 CMP             #1004, R14\r
259                 BNE             RegTest2Error\r
260                 CMP             #1005, R15\r
261                 BNE             RegTest2Error\r
262 \r
263                 /* All comparisons passed, start a new iteration of this loop. */\r
264                 BRA             TestLoop2\r
265 \r
266         /* A compare failed, just loop here so the loop counter stops\r
267         incrementing causing the check timer to indicate the error. */\r
268         RegTest2Error:\r
269                 BRA RegTest2Error\r
270 \r
271 /*-----------------------------------------------------------*/\r
272 \r
273                 END\r
274 \r