ppc asm to pass vm pointer: inline_cache_miss, set_callstack

db4
Phil Dawes 2009-09-30 19:43:36 +01:00
parent a73e6f20d4
commit 65bcd86c10
1 changed files with 9 additions and 7 deletions

View File

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