Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libgloss/mips/crt0_cfe.S')
-rw-r--r--libgloss/mips/crt0_cfe.S263
1 files changed, 0 insertions, 263 deletions
diff --git a/libgloss/mips/crt0_cfe.S b/libgloss/mips/crt0_cfe.S
deleted file mode 100644
index 9e920e2d5..000000000
--- a/libgloss/mips/crt0_cfe.S
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * crt0_cfe.S -- Runtime startup for MIPS targets running CFE.
- *
- * Copyright 2003
- * Broadcom Corporation. All rights reserved.
- *
- * This software is furnished under license and may be used and copied only
- * in accordance with the following terms and conditions. Subject to these
- * conditions, you may download, copy, install, use, modify and distribute
- * modified or unmodified copies of this software in source and/or binary
- * form. No title or ownership is transferred hereby.
- *
- * 1) Any source code used, modified or distributed must reproduce and
- * retain this copyright notice and list of conditions as they appear in
- * the source file.
- *
- * 2) No right is granted to use any trade name, trademark, or logo of
- * Broadcom Corporation. The "Broadcom Corporation" name may not be
- * used to endorse or promote products derived from this software
- * without the prior written permission of Broadcom Corporation.
- *
- * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
- * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
- * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Derived from crt0_cygmon.S:
- *
- * Copyright (c) 1995, 1996, 1997, 2000 Red Hat, Inc.
- *
- * 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.
- */
-
-/*
- * This file does minimal runtime startup for code running under
- * CFE firmware.
- *
- * It does minimal hardware initialization. In particular
- * it sets Status:FR to match the requested floating point
- * mode.
- *
- * It is meant to be linked with the other files provided by libcfe.a,
- * and calls routines in those files.
- */
-
-#ifdef __mips16
-/* This file contains 32 bit assembly code. */
- .set nomips16
-#endif
-#ifdef __mips_embedded_pic
-# error -membedded-pic is not supported.
-#endif
-
-#include "regs.S"
-
-/*
- * Set up some room for a stack. We just grab a chunk of memory.
- */
-#define STARTUP_STACK_SIZE (1 * 1024)
-
- .comm _lstack, STARTUP_STACK_SIZE
-
- .text
- .align 4
-
- /*
- * Without the following nop, GDB thinks _start is a data variable.
- * This is probably a bug in GDB in handling a symbol that is at the
- * start of the .text section.
- */
- nop
-
-
- /*
- * On entry, the following values have been passed in registers
- * by the firmware:
- *
- * a0: firmware handle
- * a1: zero (unused)
- * a2: firmware callback entrypoint
- * a3: CFE entrypoint seal (unused)
- *
- * They must be preserved until the CFE entrypoint and handle
- * are passed to __libcfe_init().
- */
-
- .globl _start
- .ent _start
-_start:
- .set noreorder
- /* Set the global data pointer, defined in the linker script. */
- la gp, _gp
-
-#ifndef __mips_soft_float
- /* If compiled for hard float, set the FPU mode based on the
- compilation flags. Note that this assumes that enough code
- will run after the mtc0 to clear any hazards. */
- mfc0 t0, C0_SR
- or t0, t0, (SR_CU1 | SR_FR)
-#if (__mips_fpr == 32)
- xor t0, t0, SR_FR /* If 32-bit FP mode, clear FR. */
-#endif
- mtc0 t0, C0_SR
-#endif
- .end _start
-
- /*
- * zero out the bss section.
- */
- .globl _zerobss
- .ent _zerobss
-_zerobss:
- /* These variables are defined in the linker script. */
- la v0, _fbss
- la v1, _end
-
-3:
- sw zero, 0(v0)
- bltu v0, v1, 3b
- addiu v0, v0, 4 /* Delay slot. */
- .end _zerobss
-
- /*
- * Setup a small stack so we can run some C code, and do
- * the library initialization. (32 bytes are saved for
- * the argument registers' stack slots.)
- */
- .globl _stackinit
- .ent _stackinit
-_stackinit:
- la t0, _lstack
- addiu sp, t0, (STARTUP_STACK_SIZE - 32)
- jal __libcfe_init
- nop
-
- /*
- * Setup the stack pointer --
- * __libcfe_init() returns the value to be used as the top of
- * the program's stack.
- *
- * We subtract 32 bytes for the 4 argument registers, in case
- * main() wants to write them back to the stack. The caller
- * allocates stack space for parameters in the old MIPS ABIs.
- * We must do this even though we aren't passing arguments,
- * because main might be declared to have them.)
- *
- * We subtract 32 more bytes for the argv/envp setup for the
- * call to main().
- */
- subu v0, v0, 64
- move sp, v0
-
- .end _stackinit
-
- /*
- * initialize target specific stuff. Only execute these
- * functions it they exist.
- */
- .globl hardware_init_hook .text
- .globl software_init_hook .text
- .type _fini,@function
- .type _init,@function
- .globl atexit .text
- .globl exit .text
- .globl _crt0init
- .ent _crt0init
-_crt0init:
- la t9, hardware_init_hook # init the hardware if needed
- beq t9, zero, 6f
- nop
- jal t9
- nop
-6:
- la t9, software_init_hook # init the software if needed
- beq t9, zero, 7f
- nop
- jal t9
- nop
-7:
- la a0, _fini
- jal atexit
- nop
-
-#ifdef GCRT0
- .globl _ftext
- .globl _extext
- la a0, _ftext
- la a1, _etext
- jal monstartup
- nop
-#endif
-
- jal _init # run global constructors
- nop
-
- addiu a1,sp,32 # argv = sp + 32
- addiu a2,sp,40 # envp = sp + 40
-#if __mips64
- sd zero,(a1) # argv[argc] = 0
- sd zero,(a2) # envp[0] = 0
-#else
- sw zero,(a1)
- sw zero,(a2)
-#endif
-
- jal main # call the program start function
- move a0,zero # set argc to 0; delay slot.
-
- # fall through to the "exit" routine
- jal exit # call libc exit to run the G++
- # destructors
- move a0, v0 # pass through the exit code
- .end _crt0init
-
-/*
- * _exit -- Exit from the application. This is provided in this file because
- * program exit should shut down profiling (if GCRT0 is defined),
- * and only this file is compiled with GCRT0 defined.
- */
- .globl _exit
- .ent _exit
-_exit:
-7:
- move s0, a0 /* Save in case we loop. */
-
-#ifdef GCRT0
- jal _mcleanup
- nop
-#endif
-
- la t0, hardware_exit_hook
- beq t0,zero,1f
- nop
- jal t0
- nop
-
-1:
- /* Call into the library to do the heavy lifting. */
- jal __libcfe_exit
- move a0, s0 /* Delay slot. */
-
- b 7b /* Loop back just in case. */
- nop
- .end _exit
-
-/* EOF crt0_cfe.S */