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/nds32/crt1.S')
-rw-r--r--libgloss/nds32/crt1.S138
1 files changed, 0 insertions, 138 deletions
diff --git a/libgloss/nds32/crt1.S b/libgloss/nds32/crt1.S
deleted file mode 100644
index 2ff2eea6d..000000000
--- a/libgloss/nds32/crt1.S
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-Copyright (c) 2013-2014 Andes Technology Corporation.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- The name of the company may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY
-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) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-##==============================================================================
-##
-## crt1.S
-##
-## nds32 startup code
-##
-##==============================================================================
-
-##------------------------------------------------------------------------------
-## Vector table setup
-##------------------------------------------------------------------------------
- .section .nds32_init, "ax"
- j _start
-
-##------------------------------------------------------------------------------
-## Startup code implementation
-##------------------------------------------------------------------------------
- .section .text
- .weak _SDA_BASE_
- .global _start
- .type _start, @function
- .align 2
-_start:
- /* The initialization sequence really does matter !!!
- The global pointer must be
- initialized precedence over all others. */
-
-.L_init_gp:
- /* Initialization for global pointer. The symbol _SDA_BASE_ is
- determined by Linker. SDA stands for Small Data Access. */
- la $gp, _SDA_BASE_
-
-.L_init_sp:
- /* Initialization for stack pointe. The symbol _stack is defined
- in linker script. Make sure $sp is 8-byte aligned. */
- la $sp, _stack
-#if __NDS32_ISA_V3__
- bitci $sp, $sp, #7
-#else
- movi $r0, #-8 /* Set $r0 as 0xFFFFFFF8. */
- and $sp, $sp, $r0
-#endif
-
-#if __NDS32_EX9_EXT__
-.L_init_itb:
- /* Initialization for Instruction Table Base (ITB).
- The symbol $_ITB_BASE_ is determined by Linker.
- Set $ITB only if MSC_CFG.EIT (cr4.b'24) is set. */
- mfsr $r0, $MSC_CFG
- srli $r0, $r0, 24
- andi $r0, $r0, 0x1
- beqz $r0, .L_zero_out_bss /* Fall through ? */
- la $r0, $_ITB_BASE_
- mtusr $r0, $ITB
-#endif
-
-.L_zero_out_bss:
- /* Zero out the bss section.
- Equivalence C code for follow part:
- if (_end == _edata) goto .L_call_main
- unsinged int *ptr = _edata;
- while (ptr != _end)
- *ptr++ = 0
- $r0 = ptr/_edata
- $r1 = _end
- $r2 = 0
- */
- la $r0, _edata
- la $r1, _end
- beq $r0, $r1, .L_call_main /* Branch if no bss. */
- movi $r2, #0
-.Lword_clear:
- swi.bi $r2, [$r0], #4
- bne $r0, $r1, .Lword_clear
-
-.L_call_main:
- /* Call '_init' to invoke constructors. */
- jal _init
- /* Register '_fini' into atexit() to invoke destructors when
- exit() has been reached. */
- la $r0, _fini
- jal atexit
- /* Prepare argc/argv/env for main function.
- Since there is no operating system so far,
- we set $r0, $r1, and $r2 to be zero. */
- movi $r0, 0
- movi $r1, 0
- movi $r2, 0
- /* Call 'main'. */
- bal main
-
-.L_terminate_program:
- /* There are two ways to terminate program:
- 1. User "syscall 0x1" directly.
- 2. Call exit. The return value $r0 from main() is
- implicitly passed as argument.
-
- Currently, we use option 2 as a solution to follow C99 5.1.2.2.3,
- but aware that general exit() will do some cleanup procedures
- which may result in large-memory-footprints. */
-
- bal exit
-
-.L_forever_loop:
- /* Should never return here. */
- b .L_forever_loop
-
- .size _start, .-_start