]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_rvmdk.S
Update to V4.5.0 files and directory structure.
[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         DCD     IntDefaultHandler           ; SVCall Handler\r
98         DCD     IntDefaultHandler           ; Debug Monitor Handler\r
99         DCD     0                           ; Reserved\r
100                 EXTERN  xPortPendSVHandler\r
101         DCD     xPortPendSVHandler          ; PendSV Handler\r
102         EXTERN  xPortSysTickHandler\r
103         DCD     xPortSysTickHandler         ; SysTick Handler\r
104         DCD     IntDefaultHandler           ; GPIO Port A\r
105         DCD     IntDefaultHandler           ; GPIO Port B\r
106         DCD     IntDefaultHandler           ; GPIO Port C\r
107         DCD     IntDefaultHandler           ; GPIO Port D\r
108         DCD     IntDefaultHandler           ; GPIO Port E\r
109         DCD     IntDefaultHandler           ; UART0\r
110         DCD     IntDefaultHandler           ; UART1\r
111         DCD     IntDefaultHandler           ; SSI\r
112         DCD     IntDefaultHandler           ; I2C\r
113         DCD     IntDefaultHandler           ; PWM Fault\r
114         DCD     IntDefaultHandler           ; PWM Generator 0\r
115         DCD     IntDefaultHandler           ; PWM Generator 1\r
116         DCD     IntDefaultHandler           ; PWM Generator 2\r
117         DCD     IntDefaultHandler           ; Quadrature Encoder\r
118         DCD     IntDefaultHandler           ; ADC Sequence 0\r
119         DCD     IntDefaultHandler           ; ADC Sequence 1\r
120         DCD     IntDefaultHandler           ; ADC Sequence 2\r
121         DCD     IntDefaultHandler           ; ADC Sequence 3\r
122         DCD     IntDefaultHandler           ; Watchdog\r
123         EXTERN  Timer0IntHandler\r
124         DCD     Timer0IntHandler            ; Timer 0A\r
125         DCD     IntDefaultHandler           ; Timer 0B\r
126         DCD     IntDefaultHandler           ; Timer 1A\r
127         DCD     IntDefaultHandler           ; Timer 1B\r
128         DCD     IntDefaultHandler           ; Timer 2A\r
129         DCD     IntDefaultHandler           ; Timer 2B\r
130         DCD     IntDefaultHandler           ; Comp 0\r
131         DCD     IntDefaultHandler           ; Comp 1\r
132         DCD     IntDefaultHandler           ; Comp 2\r
133         DCD     IntDefaultHandler           ; System Control\r
134         DCD     IntDefaultHandler           ; Flash Control\r
135         DCD     IntDefaultHandler           ; GPIO Port F\r
136         DCD     IntDefaultHandler           ; GPIO Port G\r
137         DCD     IntDefaultHandler           ; GPIO Port H\r
138         DCD     IntDefaultHandler           ; UART2 Rx and Tx\r
139         DCD     IntDefaultHandler           ; SSI1 Rx and Tx\r
140         DCD     IntDefaultHandler           ; Timer 3 subtimer A\r
141         DCD     IntDefaultHandler           ; Timer 3 subtimer B\r
142         DCD     IntDefaultHandler           ; I2C1 Master and Slave\r
143         DCD     IntDefaultHandler           ; Quadrature Encoder 1\r
144         DCD     IntDefaultHandler           ; CAN0\r
145         DCD     IntDefaultHandler           ; CAN1\r
146         DCD     0                           ; Reserved\r
147         EXTERN  vEMAC_ISR\r
148         DCD     vEMAC_ISR                   ; Ethernet\r
149         DCD     IntDefaultHandler           ; Hibernate\r
150 \r
151 ;******************************************************************************\r
152 ;\r
153 ; This is the code that gets called when the processor first starts execution\r
154 ; following a reset event.\r
155 ;\r
156 ;******************************************************************************\r
157         EXPORT  Reset_Handler\r
158 Reset_Handler\r
159         ;\r
160         ; Call the C library enty point that handles startup.  This will copy\r
161         ; the .data section initializers from flash to SRAM and zero fill the\r
162         ; .bss section.  It will then call __rt_entry, which will be either the\r
163         ; C library version or the one supplied here depending on the\r
164         ; configured startup type.\r
165         ;\r
166         IMPORT  __main\r
167         B       __main\r
168 \r
169 ;******************************************************************************\r
170 ;\r
171 ; This is the code that gets called when the processor receives a NMI.  This\r
172 ; simply enters an infinite loop, preserving the system state for examination\r
173 ; by a debugger.\r
174 ;\r
175 ;******************************************************************************\r
176 NmiSR\r
177         B       NmiSR\r
178 \r
179 ;******************************************************************************\r
180 ;\r
181 ; This is the code that gets called when the processor receives a fault\r
182 ; interrupt.  This simply enters an infinite loop, preserving the system state\r
183 ; for examination by a debugger.\r
184 ;\r
185 ;******************************************************************************\r
186 FaultISR\r
187         B       FaultISR\r
188 \r
189 ;******************************************************************************\r
190 ;\r
191 ; This is the code that gets called when the processor receives an unexpected\r
192 ; interrupt.  This simply enters an infinite loop, preserving the system state\r
193 ; for examination by a debugger.\r
194 ;\r
195 ;******************************************************************************\r
196 IntDefaultHandler\r
197         B       IntDefaultHandler\r
198 \r
199 ;******************************************************************************\r
200 ;\r
201 ; Make sure the end of this section is aligned.\r
202 ;\r
203 ;******************************************************************************\r
204         ALIGN\r
205 \r
206 ;******************************************************************************\r
207 ;\r
208 ; Some code in the normal code section for initializing the heap and stack.\r
209 ;\r
210 ;******************************************************************************\r
211         AREA    |.text|, CODE, READONLY\r
212 \r
213 ;******************************************************************************\r
214 ;\r
215 ; The function expected of the C library startup code for defining the stack\r
216 ; and heap memory locations.  For the C library version of the startup code,\r
217 ; provide this function so that the C library initialization code can find out\r
218 ; the location of the stack and heap.\r
219 ;\r
220 ;******************************************************************************\r
221     IF :DEF: __MICROLIB\r
222         EXPORT  __initial_sp\r
223         EXPORT  __heap_base\r
224         EXPORT  __heap_limit\r
225     ELSE\r
226         IMPORT  __use_two_region_memory\r
227         EXPORT  __user_initial_stackheap\r
228 __user_initial_stackheap\r
229         LDR     R0, =HeapMem\r
230         LDR     R1, =(StackMem + Stack)\r
231         LDR     R2, =(HeapMem + Heap)\r
232         LDR     R3, =StackMem\r
233         BX      LR\r
234     ENDIF\r
235 \r
236 ;******************************************************************************\r
237 ;\r
238 ; Make sure the end of this section is aligned.\r
239 ;\r
240 ;******************************************************************************\r
241         ALIGN\r
242 \r
243 ;******************************************************************************\r
244 ;\r
245 ; Tell the assembler that we're done.\r
246 ;\r
247 ;******************************************************************************\r
248         END\r