]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/alpha/start.S
Prefer https to http for gnu.org and fsf.org URLs
[thirdparty/glibc.git] / sysdeps / alpha / start.S
CommitLineData
aa6ab546 1/* Startup code for Alpha/ELF.
04277e02 2 Copyright (C) 1993-2019 Free Software Foundation, Inc.
db31c863
UD
3 This file is part of the GNU C Library.
4 Contributed by Richard Henderson <rth@tamu.edu>
5
6 The GNU C Library is free software; you can redistribute it and/or
3214b89b
AJ
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
db31c863 10
0bec0145
RM
11 In addition to the permissions in the GNU Lesser General Public
12 License, the Free Software Foundation gives you unlimited
13 permission to link the compiled version of this file with other
14 programs, and to distribute those programs without any restriction
15 coming from the use of this file. (The GNU Lesser General Public
16 License restrictions do apply in other respects; for example, they
17 cover modification of the file, and distribution when not linked
18 into another program.)
19
20 Note that people who make modified versions of this file are not
21 obligated to grant this special exception for their modified
22 versions; it is their choice whether to do so. The GNU Lesser
23 General Public License gives permission to release a modified
24 version without this exception; this exception also makes it
25 possible to release a modified version which carries forward this
26 exception.
27
db31c863
UD
28 The GNU C Library is distributed in the hope that it will be useful,
29 but WITHOUT ANY WARRANTY; without even the implied warranty of
30 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3214b89b 31 Lesser General Public License for more details.
db31c863 32
3214b89b 33 You should have received a copy of the GNU Lesser General Public
ab84e3ff 34 License along with the GNU C Library. If not, see
5a82c748 35 <https://www.gnu.org/licenses/>. */
6932e444
RM
36
37#include <sysdep.h>
38
6932e444 39 .text
93b781dd 40 .align 3
44b8acdd 41 .globl _start
11309adf 42 .ent _start, 0
13906e12 43 .type _start,@function
dca26bcb 44_start:
13e579e4 45 .frame $15, 0, $15
93b781dd
RM
46 br gp, 1f
471: ldgp gp, 0(gp)
94cd6191 48 subq sp, 16, sp
13e579e4 49 mov 0, $15
4bb0cd80 50 .prologue 0
93b781dd 51
f709e937
UD
52 /* Load address of the user's main function. */
53 lda a0, main
93b781dd 54
94cd6191
UD
55 ldl a1, 16(sp) /* get argc */
56 lda a2, 24(sp) /* get argv */
6932e444 57
f709e937 58 /* Load address of our own entry points to .fini and .init. */
f8a26bed
RM
59 lda a3, __libc_csu_init
60 lda a4, __libc_csu_fini
6932e444 61
f709e937
UD
62 /* Store address of the shared library termination function. */
63 mov v0, a5
6932e444 64
94cd6191
UD
65 /* Provide the highest stack address to the user code. */
66 stq sp, 0(sp)
67
f709e937 68 /* Call the user's main function, and exit with its value.
94cd6191 69 But let the libc call main. */
f709e937 70 jsr ra, __libc_start_main
11309adf 71
93b781dd
RM
72 /* Die very horribly if exit returns. Call_pal hlt is callable from
73 kernel mode only; this will result in an illegal instruction trap. */
74 call_pal 0
11309adf
UD
75 .end _start
76
77/* For ECOFF backwards compatibility. */
8796ce21 78weak_alias (_start, __start)
d284ba97
UD
79
80/* Define a symbol for the first piece of initialized data. */
81 .data
82 .globl __data_start
83__data_start:
d284ba97
UD
84 .weak data_start
85 data_start = __data_start