RISC-V: Add _LITE_EXIT in crt0.S.
This patch adds _LITE_EXIT in crt0.S to enable "lite exit" technique in RISC-V. The changes have been tested in riscv/riscv-gnu-toolchain by riscv-dejagnu with riscv-sim.exp/riscv-sim-nano.exp.
This commit is contained in:
parent
5c86f0da5f
commit
77ac27dcf8
|
@ -9,6 +9,8 @@
|
|||
http://www.opensource.org/licenses.
|
||||
*/
|
||||
|
||||
#include "newlib.h"
|
||||
|
||||
#=========================================================================
|
||||
# crt0.S : Entry point for RISC-V user programs
|
||||
#=========================================================================
|
||||
|
@ -30,9 +32,20 @@ _start:
|
|||
sub a2, a2, a0
|
||||
li a1, 0
|
||||
call memset
|
||||
#ifdef _LITE_EXIT
|
||||
# Make reference to atexit weak to avoid unconditionally pulling in
|
||||
# support code. Refer to comments in __atexit.c for more details.
|
||||
.weak atexit
|
||||
la a0, atexit
|
||||
beqz a0, .Lweak_atexit
|
||||
.weak __libc_fini_array
|
||||
#endif
|
||||
|
||||
la a0, __libc_fini_array # Register global termination functions
|
||||
call atexit # to be called upon exit
|
||||
#ifdef _LITE_EXIT
|
||||
.Lweak_atexit:
|
||||
#endif
|
||||
call __libc_init_array # Run global initialization functions
|
||||
|
||||
lw a0, 0(sp) # a0 = argc
|
||||
|
|
Loading…
Reference in New Issue