summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/vax/crt1.S
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2015-02-14 23:11:05 -0600
committerWaldemar Brodkorb <wbx@uclibc-ng.org>2015-12-05 21:10:30 +0100
commitd2ac3a6b3a2d2369bec4bf9f0555ebbe72e7bdf5 (patch)
treed3a6afebcc602f01e07e3970b4305fba4871f358 /libc/sysdeps/linux/vax/crt1.S
parent2fbe1ee66ad2107866d3fddd014c1349d135b424 (diff)
good bye vax
I mailed with Jan-Benedict Glaw, it seems VAX on Linux is really a lot of work todo and uClibc support didn't work ever.
Diffstat (limited to 'libc/sysdeps/linux/vax/crt1.S')
-rw-r--r--libc/sysdeps/linux/vax/crt1.S73
1 files changed, 0 insertions, 73 deletions
diff --git a/libc/sysdeps/linux/vax/crt1.S b/libc/sysdeps/linux/vax/crt1.S
deleted file mode 100644
index 70960988d..000000000
--- a/libc/sysdeps/linux/vax/crt1.S
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * crt0 for VAX
- */
-
-/*
- * Program stack looks like:
- * sp-> argc argument counter (integer)
- * argv[0] program name (pointer)
- * argv[1...N] program args (pointers)
- * argv[argc-1] end of args (integer)
- * NULL
- * env[0...N] environment variables (pointers)
- * NULL
- */
-
-#include <features.h>
-
-.text
-.align 4
-
-.global __start
-__start:
-.global _start
-_start:
- /* Kernel uses a_interp + 2, so __start isn't exactly CALLSed, */
- /* but we need to have two bytes here, so we use NOPs. This */
- /* won't hurt, though R0 would be invalid to push, but at */
- /* lease this looks like a real function. */
- .word 0x0101
-
- movl $0, %fp /* FP = 0, since this is the */
- /* top-most stack frame */
- movl %sp, %r0 /* R0 = %sp */
- movl (%sp)+, %r4 /* R4 = argc */
- movl %sp, %r3 /* R3 = argv = &argv[0] */
-
-#if (defined L_crt1 || defined L_gcrt1) && defined __UCLIBC_CTOR_DTOR__
- pushl %r0 /* stack_end */
- pushl $0 /* rtld_fini. This is probably needed for the */
- /* case where a dynamic linker is involved. So */
- /* this is an open FIXME that needs to be */
- /* addressed at some time... */
- pushl $_fini
- pushl $_init
- pushl %r3 /* Argument pointer */
- pushl %r4 /* And the argument count */
- pushl $main /* main() */
-
- /* We need to call __uClibc_main which should not return.
- * __uClibc_main (int (*main) (int, char **, char **),
- * int argc,
- * char **argv,
- * void (*init) (void),
- * void (*fini) (void),
- * void (*rtld_fini) (void),
- * void *stack_end);
- */
- calls $7, __uClibc_main
-#else /* FIXME: THIS IS BROKEN!!! */
- /* start to load the arguments from the stack */
- /* arguments are on ap stack */
- pushl %r2
- pushl %r3
- pushl %r4
-
- calls $3, __uClibc_main
-#endif
-
- /* The above __uClibc_start_main() shouldn't ever return. If it */
- /* does, we just crash. */
- halt
-.align 2
-