]> gitweb.factorcode.org Git - factor.git/commitdiff
ppc asm to pass vm pointer: initial bootstrap
authorPhil Dawes <phil@phildawes.net>
Mon, 28 Sep 2009 06:48:37 +0000 (07:48 +0100)
committerPhil Dawes <phil@phildawes.net>
Mon, 28 Sep 2009 06:48:37 +0000 (07:48 +0100)
basis/cpu/ppc/bootstrap.factor
vm/cpu-ppc.S

index c63372fa3f8d36358ccb838409637197929c0351..b9e374f0bba999212e361cc865c8e1badadeb657 100644 (file)
@@ -51,8 +51,9 @@ CONSTANT: rs-reg 14
     0 3 LOAD32 rc-absolute-ppc-2/2 rt-stack-chain jit-rel\r
     4 3 0 LWZ\r
     1 4 0 STW\r
-    0 3 LOAD32 rc-absolute-ppc-2/2 rt-primitive jit-rel\r
-    3 MTCTR\r
+    4 0 swap LOAD32 rc-absolute-ppc-2/2 rt-vm jit-rel\r
+    0 5 LOAD32 rc-absolute-ppc-2/2 rt-primitive jit-rel\r
+    5 MTCTR\r
     BCTR\r
 ] jit-primitive jit-define\r
 \r
@@ -254,8 +255,9 @@ CONSTANT: rs-reg 14
 [\r
     3 ds-reg 0 LWZ\r
     ds-reg dup 4 SUBI\r
-    4 3 quot-xt-offset LWZ\r
-    4 MTCTR\r
+    4 0 swap LOAD32 rc-absolute-ppc-2/2 rt-vm jit-rel\r
+    5 3 quot-xt-offset LWZ\r
+    5 MTCTR\r
     BCTR\r
 ] \ (call) define-sub-primitive\r
 \r
index e7a210b7aa30ad2649e4faa30e36a89ec589dc04..0a0f3356163c3ef9cc75c622c436137be263e181 100644 (file)
@@ -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)