OSDN Git Service

ebdca18e5cec1c838b023a306730463b0742c57c
[uclinux-h8/uClibc.git] / libc / sysdeps / linux / h8300 / crt0.S
1 /* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
2
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public License as
7 published by the Free Software Foundation; either version 2 of the
8 License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public
16 License along with the GNU C Library; see the file COPYING.LIB.  If
17 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
18 Cambridge, MA 02139, USA.  */
19
20 #include <features.h>
21
22         .global _start
23         .global __exit
24         .global atexit
25         .global main
26
27 #ifdef __H8300S__
28         .h8300s
29 #else
30         .h8300h
31 #endif
32         .text
33
34 _start: /* put here so that references to _start work with elf-PIC */
35
36         mov.l   @(0,sp),er0     /* argc */
37         mov.l   @(4,sp),er1     /* argv */
38         mov.l   @(8,sp),er2     /* envp */
39 #if !defined(__PIC__)
40         jsr     @___uClibc_main
41 #else
42         mov.l   @(___uClibc_main@GOTOFF,er5),er3
43         jsr     @er3
44 #endif
45
46         /* If that didn't kill us, ... */
47 __exit:
48         mov.l   er0,er1
49         sub.l   er0,er0
50         inc.l   #1,er0           /* __NR_exit */
51         trapa   #0
52
53 /*
54  *      this was needed for gcc/g++-builds,  atexit was not getting included
55  *      for some stupid reason,  this gets us a compiler
56  */
57 empty_func:
58         rts
59         .weak atexit
60         atexit = empty_func
61
62
63 /* Define a symbol for the first piece of initialized data.  */
64         .data
65         .globl __data_start
66 __data_start:
67         .long 0
68         .weak data_start
69         data_start = __data_start
70