PPC: Add fixed register for TOBIT bias.

This commit is contained in:
Mike Pall 2010-09-21 21:40:39 +02:00
parent 0c0047e50c
commit 201eec484c

View File

@ -37,6 +37,8 @@
|.define TISTAB, r24
|.define TISFUNC, r25
|.define TISNIL, r26
|.define TOBIT, r27
|.define ZERO, TOBIT // Zero in lo word.
|.endif
|
|// The following temporaries are not saved across C calls, except for RA.
@ -476,13 +478,16 @@ static void build_subroutines(BuildCtx *ctx)
| lwz TMP1, L->top
| evsplati TISFUNC, LJ_TFUNC
| add PC, PC, BASE
| li_vmstate INTERP
| evsplati TISTAB, LJ_TTAB
| lus TOBIT, 0x4338
| li TMP0, 0
| sub PC, PC, TMP2 // PC = frame delta + frame type
| st_vmstate
| evsplati TISSTR, LJ_TSTR
| sub NARGS8:RC, TMP1, BASE
| evmergelo TOBIT, TOBIT, TMP0
| li_vmstate INTERP
| evsplati TISNIL, LJ_TNIL
| st_vmstate
|
|->vm_call_dispatch:
| // TMP2 = old base, BASE = new base, RC = nargs*8, PC = caller PC
@ -500,7 +505,6 @@ static void build_subroutines(BuildCtx *ctx)
| // (lua_State *L, lua_CFunction func, void *ud, lua_CPFunction cp)
| saveregs
| mr L, CARG1
| mtctr CARG4
| lwz TMP0, L:CARG1->stack
| stw CARG1, SAVE_L
| lwz TMP1, L->top
@ -512,6 +516,7 @@ static void build_subroutines(BuildCtx *ctx)
| stw TMP0, SAVE_NRES // Neg. delta means cframe w/o frame.
| stw TMP2, SAVE_ERRF // No error function.
| stw TMP1, SAVE_CFRAME
| mtctr CARG4
| bctrl // (lua_State *L, lua_CFunction func, void *ud)
| mr. BASE, CRET1
| lwz DISPATCH, L->glref // Setup pointer to dispatch table.