30 #if defined (__cplusplus)
32 #error Redlib does not support C++
40 extern void __libc_init_array(
void);
45 #define WEAK __attribute__ ((weak))
46 #define ALIAS(f) __attribute__ ((weak, alias (#f)))
48 #include "sys_config.h"
55 #if defined (__cplusplus)
83 #if defined(CHIP_LPC110X)
85 void TIMER16_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
87 void TIMER32_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
88 void SSP0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
93 void PIOINT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
94 void PIOINT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
95 void WAKEUP_IRQHandler (
void)
ALIAS(IntDefaultHandler);
97 #elif defined(CHIP_LPC11XXLV)
99 void TIMER16_0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
100 void TIMER16_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
102 void TIMER32_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
103 void SSP0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
108 void FMC_IRQHandler (
void)
ALIAS(IntDefaultHandler);
109 void PIOINT3_IRQHandler (
void)
ALIAS(IntDefaultHandler);
110 void PIOINT2_IRQHandler (
void)
ALIAS(IntDefaultHandler);
111 void PIOINT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
112 void PIOINT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
113 void WAKEUP_IRQHandler (
void)
ALIAS(IntDefaultHandler);
115 #elif defined(CHIP_LPC11AXX)
116 void PIN_INT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
117 void PIN_INT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
118 void PIN_INT2_IRQHandler (
void)
ALIAS(IntDefaultHandler);
119 void PIN_INT3_IRQHandler (
void)
ALIAS(IntDefaultHandler);
120 void PIN_INT4_IRQHandler (
void)
ALIAS(IntDefaultHandler);
121 void PIN_INT5_IRQHandler (
void)
ALIAS(IntDefaultHandler);
122 void PIN_INT6_IRQHandler (
void)
ALIAS(IntDefaultHandler);
123 void PIN_INT7_IRQHandler (
void)
ALIAS(IntDefaultHandler);
124 void GINT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
125 void GINT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
126 void ACMP_IRQHandler (
void)
ALIAS(IntDefaultHandler);
128 void SSP1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
130 void TIMER16_0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
131 void TIMER16_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
133 void TIMER32_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
134 void SSP0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
135 void USART_IRQHandler (
void)
ALIAS(IntDefaultHandler);
139 void FMC_IRQHandler (
void)
ALIAS(IntDefaultHandler);
141 #elif defined(CHIP_LPC11CXX)
143 void SSP1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
145 void TIMER16_0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
146 void TIMER16_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
148 void TIMER32_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
149 void SSP0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
154 void PIOINT3_IRQHandler (
void)
ALIAS(IntDefaultHandler);
155 void PIOINT2_IRQHandler (
void)
ALIAS(IntDefaultHandler);
156 void PIOINT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
157 void PIOINT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
158 void WAKEUP_IRQHandler (
void)
ALIAS(IntDefaultHandler);
160 #elif defined(CHIP_LPC11EXX)
161 void FLEX_INT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
162 void FLEX_INT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
163 void FLEX_INT2_IRQHandler (
void)
ALIAS(IntDefaultHandler);
164 void FLEX_INT3_IRQHandler (
void)
ALIAS(IntDefaultHandler);
165 void FLEX_INT4_IRQHandler (
void)
ALIAS(IntDefaultHandler);
166 void FLEX_INT5_IRQHandler (
void)
ALIAS(IntDefaultHandler);
167 void FLEX_INT6_IRQHandler (
void)
ALIAS(IntDefaultHandler);
168 void FLEX_INT7_IRQHandler (
void)
ALIAS(IntDefaultHandler);
169 void GINT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
170 void GINT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
171 void SSP1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
173 void TIMER16_0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
174 void TIMER16_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
176 void TIMER32_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
177 void SSP0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
182 void FMC_IRQHandler (
void)
ALIAS(IntDefaultHandler);
184 #elif defined(CHIP_LPC11UXX)
185 void FLEX_INT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
186 void FLEX_INT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
187 void FLEX_INT2_IRQHandler (
void)
ALIAS(IntDefaultHandler);
188 void FLEX_INT3_IRQHandler (
void)
ALIAS(IntDefaultHandler);
189 void FLEX_INT4_IRQHandler (
void)
ALIAS(IntDefaultHandler);
190 void FLEX_INT5_IRQHandler (
void)
ALIAS(IntDefaultHandler);
191 void FLEX_INT6_IRQHandler (
void)
ALIAS(IntDefaultHandler);
192 void FLEX_INT7_IRQHandler (
void)
ALIAS(IntDefaultHandler);
193 void GINT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
194 void GINT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
195 void SSP1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
197 void TIMER16_0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
198 void TIMER16_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
200 void TIMER32_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
201 void SSP0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
203 void USB_IRQHandler (
void)
ALIAS(IntDefaultHandler);
204 void USB_FIQHandler (
void)
ALIAS(IntDefaultHandler);
208 void FMC_IRQHandler (
void)
ALIAS(IntDefaultHandler);
209 void USBWakeup_IRQHandler (
void)
ALIAS(IntDefaultHandler);
212 #error No CHIP_11* device defined
228 #if defined (__REDLIB__)
229 extern void __main(
void);
231 extern int main(
void);
237 extern void _vStackTop(
void);
240 #if defined (__cplusplus)
250 extern void (*
const g_pfnVectors[])(void);
251 __attribute__ ((section(
".isr_vector")))
252 void (* const g_pfnVectors[])(
void) = {
270 #if defined(CHIP_LPC110X)
291 TIMER16_0_IRQHandler,
292 TIMER16_1_IRQHandler,
294 TIMER32_1_IRQHandler,
310 #elif defined(CHIP_LPC11XXLV)
332 TIMER16_0_IRQHandler,
333 TIMER16_1_IRQHandler,
335 TIMER32_1_IRQHandler,
351 #elif defined(CHIP_LPC11AXX)
369 TIMER16_0_IRQHandler,
370 TIMER16_1_IRQHandler,
372 TIMER32_1_IRQHandler,
386 #elif defined(CHIP_LPC11CXX)
407 TIMER16_0_IRQHandler,
408 TIMER16_1_IRQHandler,
410 TIMER32_1_IRQHandler,
426 #elif defined(CHIP_LPC11EXX)
428 FLEX_INT0_IRQHandler,
429 FLEX_INT1_IRQHandler,
430 FLEX_INT2_IRQHandler,
431 FLEX_INT3_IRQHandler,
432 FLEX_INT4_IRQHandler,
433 FLEX_INT5_IRQHandler,
434 FLEX_INT6_IRQHandler,
435 FLEX_INT7_IRQHandler,
444 TIMER16_0_IRQHandler,
445 TIMER16_1_IRQHandler,
447 TIMER32_1_IRQHandler,
461 #elif defined(CHIP_LPC11UXX)
463 FLEX_INT0_IRQHandler,
464 FLEX_INT1_IRQHandler,
465 FLEX_INT2_IRQHandler,
466 FLEX_INT3_IRQHandler,
467 FLEX_INT4_IRQHandler,
468 FLEX_INT5_IRQHandler,
469 FLEX_INT6_IRQHandler,
470 FLEX_INT7_IRQHandler,
479 TIMER16_0_IRQHandler,
480 TIMER16_1_IRQHandler,
482 TIMER32_1_IRQHandler,
493 USBWakeup_IRQHandler,
497 #error No CHIP_11* device defined
507 __attribute__ ((section(
".after_vectors")))
508 void data_init(
unsigned int romstart,
unsigned int start,
unsigned int len) {
509 unsigned int *pulDest = (
unsigned int*) start;
510 unsigned int *pulSrc = (
unsigned int*) romstart;
512 for (loop = 0; loop < len; loop = loop + 4)
513 *pulDest++ = *pulSrc++;
516 __attribute__ ((section(
".after_vectors")))
517 void bss_init(
unsigned int start,
unsigned int len) {
518 unsigned int *pulDest = (
unsigned int*) start;
520 for (loop = 0; loop < len; loop = loop + 4)
524 #ifndef USE_OLD_STYLE_DATA_BSS_INIT
532 extern unsigned int __data_section_table;
533 extern unsigned int __data_section_table_end;
534 extern unsigned int __bss_section_table;
535 extern unsigned int __bss_section_table_end;
548 extern unsigned int _etext;
549 extern unsigned int _data;
550 extern unsigned int _edata;
551 extern unsigned int _bss;
552 extern unsigned int _ebss;
561 __attribute__ ((section(
".after_vectors")))
565 #ifndef USE_OLD_STYLE_DATA_BSS_INIT
569 unsigned int LoadAddr, ExeAddr, SectionLen;
570 unsigned int *SectionTableAddr;
573 SectionTableAddr = &__data_section_table;
576 while (SectionTableAddr < &__data_section_table_end) {
577 LoadAddr = *SectionTableAddr++;
578 ExeAddr = *SectionTableAddr++;
579 SectionLen = *SectionTableAddr++;
580 data_init(LoadAddr, ExeAddr, SectionLen);
584 while (SectionTableAddr < &__bss_section_table_end) {
585 ExeAddr = *SectionTableAddr++;
586 SectionLen = *SectionTableAddr++;
587 bss_init(ExeAddr, SectionLen);
592 unsigned int * LoadAddr, *ExeAddr, *EndAddr, SectionLen;
598 SectionLen = (
void*)EndAddr - (
void*)ExeAddr;
599 data_init((
unsigned int)LoadAddr, (
unsigned int)ExeAddr, SectionLen);
603 SectionLen = (
void*)EndAddr - (
void*)ExeAddr;
604 bss_init ((
unsigned int)ExeAddr, SectionLen);
610 #if defined (__cplusplus)
617 #if defined (__REDLIB__)
635 __attribute__ ((section(
".after_vectors")))
642 __attribute__ ((section(
".after_vectors")))
649 __attribute__ ((section(
".after_vectors")))
656 __attribute__ ((section(
".after_vectors")))
663 __attribute__ ((section(
".after_vectors")))
677 __attribute__ ((section(
".after_vectors")))
678 void IntDefaultHandler(
void)