[uClibc-cvs] uClibc/libc/sysdeps/linux/cris crt0.S, NONE, 1.1 Makefile, 1.6, 1.7
Tobias Anderberg
tobiasa at uclibc.org
Fri Sep 19 12:06:08 UTC 2003
Update of /var/cvs/uClibc/libc/sysdeps/linux/cris
In directory winder:/tmp/cvs-serv10605
Modified Files:
Makefile
Added Files:
crt0.S
Log Message:
Added assembler version of startup code. Fix Makefile so it uses the new
code.
Index: Makefile
===================================================================
RCS file: /var/cvs/uClibc/libc/sysdeps/linux/cris/Makefile,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- Makefile 23 Jan 2003 17:55:18 -0000 1.6
+++ Makefile 19 Sep 2003 12:06:05 -0000 1.7
@@ -20,7 +20,7 @@
include $(TOPDIR)Rules.mak
ASFLAGS=$(CFLAGS)
-CRT0_SRC = crt0.c
+CRT0_SRC = crt0.S
CRT0_OBJ = crt0.o crt1.o
SSRC= setjmp.S __longjmp.S clone.S sysdep.S syscall.S
--- NEW FILE: crt0.S ---
;; Startup code compiant to the ELF CRIS ABI.
;;
;; Highly based on code from glibc.
#include <sysdep.h>
.syntax no_register_prefix
.text
.globl _start
.type _start, at function
#if defined L_crt0 || ! defined __UCLIBC_CTOR_DTOR__
.type __uClibc_main, at function
#else
.weak _init
.weak _fini
.type __uClibc_start_main, at function
#endif
;; Setup a dummy reference to main so that if an application is linking
;; when the main() function is in a static library we can be sure that
;; the main() actually gets linked in.
.type main, at function
_start:
;; Clear the frame pointer, to mark the outermost frame.
moveq 0, r8
move.d [sp],r11
move.d sp,[sp]
move.d sp,r12
addq 4,r12
push r9
#ifdef __PIC__
move.d pc,r0
sub.d .:GOTOFF,r0
move.d _init:PLTG,r13
add.d r0,r13
move.d _fini:PLTG,r9
add.d r0,r9
move.d main:PLTG,r10
add.d r0,r10
#else
move.d _init,r13
move.d _fini,r9
move.d main,r10
#endif
push r9
#if (defined L_crt1 || defined L_gcrt1) && defined __UCLIBC_CTOR_DTOR__
PLTCALL(__uClibc_start_main)
#else
PLTCALL(__uClibc_main)
#endif
;; Crash if 'exit' returns.
test.d [6502]
0:
ba 0b
nop
;; Define a symbol for the first piece of initialized data.
.data
.globl __data_start
__data_start:
.long 0
.weak data_start
data_start = __data_start
More information about the uClibc-cvs
mailing list