crti.asm revision 117395
1#   Copyright (C) 2001 Free Software Foundation, Inc.
2#   Written By Nick Clifton
3# 
4# This file is free software; you can redistribute it and/or modify it
5# under the terms of the GNU General Public License as published by the
6# Free Software Foundation; either version 2, or (at your option) any
7# later version.
8# 
9# In addition to the permissions in the GNU General Public License, the
10# Free Software Foundation gives you unlimited permission to link the
11# compiled version of this file with other programs, and to distribute
12# those programs without any restriction coming from the use of this
13# file.  (The General Public License restrictions do apply in other
14# respects; for example, they cover modification of the file, and
15# distribution when not linked into another program.)
16# 
17# This file is distributed in the hope that it will be useful, but
18# WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20# General Public License for more details.
21# 
22# You should have received a copy of the GNU General Public License
23# along with this program; see the file COPYING.  If not, write to
24# the Free Software Foundation, 59 Temple Place - Suite 330,
25# Boston, MA 02111-1307, USA.
26# 
27#    As a special exception, if you link this library with files
28#    compiled with GCC to produce an executable, this does not cause
29#    the resulting executable to be covered by the GNU General Public License.
30#    This exception does not however invalidate any other reasons why
31#    the executable file might be covered by the GNU General Public License.
32# 
33
34# This file just make a stack frame for the contents of the .fini and
35# .init sections.  Users may put any desired instructions in those
36# sections.
37
38	# Note - this macro is complemented by the FUNC_END macro
39	# in crtn.asm.  If you change this macro you must also change
40	# that macro match.
41.macro FUNC_START
42#ifdef __thumb__
43	.thumb
44	
45	push	{r4, r5, r6, r7, lr}
46#else
47	.arm
48	#  Create a stack frame and save any call-preserved registers
49	mov	ip, sp
50	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc}
51	sub	fp, ip, #4
52#endif
53.endm
54		
55	.file		"crti.asm"
56
57	.section	".init"
58	.align 2
59	.global	_init
60#ifdef __thumb__
61	.thumb_func
62#endif
63_init:
64	FUNC_START
65	
66		
67	.section	".fini"
68	.align	2
69	.global	_fini
70#ifdef __thumb__
71	.thumb_func
72#endif
73_fini:
74	FUNC_START
75	
76# end of crti.asm
77