diff options
Diffstat (limited to 'libgloss/i960/crt0.c')
-rw-r--r-- | libgloss/i960/crt0.c | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/libgloss/i960/crt0.c b/libgloss/i960/crt0.c deleted file mode 100644 index 45d7891..0000000 --- a/libgloss/i960/crt0.c +++ /dev/null @@ -1,66 +0,0 @@ -extern int main(int argc, char **argv, char **envp); -extern int brk (void *value); - -extern char bss_start; -extern char end; - -char *__env[1] = {0}; -char **environ = __env; - -#define ENABLE_TRACE_MASK 1 - -__inline static void -enable_tracing (void) -{ - register int mask = ENABLE_TRACE_MASK; - __asm__ volatile ("modpc %0,%0,%0" - : - : "d" (mask)); -} - -#define STACK_ALIGN 64 - -__inline static void -set_stack (void* ptr) -{ - ptr = (void *)(((int)ptr + STACK_ALIGN - 1) & ~(STACK_ALIGN - 1)); - /* SP must be 64 bytes larger than FP at start. */ - __asm__ volatile ("mov %0,sp" - : - : "d" (ptr+STACK_ALIGN)); - __asm__ volatile ("mov %0,fp" - : - : "d" (ptr)); -} - -__inline static void -init_Cregs (void) -{ - /* set register values gcc like */ - register unsigned int mask0=0x3b001000; - register unsigned int mask1=0x00009107; - __asm__ volatile ("mov %0,g14" - : /* no output */ - : "I" (0)); /* gnu structure pointer */ - __asm__ volatile ("modac %1,%0,%0" - : /* no output */ - : "d" (mask0), - "d" (mask1)); /* fpu control kb */ -} - -void -_start(void) -{ - char *p; - - enable_tracing (); - set_stack (&end); - init_Cregs (); - /* The stack grows upwards, so this makes the heap start after a 256K - stack area. PlumHall known to fail with less than 73K of stack. */ - brk (&end+0x40000); - /* clear bss */ - memset (&bss_start, 0, &end - &bss_start); - main(0, 0, 0); - exit(0); -} |