1 # Copyright
(C
) 2001, 2004 Free Software Foundation
, Inc.
2 # Written By Nick Clifton
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
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.
)
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.
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.
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.
34 #
This file just makes sure that the .fini
and .init sections do
in
35 # fact return. Users may put any desired instructions
in those sections.
36 #
This file is the last thing linked
into any executable.
38 # Note
- this macro is complemented by the FUNC_START
macro
39 #
in crti.asm. If you change
this macro you must also change
42 # Note
- we do
not try any fancy optimizations of the return
43 # sequences here
, it is just
not worth it. Instead keep things
44 # simple. Restore all the save resgisters
, including the link
45 # register
and then perform the correct function return instruction.
46 # We also save
/restore r3 to ensure stack alignment.
51 pop {r3, r4, r5, r6, r7}
58 ldmfd
sp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, lr}
61 #if defined __THUMB_INTERWORK__ || defined __thumb__