OSDN Git Service

65ffb159919731daee8b86d334156be498c9f70a
[pf3gnuchains/gcc-fork.git] / gcc / config / score / crti.asm
1 # crti.asm for Sunplus S+CORE
2 #
3 #   Copyright (C) 2005 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 2, or (at your option) any
8 # later version.
9 #
10 # In addition to the permissions in the GNU General Public License, the
11 # Free Software Foundation gives you unlimited permission to link the
12 # compiled version of this file with other programs, and to distribute
13 # those programs without any restriction coming from the use of this
14 # file.  (The General Public License restrictions do apply in other
15 # respects; for example, they cover modification of the file, and
16 # distribution when not linked into another program.)
17 #
18 # This file is distributed in the hope that it will be useful, but
19 # WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21 # General Public License for more details.
22 #
23 # You should have received a copy of the GNU General Public License
24 # along with GCC; see the file COPYING.  If not, write to the Free
25 # Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
26 # 02110-1301, USA.
27 #
28 #   As a special exception, if you link this library with files
29 #   compiled with GCC to produce an executable, this does not cause
30 #   the resulting executable to be covered by the GNU General Public License.
31 #   This exception does not however invalidate any other reasons why
32 #   the executable file might be covered by the GNU General Public License.
33 #
34
35 # This file makes a stack frame for the contents of the .init and
36 # .fini sections.
37
38 .section .init,"ax", @progbits
39         .weak   _start
40         .ent    _start
41         .frame  r0, 0, r3, 0
42         .mask   0x00000000, 0
43 _start:
44         la      r28, _gp
45         la      r8, __bss_start
46         la      r9, __bss_end__
47         sub!    r9, r8
48         srli!   r9, 2
49         addi    r9, -1
50         mtsr    r9, sr0
51         li      r9, 0
52 1:
53         sw      r9, [r8]+, 4
54         bcnz    1b
55         la      r0, _stack
56         jl      _init
57         la      r4, _end
58         jl      _init_argv
59         jl      exit
60         .end    _start
61
62         .weak   _init_argv
63         .ent
64         .frame  r0, 0, r3, 0
65         .mask   0x00000000, 0
66 _init_argv:
67         ldiu!   r4, 0
68         ldiu!   r5, 0
69         j       main
70         .end    _init_argv
71
72         .globl  _init
73         .type   _init, %function
74 _init:
75         addi    r0, -32
76         sw      r3, [r0, 20]
77
78         .section .fini, "ax", @progbits
79         .globl  _fini
80         .type   _fini, %function
81 _fini:
82         addi    r0, -32
83         sw      r3, [r0, 20]
84
85