--- /dev/null
+/*
+ * This is an ARM Cortex-M3 startup file for the NXP LPC1768.
+ *
+ * TODO: Add vendor (NXP) specific interrupt vectors.
+ *
+ * See also: http://bitbucket.org/jpc/lpc1768/
+ *
+ * Copyright (c) 2010 LoEE - Jakub Piotr Cłapa
+ * This program is released under the new BSD license.
+ */
+#include "CMSIS/LPC17xx.h"
+
+// Dummy handler.
+void Default_Handler (void) { while (1); }
+
+// Weakly bind all interrupt vectors to the dummy handler.
+void __attribute__((weak)) Reset_Handler(void);
+void __attribute__((weak)) NMI_Handler(void);
+void __attribute__((weak)) HardFault_Handler(void);
+void __attribute__((weak)) MemManage_Handler(void);
+void __attribute__((weak)) BusFault_Handler(void);
+void __attribute__((weak)) UsageFault_Handler(void);
+void __attribute__((weak)) SVC_Handler(void);
+void __attribute__((weak)) DebugMon_Handler(void);
+void __attribute__((weak)) PendSV_Handler(void);
+void __attribute__((weak)) SysTick_Handler(void);
+#pragma weak NMI_Handler = Default_Handler
+#pragma weak HardFault_Handler = Default_Handler
+#pragma weak MemManage_Handler = Default_Handler
+#pragma weak BusFault_Handler = Default_Handler
+#pragma weak UsageFault_Handler = Default_Handler
+#pragma weak SVC_Handler = Default_Handler
+#pragma weak DebugMon_Handler = Default_Handler
+#pragma weak PendSV_Handler = Default_Handler
+#pragma weak SysTick_Handler = Default_Handler
+
+// Start of the stack (last RAM address; exported in the linker script)
+extern void _sstack;
+
+// The signature of Cortex-M3 interrupt handlers.
+typedef void (* const Interrupt_Handler_P)(void);
+
+// Interrupt vectors table
+__attribute__ ((section(".cs3.interrupt_vector")))
+Interrupt_Handler_P interrupt_vectors[] = {
+ &_sstack, // the first word contains the initial
+ // stack pointer the hardware loads it
+ // to the SP register before the first
+ // instruction
+ // Standard Cortex-M3 interrupts:
+ Reset_Handler,
+ NMI_Handler,
+ HardFault_Handler,
+ MemManage_Handler,
+ BusFault_Handler,
+ UsageFault_Handler,
+ 0xefff7d26,
+ 0,
+ 0,
+ 0,
+ SVC_Handler,
+ DebugMon_Handler,
+ 0,
+ PendSV_Handler,
+ SysTick_Handler,
+ // Vendor specific interrupts for LPC1768:
+};
+
+extern int main (void);
+
+extern uint32_t _etext, _sdata, _edata, _sbss, _ebss;
+
+void
+Reset_Handler(void)
+{
+ // Initialize clocks
+ SystemInit ();
+
+ uint32_t *s, *d;
+ // Copy initialization data to RAM (.data section)
+ s = &_etext;
+ d = &_sdata;
+ while (d < &_edata) *d++ = *s++;
+ // Zero the remaining allocated RAM (.bss section)
+ d = &_sbss;
+ while (d < &_ebss) *d++ = 0;
+
+ // Everything is ready. Run the user program.
+ main();
+ while (1);
+}