]> begriffs open source - cmsis-freertos/blob - Demo/CORTEX_M0_LPC1114_LPCXpresso/RTOSDemo/Source/RegTest.c
Updated to FreeRTOS V10.0.1
[cmsis-freertos] / Demo / CORTEX_M0_LPC1114_LPCXpresso / RTOSDemo / Source / RegTest.c
1 /*
2  * FreeRTOS Kernel V10.0.1
3  * Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of
6  * this software and associated documentation files (the "Software"), to deal in
7  * the Software without restriction, including without limitation the rights to
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9  * the Software, and to permit persons to whom the Software is furnished to do so,
10  * subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included in all
13  * copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21  *
22  * http://www.FreeRTOS.org
23  * http://aws.amazon.com/freertos
24  *
25  * 1 tab == 4 spaces!
26  */
27
28 void vRegTest1Task( void ) __attribute__((naked));
29 void vRegTest2Task( void ) __attribute__((naked));
30
31 void vRegTest1Task( void )
32 {
33         __asm volatile
34         (
35                 ".extern ulRegTest1LoopCounter          \n"
36                 "                                                                       \n"
37                 "       /* Fill the core registers with known values. */ \n"
38                 "       movs r1, #101                                   \n"
39                 "       movs r2, #102                                   \n"
40                 "       movs r3, #103                                   \n"
41                 "       movs r4, #104                                   \n"
42                 "       movs r5, #105                                   \n"
43                 "       movs r6, #106                                   \n"
44                 "       movs r7, #107                                   \n"
45                 "       movs r0, #108                                   \n"
46                 "       mov      r8, r0                                         \n"
47                 "       movs r0, #109                                   \n"
48                 "       mov  r9, r0                                             \n"
49                 "       movs r0, #110                                   \n"
50                 "       mov      r10, r0                                        \n"
51                 "       movs r0, #111                                   \n"
52                 "       mov      r11, r0                                        \n"
53                 "       movs r0, #112                                   \n"
54                 "       mov  r12, r0                                    \n"
55                 "       movs r0, #100                                   \n"
56                 "                                                                       \n"
57                 "reg1_loop:                                                     \n"
58                 "                                                                       \n"
59                 "       cmp     r0, #100                                        \n"
60                 "       bne     reg1_error_loop                         \n"
61                 "       cmp     r1, #101                                        \n"
62                 "       bne     reg1_error_loop                         \n"
63                 "       cmp     r2, #102                                        \n"
64                 "       bne     reg1_error_loop                         \n"
65                 "       cmp r3, #103                                    \n"
66                 "       bne     reg1_error_loop                         \n"
67                 "       cmp     r4, #104                                        \n"
68                 "       bne     reg1_error_loop                         \n"
69                 "       cmp     r5, #105                                        \n"
70                 "       bne     reg1_error_loop                         \n"
71                 "       cmp     r6, #106                                        \n"
72                 "       bne     reg1_error_loop                         \n"
73                 "       cmp     r7, #107                                        \n"
74                 "       bne     reg1_error_loop                         \n"
75                 "       movs r0, #108                                   \n"
76                 "       cmp     r8, r0                                          \n"
77                 "       bne     reg1_error_loop                         \n"
78                 "       movs r0, #109                                   \n"
79                 "       cmp     r9, r0                                          \n"
80                 "       bne     reg1_error_loop                         \n"
81                 "       movs r0, #110                                   \n"
82                 "       cmp     r10, r0                                         \n"
83                 "       bne     reg1_error_loop                         \n"
84                 "       movs r0, #111                                   \n"
85                 "       cmp     r11, r0                                         \n"
86                 "       bne     reg1_error_loop                         \n"
87                 "       movs r0, #112                                   \n"
88                 "       cmp     r12, r0                                         \n"
89                 "       bne     reg1_error_loop                         \n"
90                 "                                                                       \n"
91                 "       /* Everything passed, increment the loop counter. */ \n"
92                 "       push { r1 }                                             \n"
93                 "       ldr     r0, =ulRegTest1LoopCounter      \n"
94                 "       ldr r1, [r0]                                    \n"
95                 "       add r1, r1, #1                                  \n"
96                 "       str r1, [r0]                                    \n"
97                 "       pop { r1 }                                              \n"
98                 "                                                                       \n"
99                 "       /* Start again. */                              \n"
100                 "       movs r0, #100                                   \n"
101                 "       b reg1_loop                                             \n"
102                 "                                                                       \n"
103                 "reg1_error_loop:                                       \n"
104                 "       /* If this line is hit then there was an error in a core register value.        \n"
105                 "       The loop ensures the loop counter stops incrementing. */                                        \n"
106                 "       b reg1_error_loop                               \n"
107                 "       nop                                                             \n"
108         );
109 }
110 /*-----------------------------------------------------------*/
111
112 void vRegTest2Task( void )
113 {
114         __asm volatile
115         (
116                 ".extern ulRegTest2LoopCounter          \n"
117                 "                                                                       \n"
118                 "       /* Fill the core registers with known values. */ \n"
119                 "       movs r1, #1                                             \n"
120                 "       movs r2, #2                                             \n"
121                 "       movs r3, #3                                             \n"
122                 "       movs r4, #4                                             \n"
123                 "       movs r5, #5                                             \n"
124                 "       movs r6, #6                                             \n"
125                 "       movs r7, #7                                             \n"
126                 "       movs r0, #8                                             \n"
127                 "       movs r8, r0                                             \n"
128                 "       movs r0, #9                                             \n"
129                 "       mov  r9, r0                                             \n"
130                 "       movs r0, #10                                    \n"
131                 "       mov      r10, r0                                        \n"
132                 "       movs r0, #11                                    \n"
133                 "       mov      r11, r0                                        \n"
134                 "       movs r0, #12                                    \n"
135                 "       mov  r12, r0                                    \n"
136                 "       movs r0, #10                                    \n"
137                 "                                                                       \n"
138                 "reg2_loop:                                                     \n"
139                 "                                                                       \n"
140                 "       cmp     r0, #10                                         \n"
141                 "       bne     reg2_error_loop                         \n"
142                 "       cmp     r1, #1                                          \n"
143                 "       bne     reg2_error_loop                         \n"
144                 "       cmp     r2, #2                                          \n"
145                 "       bne     reg2_error_loop                         \n"
146                 "       cmp r3, #3                                              \n"
147                 "       bne     reg2_error_loop                         \n"
148                 "       cmp     r4, #4                                          \n"
149                 "       bne     reg2_error_loop                         \n"
150                 "       cmp     r5, #5                                          \n"
151                 "       bne     reg2_error_loop                         \n"
152                 "       cmp     r6, #6                                          \n"
153                 "       bne     reg2_error_loop                         \n"
154                 "       cmp     r7, #7                                          \n"
155                 "       bne     reg2_error_loop                         \n"
156                 "       movs r0, #8                                             \n"
157                 "       cmp     r8, r0                                          \n"
158                 "       bne     reg2_error_loop                         \n"
159                 "       movs r0, #9                                             \n"
160                 "       cmp     r9, r0                                          \n"
161                 "       bne     reg2_error_loop                         \n"
162                 "       movs r0, #10                                    \n"
163                 "       cmp     r10, r0                                         \n"
164                 "       bne     reg2_error_loop                         \n"
165                 "       movs r0, #11                                    \n"
166                 "       cmp     r11, r0                                         \n"
167                 "       bne     reg2_error_loop                         \n"
168                 "       movs r0, #12                                    \n"
169                 "       cmp     r12, r0                                         \n"
170                 "       bne     reg2_error_loop                         \n"
171                 "                                                                       \n"
172                 "       /* Everything passed, increment the loop counter. */ \n"
173                 "       push { r1 }                                             \n"
174                 "       ldr     r0, =ulRegTest2LoopCounter      \n"
175                 "       ldr r1, [r0]                                    \n"
176                 "       add r1, r1, #1                                  \n"
177                 "       str r1, [r0]                                    \n"
178                 "       pop { r1 }                                              \n"
179                 "                                                                       \n"
180                 "       /* Start again. */                              \n"
181                 "       movs r0, #10                                    \n"
182                 "       b reg2_loop                                             \n"
183                 "                                                                       \n"
184                 "reg2_error_loop:                                       \n"
185                 "       /* If this line is hit then there was an error in a core register value.        \n"
186                 "       The loop ensures the loop counter stops incrementing. */                                        \n"
187                 "       b reg2_error_loop                               \n"
188                 "       nop                                                             \n"
189         );
190 }
191 /*-----------------------------------------------------------*/
192
193
194
195