Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/score/crti.asm @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | f6334be47118 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 # crti.asm for Sunplus S+CORE | |
2 # | |
3 # Copyright (C) 2005, 2009 Free Software Foundation, Inc. | |
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 |