Update.
[glibc/history.git] / sysdeps / unix / bsd / osf / alpha / start.S
blobd5ff14055bfba7662a8985c992e0fde5b21b5dc9
1 /* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
2    Contributed by Brendan Kehoe (brendan@zen.org).
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public License as
6 published by the Free Software Foundation; either version 2 of the
7 License, or (at your option) any later version.
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 Library General Public License for more details.
14 You should have received a copy of the GNU Library General Public
15 License along with the GNU C Library; see the file COPYING.LIB.  If
16 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
17 Cambridge, MA 02139, USA.  */
19 #include <sysdep.h>
21 #if 0
22 .sdata
23 .globl STARTFRM
24 STARTFRM = 0
25 #endif
27 .text
28 ENTRY(__start)
29         lda     sp, -16(sp)
30         stq     zero, 8(sp)
32         /* This branch puts the address of the current insn in t0. */
33         br      t0, 10f
34 10:
35         /* We set the GP register by using the address of the ldgp */
36         /* (what we just put into t0). */
37         ldgp    gp, 0(t0)
39         /* get argc */
40         ldl     a0, 16(sp)
42         /* get argv */
43         lda     a1, 24(sp)
45         /* move ahead to envp */
46         s8addq  a0, a1, a2
47         addq    a2, 0x8, a2
49         /* Store in environ. */
50         stq     a2, environ
52         /* Clear out errno. */
53 /*      ldgp    gp, 0(t12) */
54         stl     zero, errno
56         /* Call main. */
57         jsr     ra, main
58         ldgp    gp, 0(ra)
60         mov     v0, a0
62         jsr     ra, exit
63         ldgp    gp, 0(ra)
65         .end __start