forkd

Dependencies:   mbed

Fork of LG2 by Dmitry Kovalev

Committer:
Kovalev_D
Date:
Wed Feb 03 10:44:42 2016 +0300
Revision:
23:12e6183f04d4
[thyz

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kovalev_D 23:12e6183f04d4 1 /*****************************************************************************/
Kovalev_D 23:12e6183f04d4 2 /* startup_LPC13xx.s: Startup file for LPC13xx device series */
Kovalev_D 23:12e6183f04d4 3 /*****************************************************************************/
Kovalev_D 23:12e6183f04d4 4 /* Version: CodeSourcery Sourcery G++ Lite (with CS3) */
Kovalev_D 23:12e6183f04d4 5 /*****************************************************************************/
Kovalev_D 23:12e6183f04d4 6
Kovalev_D 23:12e6183f04d4 7
Kovalev_D 23:12e6183f04d4 8 /*
Kovalev_D 23:12e6183f04d4 9 //*** <<< Use Configuration Wizard in Context Menu >>> ***
Kovalev_D 23:12e6183f04d4 10 */
Kovalev_D 23:12e6183f04d4 11
Kovalev_D 23:12e6183f04d4 12
Kovalev_D 23:12e6183f04d4 13 /*
Kovalev_D 23:12e6183f04d4 14 // <h> Stack Configuration
Kovalev_D 23:12e6183f04d4 15 // <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
Kovalev_D 23:12e6183f04d4 16 // </h>
Kovalev_D 23:12e6183f04d4 17 */
Kovalev_D 23:12e6183f04d4 18
Kovalev_D 23:12e6183f04d4 19 .equ Stack_Size, 0x00000100
Kovalev_D 23:12e6183f04d4 20 .section ".stack", "w"
Kovalev_D 23:12e6183f04d4 21 .align 3
Kovalev_D 23:12e6183f04d4 22 .globl __cs3_stack_mem
Kovalev_D 23:12e6183f04d4 23 .globl __cs3_stack_size
Kovalev_D 23:12e6183f04d4 24 __cs3_stack_mem:
Kovalev_D 23:12e6183f04d4 25 .if Stack_Size
Kovalev_D 23:12e6183f04d4 26 .space Stack_Size
Kovalev_D 23:12e6183f04d4 27 .endif
Kovalev_D 23:12e6183f04d4 28 .size __cs3_stack_mem, . - __cs3_stack_mem
Kovalev_D 23:12e6183f04d4 29 .set __cs3_stack_size, . - __cs3_stack_mem
Kovalev_D 23:12e6183f04d4 30
Kovalev_D 23:12e6183f04d4 31
Kovalev_D 23:12e6183f04d4 32 /*
Kovalev_D 23:12e6183f04d4 33 // <h> Heap Configuration
Kovalev_D 23:12e6183f04d4 34 // <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
Kovalev_D 23:12e6183f04d4 35 // </h>
Kovalev_D 23:12e6183f04d4 36 */
Kovalev_D 23:12e6183f04d4 37
Kovalev_D 23:12e6183f04d4 38 .equ Heap_Size, 0x00001000
Kovalev_D 23:12e6183f04d4 39
Kovalev_D 23:12e6183f04d4 40 .section ".heap", "w"
Kovalev_D 23:12e6183f04d4 41 .align 3
Kovalev_D 23:12e6183f04d4 42 .globl __cs3_heap_start
Kovalev_D 23:12e6183f04d4 43 .globl __cs3_heap_end
Kovalev_D 23:12e6183f04d4 44 __cs3_heap_start:
Kovalev_D 23:12e6183f04d4 45 .if Heap_Size
Kovalev_D 23:12e6183f04d4 46 .space Heap_Size
Kovalev_D 23:12e6183f04d4 47 .endif
Kovalev_D 23:12e6183f04d4 48 __cs3_heap_end:
Kovalev_D 23:12e6183f04d4 49
Kovalev_D 23:12e6183f04d4 50
Kovalev_D 23:12e6183f04d4 51 /* Vector Table */
Kovalev_D 23:12e6183f04d4 52
Kovalev_D 23:12e6183f04d4 53 .section ".cs3.interrupt_vector"
Kovalev_D 23:12e6183f04d4 54 .globl __cs3_interrupt_vector_cortex_m
Kovalev_D 23:12e6183f04d4 55 .type __cs3_interrupt_vector_cortex_m, %object
Kovalev_D 23:12e6183f04d4 56
Kovalev_D 23:12e6183f04d4 57 __cs3_interrupt_vector_cortex_m:
Kovalev_D 23:12e6183f04d4 58 .long __cs3_stack /* Top of Stack */
Kovalev_D 23:12e6183f04d4 59 .long __cs3_reset /* Reset Handler */
Kovalev_D 23:12e6183f04d4 60 .long NMI_Handler /* NMI Handler */
Kovalev_D 23:12e6183f04d4 61 .long HardFault_Handler /* Hard Fault Handler */
Kovalev_D 23:12e6183f04d4 62 .long MemManage_Handler /* MPU Fault Handler */
Kovalev_D 23:12e6183f04d4 63 .long BusFault_Handler /* Bus Fault Handler */
Kovalev_D 23:12e6183f04d4 64 .long UsageFault_Handler /* Usage Fault Handler */
Kovalev_D 23:12e6183f04d4 65 .long 0 /* Reserved */
Kovalev_D 23:12e6183f04d4 66 .long 0 /* Reserved */
Kovalev_D 23:12e6183f04d4 67 .long 0 /* Reserved */
Kovalev_D 23:12e6183f04d4 68 .long 0 /* Reserved */
Kovalev_D 23:12e6183f04d4 69 .long SVC_Handler /* SVCall Handler */
Kovalev_D 23:12e6183f04d4 70 .long DebugMon_Handler /* Debug Monitor Handler */
Kovalev_D 23:12e6183f04d4 71 .long 0 /* Reserved */
Kovalev_D 23:12e6183f04d4 72 .long PendSV_Handler /* PendSV Handler */
Kovalev_D 23:12e6183f04d4 73 .long SysTick_Handler /* SysTick Handler */
Kovalev_D 23:12e6183f04d4 74
Kovalev_D 23:12e6183f04d4 75 /* External Interrupts */
Kovalev_D 23:12e6183f04d4 76 .long WAKEUP_IRQHandler /* 16+ 0: Wakeup PIO0.0 */
Kovalev_D 23:12e6183f04d4 77 .long WAKEUP_IRQHandler /* 16+ 1: Wakeup PIO0.1 */
Kovalev_D 23:12e6183f04d4 78 .long WAKEUP_IRQHandler /* 16+ 2: Wakeup PIO0.2 */
Kovalev_D 23:12e6183f04d4 79 .long WAKEUP_IRQHandler /* 16+ 3: Wakeup PIO0.3 */
Kovalev_D 23:12e6183f04d4 80 .long WAKEUP_IRQHandler /* 16+ 4: Wakeup PIO0.4 */
Kovalev_D 23:12e6183f04d4 81 .long WAKEUP_IRQHandler /* 16+ 5: Wakeup PIO0.5 */
Kovalev_D 23:12e6183f04d4 82 .long WAKEUP_IRQHandler /* 16+ 6: Wakeup PIO0.6 */
Kovalev_D 23:12e6183f04d4 83 .long WAKEUP_IRQHandler /* 16+ 7: Wakeup PIO0.7 */
Kovalev_D 23:12e6183f04d4 84 .long WAKEUP_IRQHandler /* 16+ 8: Wakeup PIO0.8 */
Kovalev_D 23:12e6183f04d4 85 .long WAKEUP_IRQHandler /* 16+ 9: Wakeup PIO0.9 */
Kovalev_D 23:12e6183f04d4 86 .long WAKEUP_IRQHandler /* 16+10: Wakeup PIO0.10 */
Kovalev_D 23:12e6183f04d4 87 .long WAKEUP_IRQHandler /* 16+11: Wakeup PIO0.11 */
Kovalev_D 23:12e6183f04d4 88 .long WAKEUP_IRQHandler /* 16+12: Wakeup PIO1.0 */
Kovalev_D 23:12e6183f04d4 89 .long WAKEUP_IRQHandler /* 16+13: Wakeup PIO1.1 */
Kovalev_D 23:12e6183f04d4 90 .long WAKEUP_IRQHandler /* 16+14: Wakeup PIO1.2 */
Kovalev_D 23:12e6183f04d4 91 .long WAKEUP_IRQHandler /* 16+15: Wakeup PIO1.3 */
Kovalev_D 23:12e6183f04d4 92 .long WAKEUP_IRQHandler /* 16+16: Wakeup PIO1.4 */
Kovalev_D 23:12e6183f04d4 93 .long WAKEUP_IRQHandler /* 16+17: Wakeup PIO1.5 */
Kovalev_D 23:12e6183f04d4 94 .long WAKEUP_IRQHandler /* 16+18: Wakeup PIO1.6 */
Kovalev_D 23:12e6183f04d4 95 .long WAKEUP_IRQHandler /* 16+19: Wakeup PIO1.7 */
Kovalev_D 23:12e6183f04d4 96 .long WAKEUP_IRQHandler /* 16+20: Wakeup PIO1.8 */
Kovalev_D 23:12e6183f04d4 97 .long WAKEUP_IRQHandler /* 16+21: Wakeup PIO1.9 */
Kovalev_D 23:12e6183f04d4 98 .long WAKEUP_IRQHandler /* 16+22: Wakeup PIO1.10 */
Kovalev_D 23:12e6183f04d4 99 .long WAKEUP_IRQHandler /* 16+23: Wakeup PIO1.11 */
Kovalev_D 23:12e6183f04d4 100 .long WAKEUP_IRQHandler /* 16+24: Wakeup PIO2.0 */
Kovalev_D 23:12e6183f04d4 101 .long WAKEUP_IRQHandler /* 16+25: Wakeup PIO2.1 */
Kovalev_D 23:12e6183f04d4 102 .long WAKEUP_IRQHandler /* 16+26: Wakeup PIO2.2 */
Kovalev_D 23:12e6183f04d4 103 .long WAKEUP_IRQHandler /* 16+27: Wakeup PIO2.3 */
Kovalev_D 23:12e6183f04d4 104 .long WAKEUP_IRQHandler /* 16+28: Wakeup PIO2.4 */
Kovalev_D 23:12e6183f04d4 105 .long WAKEUP_IRQHandler /* 16+29: Wakeup PIO2.5 */
Kovalev_D 23:12e6183f04d4 106 .long WAKEUP_IRQHandler /* 16+30: Wakeup PIO2.6 */
Kovalev_D 23:12e6183f04d4 107 .long WAKEUP_IRQHandler /* 16+31: Wakeup PIO2.7 */
Kovalev_D 23:12e6183f04d4 108 .long WAKEUP_IRQHandler /* 16+32: Wakeup PIO2.8 */
Kovalev_D 23:12e6183f04d4 109 .long WAKEUP_IRQHandler /* 16+33: Wakeup PIO2.9 */
Kovalev_D 23:12e6183f04d4 110 .long WAKEUP_IRQHandler /* 16+34: Wakeup PIO2.10 */
Kovalev_D 23:12e6183f04d4 111 .long WAKEUP_IRQHandler /* 16+35: Wakeup PIO2.11 */
Kovalev_D 23:12e6183f04d4 112 .long WAKEUP_IRQHandler /* 16+36: Wakeup PIO3.0 */
Kovalev_D 23:12e6183f04d4 113 .long WAKEUP_IRQHandler /* 16+37: Wakeup PIO3.1 */
Kovalev_D 23:12e6183f04d4 114 .long WAKEUP_IRQHandler /* 16+38: Wakeup PIO3.2 */
Kovalev_D 23:12e6183f04d4 115 .long WAKEUP_IRQHandler /* 16+39: Wakeup PIO3.3 */
Kovalev_D 23:12e6183f04d4 116 .long I2C_IRQHandler /* 16+40: I2C */
Kovalev_D 23:12e6183f04d4 117 .long TIMER16_0_IRQHandler /* 16+41: 16-bit Counter-Timer 0 */
Kovalev_D 23:12e6183f04d4 118 .long TIMER16_1_IRQHandler /* 16+42: 16-bit Counter-Timer 1 */
Kovalev_D 23:12e6183f04d4 119 .long TIMER32_0_IRQHandler /* 16+43: 32-bit Counter-Timer 0 */
Kovalev_D 23:12e6183f04d4 120 .long TIMER32_1_IRQHandler /* 16+44: 32-bit Counter-Timer 1 */
Kovalev_D 23:12e6183f04d4 121 .long SSP_IRQHandler /* 16+45: SSP */
Kovalev_D 23:12e6183f04d4 122 .long UART_IRQHandler /* 16+46: UART */
Kovalev_D 23:12e6183f04d4 123 .long USB_IRQHandler /* 16+47: USB IRQ */
Kovalev_D 23:12e6183f04d4 124 .long USB_FIQHandler /* 16+48: USB FIQ */
Kovalev_D 23:12e6183f04d4 125 .long ADC_IRQHandler /* 16+49: A/D Converter */
Kovalev_D 23:12e6183f04d4 126 .long WDT_IRQHandler /* 16+50: Watchdog Timer */
Kovalev_D 23:12e6183f04d4 127 .long BOD_IRQHandler /* 16+51: Brown Out Detect */
Kovalev_D 23:12e6183f04d4 128 .long FMC_IRQHandler /* 16+52: IP2111 Flash Memory */
Kovalev_D 23:12e6183f04d4 129 .long PIOINT3_IRQHandler /* 16+53: PIO INT3 */
Kovalev_D 23:12e6183f04d4 130 .long PIOINT2_IRQHandler /* 16+54: PIO INT2 */
Kovalev_D 23:12e6183f04d4 131 .long PIOINT1_IRQHandler /* 16+55: PIO INT1 */
Kovalev_D 23:12e6183f04d4 132 .long PIOINT0_IRQHandler /* 16+56: PIO INT0 */
Kovalev_D 23:12e6183f04d4 133
Kovalev_D 23:12e6183f04d4 134 .size __cs3_interrupt_vector_cortex_m, . - __cs3_interrupt_vector_cortex_m
Kovalev_D 23:12e6183f04d4 135
Kovalev_D 23:12e6183f04d4 136
Kovalev_D 23:12e6183f04d4 137 .thumb
Kovalev_D 23:12e6183f04d4 138
Kovalev_D 23:12e6183f04d4 139
Kovalev_D 23:12e6183f04d4 140 /* Reset Handler */
Kovalev_D 23:12e6183f04d4 141
Kovalev_D 23:12e6183f04d4 142 .section .cs3.reset,"x",%progbits
Kovalev_D 23:12e6183f04d4 143 .thumb_func
Kovalev_D 23:12e6183f04d4 144 .globl __cs3_reset_cortex_m
Kovalev_D 23:12e6183f04d4 145 .type __cs3_reset_cortex_m, %function
Kovalev_D 23:12e6183f04d4 146 __cs3_reset_cortex_m:
Kovalev_D 23:12e6183f04d4 147 .fnstart
Kovalev_D 23:12e6183f04d4 148 LDR R0, =SystemInit
Kovalev_D 23:12e6183f04d4 149 BLX R0
Kovalev_D 23:12e6183f04d4 150 LDR R0,=_start
Kovalev_D 23:12e6183f04d4 151 BX R0
Kovalev_D 23:12e6183f04d4 152 .pool
Kovalev_D 23:12e6183f04d4 153 .cantunwind
Kovalev_D 23:12e6183f04d4 154 .fnend
Kovalev_D 23:12e6183f04d4 155 .size __cs3_reset_cortex_m,.-__cs3_reset_cortex_m
Kovalev_D 23:12e6183f04d4 156
Kovalev_D 23:12e6183f04d4 157 .section ".text"
Kovalev_D 23:12e6183f04d4 158
Kovalev_D 23:12e6183f04d4 159 /* Exception Handlers */
Kovalev_D 23:12e6183f04d4 160
Kovalev_D 23:12e6183f04d4 161 .weak NMI_Handler
Kovalev_D 23:12e6183f04d4 162 .type NMI_Handler, %function
Kovalev_D 23:12e6183f04d4 163 NMI_Handler:
Kovalev_D 23:12e6183f04d4 164 B .
Kovalev_D 23:12e6183f04d4 165 .size NMI_Handler, . - NMI_Handler
Kovalev_D 23:12e6183f04d4 166
Kovalev_D 23:12e6183f04d4 167 .weak HardFault_Handler
Kovalev_D 23:12e6183f04d4 168 .type HardFault_Handler, %function
Kovalev_D 23:12e6183f04d4 169 HardFault_Handler:
Kovalev_D 23:12e6183f04d4 170 B .
Kovalev_D 23:12e6183f04d4 171 .size HardFault_Handler, . - HardFault_Handler
Kovalev_D 23:12e6183f04d4 172
Kovalev_D 23:12e6183f04d4 173 .weak MemManage_Handler
Kovalev_D 23:12e6183f04d4 174 .type MemManage_Handler, %function
Kovalev_D 23:12e6183f04d4 175 MemManage_Handler:
Kovalev_D 23:12e6183f04d4 176 B .
Kovalev_D 23:12e6183f04d4 177 .size MemManage_Handler, . - MemManage_Handler
Kovalev_D 23:12e6183f04d4 178
Kovalev_D 23:12e6183f04d4 179 .weak BusFault_Handler
Kovalev_D 23:12e6183f04d4 180 .type BusFault_Handler, %function
Kovalev_D 23:12e6183f04d4 181 BusFault_Handler:
Kovalev_D 23:12e6183f04d4 182 B .
Kovalev_D 23:12e6183f04d4 183 .size BusFault_Handler, . - BusFault_Handler
Kovalev_D 23:12e6183f04d4 184
Kovalev_D 23:12e6183f04d4 185 .weak UsageFault_Handler
Kovalev_D 23:12e6183f04d4 186 .type UsageFault_Handler, %function
Kovalev_D 23:12e6183f04d4 187 UsageFault_Handler:
Kovalev_D 23:12e6183f04d4 188 B .
Kovalev_D 23:12e6183f04d4 189 .size UsageFault_Handler, . - UsageFault_Handler
Kovalev_D 23:12e6183f04d4 190
Kovalev_D 23:12e6183f04d4 191 .weak SVC_Handler
Kovalev_D 23:12e6183f04d4 192 .type SVC_Handler, %function
Kovalev_D 23:12e6183f04d4 193 SVC_Handler:
Kovalev_D 23:12e6183f04d4 194 B .
Kovalev_D 23:12e6183f04d4 195 .size SVC_Handler, . - SVC_Handler
Kovalev_D 23:12e6183f04d4 196
Kovalev_D 23:12e6183f04d4 197 .weak DebugMon_Handler
Kovalev_D 23:12e6183f04d4 198 .type DebugMon_Handler, %function
Kovalev_D 23:12e6183f04d4 199 DebugMon_Handler:
Kovalev_D 23:12e6183f04d4 200 B .
Kovalev_D 23:12e6183f04d4 201 .size DebugMon_Handler, . - DebugMon_Handler
Kovalev_D 23:12e6183f04d4 202
Kovalev_D 23:12e6183f04d4 203 .weak PendSV_Handler
Kovalev_D 23:12e6183f04d4 204 .type PendSV_Handler, %function
Kovalev_D 23:12e6183f04d4 205 PendSV_Handler:
Kovalev_D 23:12e6183f04d4 206 B .
Kovalev_D 23:12e6183f04d4 207 .size PendSV_Handler, . - PendSV_Handler
Kovalev_D 23:12e6183f04d4 208
Kovalev_D 23:12e6183f04d4 209 .weak SysTick_Handler
Kovalev_D 23:12e6183f04d4 210 .type SysTick_Handler, %function
Kovalev_D 23:12e6183f04d4 211 SysTick_Handler:
Kovalev_D 23:12e6183f04d4 212 B .
Kovalev_D 23:12e6183f04d4 213 .size SysTick_Handler, . - SysTick_Handler
Kovalev_D 23:12e6183f04d4 214
Kovalev_D 23:12e6183f04d4 215
Kovalev_D 23:12e6183f04d4 216 /* IRQ Handlers */
Kovalev_D 23:12e6183f04d4 217
Kovalev_D 23:12e6183f04d4 218 .globl Default_Handler
Kovalev_D 23:12e6183f04d4 219 .type Default_Handler, %function
Kovalev_D 23:12e6183f04d4 220 Default_Handler:
Kovalev_D 23:12e6183f04d4 221 B .
Kovalev_D 23:12e6183f04d4 222 .size Default_Handler, . - Default_Handler
Kovalev_D 23:12e6183f04d4 223
Kovalev_D 23:12e6183f04d4 224 .macro IRQ handler
Kovalev_D 23:12e6183f04d4 225 .weak \handler
Kovalev_D 23:12e6183f04d4 226 .set \handler, Default_Handler
Kovalev_D 23:12e6183f04d4 227 .endm
Kovalev_D 23:12e6183f04d4 228
Kovalev_D 23:12e6183f04d4 229 IRQ WAKEUP_IRQHandler
Kovalev_D 23:12e6183f04d4 230 IRQ I2C_IRQHandler
Kovalev_D 23:12e6183f04d4 231 IRQ TIMER16_0_IRQHandler
Kovalev_D 23:12e6183f04d4 232 IRQ TIMER16_1_IRQHandler
Kovalev_D 23:12e6183f04d4 233 IRQ TIMER32_0_IRQHandler
Kovalev_D 23:12e6183f04d4 234 IRQ TIMER32_1_IRQHandler
Kovalev_D 23:12e6183f04d4 235 IRQ SSP_IRQHandler
Kovalev_D 23:12e6183f04d4 236 IRQ UART_IRQHandler
Kovalev_D 23:12e6183f04d4 237 IRQ USB_IRQHandler
Kovalev_D 23:12e6183f04d4 238 IRQ USB_FIQHandler
Kovalev_D 23:12e6183f04d4 239 IRQ ADC_IRQHandler
Kovalev_D 23:12e6183f04d4 240 IRQ WDT_IRQHandler
Kovalev_D 23:12e6183f04d4 241 IRQ BOD_IRQHandler
Kovalev_D 23:12e6183f04d4 242 IRQ FMC_IRQHandler
Kovalev_D 23:12e6183f04d4 243 IRQ PIOINT3_IRQHandler
Kovalev_D 23:12e6183f04d4 244 IRQ PIOINT2_IRQHandler
Kovalev_D 23:12e6183f04d4 245 IRQ PIOINT1_IRQHandler
Kovalev_D 23:12e6183f04d4 246 IRQ PIOINT0_IRQHandler
Kovalev_D 23:12e6183f04d4 247
Kovalev_D 23:12e6183f04d4 248 .end