From 6fa0a93498c531493ce23dda49aff72c64bb3f74 Mon Sep 17 00:00:00 2001 From: Phil Dawes Date: Mon, 28 Sep 2009 07:48:37 +0100 Subject: [PATCH] ppc asm to pass vm pointer: initial bootstrap --- basis/cpu/ppc/bootstrap.factor | 10 ++++++---- vm/cpu-ppc.S | 6 ++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/basis/cpu/ppc/bootstrap.factor b/basis/cpu/ppc/bootstrap.factor index c63372fa3f..b9e374f0bb 100644 --- a/basis/cpu/ppc/bootstrap.factor +++ b/basis/cpu/ppc/bootstrap.factor @@ -51,8 +51,9 @@ CONSTANT: rs-reg 14 0 3 LOAD32 rc-absolute-ppc-2/2 rt-stack-chain jit-rel 4 3 0 LWZ 1 4 0 STW - 0 3 LOAD32 rc-absolute-ppc-2/2 rt-primitive jit-rel - 3 MTCTR + 4 0 swap LOAD32 rc-absolute-ppc-2/2 rt-vm jit-rel + 0 5 LOAD32 rc-absolute-ppc-2/2 rt-primitive jit-rel + 5 MTCTR BCTR ] jit-primitive jit-define @@ -254,8 +255,9 @@ CONSTANT: rs-reg 14 [ 3 ds-reg 0 LWZ ds-reg dup 4 SUBI - 4 3 quot-xt-offset LWZ - 4 MTCTR + 4 0 swap LOAD32 rc-absolute-ppc-2/2 rt-vm jit-rel + 5 3 quot-xt-offset LWZ + 5 MTCTR BCTR ] \ (call) define-sub-primitive diff --git a/vm/cpu-ppc.S b/vm/cpu-ppc.S index e7a210b7aa..0a0f335616 100644 --- a/vm/cpu-ppc.S +++ b/vm/cpu-ppc.S @@ -250,13 +250,15 @@ DEF(void,set_callstack,(F_STACK_FRAME *to, F_STACK_FRAME *from, CELL length, voi mtlr r0 /* prepare to return to restored callstack */ blr /* go */ -DEF(void,throw_impl,(CELL quot, F_STACK_FRAME *rewind_to)): +DEF(void,throw_impl,(CELL quot, F_STACK_FRAME *rewind_to, void *vm)): mr r1,r4 /* compute new stack pointer */ + mr r4,r5 /* make vm ptr 2nd arg in case quot_xt = lazy_jit_compile */ lwz r0,LR_SAVE(r1) /* we have rewound the stack; load return address */ mtlr r0 JUMP_QUOT /* call the quotation */ -DEF(void,lazy_jit_compile,(CELL quot)): +DEF(void,lazy_jit_compile,(CELL quot, void *vm)): + mr r5,r4 /* vm ptr is 3rd arg */ mr r4,r1 /* save stack pointer */ PROLOGUE bl MANGLE(lazy_jit_compile_impl) -- 2.34.1