ppc asm to pass vm pointer: inline_cache_miss, set_callstack
parent
a73e6f20d4
commit
65bcd86c10
16
vm/cpu-ppc.S
16
vm/cpu-ppc.S
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue