summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/nios/crt0.S
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/nios/crt0.S')
-rw-r--r--libc/sysdeps/linux/nios/crt0.S57
1 files changed, 57 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/nios/crt0.S b/libc/sysdeps/linux/nios/crt0.S
new file mode 100644
index 000000000..bbf4ede6a
--- /dev/null
+++ b/libc/sysdeps/linux/nios/crt0.S
@@ -0,0 +1,57 @@
+/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
+
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA. */
+
+#include <features.h>
+#include <asm/unistd.h>
+#include "NM_Macros.S"
+#define __ASSEMBLY__
+#include <asm/ptrace.h> /* for REGWIN_SZ */
+
+ .global _start
+ .type __start,@function
+ .weak _init
+ .weak _fini
+ .type __uClibc_start_main,@function
+ .type __h_errno_location, @function
+ .type _stdio_init, @function
+ .type _stdio_term, @function
+
+ .text
+
+_start:
+ nop
+ nop
+
+ lds %o0,[%sp, (REGWIN_SZ / 4) + 0] // main's argc
+ lds %o1,[%sp, (REGWIN_SZ / 4) + 1] // main's argv
+ lds %o2,[%sp, (REGWIN_SZ / 4) + 2] // main's envp
+
+ MOVIA %o3, _init@h
+ MOVIA %o4, _fini@h
+ MOVIA %o5, __uClibc_start_main@h
+
+ call %o5
+ nop
+
+
+ /* If that didn't kill us, ... */
+__exit:
+ MOVIP %g1, __NR_exit
+ trap 63
+ \ No newline at end of file