forked from vitasdk/newlib
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
2006-12-08 Sa Liu <[email protected]>
* spu/exit.c (libgloss_exit): Rename from this .. (_exit): .. to this. Overhaul. (exit): Remove. * spu/crt0.S, spu/crti.S, spu/crtn.S: New files. * spu/crt0.C, spu/init.c: Remove. * spu/configure.in (AC_INIT): Check for crt0.S, not crt0.C. * spu/configure: Regenerate. * spu/Makefile.in (crti.o, crtn.o, crt1.o, crt2.o): New targets. (OBJS): Remove init.o. (CRTOBJS): New. (OUTPUTS): Add $(CRTOBJS).
- Loading branch information
Showing
9 changed files
with
323 additions
and
86 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,18 @@ | ||
2006-11-27 Jeff Johnston <[email protected]> | ||
2006-12-08 Sa Liu <[email protected]> | ||
|
||
* spu/exit.c (libgloss_exit): Rename from this .. | ||
(_exit): .. to this. Overhaul. | ||
(exit): Remove. | ||
* spu/crt0.S, spu/crti.S, spu/crtn.S: New files. | ||
* spu/crt0.C, spu/init.c: Remove. | ||
* spu/configure.in (AC_INIT): Check for crt0.S, not crt0.C. | ||
* spu/configure: Regenerate. | ||
* spu/Makefile.in (crti.o, crtn.o, crt1.o, crt2.o): New targets. | ||
(OBJS): Remove init.o. | ||
(CRTOBJS): New. | ||
(OUTPUTS): Add $(CRTOBJS). | ||
|
||
I2006-11-27 Jeff Johnston <[email protected]> | ||
|
||
* mips/crt0.S: Fix preprocessor statements from previous patch | ||
to be ANSI. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,168 @@ | ||
/* (C) Copyright IBM Corp. 2005, 2006 | ||
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. | ||
* Neither the name of IBM 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 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 THE COPYRIGHT OWNER 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. | ||
*/ | ||
|
||
/* crt0.S - entry function for C Runtime. | ||
* | ||
* With _STD_MAIN switch, the crt0.S will be compiled to crt2.o. | ||
* The crt2.o sets up a C99-style interface for the SPU application's | ||
* main() function, including a local copy of argv strings. | ||
* | ||
* The number of argument strings is passed in R3. The size and EA | ||
* location of the argument vector region is passed in R4. Once the | ||
* argv region is copied to the highest range of LS, and $SP is set | ||
* just below it. | ||
* | ||
* Without _STD_MAIN, the crt0.S is compiled to crt1.o. | ||
* The crt1.o prepares the entry for an SPU module. The main() function | ||
* is called with different parameter list: spu_id, param and env | ||
* are passed by R3, R4 and R5 respectively. | ||
*/ | ||
|
||
#ifdef _STD_MAIN | ||
#define MFC_TAG_UPDATE_ALL 2 | ||
#define MFC_GET_CMD 0x40 | ||
#define TAGID 0 | ||
#define TAGMASK 1 | ||
#endif | ||
|
||
.text | ||
.global _start | ||
.type _start, @function | ||
|
||
_start: | ||
#ifdef _STD_MAIN | ||
/* | ||
* Copy the argument vector region from EA to LS. The DMA | ||
* parameters are passed in R4: | ||
* | ||
* +-------+-------+-------+-------+ | ||
* R4 | LS | EA-HI | EA-LO | SIZE | | ||
* +-------+-------+-------+-------+ | ||
* word 0 1 2 3 | ||
* | ||
* By the end of this sequence, the prefered slot (word 0) of | ||
* R4 will contain the LS offset of argv region, which also | ||
* serves as the base offset for $SP. | ||
*/ | ||
wrch $MFC_LSA, $4 | ||
rotqbyi $4, $4, 4 | ||
wrch $MFC_EAH, $4 | ||
rotqbyi $4, $4, 4 | ||
wrch $MFC_EAL, $4 | ||
rotqbyi $4, $4, 4 | ||
wrch $MFC_Size, $4 | ||
rotqbyi $4, $4, 4 | ||
il $LR, TAGID | ||
wrch $MFC_TagID, $LR | ||
|
||
/* Issue MFC_GET_CMD, then wait for transfer of argument | ||
* vector region to complete. | ||
*/ | ||
il $LR, MFC_GET_CMD | ||
wrch $MFC_Cmd, $LR | ||
il $LR, TAGMASK | ||
wrch $MFC_WrTagMask, $LR | ||
il $LR, MFC_TAG_UPDATE_ALL | ||
wrch $MFC_WrTagUpdate, $LR | ||
rdch $LR, $MFC_RdTagStat | ||
#endif | ||
|
||
/* Save parameter list of main function to the non-volatile | ||
* registers. spu_thread module has three parameters, while | ||
* spulet only has two. | ||
*/ | ||
ori $80, $3, 0 | ||
ori $81, $4, 0 | ||
#ifndef _STD_MAIN | ||
ori $82, $5, 0 | ||
#endif | ||
|
||
/* The Link Register is initialized to NULL. | ||
*/ | ||
il $LR, 0 | ||
|
||
#ifdef _STD_MAIN | ||
/* For spulet, initialize stack pointer just below the argv region. | ||
*/ | ||
ai $SP,$4,-16 | ||
#else | ||
/* For spe_thread module, the stack pointer is initialized | ||
* below the area where __stack points to. | ||
*/ | ||
ila $SP,__stack | ||
#endif | ||
/* Initialize back chain to NULL. | ||
*/ | ||
stqd $LR,0($SP) | ||
|
||
/* Allocate 2 slots for stack frame. | ||
*/ | ||
stqd $SP,-32($SP) | ||
ai $SP,$SP,-32 | ||
|
||
/* Save the Link Register in Link Register Save Area. | ||
*/ | ||
stqd $LR,16($SP) | ||
|
||
/* Calculate stack size. | ||
*/ | ||
ila $3,_end | ||
sf $3,$3,$SP | ||
|
||
/* The BE Linux ABI passes the stack size in $2, or use | ||
* the default if $2 == 0. | ||
*/ | ||
rotqbyi $4,$2,12 | ||
ceqi $5,$4,0 | ||
selb $3,$4,$3,$5 | ||
fsmbi $4,3840 | ||
selb $SP,$SP,$3,$4 | ||
|
||
/* Call the _init function. | ||
*/ | ||
brsl $LR, _init | ||
|
||
/* Call the _fini function at exit time. | ||
*/ | ||
ila $3, _fini | ||
brsl $LR, atexit | ||
|
||
ori $3,$80,0 | ||
ori $4,$81,0 | ||
#ifndef _STD_MAIN | ||
ori $5,$82,0 | ||
#endif | ||
|
||
/* Call the programs main. | ||
*/ | ||
brsl $LR, main | ||
|
||
/* Call exit. | ||
*/ | ||
brsl $LR, exit | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
# (C) Copyright IBM Corp. 2005, 2006 | ||
# | ||
# 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. | ||
# * Neither the name of IBM 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 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 THE COPYRIGHT OWNER 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. | ||
# | ||
# This file just make a stack frame for the contents of the .fini and | ||
# .init sections. Users may put any desired instructions in those | ||
# sections. | ||
|
||
# Note - this macro is complimented by the FUNC_END macro | ||
# in crtn.S. If you change this macro you must also change | ||
# that macro match. | ||
.macro FUNC_START | ||
# Create a stack frame with two slots: LR and BC | ||
# The .init and .fini section don't change the call-preserved | ||
# registes, therefore no need to save them. | ||
stqd $lr, 16($sp) | ||
stqd $sp, -32($sp) | ||
ai $sp, $sp, -32 | ||
.endm | ||
|
||
.file "crti.S" | ||
|
||
.section ".init" | ||
.align 2 | ||
|
||
# To make sure the address of _init is not zero, because | ||
# the default linker entry point is 0. | ||
nop | ||
|
||
.global _init | ||
.type _init, @function | ||
_init: | ||
FUNC_START | ||
|
||
|
||
.section ".fini" | ||
.align 2 | ||
.global _fini | ||
.type _fini, @function | ||
_fini: | ||
FUNC_START | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
# (C) Copyright IBM Corp. 2005, 2006 | ||
# | ||
# 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. | ||
# * Neither the name of IBM 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 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 THE COPYRIGHT OWNER 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. | ||
# | ||
# This file just makes sure that the .fini and .init sections do in | ||
# fact return. Users may put any desired instructions in those sections. | ||
# This file is the last thing linked into any executable. | ||
|
||
# Note - this macro is complimented by the FUNC_START macro | ||
# in crti.S. If you change this macro you must also change | ||
# that macro match. | ||
# | ||
# Note - we do not try any fancy optimisations of the return | ||
# sequences here, it is just not worth it. Instead keep things | ||
# simple. The link register is restored and then the correct | ||
# function return instruction is performed. | ||
.macro FUNC_END | ||
ai $sp, $sp, 32 | ||
lqd $lr, 16($sp) | ||
bi $lr | ||
.endm | ||
.file "crtn.S" | ||
|
||
.section ".init" | ||
|
||
FUNC_END | ||
|
||
.section ".fini" | ||
|
||
FUNC_END | ||
|
||
# end of crtn.S |
Oops, something went wrong.