[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