1/* 2 * Copyright (c) 2021-2023 HPMicro 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 #include <rtconfig.h> 8 #include "hpm_csr_regs.h" 9 .section .start, "ax" 10 11 .global _start 12 .type _start,@function 13 14_start: 15 /* Initialize global pointer */ 16 .option push 17 .option norelax 18 la gp, __global_pointer$ 19 la tp, __thread_pointer 20 .option pop 21 22#ifdef __riscv_flen 23 /* Enable FPU */ 24 li t0, CSR_MSTATUS_FS_MASK 25 csrrs t0, mstatus, t0 26 27 /* Initialize FCSR */ 28 fscsr zero 29#endif 30 31#ifdef INIT_EXT_RAM_FOR_DATA 32 la t0, _stack_in_dlm 33 mv sp, t0 34 call _init_ext_ram 35#endif 36 37 /* Initialize stack pointer */ 38 la t0, _stack 39 mv sp, t0 40 41#ifdef __nds_execit 42 /* Initialize EXEC.IT table */ 43 la t0, _ITB_BASE_ 44 csrw uitb, t0 45#endif 46 47#ifdef __riscv_flen 48 /* Enable FPU */ 49 li t0, CSR_MSTATUS_FS_MASK 50 csrrs t0, mstatus, t0 51 52 /* Initialize FCSR */ 53 fscsr zero 54#endif 55 /* Disable Vector mode */ 56 csrci CSR_MMISC_CTL, 2 57 /* Initialize trap_entry base */ 58 la t0, SW_handler 59 csrw mtvec, t0 60 61 62 /* System reset handler */ 63 call reset_handler 64 65 /* Infinite loop, if returned accidently */ 661: j 1b 67 68 .weak nmi_handler 69nmi_handler: 701: j 1b 71 72 .global default_irq_handler 73 .weak default_irq_handler 74 .align 2 75default_irq_handler: 761: j 1b 77 78 .macro IRQ_HANDLER irq 79 .weak default_isr_\irq 80 .set default_isr_\irq, default_irq_handler 81 .long default_isr_\irq 82 .endm 83 84#include "vectors.S" 85