diff options
Diffstat (limited to 'libgloss/rs6000/xil-crt0.S')
-rw-r--r-- | libgloss/rs6000/xil-crt0.S | 192 |
1 files changed, 0 insertions, 192 deletions
diff --git a/libgloss/rs6000/xil-crt0.S b/libgloss/rs6000/xil-crt0.S deleted file mode 100644 index e003ed37e..000000000 --- a/libgloss/rs6000/xil-crt0.S +++ /dev/null @@ -1,192 +0,0 @@ -/*----------------------------------------------------------------------------- -// -// Copyright (c) 2004, 2009 Xilinx, Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. 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. -// -// 3. Neither the name of Xilinx nor the names of its contributors may be -// used to endorse or promote products derived from this software without -// specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER 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 THE COPYRIGHT -// HOLDER OR CONTRIBUTORS 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. -// -//---------------------------------------------------------------------------*/ - - .file "xil-crt0.S" - .section ".got2","aw" - .align 2 - -.LCTOC1 = . + 32768 - -.Lsbss_start = .-.LCTOC1 - .long __sbss_start - -.Lsbss_end = .-.LCTOC1 - .long __sbss_end - -.Lbss_start = .-.LCTOC1 - .long __bss_start - -.Lbss_end = .-.LCTOC1 - .long __bss_end - -.Lstack = .-.LCTOC1 - .long __stack - -.Lsda = .-.LCTOC1 - .long _SDA_BASE_ /* address of the first small data area */ - -.Lsda2 = .-.LCTOC1 - .long _SDA2_BASE_ /* address of the second small data area */ - - - .text - .globl _start -_start: - bl __cpu_init /* Initialize the CPU first (BSP provides this) */ - - lis 5,.LCTOC1@h - ori 5,5,.LCTOC1@l - - lwz 13,.Lsda(5) /* load r13 with _SDA_BASE_ address */ - lwz 2,.Lsda2(5) /* load r2 with _SDA2_BASE_ address */ - -#ifndef SIMULATOR - /* clear sbss */ - lwz 6,.Lsbss_start(5) /* calculate beginning of the SBSS */ - lwz 7,.Lsbss_end(5) /* calculate end of the SBSS */ - - cmplw 1,6,7 - bc 4,4,.Lenclsbss /* If no SBSS, no clearing required */ - - li 0,0 /* zero to clear memory */ - subf 8,6,7 /* number of bytes to zero */ - srwi. 9,8,2 /* number of words to zero */ - beq .Lstbyteloopsbss /* Check if the number of bytes was less than 4 */ - mtctr 9 - addi 6,6,-4 /* adjust so we can use stwu */ -.Lloopsbss: - stwu 0,4(6) /* zero sbss */ - bdnz .Lloopsbss - -.Lstbyteloopsbss: - andi. 9,8,3 /* Calculate how many trailing bytes we have */ - beq 0,.Lenclsbss - mtctr 9 - addi 6,6,-1 /* adjust, so we can use stbu */ - -.Lbyteloopsbss: - stbu 0,1(6) - bdnz .Lbyteloopsbss - -.Lenclsbss: -.Lstclbss: - - /* clear bss */ - lwz 6,.Lbss_start(5) /* calculate beginning of the BSS */ - lwz 7,.Lbss_end(5) /* calculate end of the BSS */ - - cmplw 1,6,7 - bc 4,4,.Lenclbss /* If no BSS, no clearing required */ - - li 0,0 /* zero to clear memory */ - subf 8,6,7 /* number of bytes to zero */ - srwi. 9,8,2 /* number of words to zero */ - beq .Lstbyteloopbss /* Check if the number of bytes was less than 4 */ - mtctr 9 - addi 6,6,-4 /* adjust so we can use stwu */ -.Lloopbss: - stwu 0,4(6) /* zero bss */ - bdnz .Lloopbss - -.Lstbyteloopbss: - andi. 9,8,3 /* Calculate how many trailing bytes we have */ - beq 0,.Lenclbss /* If zero, we are done */ - mtctr 9 - addi 6,6,-1 /* adjust, so we can use stbu */ - -.Lbyteloopbss: - stbu 0,1(6) - bdnz .Lbyteloopbss - -.Lenclbss: -#endif /* SIMULATOR */ - - /* set stack pointer */ - lwz 1,.Lstack(5) /* stack address */ - - /* set up initial stack frame */ - addi 1,1,-8 /* location of back chain */ - lis 0,0 - stw 0,0(1) /* set end of back chain */ - - /* initialize base timer to zero */ - mtspr 0x11c,0 - mtspr 0x11d,0 - -#ifdef HAVE_XFPU - /* On the Xilinx PPC405 and PPC440, the MSR - must be explicitly set to mark the prescence - of an FPU */ - mfpvr 0 - rlwinm 0,0,0,12,15 - cmpwi 7,0,8192 - mfmsr 0 - ori 0,0,8192 - beq- 7,fpu_init_done -do_405: - oris 0,0,512 -fpu_init_done: - mtmsr 0 -#endif - -#ifdef PROFILING - /* Setup profiling stuff */ - bl _profile_init -#endif /* PROFILING */ - - /* Call __init */ - bl __init - - /* Let her rip */ - bl main - - /* Invoke the language cleanup functions */ - bl __fini - -#ifdef PROFILING - /* Cleanup profiling stuff */ - bl _profile_clean -#endif /* PROFILING */ - - /* Call __init */ - /* All done */ - bl exit - -/* Trap has been removed for both simulation and hardware */ - .globl _exit -_exit: - b _exit - -.Lstart: - .size _start,.Lstart-_start - |