crti.asm revision 90075
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 complimented 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