Mercurial > hg > CbC > CbC_gcc
annotate gcc/config/score/crti.asm @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | a06113de4d67 |
children |
rev | line source |
---|---|
0 | 1 # crti.asm for Sunplus S+CORE |
2 # | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
3 # Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc. |
0 | 4 # |
5 # This file is free software; you can redistribute it and/or modify it | |
6 # under the terms of the GNU General Public License as published by the | |
7 # Free Software Foundation; either version 3, or (at your option) any | |
8 # later version. | |
9 # | |
10 # This file is distributed in the hope that it will be useful, but | |
11 # WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 # General Public License for more details. | |
14 # | |
15 # Under Section 7 of GPL version 3, you are granted additional | |
16 # permissions described in the GCC Runtime Library Exception, version | |
17 # 3.1, as published by the Free Software Foundation. | |
18 # | |
19 # You should have received a copy of the GNU General Public License and | |
20 # a copy of the GCC Runtime Library Exception along with this program; | |
21 # see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
22 # <http://www.gnu.org/licenses/>. | |
23 | |
24 # This file makes a stack frame for the contents of the .init and | |
25 # .fini sections. | |
26 .extern _stack | |
27 | |
28 #ifndef __pic__ | |
29 .section .init, "ax", @progbits | |
30 .weak _start | |
31 .ent _start | |
32 .frame r0, 0, r3, 0 | |
33 .mask 0x00000000, 0 | |
34 _start: | |
35 la r28, _gp | |
36 la r8, __bss_start | |
37 la r9, __bss_end__ | |
38 sub! r9, r8 | |
39 srli! r9, 2 | |
40 addi r9, -1 | |
41 mtsr r9, sr0 | |
42 li r9, 0 | |
43 1: | |
44 sw r9, [r8]+, 4 | |
45 bcnz 1b | |
46 la r0, _stack | |
47 jl _init | |
48 la r4, _end | |
49 jl _init_argv | |
50 jl exit | |
51 .end _start | |
52 | |
53 .weak _init_argv | |
54 .ent | |
55 .frame r0, 0, r3, 0 | |
56 .mask 0x00000000, 0 | |
57 _init_argv: | |
58 ldiu! r4, 0 | |
59 ldiu! r5, 0 | |
60 j main | |
61 .end _init_argv | |
62 | |
63 .globl _init | |
64 .type _init, %function | |
65 _init: | |
66 addi r0, -32 | |
67 sw r3, [r0, 20] | |
68 | |
69 .section .fini, "ax", @progbits | |
70 .globl _fini | |
71 .type _fini, %function | |
72 _fini: | |
73 addi r0, -32 | |
74 sw r3, [r0, 20] | |
75 #else | |
76 .section .init, "ax", @progbits | |
77 .set pic | |
78 .weak _start | |
79 .ent _start | |
80 .frame r0, 0, r3, 0 | |
81 .mask 0x00000000, 0 | |
82 _start: | |
83 mv r29, r3 | |
84 bl 0f | |
85 0: | |
86 .cpload r3 | |
87 mv r3, r29 | |
88 la r8, __bss_start | |
89 la r9, __bss_end__ | |
90 sub! r9, r8 | |
91 srli! r9, 2 | |
92 addi r9, -1 | |
93 mtsr r9, sr0 | |
94 li r9, 0 | |
95 1: | |
96 sw r9, [r8]+, 4 | |
97 bcnz 1b | |
98 la r0, _stack | |
99 bl _init | |
100 la r4, _end | |
101 la r29, _init_argv | |
102 brl r29 | |
103 la r29, exit | |
104 brl r29 | |
105 .end _start | |
106 | |
107 .weak _init_argv | |
108 .ent _init_argv | |
109 .frame r0, 0, r3, 0 | |
110 .mask 0x00000000, 0 | |
111 _init_argv: | |
112 ldiu! r4, 0 | |
113 ldiu! r5, 0 | |
114 la r29, main | |
115 brl r29 | |
116 .end _init_argv | |
117 | |
118 .globl _init | |
119 .type _init, %function | |
120 _init: | |
121 addi r0, -32 | |
122 sw r3, [r0, 20] | |
123 | |
124 .section .fini, "ax", @progbits | |
125 .globl _fini | |
126 .type _fini, %function | |
127 _fini: | |
128 addi r0, -32 | |
129 sw r3, [r0, 20] | |
130 | |
131 #endif |