summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/nios/crt1.S
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2006-01-04 07:03:57 +0000
committerMike Frysinger <vapier@gentoo.org>2006-01-04 07:03:57 +0000
commitbbb8bf360e021020c605468074f7f21fb72c59c3 (patch)
treeb42c1c0792060ea9a72a162fd624126f8aecd08c /libc/sysdeps/linux/nios/crt1.S
parent2505f2b570310980d1aa80fdfa242682aceaac5f (diff)
Bug 618, Thomas Chou: update crt to new 0.9.28 uClibc style
Diffstat (limited to 'libc/sysdeps/linux/nios/crt1.S')
-rw-r--r--libc/sysdeps/linux/nios/crt1.S59
1 files changed, 59 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/nios/crt1.S b/libc/sysdeps/linux/nios/crt1.S
new file mode 100644
index 000000000..98777e831
--- /dev/null
+++ b/libc/sysdeps/linux/nios/crt1.S
@@ -0,0 +1,59 @@
+/* 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 main,@function
+ .type __uClibc_main,@function
+ .type __h_errno_location, @function
+ .type _stdio_init, @function
+ .type _stdio_term, @function
+
+ .text
+
+_start:
+ nop
+ nop
+
+ MOVIA %o0, main@h
+ lds %o1,[%sp, (REGWIN_SZ / 4) + 0] // main's argc
+ lds %o2,[%sp, (REGWIN_SZ / 4) + 1] // main's argv
+
+ MOVIA %o3, _init@h
+ MOVIA %o4, _fini@h
+ mov %o5, %i0 /* rtld_fini */
+ mov %o6, %sp /* stack_end */
+ MOVIA %o7, __uClibc_main@h
+
+ call %o7
+ nop
+
+
+ /* If that didn't kill us, ... */
+__exit:
+ MOVIP %g1, __NR_exit
+ trap 63