From 15ad5fcfe5cf9e57dfcddad144a9364de2d7d0f5 Mon Sep 17 00:00:00 2001 From: Albert Ou Date: Wed, 14 Dec 2016 17:15:14 -0800 Subject: Move start.S and entry.S to a common directory --- bsp/env/start.S | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 bsp/env/start.S (limited to 'bsp/env/start.S') diff --git a/bsp/env/start.S b/bsp/env/start.S new file mode 100644 index 0000000..77e223d --- /dev/null +++ b/bsp/env/start.S @@ -0,0 +1,51 @@ +// See LICENSE for license details. + + .section .init + .globl _start + .type _start,@function + +_start: + la gp, _gp + la sp, _sp + + /* 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 + + call main + tail exit -- cgit v1.2.3