]> git.sur5r.net Git - freertos/blob - Demo/NEC_78K0R_IAR/RegTest.s26
Remove unnecessary use of portLONG, portCHAR and portSHORT.
[freertos] / Demo / NEC_78K0R_IAR / RegTest.s26
1 ;/*\r
2 ;       FreeRTOS V5.4.2 - Copyright (C) 2009 Real Time Engineers Ltd.\r
3 ;\r
4 ;       This file is part of the FreeRTOS distribution.\r
5 ;\r
6 ;       FreeRTOS is free software; you can redistribute it and/or modify it     under \r
7 ;       the terms of the GNU General Public License (version 2) as published by the \r
8 ;       Free Software Foundation and modified by the FreeRTOS exception.\r
9 ;       **NOTE** The exception to the GPL is included to allow you to distribute a\r
10 ;       combined work that includes FreeRTOS without being obliged to provide the \r
11 ;       source code for proprietary components outside of the FreeRTOS kernel.  \r
12 ;       Alternative commercial license and support terms are also available upon \r
13 ;       request.  See the licensing section of http://www.FreeRTOS.org for full \r
14 ;       license details.\r
15 ;\r
16 ;       FreeRTOS is distributed in the hope that it will be useful,     but WITHOUT\r
17 ;       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
18 ;       FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
19 ;       more details.\r
20 ;\r
21 ;       You should have received a copy of the GNU General Public License along\r
22 ;       with FreeRTOS; if not, write to the Free Software Foundation, Inc., 59\r
23 ;       Temple Place, Suite 330, Boston, MA  02111-1307  USA.\r
24 ;\r
25 ;\r
26 ;       ***************************************************************************\r
27 ;       *                                                                         *\r
28 ;       * Looking for a quick start?  Then check out the FreeRTOS eBook!          *\r
29 ;       * See http://www.FreeRTOS.org/Documentation for details                   *\r
30 ;       *                                                                         *\r
31 ;       ***************************************************************************\r
32 ;\r
33 ;       1 tab == 4 spaces!\r
34 ;\r
35 ;       Please ensure to read the configuration and relevant port sections of the\r
36 ;       online documentation.\r
37 ;\r
38 ;       http://www.FreeRTOS.org - Documentation, latest information, license and\r
39 ;       contact details.\r
40 ;\r
41 ;       http://www.SafeRTOS.com - A version that is certified for use in safety\r
42 ;       critical systems.\r
43 ;\r
44 ;       http://www.OpenRTOS.com - Commercial support, development, porting,\r
45 ;       licensing and training services.\r
46 ;*/\r
47 \r
48 \r
49 ;\r
50 ; This file defines the RegTest tasks as described at the top of main.c\r
51 ;\r
52 \r
53 ;------------------------------------------------------------------------------\r
54 \r
55 #if __CORE__ != __78K0R__\r
56         #error "This file is only for 78K0R Devices"\r
57 #endif\r
58 \r
59 ; Functions implemented in this file\r
60 ;------------------------------------------------------------------------------\r
61 \r
62         PUBLIC    vRegTest1\r
63         PUBLIC    vRegTest2\r
64 \r
65 ; Functions used by this file\r
66 ;------------------------------------------------------------------------------\r
67         EXTERN    vRegTestError\r
68 \r
69 ;------------------------------------------------------------------------------\r
70 ;   Fill all the registers with known values, then check that the registers\r
71 ;   contain the expected value.  An incorrect value being indicative of an\r
72 ;   error in the context switch mechanism.\r
73 ;\r
74 ;   Input:  NONE\r
75 ;\r
76 ;   Call:   Created as a task.\r
77 ;\r
78 ;   Output: NONE\r
79 ;\r
80 ;------------------------------------------------------------------------------\r
81     RSEG CODE:CODE\r
82 vRegTest1:\r
83 \r
84         ; First fill the registers.\r
85         MOVW    AX, #0x1122\r
86         MOVW    BC, #0x3344\r
87         MOVW    DE, #0x5566\r
88         MOVW    HL, #0x7788\r
89         MOV             CS, #0x01\r
90 #if configMEMORY_MODE == 1      \r
91         ; ES is not saved or restored when using the near memory model so only\r
92         ; test it when using the far model.\r
93         MOV             ES, #0x02\r
94 #endif\r
95 \r
96 loop1:\r
97         ; Continuously check that the register values remain at their expected\r
98         ; values.  The BRK is to test the yield.  This task runs at low priority\r
99         ; so will also regularly get preempted.\r
100         BRK\r
101 \r
102         ; Compare with the expected value.\r
103         CMPW    AX, #0x1122\r
104         BZ              +5\r
105         ; Jump over the branch to vRegTestError() if the register contained the\r
106         ; expected value - otherwise flag an error by executing vRegTestError().\r
107         BR              vRegTestError   \r
108 \r
109         ; Repeat for all the registers.\r
110         MOVW    AX, BC\r
111         CMPW    AX, #0x3344\r
112         BZ              +5\r
113         BR              vRegTestError   \r
114         MOVW    AX, DE\r
115         CMPW    AX, #0x5566\r
116         BZ              +5\r
117         BR              vRegTestError   \r
118         MOVW    AX, HL  \r
119         CMPW    AX, #0x7788\r
120         BZ              +5\r
121         BR              vRegTestError\r
122         MOV             A, CS\r
123         CMP             A, #0x01\r
124         BZ              +5\r
125         BR              vRegTestError\r
126 #if configMEMORY_MODE == 1      \r
127         ; ES is not saved or restored when using the near memory model so only\r
128         ; test it when using the far model.\r
129         MOV             A, ES\r
130         CMP             A, #0x02\r
131         BZ              +5\r
132         BR              vRegTestError\r
133 #endif\r
134         MOVW    AX, #0x1122\r
135         BR              loop1\r
136 \r
137 \r
138 ;------------------------------------------------------------------------------\r
139 ;   Fill all the registers with known values, then check that the registers\r
140 ;   contain the expected value.  An incorrect value being indicative of an\r
141 ;   error in the context switch mechanism.\r
142 ;\r
143 ;   Input:  NONE\r
144 ;\r
145 ;   Call:   Created as a task.\r
146 ;\r
147 ;   Output: NONE\r
148 ;\r
149 ;------------------------------------------------------------------------------\r
150     RSEG CODE:CODE\r
151 vRegTest2:\r
152 \r
153         MOVW    AX, #0x99aa\r
154         MOVW    BC, #0xbbcc\r
155         MOVW    DE, #0xddee\r
156         MOVW    HL, #0xff12\r
157         MOV             CS, #0x03\r
158 #if configMEMORY_MODE == 1      \r
159         MOV             ES, #0x04       \r
160 #endif\r
161 \r
162 loop2:\r
163         CMPW    AX, #0x99aa\r
164         BZ              +5\r
165         BR              vRegTestError   \r
166         MOVW    AX, BC\r
167         CMPW    AX, #0xbbcc\r
168         BZ              +5\r
169         BR              vRegTestError   \r
170         MOVW    AX, DE\r
171         CMPW    AX, #0xddee\r
172         BZ              +5\r
173         BR              vRegTestError   \r
174         MOVW    AX, HL  \r
175         CMPW    AX, #0xff12\r
176         BZ              +5\r
177         BR              vRegTestError\r
178         MOV             A, CS\r
179         CMP             A, #0x03\r
180         BZ              +5\r
181         BR              vRegTestError\r
182 #if configMEMORY_MODE == 1              \r
183         MOV             A, ES\r
184         CMP             A, #0x04\r
185         BZ              +5\r
186         BR              vRegTestError\r
187 #endif\r
188         MOVW    AX, #0x99aa\r
189         BR              loop2\r
190 \r
191 \r
192         END\r