summaryrefslogtreecommitdiff
path: root/bsp/env/start.S
diff options
context:
space:
mode:
Diffstat (limited to 'bsp/env/start.S')
-rw-r--r--bsp/env/start.S112
1 files changed, 0 insertions, 112 deletions
diff --git a/bsp/env/start.S b/bsp/env/start.S
deleted file mode 100644
index 4d1eb04..0000000
--- a/bsp/env/start.S
+++ /dev/null
@@ -1,112 +0,0 @@
-// See LICENSE for license details.
-#include <sifive/smp.h>
-#include <encoding.h>
-
-/* This is defined in sifive/platform.h, but that can't be included from
- * assembly. */
-#define CLINT_CTRL_ADDR 0x02000000
-
- .section .init
- .globl _start
- .type _start,@function
-
-_start:
- .cfi_startproc
- .cfi_undefined ra
-.option push
-.option norelax
- la gp, __global_pointer$
-.option pop
- la sp, _sp
-
-#if defined(ENABLE_SMP)
- smp_pause(t0, t1)
-#endif
-
- /* Load data section */
- la a0, _data_lma
- la a1, _data
- la a2, _edata
- bgeu a1, a2, 2f
-1:
- lw t0, (a0)
- sw t0, (a1)
- addi a0, a0, 4
- addi a1, a1, 4
- bltu a1, a2, 1b
-2:
-
- /* Clear bss section */
- la a0, __bss_start
- la a1, _end
- bgeu a0, a1, 2f
-1:
- sw zero, (a0)
- addi a0, a0, 4
- bltu a0, a1, 1b
-2:
-
- /* Call global constructors */
- la a0, __libc_fini_array
- call atexit
- call __libc_init_array
-
-#ifndef __riscv_float_abi_soft
- /* Enable FPU */
- li t0, MSTATUS_FS
- csrs mstatus, t0
- csrr t1, mstatus
- and t1, t1, t0
- beqz t1, 1f
- fssr x0
-1:
-#endif
-
-#if defined(ENABLE_SMP)
- smp_resume(t0, t1)
-
- csrr a0, mhartid
- bnez a0, 2f
-#endif
-
- auipc ra, 0
- addi sp, sp, -16
-#if __riscv_xlen == 32
- sw ra, 8(sp)
-#else
- sd ra, 8(sp)
-#endif
-
- /* argc = argv = 0 */
- li a0, 0
- li a1, 0
- call main
- tail exit
-1:
- j 1b
-
-#if defined(ENABLE_SMP)
-2:
- la t0, trap_entry
- csrw mtvec, t0
-
- csrr a0, mhartid
- la t1, _sp
- slli t0, a0, 10
- sub sp, t1, t0
-
- auipc ra, 0
- addi sp, sp, -16
-#if __riscv_xlen == 32
- sw ra, 8(sp)
-#else
- sd ra, 8(sp)
-#endif
-
- call secondary_main
- tail exit
-
-1:
- j 1b
-#endif
- .cfi_endproc