]> gitweb.factorcode.org Git - factor.git/commitdiff
ppc asm to pass vm pointer: inline_cache_miss, set_callstack
authorPhil Dawes <phil@phildawes.net>
Wed, 30 Sep 2009 18:43:36 +0000 (19:43 +0100)
committerPhil Dawes <phil@phildawes.net>
Wed, 30 Sep 2009 18:43:36 +0000 (19:43 +0100)
vm/cpu-ppc.S

index d7310eec329f1739770dc89bc1f7fb8ba4ba9b6c..c3b635829f56f0eb065ae29f146135f2c943e297 100644 (file)
@@ -110,7 +110,7 @@ multiply_overflow:
 
 /* We have to save and restore nonvolatile registers because
 the Factor compiler treats the entire register file as volatile. */
-DEF(void,c_to_factor,(CELL quot)):
+DEF(void,c_to_factor,(CELL quot, void *vm)):
        PROLOGUE
 
        SAVE_INT(r15,0)    /* save GPRs */
@@ -163,14 +163,15 @@ DEF(void,c_to_factor,(CELL quot)):
         SAVE_V(v30,96)
         SAVE_V(v31,100)
 
+       /* r4 vm ptr preserved */
         mfvscr v0
         li r2,SAVE_AT(104)
         stvxl v0,r2,r1
         addi r2,r2,0xc
-        lwzx r4,r2,r1
-        lis r5,0x1
-        andc r4,r4,r5
-        stwx r4,r2,r1
+        lwzx r5,r2,r1
+        lis r6,0x1
+        andc r5,r5,r6
+        stwx r5,r2,r1
         subi r2,r2,0xc
         lvxl v0,r2,r1
         mtvscr v0
@@ -291,10 +292,11 @@ DEF(void,flush_icache,(void *start, int len)):
        isync
        blr
 
-DEF(void,primitive_inline_cache_miss,(void)):
+DEF(void,primitive_inline_cache_miss,(void *vm)):
        mflr r6
-DEF(void,primitive_inline_cache_miss_tail,(void)):
+DEF(void,primitive_inline_cache_miss_tail,(void *vm)):
        PROLOGUE
+       mr r4,r3          /* vm ptr in 2nd arg */
        mr r3,r6
        bl MANGLE(inline_cache_miss)
        EPILOGUE