]> 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 V6.0.0 - 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 ;    * The FreeRTOS eBook and reference manual are available to purchase for a *\r
29 ;    * small fee. Help yourself get started quickly while also helping the     *\r
30 ;    * FreeRTOS project! See http://www.FreeRTOS.org/Documentation for details *\r
31 ;    *                                                                         *\r
32 ;    ***************************************************************************\r
33 ;\r
34 ;    1 tab == 4 spaces!\r
35 ;\r
36 ;    Please ensure to read the configuration and relevant port sections of the\r
37 ;    online documentation.\r
38 ;\r
39 ;    http://www.FreeRTOS.org - Documentation, latest information, license and\r
40 ;    contact details.\r
41 ;\r
42 ;    http://www.SafeRTOS.com - A version that is certified for use in safety\r
43 ;    critical systems.\r
44 ;\r
45 ;    http://www.OpenRTOS.com - Commercial support, development, porting,\r
46 ;    licensing and training services.\r
47 ;*/\r
48 \r
49 \r
50 ;\r
51 ; This file defines the RegTest tasks as described at the top of main.c\r
52 ;\r
53 \r
54 ;------------------------------------------------------------------------------\r
55 \r
56 #if __CORE__ != __78K0R__\r
57         #error "This file is only for 78K0R Devices"\r
58 #endif\r
59 \r
60 ; Functions implemented in this file\r
61 ;------------------------------------------------------------------------------\r
62 \r
63         PUBLIC    vRegTest1\r
64         PUBLIC    vRegTest2\r
65 \r
66 ; Functions used by this file\r
67 ;------------------------------------------------------------------------------\r
68         EXTERN    vRegTestError\r
69 \r
70 ;------------------------------------------------------------------------------\r
71 ;   Fill all the registers with known values, then check that the registers\r
72 ;   contain the expected value.  An incorrect value being indicative of an\r
73 ;   error in the context switch mechanism.\r
74 ;\r
75 ;   Input:  NONE\r
76 ;\r
77 ;   Call:   Created as a task.\r
78 ;\r
79 ;   Output: NONE\r
80 ;\r
81 ;------------------------------------------------------------------------------\r
82     RSEG CODE:CODE\r
83 vRegTest1:\r
84 \r
85         ; First fill the registers.\r
86         MOVW    AX, #0x1122\r
87         MOVW    BC, #0x3344\r
88         MOVW    DE, #0x5566\r
89         MOVW    HL, #0x7788\r
90         MOV             CS, #0x01\r
91 #if configMEMORY_MODE == 1      \r
92         ; ES is not saved or restored when using the near memory model so only\r
93         ; test it when using the far model.\r
94         MOV             ES, #0x02\r
95 #endif\r
96 \r
97 loop1:\r
98         ; Continuously check that the register values remain at their expected\r
99         ; values.  The BRK is to test the yield.  This task runs at low priority\r
100         ; so will also regularly get preempted.\r
101         BRK\r
102 \r
103         ; Compare with the expected value.\r
104         CMPW    AX, #0x1122\r
105         BZ              +5\r
106         ; Jump over the branch to vRegTestError() if the register contained the\r
107         ; expected value - otherwise flag an error by executing vRegTestError().\r
108         BR              vRegTestError   \r
109 \r
110         ; Repeat for all the registers.\r
111         MOVW    AX, BC\r
112         CMPW    AX, #0x3344\r
113         BZ              +5\r
114         BR              vRegTestError   \r
115         MOVW    AX, DE\r
116         CMPW    AX, #0x5566\r
117         BZ              +5\r
118         BR              vRegTestError   \r
119         MOVW    AX, HL  \r
120         CMPW    AX, #0x7788\r
121         BZ              +5\r
122         BR              vRegTestError\r
123         MOV             A, CS\r
124         CMP             A, #0x01\r
125         BZ              +5\r
126         BR              vRegTestError\r
127 #if configMEMORY_MODE == 1      \r
128         ; ES is not saved or restored when using the near memory model so only\r
129         ; test it when using the far model.\r
130         MOV             A, ES\r
131         CMP             A, #0x02\r
132         BZ              +5\r
133         BR              vRegTestError\r
134 #endif\r
135         MOVW    AX, #0x1122\r
136         BR              loop1\r
137 \r
138 \r
139 ;------------------------------------------------------------------------------\r
140 ;   Fill all the registers with known values, then check that the registers\r
141 ;   contain the expected value.  An incorrect value being indicative of an\r
142 ;   error in the context switch mechanism.\r
143 ;\r
144 ;   Input:  NONE\r
145 ;\r
146 ;   Call:   Created as a task.\r
147 ;\r
148 ;   Output: NONE\r
149 ;\r
150 ;------------------------------------------------------------------------------\r
151     RSEG CODE:CODE\r
152 vRegTest2:\r
153 \r
154         MOVW    AX, #0x99aa\r
155         MOVW    BC, #0xbbcc\r
156         MOVW    DE, #0xddee\r
157         MOVW    HL, #0xff12\r
158         MOV             CS, #0x03\r
159 #if configMEMORY_MODE == 1      \r
160         MOV             ES, #0x04       \r
161 #endif\r
162 \r
163 loop2:\r
164         CMPW    AX, #0x99aa\r
165         BZ              +5\r
166         BR              vRegTestError   \r
167         MOVW    AX, BC\r
168         CMPW    AX, #0xbbcc\r
169         BZ              +5\r
170         BR              vRegTestError   \r
171         MOVW    AX, DE\r
172         CMPW    AX, #0xddee\r
173         BZ              +5\r
174         BR              vRegTestError   \r
175         MOVW    AX, HL  \r
176         CMPW    AX, #0xff12\r
177         BZ              +5\r
178         BR              vRegTestError\r
179         MOV             A, CS\r
180         CMP             A, #0x03\r
181         BZ              +5\r
182         BR              vRegTestError\r
183 #if configMEMORY_MODE == 1              \r
184         MOV             A, ES\r
185         CMP             A, #0x04\r
186         BZ              +5\r
187         BR              vRegTestError\r
188 #endif\r
189         MOVW    AX, #0x99aa\r
190         BR              loop2\r
191 \r
192 \r
193         END\r