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