]>
git.gir.st - tmk_keyboard.git/blob - tmk_core/tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11U6X/TOOLCHAIN_GCC_ARM/TARGET_LPC11U68/startup_LPC11U68.cpp
5 #define WEAK __attribute__ ((weak))
6 #define ALIAS(f) __attribute__ ((weak, alias (#f)))
7 #define AFTER_VECTORS __attribute__ ((section(".after_vectors")))void ResetISR(void);
9 extern unsigned int __data_section_table
;
10 extern unsigned int __data_section_table_end
;
11 extern unsigned int __bss_section_table
;
12 extern unsigned int __bss_section_table_end
;
15 extern void __libc_init_array(void);
16 extern int main(void);
17 extern void _vStackTop(void);
18 extern void (* const g_pfnVectors
[])(void);
21 WEAK
void NMI_Handler(void);
22 WEAK
void HardFault_Handler(void);
23 WEAK
void SVC_Handler(void);
24 WEAK
void PendSV_Handler(void);
25 WEAK
void SysTick_Handler(void);
26 WEAK
void IntDefaultHandler(void);
28 void PIN_INT0_IRQHandler (void) ALIAS(IntDefaultHandler
);
29 void PIN_INT1_IRQHandler (void) ALIAS(IntDefaultHandler
);
30 void PIN_INT2_IRQHandler (void) ALIAS(IntDefaultHandler
);
31 void PIN_INT3_IRQHandler (void) ALIAS(IntDefaultHandler
);
32 void PIN_INT4_IRQHandler (void) ALIAS(IntDefaultHandler
);
33 void PIN_INT5_IRQHandler (void) ALIAS(IntDefaultHandler
);
34 void PIN_INT6_IRQHandler (void) ALIAS(IntDefaultHandler
);
35 void PIN_INT7_IRQHandler (void) ALIAS(IntDefaultHandler
);
36 void GINT0_IRQHandler (void) ALIAS(IntDefaultHandler
);
37 void GINT1_IRQHandler (void) ALIAS(IntDefaultHandler
);
38 void I2C1_IRQHandler (void) ALIAS(IntDefaultHandler
);
39 void USART1_4_IRQHandler (void) ALIAS(IntDefaultHandler
);
40 void USART2_3_IRQHandler (void) ALIAS(IntDefaultHandler
);
41 void SCT0_1_IRQHandler (void) ALIAS(IntDefaultHandler
);
42 void SSP1_IRQHandler (void) ALIAS(IntDefaultHandler
);
43 void I2C0_IRQHandler (void) ALIAS(IntDefaultHandler
);
44 void TIMER16_0_IRQHandler (void) ALIAS(IntDefaultHandler
);
45 void TIMER16_1_IRQHandler (void) ALIAS(IntDefaultHandler
);
46 void TIMER32_0_IRQHandler (void) ALIAS(IntDefaultHandler
);
47 void TIMER32_1_IRQHandler (void) ALIAS(IntDefaultHandler
);
48 void SSP0_IRQHandler (void) ALIAS(IntDefaultHandler
);
49 void USART0_IRQHandler (void) ALIAS(IntDefaultHandler
);
50 void USB_IRQHandler (void) ALIAS(IntDefaultHandler
);
51 void USB_FIQHandler (void) ALIAS(IntDefaultHandler
);
52 void ADCA_IRQHandler (void) ALIAS(IntDefaultHandler
);
53 void RTC_IRQHandler (void) ALIAS(IntDefaultHandler
);
54 void BOD_WDT_IRQHandler (void) ALIAS(IntDefaultHandler
);
55 void FMC_IRQHandler (void) ALIAS(IntDefaultHandler
);
56 void DMA_IRQHandler (void) ALIAS(IntDefaultHandler
);
57 void ADCB_IRQHandler (void) ALIAS(IntDefaultHandler
);
58 void USBWakeup_IRQHandler (void) ALIAS(IntDefaultHandler
);
60 __attribute__ ((section(".isr_vector")))
61 void (* const g_pfnVectors
[])(void) = {
63 &_vStackTop
, // The initial stack pointer
64 ResetISR
, // The reset handler
65 NMI_Handler
, // The NMI handler
66 HardFault_Handler
, // The hard fault handler
74 SVC_Handler
, // SVCall handler
77 PendSV_Handler
, // The PendSV handler
78 SysTick_Handler
, // The SysTick handler
80 // Chip Level - LPC11U68
81 PIN_INT0_IRQHandler
, // 0 - GPIO pin interrupt 0
82 PIN_INT1_IRQHandler
, // 1 - GPIO pin interrupt 1
83 PIN_INT2_IRQHandler
, // 2 - GPIO pin interrupt 2
84 PIN_INT3_IRQHandler
, // 3 - GPIO pin interrupt 3
85 PIN_INT4_IRQHandler
, // 4 - GPIO pin interrupt 4
86 PIN_INT5_IRQHandler
, // 5 - GPIO pin interrupt 5
87 PIN_INT6_IRQHandler
, // 6 - GPIO pin interrupt 6
88 PIN_INT7_IRQHandler
, // 7 - GPIO pin interrupt 7
89 GINT0_IRQHandler
, // 8 - GPIO GROUP0 interrupt
90 GINT1_IRQHandler
, // 9 - GPIO GROUP1 interrupt
91 I2C1_IRQHandler
, // 10 - I2C1
92 USART1_4_IRQHandler
, // 11 - combined USART1 & 4 interrupt
93 USART2_3_IRQHandler
, // 12 - combined USART2 & 3 interrupt
94 SCT0_1_IRQHandler
, // 13 - combined SCT0 and 1 interrupt
95 SSP1_IRQHandler
, // 14 - SPI/SSP1 Interrupt
96 I2C0_IRQHandler
, // 15 - I2C0
97 TIMER16_0_IRQHandler
, // 16 - CT16B0 (16-bit Timer 0)
98 TIMER16_1_IRQHandler
, // 17 - CT16B1 (16-bit Timer 1)
99 TIMER32_0_IRQHandler
, // 18 - CT32B0 (32-bit Timer 0)
100 TIMER32_1_IRQHandler
, // 19 - CT32B1 (32-bit Timer 1)
101 SSP0_IRQHandler
, // 20 - SPI/SSP0 Interrupt
102 USART0_IRQHandler
, // 21 - USART0
103 USB_IRQHandler
, // 22 - USB IRQ
104 USB_FIQHandler
, // 23 - USB FIQ
105 ADCA_IRQHandler
, // 24 - ADC A(A/D Converter)
106 RTC_IRQHandler
, // 25 - Real Time CLock interrpt
107 BOD_WDT_IRQHandler
, // 25 - Combined Brownout/Watchdog interrupt
108 FMC_IRQHandler
, // 27 - IP2111 Flash Memory Controller
109 DMA_IRQHandler
, // 28 - DMA interrupt
110 ADCB_IRQHandler
, // 24 - ADC B (A/D Converter)
111 USBWakeup_IRQHandler
, // 30 - USB wake-up interrupt
116 AFTER_VECTORS
void data_init(unsigned int romstart
, unsigned int start
, unsigned int len
) {
117 unsigned int *pulDest
= (unsigned int*) start
;
118 unsigned int *pulSrc
= (unsigned int*) romstart
;
120 for (loop
= 0; loop
< len
; loop
= loop
+ 4) *pulDest
++ = *pulSrc
++;
123 AFTER_VECTORS
void bss_init(unsigned int start
, unsigned int len
) {
124 unsigned int *pulDest
= (unsigned int*) start
;
126 for (loop
= 0; loop
< len
; loop
= loop
+ 4) *pulDest
++ = 0;
130 /* Reset entry point*/
131 extern "C" void software_init_hook(void) __attribute__((weak
));
133 AFTER_VECTORS
void ResetISR(void) {
134 unsigned int LoadAddr
, ExeAddr
, SectionLen
;
135 unsigned int *SectionTableAddr
;
137 SectionTableAddr
= &__data_section_table
;
139 while (SectionTableAddr
< &__data_section_table_end
) {
140 LoadAddr
= *SectionTableAddr
++;
141 ExeAddr
= *SectionTableAddr
++;
142 SectionLen
= *SectionTableAddr
++;
143 data_init(LoadAddr
, ExeAddr
, SectionLen
);
145 while (SectionTableAddr
< &__bss_section_table_end
) {
146 ExeAddr
= *SectionTableAddr
++;
147 SectionLen
= *SectionTableAddr
++;
148 bss_init(ExeAddr
, SectionLen
);
152 if (software_init_hook
)
153 software_init_hook();
161 AFTER_VECTORS
void NMI_Handler (void) {}
162 AFTER_VECTORS
void HardFault_Handler (void) {}
163 AFTER_VECTORS
void MemManage_Handler (void) {}
164 AFTER_VECTORS
void BusFault_Handler (void) {}
165 AFTER_VECTORS
void UsageFault_Handler(void) {}
166 AFTER_VECTORS
void SVC_Handler (void) {}
167 AFTER_VECTORS
void DebugMon_Handler (void) {}
168 AFTER_VECTORS
void PendSV_Handler (void) {}
169 AFTER_VECTORS
void SysTick_Handler (void) {}
170 AFTER_VECTORS
void IntDefaultHandler (void) {}
172 int __aeabi_atexit(void *object
, void (*destructor
)(void *), void *dso_handle
) {return 0;}
177 void *operator new(size_t size
) {return malloc(size
);}
178 void *operator new[](size_t size
){return malloc(size
);}
180 void operator delete(void *p
) {free(p
);}
181 void operator delete[](void *p
) {free(p
);}