aboutsummaryrefslogtreecommitdiff
path: root/init_low.s
diff options
context:
space:
mode:
Diffstat (limited to 'init_low.s')
-rw-r--r--init_low.s222
1 files changed, 206 insertions, 16 deletions
diff --git a/init_low.s b/init_low.s
index bd7f329..1c3d10e 100644
--- a/init_low.s
+++ b/init_low.s
@@ -9,24 +9,68 @@ http://stackoverflow.com/questions/9565921/cortex-m3-initialisation
.section .isr_vectors
+/* TODO: Move this to C code */
.global vectors
vectors:
-stacktop: .word 0x20001000
-.word _Reset_Handler
-.word NMI_Handler
-.word HardFault_Handler
-.word MemManage_Handler
-.word BusFault_Handler
-.word UsageFault_Handler
-.word halt
-.word halt
-.word halt
-.word halt
-.word halt
-.word halt
-.word halt
-.word halt
-.word halt
+ .word 0x20001000 /* TODO: this should come from the linker */
+ .word _Reset_Handler
+ .word NMI_Handler
+ .word HardFault_Handler
+ .word MemManage_Handler
+ .word BusFault_Handler
+ .word UsageFault_Handler
+ .word 0 /* Not used */
+ .word 0 /* Not used */
+ .word 0 /* Not used */
+ .word 0 /* Not used */
+ .word SVC_Handler
+ .word DebugMon_Handler
+ .word 0 /* Not used */
+ .word PendSV_Handler
+ .word SysTick_Handler
+ .word WWDG_IRQHandler
+ .word PVD_IRQHandler
+ .word TAMPER_IRQHandler
+ .word RTC_IRQHandler
+ .word FLASH_IRQHandler
+ .word RCC_IRQHandler
+ .word EXTI0_IRQHandler
+ .word EXTI1_IRQHandler
+ .word EXTI2_IRQHandler
+ .word EXTI3_IRQHandler
+ .word EXTI4_IRQHandler
+ .word DMA1_Channel1_IRQHandler
+ .word DMA1_Channel2_IRQHandler
+ .word DMA1_Channel3_IRQHandler
+ .word DMA1_Channel4_IRQHandler
+ .word DMA1_Channel5_IRQHandler
+ .word DMA1_Channel6_IRQHandler
+ .word DMA1_Channel7_IRQHandler
+ .word ADC1_2_IRQHandler
+ .word USB_HP_CAN1_TX_IRQHandler
+ .word USB_LP_CAN1_RX0_IRQHandler
+ .word CAN1_RX1_IRQHandler
+ .word CAN1_SCE_IRQHandler
+ .word EXTI9_5_IRQHandler
+ .word TIM1_BRK_IRQHandler
+ .word TIM1_UP_IRQHandler
+ .word TIM1_TRG_COM_IRQHandler
+ .word TIM1_CC_IRQHandler
+ .word TIM2_IRQHandler
+ .word TIM3_IRQHandler
+ .word TIM4_IRQHandler
+ .word I2C1_EV_IRQHandler
+ .word I2C1_ER_IRQHandler
+ .word I2C2_EV_IRQHandler
+ .word I2C2_ER_IRQHandler
+ .word SPI1_IRQHandler
+ .word SPI2_IRQHandler
+ .word USART1_IRQHandler
+ .word USART2_IRQHandler
+ .word USART3_IRQHandler
+ .word EXTI15_10_IRQHandler
+ .word RTCAlarm_IRQHandler
+ .word USBWakeUp_IRQHandler
/* VERY significant */
.section .text
@@ -66,4 +110,150 @@ BusFault_Handler:
UsageFault_Handler:
b halt
+/*
+TODO: replace with functions like this:
+void TIM2_IRQHandler() __attribute__ ((weak, alias ("Default_Handler")));
+*/
+
+.weak SVC_Handler
+.thumb_set SVC_Handler, halt
+
+.weak DebugMon_Handler
+.thumb_set DebugMon_Handler, halt
+
+.weak PendSV_Handler
+.thumb_set PendSV_Handler, halt
+
+.weak SysTick_Handler
+.thumb_set SysTick_Handler, halt
+
+.weak WWDG_IRQHandler
+.thumb_set WWDG_IRQHandler, halt
+
+.weak PVD_IRQHandler
+.thumb_set PVD_IRQHandler, halt
+
+.weak TAMPER_IRQHandler
+.thumb_set TAMPER_IRQHandler, halt
+
+.weak RTC_IRQHandler
+.thumb_set RTC_IRQHandler, halt
+
+.weak FLASH_IRQHandler
+.thumb_set FLASH_IRQHandler, halt
+
+.weak RCC_IRQHandler
+.thumb_set RCC_IRQHandler, halt
+
+.weak EXTI0_IRQHandler
+.thumb_set EXTI0_IRQHandler, halt
+
+.weak EXTI1_IRQHandler
+.thumb_set EXTI1_IRQHandler, halt
+
+.weak EXTI2_IRQHandler
+.thumb_set EXTI2_IRQHandler, halt
+
+.weak EXTI3_IRQHandler
+.thumb_set EXTI3_IRQHandler, halt
+
+.weak EXTI4_IRQHandler
+.thumb_set EXTI4_IRQHandler, halt
+
+.weak DMA1_Channel1_IRQHandler
+.thumb_set DMA1_Channel1_IRQHandler, halt
+
+.weak DMA1_Channel2_IRQHandler
+.thumb_set DMA1_Channel2_IRQHandler, halt
+
+.weak DMA1_Channel3_IRQHandler
+.thumb_set DMA1_Channel3_IRQHandler, halt
+
+.weak DMA1_Channel4_IRQHandler
+.thumb_set DMA1_Channel4_IRQHandler, halt
+
+.weak DMA1_Channel5_IRQHandler
+.thumb_set DMA1_Channel5_IRQHandler, halt
+
+.weak DMA1_Channel6_IRQHandler
+.thumb_set DMA1_Channel6_IRQHandler, halt
+
+.weak DMA1_Channel7_IRQHandler
+.thumb_set DMA1_Channel7_IRQHandler, halt
+
+.weak ADC1_2_IRQHandler
+.thumb_set ADC1_2_IRQHandler, halt
+
+.weak USB_HP_CAN1_TX_IRQHandler
+.thumb_set USB_HP_CAN1_TX_IRQHandler, halt
+
+.weak USB_LP_CAN1_RX0_IRQHandler
+.thumb_set USB_LP_CAN1_RX0_IRQHandler, halt
+
+.weak CAN1_RX1_IRQHandler
+.thumb_set CAN1_RX1_IRQHandler, halt
+
+.weak CAN1_SCE_IRQHandler
+.thumb_set CAN1_SCE_IRQHandler, halt
+
+.weak EXTI9_5_IRQHandler
+.thumb_set EXTI9_5_IRQHandler, halt
+
+.weak TIM1_BRK_IRQHandler
+.thumb_set TIM1_BRK_IRQHandler, halt
+
+.weak TIM1_UP_IRQHandler
+.thumb_set TIM1_UP_IRQHandler, halt
+
+.weak TIM1_TRG_COM_IRQHandler
+.thumb_set TIM1_TRG_COM_IRQHandler, halt
+
+.weak TIM1_CC_IRQHandler
+.thumb_set TIM1_CC_IRQHandler, halt
+
+.weak TIM2_IRQHandler
+.thumb_set TIM2_IRQHandler, halt
+
+.weak TIM3_IRQHandler
+.thumb_set TIM3_IRQHandler, halt
+
+.weak TIM4_IRQHandler
+.thumb_set TIM4_IRQHandler, halt
+
+.weak I2C1_EV_IRQHandler
+.thumb_set I2C1_EV_IRQHandler, halt
+
+.weak I2C1_ER_IRQHandler
+.thumb_set I2C1_ER_IRQHandler, halt
+
+.weak I2C2_EV_IRQHandler
+.thumb_set I2C2_EV_IRQHandler, halt
+
+.weak I2C2_ER_IRQHandler
+.thumb_set I2C2_ER_IRQHandler, halt
+
+.weak SPI1_IRQHandler
+.thumb_set SPI1_IRQHandler, halt
+
+.weak SPI2_IRQHandler
+.thumb_set SPI2_IRQHandler, halt
+
+.weak USART1_IRQHandler
+.thumb_set USART1_IRQHandler, halt
+
+.weak USART2_IRQHandler
+.thumb_set USART2_IRQHandler, halt
+
+.weak USART3_IRQHandler
+.thumb_set USART3_IRQHandler, halt
+
+.weak EXTI15_10_IRQHandler
+.thumb_set EXTI15_10_IRQHandler, halt
+
+.weak RTCAlarm_IRQHandler
+.thumb_set RTCAlarm_IRQHandler, halt
+
+.weak USBWakeUp_IRQHandler
+.thumb_set USBWakeUp_IRQHandler, halt
+
.end