1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
|
;/*
; FreeRTOS V8.0.0 - Copyright (C) 2014 Real Time Engineers Ltd.
;
;
; ***************************************************************************
; * *
; * FreeRTOS tutorial books are available in pdf and paperback. *
; * Complete, revised, and edited pdf reference manuals are also *
; * available. *
; * *
; * Purchasing FreeRTOS documentation will not only help you, by *
; * ensuring you get running as quickly as possible and with an *
; * in-depth knowledge of how to use FreeRTOS, it will also help *
; * the FreeRTOS project to continue with its mission of providing *
; * professional grade, cross platform, de facto standard solutions *
; * for microcontrollers - completely free of charge! *
; * *
; * >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
; * *
; * Thank you for using FreeRTOS, and thank you for your support! *
; * *
; ***************************************************************************
;
;
; This file is part of the FreeRTOS distribution.
;
; FreeRTOS is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License (version 2) as published by the
; Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
; >>>NOTE<<< The modification to the GPL is included to allow you to
; distribute a combined work that includes FreeRTOS without being obliged to
; provide the source code for proprietary components outside of the FreeRTOS
; kernel. FreeRTOS is distributed in the hope that it will be useful, but
; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
; more details. You should have received a copy of the GNU General Public
; License and the FreeRTOS license exception along with FreeRTOS; if not it
; can be viewed here: http://www.freertos.org/a00114.html and also obtained
; by writing to Richard Barry, contact details for whom are available on the
; FreeRTOS WEB site.
;
; 1 tab == 4 spaces!
;
; http://www.FreeRTOS.org - Documentation, latest information, license and
; contact details.
;
; http://www.SafeRTOS.com - A version that is certified for use in safety
; critical systems.
;
; http://www.OpenRTOS.com - Commercial support, development, porting,
; licensing and training services.
;*/
; Note: Select the correct include files for the device used by the application.
EXTERN vRegTestFailed
;
; The RegTest tasks as described in the comments at the top of main().
;
;------------------------------------------------------------------------------
; Functions implemented in this file
;------------------------------------------------------------------------------
PUBLIC vRegTest1
PUBLIC vRegTest2
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
RSEG CODE:CODE
vRegTest1:
MOV 0x01010101, R1
MOV 0x02020202, R2
; Ignore R3 and R4 as these are the stack and global pointers respectively.
MOV 0x04040404, R5
MOV 0x05050505, R6
MOV 0x06060606, R7
MOV 0x07070707, R8
MOV 0x08080808, R9
MOV 0x09090909, R10
MOV 0x0a0a0a0a, R11
MOV 0x0b0b0b0b, R12
MOV 0x0c0c0c0c, R13
MOV 0x0d0d0d0d, R14
MOV 0x0e0e0e0e, R15
MOV 0x0f0f0f0f, R16
MOV 0x10101010, R17
MOV 0x11111111, R18
MOV 0x12121212, R19
MOV 0x13131313, R20
MOV 0x14141414, R21
MOV 0x15151515, R22
MOV 0x16161616, R23
MOV 0x17171717, R24
#if ( configDATA_MODE == 1 )
;R25 is used as a base register except when the tiny model is used. */
MOV 0x18181818, R25
#endif
MOV 0x19191919, R26
MOV 0x20202020, R27
MOV 0x21212121, R28
MOV 0x22222222, R29
MOV 0x23232323, R30
vReg1TestLoopStart:
TRAP 0
MOV 0x01010101, R31
CMP R31, R1
BZ $+6
JARL vRegTestFailed, lp
MOV 0x02020202, R31
CMP R31, R2
BZ $+6
JARL vRegTestFailed, lp
MOV 0x04040404, R31
CMP R31, R5
BZ $+6
JARL vRegTestFailed, lp
MOV 0x05050505, R31
CMP R31, R6
BZ $+6
JARL vRegTestFailed, lp
MOV 0x06060606, R31
CMP R31, R7
BZ $+6
JARL vRegTestFailed, lp
MOV 0x07070707, R31
CMP R31, R8
BZ $+6
JARL vRegTestFailed, lp
MOV 0x08080808, R31
CMP R31, R9
BZ $+6
JARL vRegTestFailed, lp
MOV 0x09090909, R31
CMP R31, R10
BZ $+6
JARL vRegTestFailed, lp
MOV 0x0a0a0a0a, R31
CMP R31, R11
BZ $+6
JARL vRegTestFailed, lp
MOV 0x0b0b0b0b, R31
CMP R31, R12
BZ $+6
JARL vRegTestFailed, lp
MOV 0x0c0c0c0c, R31
CMP R31, R13
BZ $+6
JARL vRegTestFailed, lp
MOV 0x0d0d0d0d, R31
CMP R31, R14
BZ $+6
JARL vRegTestFailed, lp
MOV 0x0e0e0e0e, R31
CMP R31, R15
BZ $+6
JARL vRegTestFailed, lp
MOV 0x0f0f0f0f, R31
CMP R31, R16
BZ $+6
JARL vRegTestFailed, lp
MOV 0x10101010, R31
CMP R31, R17
BZ $+6
JARL vRegTestFailed, lp
MOV 0x11111111, R31
CMP R31, R18
BZ $+6
JARL vRegTestFailed, lp
MOV 0x12121212, R31
CMP R31, R19
BZ $+6
JARL vRegTestFailed, lp
MOV 0x13131313, R31
CMP R31, R20
BZ $+6
JARL vRegTestFailed, lp
MOV 0x14141414, R31
CMP R31, R21
BZ $+6
JARL vRegTestFailed, lp
MOV 0x15151515, R31
CMP R31, R22
BZ $+6
JARL vRegTestFailed, lp
MOV 0x16161616, R31
CMP R31, R23
BZ $+6
JARL vRegTestFailed, lp
MOV 0x17171717, R31
CMP R31, R24
BZ $+6
JARL vRegTestFailed, lp
#if ( configDATA_MODE == 1 )
MOV 0x18181818, R31
CMP R31, R25
BZ $+6
JARL vRegTestFailed, lp
#endif
MOV 0x19191919, R31
CMP R31, R26
BZ $+6
JARL vRegTestFailed, lp
MOV 0x20202020, R31
CMP R31, R27
BZ $+6
JARL vRegTestFailed, lp
MOV 0x21212121, R31
CMP R31, R28
BZ $+6
JARL vRegTestFailed, lp
MOV 0x22222222, R31
CMP R31, R29
BZ $+6
JARL vRegTestFailed, lp
MOV 0x23232323, R31
CMP R31, R30
BZ $+6
JARL vRegTestFailed, lp
MOV vReg1TestLoopStart, R31
JMP [R31]
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
RSEG CODE:CODE
vRegTest2:
MOV 0xa101010b, R1
MOV 0xa202020b, R2
; Ignore R3 and R4 as these are the stack and global pointers respectively.
MOV 0xa404040b, R5
MOV 0xa505050b, R6
MOV 0xa606060b, R7
MOV 0xa707070b, R8
MOV 0xa808080b, R9
MOV 0xa909090b, R10
MOV 0xaa0a0a0b, R11
MOV 0xab0b0b0b, R12
MOV 0xac0c0c0b, R13
MOV 0xad0d0d0b, R14
MOV 0xae0e0e0b, R15
MOV 0xaf0f0f0b, R16
MOV 0xa010101b, R17
MOV 0xa111111b, R18
MOV 0xa212121b, R19
MOV 0xa313131b, R20
MOV 0xa414141b, R21
MOV 0xa515151b, R22
MOV 0xa616161b, R23
MOV 0xa717171b, R24
#if ( configDATA_MODE == 1 )
;R25 is used as a base register except when the tiny model is used. */
MOV 0xa818181b, R25
#endif
MOV 0xa919191b, R26
MOV 0xa020202b, R27
MOV 0xa121212b, R28
MOV 0xa222222b, R29
MOV 0xa323232b, R30
vReg2TestLoopStart:
MOV 0xa101010b, R31
CMP R31, R1
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa202020b, R31
CMP R31, R2
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa404040b, R31
CMP R31, R5
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa505050b, R31
CMP R31, R6
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa606060b, R31
CMP R31, R7
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa707070b, R31
CMP R31, R8
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa808080b, R31
CMP R31, R9
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa909090b, R31
CMP R31, R10
BZ $+6
JARL vRegTestFailed, lp
MOV 0xaa0a0a0b, R31
CMP R31, R11
BZ $+6
JARL vRegTestFailed, lp
MOV 0xab0b0b0b, R31
CMP R31, R12
BZ $+6
JARL vRegTestFailed, lp
MOV 0xac0c0c0b, R31
CMP R31, R13
BZ $+6
JARL vRegTestFailed, lp
MOV 0xad0d0d0b, R31
CMP R31, R14
BZ $+6
JARL vRegTestFailed, lp
MOV 0xae0e0e0b, R31
CMP R31, R15
BZ $+6
JARL vRegTestFailed, lp
MOV 0xaf0f0f0b, R31
CMP R31, R16
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa010101b, R31
CMP R31, R17
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa111111b, R31
CMP R31, R18
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa212121b, R31
CMP R31, R19
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa313131b, R31
CMP R31, R20
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa414141b, R31
CMP R31, R21
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa515151b, R31
CMP R31, R22
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa616161b, R31
CMP R31, R23
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa717171b, R31
CMP R31, R24
BZ $+6
JARL vRegTestFailed, lp
#if ( configDATA_MODE == 1 )
MOV 0xa818181b, R31
CMP R31, R25
BZ $+6
JARL vRegTestFailed, lp
#endif
MOV 0xa919191b, R31
CMP R31, R26
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa020202b, R31
CMP R31, R27
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa121212b, R31
CMP R31, R28
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa222222b, R31
CMP R31, R29
BZ $+6
JARL vRegTestFailed, lp
MOV 0xa323232b, R31
CMP R31, R30
BZ $+6
JARL vRegTestFailed, lp
MOV vReg2TestLoopStart, R31
JMP [R31]
END
|