OSDN Git Service

Update Copyright years for files modified in 2010.
[pf3gnuchains/gcc-fork.git] / gcc / config / arm / crti.asm
1 #   Copyright (C) 2001, 2008, 2009, 2010 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 3, or (at your option) any
7 # later version.
8
9 # This file is distributed in the hope that it will be useful, but
10 # WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # General Public License for more details.
13
14 # Under Section 7 of GPL version 3, you are granted additional
15 # permissions described in the GCC Runtime Library Exception, version
16 # 3.1, as published by the Free Software Foundation.
17 #
18 # You should have received a copy of the GNU General Public License and
19 # a copy of the GCC Runtime Library Exception along with this program;
20 # see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
21 # <http://www.gnu.org/licenses/>.
22
23 /* An executable stack is *not* required for these functions.  */
24 #if defined(__ELF__) && defined(__linux__)
25 .section .note.GNU-stack,"",%progbits
26 .previous
27 #endif
28
29 # This file just make a stack frame for the contents of the .fini and
30 # .init sections.  Users may put any desired instructions in those
31 # sections.
32
33 #ifdef __ELF__
34 #define TYPE(x) .type x,function
35 #else
36 #define TYPE(x)
37 #endif
38 #ifdef __ARM_EABI__
39 /* Some attributes that are common to all routines in this file.  */
40         /* Tag_ABI_align_needed: This code does not require 8-byte
41            alignment from the caller.  */
42         /* .eabi_attribute 24, 0  -- default setting.  */
43         /* Tag_ABI_align_preserved: This code preserves 8-byte
44            alignment in any callee.  */
45         .eabi_attribute 25, 1
46 #endif /* __ARM_EABI__ */
47
48         # Note - this macro is complemented by the FUNC_END macro
49         # in crtn.asm.  If you change this macro you must also change
50         # that macro match.
51 .macro FUNC_START
52 #ifdef __thumb__
53         .thumb
54         
55         push    {r3, r4, r5, r6, r7, lr}
56 #else
57         .arm
58         #  Create a stack frame and save any call-preserved registers
59         mov     ip, sp
60         stmdb   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc}
61         sub     fp, ip, #4
62 #endif
63 .endm
64                 
65         .section        ".init"
66         .align 2
67         .global _init
68 #ifdef __thumb__
69         .thumb_func
70 #endif
71         TYPE(_init)
72 _init:
73         FUNC_START
74         
75                 
76         .section        ".fini"
77         .align  2
78         .global _fini
79 #ifdef __thumb__
80         .thumb_func
81 #endif
82         TYPE(_fini)
83 _fini:
84         FUNC_START
85         
86 # end of crti.asm