mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-31 11:30:56 +08:00
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.
|
http://www.opensource.org/licenses.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "newlib.h"
|
||||||
|
|
||||||
#=========================================================================
|
#=========================================================================
|
||||||
# crt0.S : Entry point for RISC-V user programs
|
# crt0.S : Entry point for RISC-V user programs
|
||||||
#=========================================================================
|
#=========================================================================
|
||||||
@ -30,9 +32,20 @@ _start:
|
|||||||
sub a2, a2, a0
|
sub a2, a2, a0
|
||||||
li a1, 0
|
li a1, 0
|
||||||
call memset
|
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
|
la a0, __libc_fini_array # Register global termination functions
|
||||||
call atexit # to be called upon exit
|
call atexit # to be called upon exit
|
||||||
|
#ifdef _LITE_EXIT
|
||||||
|
.Lweak_atexit:
|
||||||
|
#endif
|
||||||
call __libc_init_array # Run global initialization functions
|
call __libc_init_array # Run global initialization functions
|
||||||
|
|
||||||
lw a0, 0(sp) # a0 = argc
|
lw a0, 0(sp) # a0 = argc
|
||||||
|
Loading…
x
Reference in New Issue
Block a user