// See LICENSE for license details. #include "riscv_encoding.h" .section .text.entry .globl _start .type _start,@function _start: csrc mstatus, MSTATUS_MIE csrw mie, 0 la t0, machine_trap_entry csrw mtvec, t0 #if 1 // before kernel run, the stack is unused // so just borrow to use la t0, k_idle_task_stk_addr lw t1, k_idle_task_stk_size add sp, t0, t1 #else // uncomment in link.ld la sp, _stack_top #endif /* Load data section */ la a0, _load_data la a1, _data la a2, _edata bgeu a1, a2, begin_clear_bss clear_data: lw t0, (a0) sw t0, (a1) addi a0, a0, 4 addi a1, a1, 4 bltu a1, a2, clear_data begin_clear_bss: // clear bss section la a0, _bss la a1, _ebss bgeu a0, a1, init_finish clear_bss: sw zero, (a0) addi a0, a0, 4 bltu a0, a1, clear_bss init_finish: call main __die: j __die .section .text .weak eclic_msip_handler .weak eclic_mtip_handler .weak SysTick_IRQHandler .weak eclic_bwei_handler .weak eclic_pmovi_handler .weak WWDGT_IRQHandler .weak LVD_IRQHandler .weak TAMPER_IRQHandler .weak RTC_IRQHandler .weak FMC_IRQHandler .weak RCU_IRQHandler .weak EXTI0_IRQHandler .weak EXTI1_IRQHandler .weak EXTI2_IRQHandler .weak EXTI3_IRQHandler .weak EXTI4_IRQHandler .weak DMA0_Channel0_IRQHandler .weak DMA0_Channel1_IRQHandler .weak DMA0_Channel2_IRQHandler .weak DMA0_Channel3_IRQHandler .weak DMA0_Channel4_IRQHandler .weak DMA0_Channel5_IRQHandler .weak DMA0_Channel6_IRQHandler .weak ADC0_1_IRQHandler .weak CAN0_TX_IRQHandler .weak CAN0_RX0_IRQHandler .weak CAN0_RX1_IRQHandler .weak CAN0_EWMC_IRQHandler .weak EXTI5_9_IRQHandler .weak TIMER0_BRK_IRQHandler .weak TIMER0_UP_IRQHandler .weak TIMER0_TRG_CMT_IRQHandler .weak TIMER0_Channel_IRQHandler .weak TIMER1_IRQHandler .weak TIMER2_IRQHandler .weak TIMER3_IRQHandler .weak I2C0_EV_IRQHandler .weak I2C0_ER_IRQHandler .weak I2C1_EV_IRQHandler .weak I2C1_ER_IRQHandler .weak SPI0_IRQHandler .weak SPI1_IRQHandler .weak USART0_IRQHandler .weak USART1_IRQHandler .weak USART2_IRQHandler .weak EXTI10_15_IRQHandler .weak RTC_Alarm_IRQHandler .weak USBFS_WKUP_IRQHandler .weak EXMC_IRQHandler .weak TIMER4_IRQHandler .weak SPI2_IRQHandler .weak UART3_IRQHandler .weak UART4_IRQHandler .weak TIMER5_IRQHandler .weak TIMER6_IRQHandler .weak DMA1_Channel0_IRQHandler .weak DMA1_Channel1_IRQHandler .weak DMA1_Channel2_IRQHandler .weak DMA1_Channel3_IRQHandler .weak DMA1_Channel4_IRQHandler .weak CAN1_TX_IRQHandler .weak CAN1_RX0_IRQHandler .weak CAN1_RX1_IRQHandler .weak CAN1_EWMC_IRQHandler .weak USBFS_IRQHandler .global handler_vector_table .align 2 handler_vector_table: .word 0 .word 0 .word 0 .word eclic_msip_handler .word 0 .word 0 .word 0 .word SysTick_IRQHandler .word 0 .word 0 .word 0 .word 0 .word 0 .word 0 .word 0 .word 0 .word 0 .word eclic_bwei_handler .word eclic_pmovi_handler .word WWDGT_IRQHandler .word LVD_IRQHandler .word TAMPER_IRQHandler .word RTC_IRQHandler .word FMC_IRQHandler .word RCU_IRQHandler .word EXTI0_IRQHandler .word EXTI1_IRQHandler .word EXTI2_IRQHandler .word EXTI3_IRQHandler .word EXTI4_IRQHandler .word DMA0_Channel0_IRQHandler .word DMA0_Channel1_IRQHandler .word DMA0_Channel2_IRQHandler .word DMA0_Channel3_IRQHandler .word DMA0_Channel4_IRQHandler .word DMA0_Channel5_IRQHandler .word DMA0_Channel6_IRQHandler .word ADC0_1_IRQHandler .word CAN0_TX_IRQHandler .word CAN0_RX0_IRQHandler .word CAN0_RX1_IRQHandler .word CAN0_EWMC_IRQHandler .word EXTI5_9_IRQHandler .word TIMER0_BRK_IRQHandler .word TIMER0_UP_IRQHandler .word TIMER0_TRG_CMT_IRQHandler .word TIMER0_Channel_IRQHandler .word TIMER1_IRQHandler .word TIMER2_IRQHandler .word TIMER3_IRQHandler .word I2C0_EV_IRQHandler .word I2C0_ER_IRQHandler .word I2C1_EV_IRQHandler .word I2C1_ER_IRQHandler .word SPI0_IRQHandler .word SPI1_IRQHandler .word USART0_IRQHandler .word USART1_IRQHandler .word USART2_IRQHandler .word EXTI10_15_IRQHandler .word RTC_Alarm_IRQHandler .word USBFS_WKUP_IRQHandler .word 0 .word 0 .word 0 .word 0 .word 0 .word EXMC_IRQHandler .word 0 .word TIMER4_IRQHandler .word SPI2_IRQHandler .word UART3_IRQHandler .word UART4_IRQHandler .word TIMER5_IRQHandler .word TIMER6_IRQHandler .word DMA1_Channel0_IRQHandler .word DMA1_Channel1_IRQHandler .word DMA1_Channel2_IRQHandler .word DMA1_Channel3_IRQHandler .word DMA1_Channel4_IRQHandler .word 0 .word 0 .word CAN1_TX_IRQHandler .word CAN1_RX0_IRQHandler .word CAN1_RX1_IRQHandler .word CAN1_EWMC_IRQHandler .word USBFS_IRQHandler