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)
87 #if defined(CHIP_LPC110X)
89 void TIMER16_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
91 void TIMER32_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
92 void SSP0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
97 void PIOINT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
98 void PIOINT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
99 void WAKEUP_IRQHandler (
void)
ALIAS(IntDefaultHandler);
101 #elif defined(CHIP_LPC11XXLV)
103 void TIMER16_0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
104 void TIMER16_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
106 void TIMER32_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
107 void SSP0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
112 void FMC_IRQHandler (
void)
ALIAS(IntDefaultHandler);
113 void PIOINT3_IRQHandler (
void)
ALIAS(IntDefaultHandler);
114 void PIOINT2_IRQHandler (
void)
ALIAS(IntDefaultHandler);
115 void PIOINT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
116 void PIOINT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
117 void WAKEUP_IRQHandler (
void)
ALIAS(IntDefaultHandler);
119 #elif defined(CHIP_LPC11AXX)
120 void PIN_INT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
121 void PIN_INT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
122 void PIN_INT2_IRQHandler (
void)
ALIAS(IntDefaultHandler);
123 void PIN_INT3_IRQHandler (
void)
ALIAS(IntDefaultHandler);
124 void PIN_INT4_IRQHandler (
void)
ALIAS(IntDefaultHandler);
125 void PIN_INT5_IRQHandler (
void)
ALIAS(IntDefaultHandler);
126 void PIN_INT6_IRQHandler (
void)
ALIAS(IntDefaultHandler);
127 void PIN_INT7_IRQHandler (
void)
ALIAS(IntDefaultHandler);
128 void GINT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
129 void GINT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
130 void ACMP_IRQHandler (
void)
ALIAS(IntDefaultHandler);
132 void SSP1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
134 void TIMER16_0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
135 void TIMER16_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
137 void TIMER32_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
138 void SSP0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
139 void USART_IRQHandler (
void)
ALIAS(IntDefaultHandler);
143 void FMC_IRQHandler (
void)
ALIAS(IntDefaultHandler);
145 #elif defined(CHIP_LPC11CXX)
147 void SSP1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
149 void TIMER16_0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
150 void TIMER16_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
152 void TIMER32_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
153 void SSP0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
158 void PIOINT3_IRQHandler (
void)
ALIAS(IntDefaultHandler);
159 void PIOINT2_IRQHandler (
void)
ALIAS(IntDefaultHandler);
160 void PIOINT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
161 void PIOINT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
162 void WAKEUP_IRQHandler (
void)
ALIAS(IntDefaultHandler);
164 #elif defined(CHIP_LPC11EXX)
165 void FLEX_INT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
166 void FLEX_INT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
167 void FLEX_INT2_IRQHandler (
void)
ALIAS(IntDefaultHandler);
168 void FLEX_INT3_IRQHandler (
void)
ALIAS(IntDefaultHandler);
169 void FLEX_INT4_IRQHandler (
void)
ALIAS(IntDefaultHandler);
170 void FLEX_INT5_IRQHandler (
void)
ALIAS(IntDefaultHandler);
171 void FLEX_INT6_IRQHandler (
void)
ALIAS(IntDefaultHandler);
172 void FLEX_INT7_IRQHandler (
void)
ALIAS(IntDefaultHandler);
173 void GINT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
174 void GINT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
175 void SSP1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
177 void TIMER16_0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
178 void TIMER16_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
180 void TIMER32_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
181 void SSP0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
186 void FMC_IRQHandler (
void)
ALIAS(IntDefaultHandler);
188 #elif defined(CHIP_LPC11UXX)
189 void FLEX_INT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
190 void FLEX_INT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
191 void FLEX_INT2_IRQHandler (
void)
ALIAS(IntDefaultHandler);
192 void FLEX_INT3_IRQHandler (
void)
ALIAS(IntDefaultHandler);
193 void FLEX_INT4_IRQHandler (
void)
ALIAS(IntDefaultHandler);
194 void FLEX_INT5_IRQHandler (
void)
ALIAS(IntDefaultHandler);
195 void FLEX_INT6_IRQHandler (
void)
ALIAS(IntDefaultHandler);
196 void FLEX_INT7_IRQHandler (
void)
ALIAS(IntDefaultHandler);
197 void GINT0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
198 void GINT1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
199 void SSP1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
201 void TIMER16_0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
202 void TIMER16_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
204 void TIMER32_1_IRQHandler (
void)
ALIAS(IntDefaultHandler);
205 void SSP0_IRQHandler (
void)
ALIAS(IntDefaultHandler);
207 void USB_IRQHandler (
void)
ALIAS(IntDefaultHandler);
208 void USB_FIQHandler (
void)
ALIAS(IntDefaultHandler);
212 void FMC_IRQHandler (
void)
ALIAS(IntDefaultHandler);
213 void USBWakeup_IRQHandler (
void)
ALIAS(IntDefaultHandler);
216 #error No CHIP_11* device defined
232 #if defined (__REDLIB__)
233 extern void __main(
void);
235 extern int main(
void);
241 extern void _vStackTop(
void);
244 #if defined (__cplusplus)
254 extern void (*
const g_pfnVectors[])(void);
255 __attribute__ ((section(
".isr_vector")))
256 void (* const g_pfnVectors[])(
void) = {
274 #if defined(CHIP_LPC110X)
295 TIMER16_0_IRQHandler,
296 TIMER16_1_IRQHandler,
298 TIMER32_1_IRQHandler,
314 #elif defined(CHIP_LPC11XXLV)
336 TIMER16_0_IRQHandler,
337 TIMER16_1_IRQHandler,
339 TIMER32_1_IRQHandler,
355 #elif defined(CHIP_LPC11AXX)
373 TIMER16_0_IRQHandler,
374 TIMER16_1_IRQHandler,
376 TIMER32_1_IRQHandler,
390 #elif defined(CHIP_LPC11CXX)
411 TIMER16_0_IRQHandler,
412 TIMER16_1_IRQHandler,
414 TIMER32_1_IRQHandler,
430 #elif defined(CHIP_LPC11EXX)
432 FLEX_INT0_IRQHandler,
433 FLEX_INT1_IRQHandler,
434 FLEX_INT2_IRQHandler,
435 FLEX_INT3_IRQHandler,
436 FLEX_INT4_IRQHandler,
437 FLEX_INT5_IRQHandler,
438 FLEX_INT6_IRQHandler,
439 FLEX_INT7_IRQHandler,
448 TIMER16_0_IRQHandler,
449 TIMER16_1_IRQHandler,
451 TIMER32_1_IRQHandler,
465 #elif defined(CHIP_LPC11UXX)
467 FLEX_INT0_IRQHandler,
468 FLEX_INT1_IRQHandler,
469 FLEX_INT2_IRQHandler,
470 FLEX_INT3_IRQHandler,
471 FLEX_INT4_IRQHandler,
472 FLEX_INT5_IRQHandler,
473 FLEX_INT6_IRQHandler,
474 FLEX_INT7_IRQHandler,
483 TIMER16_0_IRQHandler,
484 TIMER16_1_IRQHandler,
486 TIMER32_1_IRQHandler,
497 USBWakeup_IRQHandler,
501 #error No CHIP_11* device defined
511 __attribute__ ((section(
".after_vectors")))
512 void data_init(
unsigned int romstart,
unsigned int start,
unsigned int len) {
513 unsigned int *pulDest = (
unsigned int*) start;
514 unsigned int *pulSrc = (
unsigned int*) romstart;
516 for (loop = 0; loop < len; loop = loop + 4)
517 *pulDest++ = *pulSrc++;
520 __attribute__ ((section(
".after_vectors")))
521 void bss_init(
unsigned int start,
unsigned int len) {
522 unsigned int *pulDest = (
unsigned int*) start;
524 for (loop = 0; loop < len; loop = loop + 4)
528 #ifndef USE_OLD_STYLE_DATA_BSS_INIT
536 extern unsigned int __data_section_table;
537 extern unsigned int __data_section_table_end;
538 extern unsigned int __bss_section_table;
539 extern unsigned int __bss_section_table_end;
552 extern unsigned int _etext;
553 extern unsigned int _data;
554 extern unsigned int _edata;
555 extern unsigned int _bss;
556 extern unsigned int _ebss;
565 __attribute__ ((section(
".after_vectors")))
569 #ifndef USE_OLD_STYLE_DATA_BSS_INIT
573 unsigned int LoadAddr, ExeAddr, SectionLen;
574 unsigned int *SectionTableAddr;
577 SectionTableAddr = &__data_section_table;
580 while (SectionTableAddr < &__data_section_table_end) {
581 LoadAddr = *SectionTableAddr++;
582 ExeAddr = *SectionTableAddr++;
583 SectionLen = *SectionTableAddr++;
584 data_init(LoadAddr, ExeAddr, SectionLen);
588 while (SectionTableAddr < &__bss_section_table_end) {
589 ExeAddr = *SectionTableAddr++;
590 SectionLen = *SectionTableAddr++;
591 bss_init(ExeAddr, SectionLen);
596 unsigned int * LoadAddr, *ExeAddr, *EndAddr, SectionLen;
602 SectionLen = (
void*)EndAddr - (
void*)ExeAddr;
603 data_init((
unsigned int)LoadAddr, (
unsigned int)ExeAddr, SectionLen);
607 SectionLen = (
void*)EndAddr - (
void*)ExeAddr;
608 bss_init ((
unsigned int)ExeAddr, SectionLen);
614 #if defined (__cplusplus)
621 #if defined (__REDLIB__)
639 __attribute__ ((section(
".after_vectors")))
646 __attribute__ ((section(
".after_vectors")))
653 __attribute__ ((section(
".after_vectors")))
660 __attribute__ ((section(
".after_vectors")))
667 __attribute__ ((section(
".after_vectors")))
681 __attribute__ ((section(
".after_vectors")))
682 void IntDefaultHandler(
void)