PPC port cleaned up, static linking works well now.
This commit is contained in:
parent
7669d1e334
commit
1c8eb8bad7
55 changed files with 1373 additions and 1095 deletions
47
src/setjmp/powerpc/longjmp.s
Normal file
47
src/setjmp/powerpc/longjmp.s
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
.global _longjmp
|
||||
.global longjmp
|
||||
.type _longjmp,@function
|
||||
.type longjmp,@function
|
||||
_longjmp:
|
||||
longjmp:
|
||||
# void longjmp(jmp_buf env, int val);
|
||||
# put val into return register and restore the env saved in setjmp
|
||||
# if val(r4) is 0, put 1 there.
|
||||
# 0) move old return address into r0
|
||||
lwz 0, 0(3)
|
||||
# 1) put it into link reg
|
||||
mtlr 0
|
||||
#2 ) restore stack ptr
|
||||
lwz 1, 4(3)
|
||||
#3) restore control reg
|
||||
lwz 0, 8(3)
|
||||
mtcr 0
|
||||
#4) restore r14-r31
|
||||
lwz 14, 12(3)
|
||||
lwz 15, 16(3)
|
||||
lwz 16, 20(3)
|
||||
lwz 17, 24(3)
|
||||
lwz 18, 28(3)
|
||||
lwz 19, 32(3)
|
||||
lwz 20, 36(3)
|
||||
lwz 21, 40(3)
|
||||
lwz 22, 44(3)
|
||||
lwz 23, 48(3)
|
||||
lwz 24, 52(3)
|
||||
lwz 25, 56(3)
|
||||
lwz 26, 60(3)
|
||||
lwz 27, 64(3)
|
||||
lwz 28, 68(3)
|
||||
lwz 29, 72(3)
|
||||
lwz 30, 76(3)
|
||||
lwz 31, 80(3)
|
||||
#5) put val into return reg r3
|
||||
mr 3, 4
|
||||
|
||||
#6) check if return value is 0, make it 1 in that case
|
||||
cmpwi cr7, 4, 0
|
||||
bne cr7, 1f
|
||||
li 3, 1
|
||||
1:
|
||||
blr
|
||||
|
||||
40
src/setjmp/powerpc/setjmp.s
Normal file
40
src/setjmp/powerpc/setjmp.s
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
.global __setjmp
|
||||
.global _setjmp
|
||||
.global setjmp
|
||||
.type __setjmp,@function
|
||||
.type _setjmp,@function
|
||||
.type setjmp,@function
|
||||
__setjmp:
|
||||
_setjmp:
|
||||
setjmp:
|
||||
# 0) store IP int 0, then into the jmpbuf pointed to by r3 (first arg)
|
||||
mflr 0
|
||||
stw 0, 0(3)
|
||||
# 1) store reg1 (SP)
|
||||
stw 1, 4(3)
|
||||
# 2) store cr
|
||||
mfcr 0
|
||||
stw 0, 8(3)
|
||||
# 3) store r14-31
|
||||
stw 14, 12(3)
|
||||
stw 15, 16(3)
|
||||
stw 16, 20(3)
|
||||
stw 17, 24(3)
|
||||
stw 18, 28(3)
|
||||
stw 19, 32(3)
|
||||
stw 20, 36(3)
|
||||
stw 21, 40(3)
|
||||
stw 22, 44(3)
|
||||
stw 23, 48(3)
|
||||
stw 24, 52(3)
|
||||
stw 25, 56(3)
|
||||
stw 26, 60(3)
|
||||
stw 27, 64(3)
|
||||
stw 28, 68(3)
|
||||
stw 29, 72(3)
|
||||
stw 30, 76(3)
|
||||
stw 31, 80(3)
|
||||
# 4) set return value to 0
|
||||
li 3, 0
|
||||
# 5) return
|
||||
blr
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
#include <bits/asm.h>
|
||||
.global _longjmp
|
||||
.global longjmp
|
||||
.type _longjmp,@function
|
||||
.type longjmp,@function
|
||||
_longjmp:
|
||||
longjmp:
|
||||
cmpi 7, 0, r3, 0
|
||||
bne 7, 1f
|
||||
addi r3, r3, 1
|
||||
1: lmw r8, 4(r3) // load r8-r31
|
||||
mr r6, r4
|
||||
mtlr r11
|
||||
mtcr r12
|
||||
mr r2, r9
|
||||
mr r1, r10
|
||||
blr
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
#include <bits/asm.h>
|
||||
.global __setjmp
|
||||
.global _setjmp
|
||||
.global setjmp
|
||||
.type __setjmp,@function
|
||||
.type _setjmp,@function
|
||||
.type setjmp,@function
|
||||
__setjmp:
|
||||
_setjmp:
|
||||
setjmp:
|
||||
mflr r11
|
||||
mfcr r12
|
||||
mr r10, r1
|
||||
mr r9, r2
|
||||
stmw r8, 0(r3) // save r8-r31
|
||||
li r3,0
|
||||
blr
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue