diff options
| author | Pixel <pixel@nobis-crew.org> | 2011-01-23 17:23:32 -0800 | 
|---|---|---|
| committer | Pixel <pixel@nobis-crew.org> | 2011-01-23 17:23:32 -0800 | 
| commit | 47fb4c8b8803c5147e8f6c87d2206dadefc44b17 (patch) | |
| tree | d93a0192db884f45d3ca25eedf4c3598a4fe53dd /arch/arm/lpc17xx/startup.s | |
| parent | adf4971757ed7dfbfe3d940321448e50db9bdb0a (diff) | |
Shuffling a few files around, and adding assembly file support.
Diffstat (limited to 'arch/arm/lpc17xx/startup.s')
| -rw-r--r-- | arch/arm/lpc17xx/startup.s | 243 | 
1 files changed, 243 insertions, 0 deletions
| diff --git a/arch/arm/lpc17xx/startup.s b/arch/arm/lpc17xx/startup.s new file mode 100644 index 0000000..b195a18 --- /dev/null +++ b/arch/arm/lpc17xx/startup.s @@ -0,0 +1,243 @@ +/*****************************************************************************/ +/* startup_LPC17xx.s: Startup file for LPC17xx device series                 */ +/*****************************************************************************/ +/* Version: CodeSourcery Sourcery G++ Lite (with CS3)                        */ +/*****************************************************************************/ + + +/* +//*** <<< Use Configuration Wizard in Context Menu >>> *** +*/ + + +/* +// <h> Stack Configuration +//   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +// </h> +*/ + +    .equ    Stack_Size, 0x00000100 +    .section ".stack", "w" +    .align  3 +    .globl  __cs3_stack_mem +    .globl  __cs3_stack_size +__cs3_stack_mem: +    .if     Stack_Size +    .space  Stack_Size +    .endif +    .size   __cs3_stack_mem,  . - __cs3_stack_mem +    .set    __cs3_stack_size, . - __cs3_stack_mem + + +/* +// <h> Heap Configuration +//   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +// </h> +*/ + +    .equ    Heap_Size,  0x00001000 + +    .section ".heap", "w" +    .align  3 +    .globl  __cs3_heap_start +    .globl  __cs3_heap_end +__cs3_heap_start: +    .if     Heap_Size +    .space  Heap_Size +    .endif +__cs3_heap_end: + + +/* Vector Table */ + +    .section ".cs3.interrupt_vector" +    .globl  __cs3_interrupt_vector_cortex_m +    .type   __cs3_interrupt_vector_cortex_m, %object + +__cs3_interrupt_vector_cortex_m: +    .long   __cs3_stack                 /* Top of Stack                 */ +    .long   __cs3_reset                 /* Reset Handler                */ +    .long   NMI_Handler                 /* NMI Handler                  */ +    .long   HardFault_Handler           /* Hard Fault Handler           */ +    .long   MemManage_Handler           /* MPU Fault Handler            */ +    .long   BusFault_Handler            /* Bus Fault Handler            */ +    .long   UsageFault_Handler          /* Usage Fault Handler          */ +    .long   0                           /* Reserved                     */ +    .long   0                           /* Reserved                     */ +    .long   0                           /* Reserved                     */ +    .long   0                           /* Reserved                     */ +    .long   SVC_Handler                 /* SVCall Handler               */ +    .long   DebugMon_Handler            /* Debug Monitor Handler        */ +    .long   0                           /* Reserved                     */ +    .long   PendSV_Handler              /* PendSV Handler               */ +    .long   SysTick_Handler             /* SysTick Handler              */ + +    /* External Interrupts */ +    .long   WDT_IRQHandler              /* 16: Watchdog Timer               */ +    .long   TIMER0_IRQHandler           /* 17: Timer0                       */ +    .long   TIMER1_IRQHandler           /* 18: Timer1                       */ +    .long   TIMER2_IRQHandler           /* 19: Timer2                       */ +    .long   TIMER3_IRQHandler           /* 20: Timer3                       */ +    .long   UART0_IRQHandler            /* 21: UART0                        */ +    .long   UART1_IRQHandler            /* 22: UART1                        */ +    .long   UART2_IRQHandler            /* 23: UART2                        */ +    .long   UART3_IRQHandler            /* 24: UART3                        */ +    .long   PWM1_IRQHandler             /* 25: PWM1                         */ +    .long   I2C0_IRQHandler             /* 26: I2C0                         */ +    .long   I2C1_IRQHandler             /* 27: I2C1                         */ +    .long   I2C2_IRQHandler             /* 28: I2C2                         */ +    .long   SPI_IRQHandler              /* 29: SPI                          */ +    .long   SSP0_IRQHandler             /* 30: SSP0                         */ +    .long   SSP1_IRQHandler             /* 31: SSP1                         */ +    .long   PLL0_IRQHandler             /* 32: PLL0 Lock (Main PLL)         */ +    .long   RTC_IRQHandler              /* 33: Real Time Clock              */ +    .long   EINT0_IRQHandler            /* 34: External Interrupt 0         */ +    .long   EINT1_IRQHandler            /* 35: External Interrupt 1         */ +    .long   EINT2_IRQHandler            /* 36: External Interrupt 2         */ +    .long   EINT3_IRQHandler            /* 37: External Interrupt 3         */ +    .long   ADC_IRQHandler              /* 38: A/D Converter                */ +    .long   BOD_IRQHandler              /* 39: Brown-Out Detect             */ +    .long   USB_IRQHandler              /* 40: USB                          */ +    .long   CAN_IRQHandler              /* 41: CAN                          */ +    .long   DMA_IRQHandler              /* 42: General Purpose DMA          */ +    .long   I2S_IRQHandler              /* 43: I2S                          */ +    .long   ENET_IRQHandler             /* 44: Ethernet                     */ +    .long   RIT_IRQHandler              /* 45: Repetitive Interrupt Timer   */ +    .long   MCPWM_IRQHandler            /* 46: Motor Control PWM            */ +    .long   QEI_IRQHandler              /* 47: Quadrature Encoder Interface */ +    .long   PLL1_IRQHandler             /* 48: PLL1 Lock (USB PLL)          */ +    .long   USBActivity_IRQHandler      /* 49: USB Activity                 */ +    .long   CANActivity_IRQHandler      /* 50: CAN Activity                 */ + +    .size   __cs3_interrupt_vector_cortex_m, . - __cs3_interrupt_vector_cortex_m + + +    .thumb + + +/* Reset Handler */ + +    .section .cs3.reset,"x",%progbits +    .thumb_func +    .globl  __cs3_reset_cortex_m +    .type   __cs3_reset_cortex_m, %function +__cs3_reset_cortex_m: +    .fnstart +    LDR     R0, =SystemInit +    BLX     R0 +    LDR     R0,=_start +    BX      R0 +    .pool +    .cantunwind +    .fnend +    .size   __cs3_reset_cortex_m,.-__cs3_reset_cortex_m + +    .section ".text" + +/* Exception Handlers */ + +    .weak   NMI_Handler +    .type   NMI_Handler, %function +NMI_Handler: +    B       . +    .size   NMI_Handler, . - NMI_Handler + +    .weak   HardFault_Handler +    .type   HardFault_Handler, %function +HardFault_Handler: +    B       . +    .size   HardFault_Handler, . - HardFault_Handler + +    .weak   MemManage_Handler +    .type   MemManage_Handler, %function +MemManage_Handler: +    B       . +    .size   MemManage_Handler, . - MemManage_Handler + +    .weak   BusFault_Handler +    .type   BusFault_Handler, %function +BusFault_Handler: +    B       . +    .size   BusFault_Handler, . - BusFault_Handler + +    .weak   UsageFault_Handler +    .type   UsageFault_Handler, %function +UsageFault_Handler: +    B       . +    .size   UsageFault_Handler, . - UsageFault_Handler + +    .weak   SVC_Handler +    .type   SVC_Handler, %function +SVC_Handler: +    B       . +    .size   SVC_Handler, . - SVC_Handler + +    .weak   DebugMon_Handler +    .type   DebugMon_Handler, %function +DebugMon_Handler: +    B       . +    .size   DebugMon_Handler, . - DebugMon_Handler + +    .weak   PendSV_Handler +    .type   PendSV_Handler, %function +PendSV_Handler: +    B       . +    .size   PendSV_Handler, . - PendSV_Handler + +    .weak   SysTick_Handler +    .type   SysTick_Handler, %function +SysTick_Handler: +    B       . +    .size   SysTick_Handler, . - SysTick_Handler + + +/* IRQ Handlers */ + +    .globl  Default_Handler +    .type   Default_Handler, %function +Default_Handler: +    B       . +    .size   Default_Handler, . - Default_Handler + +    .macro  IRQ handler +    .weak   \handler +    .set    \handler, Default_Handler +    .endm + +    IRQ     WDT_IRQHandler +    IRQ     TIMER0_IRQHandler +    IRQ     TIMER1_IRQHandler +    IRQ     TIMER2_IRQHandler +    IRQ     TIMER3_IRQHandler +    IRQ     UART0_IRQHandler +    IRQ     UART1_IRQHandler +    IRQ     UART2_IRQHandler +    IRQ     UART3_IRQHandler +    IRQ     PWM1_IRQHandler +    IRQ     I2C0_IRQHandler +    IRQ     I2C1_IRQHandler +    IRQ     I2C2_IRQHandler +    IRQ     SPI_IRQHandler +    IRQ     SSP0_IRQHandler +    IRQ     SSP1_IRQHandler +    IRQ     PLL0_IRQHandler +    IRQ     RTC_IRQHandler +    IRQ     EINT0_IRQHandler +    IRQ     EINT1_IRQHandler +    IRQ     EINT2_IRQHandler +    IRQ     EINT3_IRQHandler +    IRQ     ADC_IRQHandler +    IRQ     BOD_IRQHandler +    IRQ     USB_IRQHandler +    IRQ     CAN_IRQHandler +    IRQ     DMA_IRQHandler +    IRQ     I2S_IRQHandler +    IRQ     ENET_IRQHandler +    IRQ     RIT_IRQHandler +    IRQ     MCPWM_IRQHandler +    IRQ     QEI_IRQHandler +    IRQ     PLL1_IRQHandler +    IRQ     USBActivity_IRQHandler +    IRQ     CANActivity_IRQHandler + +    .end | 
