]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_rvmdk.S
Update version number in readiness for V10.3.0 release. Sync SVN with reviewed releas...
[freertos] / FreeRTOS / Demo / CORTEX_LM3Sxxxx_IAR_Keil / startup_rvmdk.S
1 ; <<< Use Configuration Wizard in Context Menu >>>\r
2 ;******************************************************************************\r
3 ;\r
4 ; startup_rvmdk.S - Startup code for use with Keil's uVision.\r
5 ;\r
6 ; Copyright (c) 2007 Luminary Micro, Inc.  All rights reserved.\r
7\r
8 ; Software License Agreement\r
9\r
10 ; Luminary Micro, Inc. (LMI) is supplying this software for use solely and\r
11 ; exclusively on LMI's microcontroller products.\r
12\r
13 ; The software is owned by LMI and/or its suppliers, and is protected under\r
14 ; applicable copyright laws.  All rights are reserved.  Any use in violation\r
15 ; of the foregoing restrictions may subject the user to criminal sanctions\r
16 ; under applicable laws, as well as to civil liability for the breach of the\r
17 ; terms and conditions of this license.\r
18\r
19 ; THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
20 ; OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
21 ; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
22 ; LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
23 ; CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
24\r
25 ; This is part of revision 1408 of the Stellaris Peripheral Driver Library.\r
26 ;\r
27 ;******************************************************************************\r
28 \r
29 ;******************************************************************************\r
30 ;\r
31 ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\r
32 ;\r
33 ;******************************************************************************\r
34 Stack   EQU     0x00000800\r
35 \r
36 ;******************************************************************************\r
37 ;\r
38 ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\r
39 ;\r
40 ;******************************************************************************\r
41 Heap    EQU     0x00000000\r
42 \r
43 ;******************************************************************************\r
44 ;\r
45 ; Allocate space for the stack.\r
46 ;\r
47 ;******************************************************************************\r
48         AREA    STACK, NOINIT, READWRITE, ALIGN=3\r
49 StackMem\r
50         SPACE   Stack\r
51 __initial_sp\r
52 \r
53 ;******************************************************************************\r
54 ;\r
55 ; Allocate space for the heap.\r
56 ;\r
57 ;******************************************************************************\r
58         AREA    HEAP, NOINIT, READWRITE, ALIGN=3\r
59 __heap_base\r
60 HeapMem\r
61         SPACE   Heap\r
62 __heap_limit\r
63 \r
64 ;******************************************************************************\r
65 ;\r
66 ; Indicate that the code in this file preserves 8-byte alignment of the stack.\r
67 ;\r
68 ;******************************************************************************\r
69         PRESERVE8\r
70 \r
71 ;******************************************************************************\r
72 ;\r
73 ; Place code into the reset code section.\r
74 ;\r
75 ;******************************************************************************\r
76         AREA    RESET, CODE, READONLY\r
77         THUMB\r
78 \r
79 ;******************************************************************************\r
80 ;\r
81 ; The vector table.\r
82 ;\r
83 ;******************************************************************************\r
84         EXPORT  __Vectors\r
85 __Vectors\r
86         DCD     StackMem + Stack            ; Top of Stack\r
87         DCD     Reset_Handler               ; Reset Handler\r
88         DCD     NmiSR                       ; NMI Handler\r
89         DCD     FaultISR                    ; Hard Fault Handler\r
90         DCD     IntDefaultHandler           ; MPU Fault Handler\r
91         DCD     IntDefaultHandler           ; Bus Fault Handler\r
92         DCD     IntDefaultHandler           ; Usage Fault Handler\r
93         DCD     0                           ; Reserved\r
94         DCD     0                           ; Reserved\r
95         DCD     0                           ; Reserved\r
96         DCD     0                           ; Reserved\r
97                 EXTERN  vPortSVCHandler\r
98         DCD     vPortSVCHandler                 ; SVCall Handler\r
99         DCD     IntDefaultHandler           ; Debug Monitor Handler\r
100         DCD     0                           ; Reserved\r
101                 EXTERN  xPortPendSVHandler\r
102         DCD     xPortPendSVHandler          ; PendSV Handler\r
103         EXTERN  xPortSysTickHandler\r
104         DCD     xPortSysTickHandler         ; SysTick Handler\r
105         DCD     IntDefaultHandler           ; GPIO Port A\r
106         DCD     IntDefaultHandler           ; GPIO Port B\r
107         DCD     IntDefaultHandler           ; GPIO Port C\r
108         DCD     IntDefaultHandler           ; GPIO Port D\r
109         DCD     IntDefaultHandler           ; GPIO Port E\r
110         DCD     IntDefaultHandler           ; UART0\r
111         DCD     IntDefaultHandler           ; UART1\r
112         DCD     IntDefaultHandler           ; SSI\r
113         DCD     IntDefaultHandler           ; I2C\r
114         DCD     IntDefaultHandler           ; PWM Fault\r
115         DCD     IntDefaultHandler           ; PWM Generator 0\r
116         DCD     IntDefaultHandler           ; PWM Generator 1\r
117         DCD     IntDefaultHandler           ; PWM Generator 2\r
118         DCD     IntDefaultHandler           ; Quadrature Encoder\r
119         DCD     IntDefaultHandler           ; ADC Sequence 0\r
120         DCD     IntDefaultHandler           ; ADC Sequence 1\r
121         DCD     IntDefaultHandler           ; ADC Sequence 2\r
122         DCD     IntDefaultHandler           ; ADC Sequence 3\r
123         DCD     IntDefaultHandler           ; Watchdog\r
124         EXTERN  Timer0IntHandler\r
125         DCD     Timer0IntHandler            ; Timer 0A\r
126         DCD     IntDefaultHandler           ; Timer 0B\r
127         DCD     IntDefaultHandler           ; Timer 1A\r
128         DCD     IntDefaultHandler           ; Timer 1B\r
129                 EXTERN  vT2InterruptHandler\r
130         DCD     vT2InterruptHandler         ; Timer 2A\r
131         DCD     IntDefaultHandler           ; Timer 2B\r
132         DCD     IntDefaultHandler           ; Comp 0\r
133         DCD     IntDefaultHandler           ; Comp 1\r
134         DCD     IntDefaultHandler           ; Comp 2\r
135         DCD     IntDefaultHandler           ; System Control\r
136         DCD     IntDefaultHandler           ; Flash Control\r
137         DCD     IntDefaultHandler           ; GPIO Port F\r
138         DCD     IntDefaultHandler           ; GPIO Port G\r
139         DCD     IntDefaultHandler           ; GPIO Port H\r
140         DCD     IntDefaultHandler           ; UART2 Rx and Tx\r
141         DCD     IntDefaultHandler           ; SSI1 Rx and Tx\r
142                 EXTERN  vT3InterruptHandler\r
143         DCD     vT3InterruptHandler         ; Timer 3 subtimer A\r
144         DCD     IntDefaultHandler           ; Timer 3 subtimer B\r
145         DCD     IntDefaultHandler           ; I2C1 Master and Slave\r
146         DCD     IntDefaultHandler           ; Quadrature Encoder 1\r
147         DCD     IntDefaultHandler           ; CAN0\r
148         DCD     IntDefaultHandler           ; CAN1\r
149         DCD     0                           ; Reserved\r
150         EXTERN  vEMAC_ISR\r
151         DCD     vEMAC_ISR                   ; Ethernet\r
152         DCD     IntDefaultHandler           ; Hibernate\r
153 \r
154 ;******************************************************************************\r
155 ;\r
156 ; This is the code that gets called when the processor first starts execution\r
157 ; following a reset event.\r
158 ;\r
159 ;******************************************************************************\r
160         EXPORT  Reset_Handler\r
161 Reset_Handler\r
162         ;\r
163         ; Call the C library enty point that handles startup.  This will copy\r
164         ; the .data section initializers from flash to SRAM and zero fill the\r
165         ; .bss section.  It will then call __rt_entry, which will be either the\r
166         ; C library version or the one supplied here depending on the\r
167         ; configured startup type.\r
168         ;\r
169         IMPORT  __main\r
170         B       __main\r
171 \r
172 ;******************************************************************************\r
173 ;\r
174 ; This is the code that gets called when the processor receives a NMI.  This\r
175 ; simply enters an infinite loop, preserving the system state for examination\r
176 ; by a debugger.\r
177 ;\r
178 ;******************************************************************************\r
179 NmiSR\r
180         B       NmiSR\r
181 \r
182 ;******************************************************************************\r
183 ;\r
184 ; This is the code that gets called when the processor receives a fault\r
185 ; interrupt.  This simply enters an infinite loop, preserving the system state\r
186 ; for examination by a debugger.\r
187 ;\r
188 ;******************************************************************************\r
189 FaultISR\r
190         B       FaultISR\r
191 \r
192 ;******************************************************************************\r
193 ;\r
194 ; This is the code that gets called when the processor receives an unexpected\r
195 ; interrupt.  This simply enters an infinite loop, preserving the system state\r
196 ; for examination by a debugger.\r
197 ;\r
198 ;******************************************************************************\r
199 IntDefaultHandler\r
200         B       IntDefaultHandler\r
201 \r
202 ;******************************************************************************\r
203 ;\r
204 ; Make sure the end of this section is aligned.\r
205 ;\r
206 ;******************************************************************************\r
207         ALIGN\r
208 \r
209 ;******************************************************************************\r
210 ;\r
211 ; Some code in the normal code section for initializing the heap and stack.\r
212 ;\r
213 ;******************************************************************************\r
214         AREA    |.text|, CODE, READONLY\r
215 \r
216 ;******************************************************************************\r
217 ;\r
218 ; The function expected of the C library startup code for defining the stack\r
219 ; and heap memory locations.  For the C library version of the startup code,\r
220 ; provide this function so that the C library initialization code can find out\r
221 ; the location of the stack and heap.\r
222 ;\r
223 ;******************************************************************************\r
224     IF :DEF: __MICROLIB\r
225         EXPORT  __initial_sp\r
226         EXPORT  __heap_base\r
227         EXPORT  __heap_limit\r
228     ELSE\r
229         IMPORT  __use_two_region_memory\r
230         EXPORT  __user_initial_stackheap\r
231 __user_initial_stackheap\r
232         LDR     R0, =HeapMem\r
233         LDR     R1, =(StackMem + Stack)\r
234         LDR     R2, =(HeapMem + Heap)\r
235         LDR     R3, =StackMem\r
236         BX      LR\r
237     ENDIF\r
238 \r
239 ;******************************************************************************\r
240 ;\r
241 ; Make sure the end of this section is aligned.\r
242 ;\r
243 ;******************************************************************************\r
244         ALIGN\r
245 \r
246 ;******************************************************************************\r
247 ;\r
248 ; Tell the assembler that we're done.\r
249 ;\r
250 ;******************************************************************************\r
251         END\r