cpu.ppc: stick old stack pointer in a register for use by callbacks

release
Slava Pestov 2010-04-01 22:39:46 -04:00
parent eceabbc57e
commit 2cab0bb86c
1 changed files with 9 additions and 2 deletions

View File

@ -76,9 +76,12 @@ CONSTANT: nv-reg 17
432 save-at ; 432 save-at ;
[ [
! Save old stack pointer
11 1 MR
! Create stack frame ! Create stack frame
0 MFLR 0 MFLR
1 1 callback-frame-size neg STWU 1 1 callback-frame-size SUBI
0 1 callback-frame-size lr-save + STW 0 1 callback-frame-size lr-save + STW
! Save all non-volatile registers ! Save all non-volatile registers
@ -86,6 +89,10 @@ CONSTANT: nv-reg 17
nv-fp-regs [ 8 * 80 + save-fp ] each-index nv-fp-regs [ 8 * 80 + save-fp ] each-index
nv-vec-regs [ 16 * 224 + save-vec ] each-index nv-vec-regs [ 16 * 224 + save-vec ] each-index
! Stick old stack pointer in a non-volatile register so that
! callbacks can access their arguments
nv-reg 11 MR
! Load VM into vm-reg ! Load VM into vm-reg
0 vm-reg LOAD32 rc-absolute-ppc-2/2 rt-vm jit-rel 0 vm-reg LOAD32 rc-absolute-ppc-2/2 rt-vm jit-rel
@ -126,7 +133,7 @@ CONSTANT: nv-reg 17
! Tear down stack frame and return ! Tear down stack frame and return
0 1 callback-frame-size lr-save + LWZ 0 1 callback-frame-size lr-save + LWZ
1 1 0 LWZ 1 1 callback-frame-size ADDI
0 MTLR 0 MTLR
BLR BLR
] callback-stub jit-define ] callback-stub jit-define