From f635e3e5bbaa76fecc84ed5bb1d4855220b4a08a Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Thu, 23 Sep 2010 02:42:29 +0200 Subject: [PATCH] PPC: Add dispatch target for call hook. --- src/buildvm_ppc.dasc | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index a27591e5..e0eaa95b 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc @@ -1182,12 +1182,32 @@ static void build_subroutines(BuildCtx *ctx) #endif | |->vm_callhook: // Dispatch target for call hooks. - | NYI + | mr CARG2, PC +#if LJ_HASJIT + | b >1 +#endif | |->vm_hotcall: // Hot call counter underflow. #if LJ_HASJIT - | NYI + | ori CARG2, PC, 1 + |1: #endif + | add TMP0, BASE, RC + | stw PC, SAVE_PC + | mr CARG1, L + | stw BASE, L->base + | sub RA, RA, BASE + | stw TMP0, L->top + | bl extern lj_dispatch_call // (lua_State *L, const BCIns *pc) + | // Returns ASMFunction. + | lwz BASE, L->base + | lwz TMP0, L->top + | stw ZERO, SAVE_PC // Invalidate for subsequent line hook. + | sub NARGS8:RC, TMP0, BASE + | add RA, BASE, RA + | lwz LFUNC:RB, FRAME_FUNC(BASE) + | mtctr CRET1 + | bctr | |//----------------------------------------------------------------------- |//-- Trace exit handler -------------------------------------------------