diff options
Diffstat (limited to 'libgloss/sparc/cygmon-crt0.S')
-rw-r--r-- | libgloss/sparc/cygmon-crt0.S | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/libgloss/sparc/cygmon-crt0.S b/libgloss/sparc/cygmon-crt0.S deleted file mode 100644 index 272c00d..0000000 --- a/libgloss/sparc/cygmon-crt0.S +++ /dev/null @@ -1,144 +0,0 @@ -/* - * C startup code for the Fujitsu SPARClite demo board - * - * Copyright (c) 1995, 1996 Cygnus Support - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ -#include "asm.h" - -#ifdef TARGET_CPU_SPARC64 -#define STACK_BIAS 2047 -#define SAVE_SIZE -128 -#else -#define SAVE_SIZE -64 -#endif - -.data - .align 8 -SYM(environ): ! this is the first address in the data section - .long 0 - -SYM(argc): - .long 0 - - .text - .align 8 - - .globl SYM(start) - .globl start -SYM(start): -start: - /* see if the stack is already setup. if not, then default - * to using the value of %sp as set by the ROM monitor - */ - sethi %hi(__stack), %g1 - or %g1,%lo(__stack),%g1 - cmp %g0,%g1 - be 1f - nop -#ifdef STACK_BIAS - sub %g1, STACK_BIAS, %g1 -#endif - mov %g1, %sp ! set the stack pointer - mov 0, %fp -1: - - /* zero the bss section */ - sethi %hi(__bss_start),%g2 - or %g2,%lo(__bss_start),%g2 ! start of bss - sethi %hi(_end),%g3 - or %g3,%lo(_end),%g3 ! end of bss - mov %g0,%g1 ! so std has two zeros -zerobss: - std %g0,[%g2] - add %g2,8,%g2 - cmp %g2,%g3 - bleu,a zerobss - nop - -/* - * initialize target specific stuff. Only execute these - * functions it they exist. - */ -init: - sethi %hi(SYM(hardware_init_hook)), %g1 - or %g1,%lo(SYM(hardware_init_hook)),%g1 - cmp %g0,%g1 - be 1f - nop - call SYM(hardware_init_hook) - nop - -1: - sethi %hi(SYM(software_init_hook)), %g1 - or %g1,%lo(SYM(software_init_hook)),%g1 - cmp %g0,%g1 - be 2f - nop - call SYM(software_init_hook) - nop -2: - set SYM(__sigtramp), %o0 - call SYM(__install_signal_handler) - nop - - set do_dtors,%o0 - call SYM(atexit) - nop - - call do_ctors - nop - - set SYM(argc), %o0 - call SYM(__getProgramArgs) - nop - - mov %o0, %o1 - set SYM(argc), %o0 - ld [%o0], %o0 - call SYM(main) - nop - - /* call exit from the C library so atexit gets called, and the - * C++ destructors get run. This calls our exit routine below - * when it's done. - */ - call SYM(exit) - nop - -do_ctors: - save %sp,SAVE_SIZE,%sp - set __CTOR_LIST__,%l0 -our_entry: - ld [%l0],%l1 - add %l0,4,%l0 - tst %l1 -1: - beq 2f - nop - ld [%l0],%l2 - add %l0,4,%l0 - - call %l2 - nop - deccc %l1 - b 1b - nop -2: - ret - restore - -do_dtors: - save %sp,SAVE_SIZE,%sp - set __DTOR_LIST__,%l0 - b our_entry - nop |