-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
73 changed files
with
1,744 additions
and
1,301 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
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,94 @@ | ||
/* | ||
* $Id: stdlib_longjmp.c,v 1.6 2010-10-20 13:50:17 clib2devs Exp $ | ||
*/ | ||
|
||
/* This is a simple version of setjmp and longjmp for the PowerPC. | ||
Ian Lance Taylor, Cygnus Support, 9 Feb 1994. | ||
Modified by Jeff Johnston, Red Hat Inc. 2 Oct 2001. */ | ||
|
||
#include "ppc-asm.h" | ||
|
||
FUNC_START(longjmp_altivec) | ||
addi 3,3,15 # align Altivec to 16 byte boundary | ||
rlwinm 3,3,0,0,27 | ||
|
||
lwz 1,0(3) # offset 0 | ||
lwzu 2,4(3) # offset 4 | ||
lwzu 13,4(3) # offset 8 | ||
lwzu 14,4(3) # offset 12 | ||
lwzu 15,4(3) # offset 16 | ||
lwzu 16,4(3) # offset 20 | ||
lwzu 17,4(3) # offset 24 | ||
lwzu 18,4(3) # offset 28 | ||
lwzu 19,4(3) # offset 32 | ||
lwzu 20,4(3) # offset 36 | ||
lwzu 21,4(3) # offset 40 | ||
lwzu 22,4(3) # offset 44 | ||
lwzu 23,4(3) # offset 48 | ||
lwzu 24,4(3) # offset 52 | ||
lwzu 25,4(3) # offset 56 | ||
lwzu 26,4(3) # offset 60 | ||
lwzu 27,4(3) # offset 64 | ||
lwzu 28,4(3) # offset 68 | ||
lwzu 29,4(3) # offset 72 | ||
lwzu 30,4(3) # offset 76 | ||
lwzu 31,4(3) # offset 80 | ||
lwzu 5,4(3) # offset 84 | ||
mtlr 5 | ||
lwzu 5,4(3) # offset 88 | ||
mtcrf 255,5 | ||
// # one word pad to get floating point aligned on 8 byte boundary | ||
#ifndef _SOFT_FLOAT | ||
lfdu 14,8(3) # offset 96 | ||
lfdu 15,8(3) # offset 104 | ||
lfdu 16,8(3) # offset 112 | ||
lfdu 17,8(3) # offset 120 | ||
lfdu 18,8(3) # offset 128 | ||
lfdu 19,8(3) # offset 136 | ||
lfdu 20,8(3) # offset 144 | ||
lfdu 21,8(3) # offset 152 | ||
lfdu 22,8(3) # offset 160 | ||
lfdu 23,8(3) # offset 168 | ||
lfdu 24,8(3) # offset 176 | ||
lfdu 25,8(3) # offset 184 | ||
lfdu 26,8(3) # offset 192 | ||
lfdu 27,8(3) # offset 200 | ||
lfdu 28,8(3) # offset 208 | ||
lfdu 29,8(3) # offset 216 | ||
lfdu 30,8(3) # offset 224 | ||
lfdu 31,8(3) # offset 232 | ||
#endif | ||
|
||
/* restore Altivec vrsave and v20-v31 registers */ | ||
lwzu 5,16(3) # offset 248 | ||
mtspr 256,5 # vrsave | ||
addi 3,3,8 | ||
lvx 20,0,3 # offset 256 | ||
addi 3,3,16 | ||
lvx 21,0,3 # offset 272 | ||
addi 3,3,16 | ||
lvx 22,0,3 # offset 288 | ||
addi 3,3,16 | ||
lvx 23,0,3 # offset 304 | ||
addi 3,3,16 | ||
lvx 24,0,3 # offset 320 | ||
addi 3,3,16 | ||
lvx 25,0,3 # offset 336 | ||
addi 3,3,16 | ||
lvx 26,0,3 # offset 352 | ||
addi 3,3,16 | ||
lvx 27,0,3 # offset 368 | ||
addi 3,3,16 | ||
lvx 28,0,3 # offset 384 | ||
addi 3,3,16 | ||
lvx 29,0,3 # offset 400 | ||
addi 3,3,16 | ||
lvx 30,0,3 # offset 416 | ||
addi 3,3,16 | ||
lvx 31,0,3 # offset 432 | ||
|
||
mr. 3,4 | ||
bclr+ 4,2 | ||
li 3,1 | ||
blr | ||
FUNC_END(longjmp_altivec) |
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,98 @@ | ||
/* | ||
* $Id: stdlib_setjmp.c,v 2.0 2010-10-20 13:50:17 clib2devs Exp $ | ||
*/ | ||
/* This is a simple version of setjmp and longjmp for the PowerPC. | ||
Ian Lance Taylor, Cygnus Support, 9 Feb 1994. | ||
Modified by Jeff Johnston, Red Hat Inc. 2 Oct 2001. */ | ||
|
||
#include "ppc-asm.h" | ||
|
||
FUNC_START(setjmp_altivec) | ||
addi 3,3,15 # align Altivec to 16 byte boundary | ||
rlwinm 3,3,0,0,27 | ||
|
||
stw 1,0(3) # offset 0 | ||
stwu 2,4(3) # offset 4 | ||
stwu 13,4(3) # offset 8 | ||
stwu 14,4(3) # offset 12 | ||
stwu 15,4(3) # offset 16 | ||
stwu 16,4(3) # offset 20 | ||
stwu 17,4(3) # offset 24 | ||
stwu 18,4(3) # offset 28 | ||
stwu 19,4(3) # offset 32 | ||
stwu 20,4(3) # offset 36 | ||
stwu 21,4(3) # offset 40 | ||
stwu 22,4(3) # offset 44 | ||
stwu 23,4(3) # offset 48 | ||
stwu 24,4(3) # offset 52 | ||
stwu 25,4(3) # offset 56 | ||
stwu 26,4(3) # offset 60 | ||
stwu 27,4(3) # offset 64 | ||
stwu 28,4(3) # offset 68 | ||
stwu 29,4(3) # offset 72 | ||
stwu 30,4(3) # offset 76 | ||
stwu 31,4(3) # offset 80 | ||
mflr 4 | ||
stwu 4,4(3) # offset 84 | ||
mfcr 4 | ||
stwu 4,4(3) # offset 88 | ||
// # one word pad to get floating point aligned on 8 byte boundary | ||
#ifndef _SOFT_FLOAT | ||
stfdu 14,8(3) # offset 96 | ||
stfdu 15,8(3) # offset 104 | ||
stfdu 16,8(3) # offset 112 | ||
stfdu 17,8(3) # offset 120 | ||
stfdu 18,8(3) # offset 128 | ||
stfdu 19,8(3) # offset 136 | ||
stfdu 20,8(3) # offset 144 | ||
stfdu 21,8(3) # offset 152 | ||
stfdu 22,8(3) # offset 160 | ||
stfdu 23,8(3) # offset 168 | ||
stfdu 24,8(3) # offset 176 | ||
stfdu 25,8(3) # offset 184 | ||
stfdu 26,8(3) # offset 192 | ||
stfdu 27,8(3) # offset 200 | ||
stfdu 28,8(3) # offset 208 | ||
stfdu 29,8(3) # offset 216 | ||
stfdu 30,8(3) # offset 224 | ||
stfdu 31,8(3) # offset 232 | ||
#endif | ||
|
||
/* This requires a total of 21 * 4 + 18 * 8 + 4 + 4 + 4 | ||
bytes == 60 * 4 bytes == 240 bytes. */ | ||
|
||
/* save Altivec vrsave and vr20-vr31 registers */ | ||
mfspr 4,256 # vrsave register | ||
stwu 4,16(3) # offset 248 | ||
addi 3,3,8 | ||
stvx 20,0,3 # offset 256 | ||
addi 3,3,16 | ||
stvx 21,0,3 # offset 272 | ||
addi 3,3,16 | ||
stvx 22,0,3 # offset 288 | ||
addi 3,3,16 | ||
stvx 23,0,3 # offset 304 | ||
addi 3,3,16 | ||
stvx 24,0,3 # offset 320 | ||
addi 3,3,16 | ||
stvx 25,0,3 # offset 336 | ||
addi 3,3,16 | ||
stvx 26,0,3 # offset 352 | ||
addi 3,3,16 | ||
stvx 27,0,3 # offset 368 | ||
addi 3,3,16 | ||
stvx 28,0,3 # offset 384 | ||
addi 3,3,16 | ||
stvx 29,0,3 # offset 400 | ||
addi 3,3,16 | ||
stvx 30,0,3 # offset 416 | ||
addi 3,3,16 | ||
stvx 31,0,3 # offset 432 | ||
|
||
/* This requires a total of 240 + 8 + 8 + 12 * 16 == 448 bytes. */ | ||
|
||
li 3,0 | ||
blr | ||
FUNC_END(setjmp_altivec) | ||
|
||
|
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,40 @@ | ||
/* | ||
* $Id: _longjmpE500.c,v 1.0 2023-07-14 13:50:17 clib2devs Exp $ | ||
*/ | ||
|
||
#include "ppc-asm.h" | ||
|
||
FUNC_START(_longjmp_spe) | ||
evldd r1,24+0*8(r3) | ||
evldd r2,24+1*8(r3) | ||
evldd r11,24+2*8(r3) | ||
evldd r12,24+3*8(r3) | ||
evldd r13,24+4*8(r3) | ||
evldd r14,24+5*8(r3) | ||
evldd r15,24+6*8(r3) | ||
evldd r16,24+7*8(r3) | ||
evldd r17,24+8*8(r3) | ||
evldd r18,24+9*8(r3) | ||
evldd r19,24+10*8(r3) | ||
evldd r20,24+11*8(r3) | ||
evldd r21,24+12*8(r3) | ||
evldd r22,24+13*8(r3) | ||
evldd r23,24+14*8(r3) | ||
evldd r24,24+15*8(r3) | ||
evldd r25,24+16*8(r3) | ||
evldd r26,24+17*8(r3) | ||
evldd r27,24+18*8(r3) | ||
evldd r28,24+19*8(r3) | ||
evldd r29,24+20*8(r3) | ||
evldd r30,24+21*8(r3) | ||
evldd r31,24+22*8(r3) | ||
|
||
mtlr r11 | ||
mtcr r12 | ||
or. r3,r4,r4 | ||
bnelr | ||
li r3,1 | ||
blr | ||
FUNC_END(_longjmp_spe) | ||
|
||
.section .note.GNU-stack,"",%progbits |
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,38 @@ | ||
/* | ||
* $Id: _setjmpE500.c,v 1.0 2023-07-14 13:50:17 clib2devs Exp $ | ||
*/ | ||
|
||
#include "ppc-asm.h" | ||
|
||
FUNC_START(_setjmp_spe) | ||
mflr r11 | ||
mfcr r12 | ||
evstdd r1,24+0*8(r3) | ||
evstdd r2,24+1*8(r3) | ||
evstdd r11,24+2*8(r3) | ||
evstdd r12,24+3*8(r3) | ||
evstdd r13,24+4*8(r3) | ||
evstdd r14,24+5*8(r3) | ||
evstdd r15,24+6*8(r3) | ||
evstdd r16,24+7*8(r3) | ||
evstdd r17,24+8*8(r3) | ||
evstdd r18,24+9*8(r3) | ||
evstdd r19,24+10*8(r3) | ||
evstdd r20,24+11*8(r3) | ||
evstdd r21,24+12*8(r3) | ||
evstdd r22,24+13*8(r3) | ||
evstdd r23,24+14*8(r3) | ||
evstdd r24,24+15*8(r3) | ||
evstdd r25,24+16*8(r3) | ||
evstdd r26,24+17*8(r3) | ||
evstdd r27,24+18*8(r3) | ||
evstdd r28,24+19*8(r3) | ||
evstdd r29,24+20*8(r3) | ||
evstdd r30,24+21*8(r3) | ||
evstdd r31,24+22*8(r3) | ||
|
||
li r3,0 | ||
blr | ||
FUNC_END(_setjmp_spe) | ||
|
||
.section .note.GNU-stack,"",%progbits |
Oops, something went wrong.