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    /* Initialize stack pointer */
23    la t0, _stack
24    mv sp, t0
25
26#ifdef __nds_execit
27    /* Initialize EXEC.IT table */
28    la t0, _ITB_BASE_
29    csrw uitb, t0
30#endif
31
32#ifdef __riscv_flen
33    /* Enable FPU */
34    li t0, CSR_MSTATUS_FS_MASK
35    csrrs t0, mstatus, t0
36
37    /* Initialize FCSR */
38    fscsr zero
39#endif
40    /* Disable Vector mode */
41    csrci CSR_MMISC_CTL, 2
42    /* Initialize trap_entry base */
43    la t0, SW_handler
44    csrw mtvec, t0
45
46
47    /* System reset handler */
48    call reset_handler
49
50    /* Infinite loop, if returned accidently */
511:    j 1b
52
53    .weak nmi_handler
54nmi_handler:
551:    j 1b
56
57    .global default_irq_handler
58    .weak default_irq_handler
59    .align 2
60default_irq_handler:
611:    j 1b
62
63    .macro IRQ_HANDLER irq
64    .weak default_isr_\irq
65    .set default_isr_\irq, default_irq_handler
66    .long default_isr_\irq
67    .endm
68
69#include "vectors.S"
70