diff options
| -rw-r--r-- | src/buildvm_ppc.dasc | 24 |
1 files 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) | |||
| 1182 | #endif | 1182 | #endif |
| 1183 | | | 1183 | | |
| 1184 | |->vm_callhook: // Dispatch target for call hooks. | 1184 | |->vm_callhook: // Dispatch target for call hooks. |
| 1185 | | NYI | 1185 | | mr CARG2, PC |
| 1186 | #if LJ_HASJIT | ||
| 1187 | | b >1 | ||
| 1188 | #endif | ||
| 1186 | | | 1189 | | |
| 1187 | |->vm_hotcall: // Hot call counter underflow. | 1190 | |->vm_hotcall: // Hot call counter underflow. |
| 1188 | #if LJ_HASJIT | 1191 | #if LJ_HASJIT |
| 1189 | | NYI | 1192 | | ori CARG2, PC, 1 |
| 1193 | |1: | ||
| 1190 | #endif | 1194 | #endif |
| 1195 | | add TMP0, BASE, RC | ||
| 1196 | | stw PC, SAVE_PC | ||
| 1197 | | mr CARG1, L | ||
| 1198 | | stw BASE, L->base | ||
| 1199 | | sub RA, RA, BASE | ||
| 1200 | | stw TMP0, L->top | ||
| 1201 | | bl extern lj_dispatch_call // (lua_State *L, const BCIns *pc) | ||
| 1202 | | // Returns ASMFunction. | ||
| 1203 | | lwz BASE, L->base | ||
| 1204 | | lwz TMP0, L->top | ||
| 1205 | | stw ZERO, SAVE_PC // Invalidate for subsequent line hook. | ||
| 1206 | | sub NARGS8:RC, TMP0, BASE | ||
| 1207 | | add RA, BASE, RA | ||
| 1208 | | lwz LFUNC:RB, FRAME_FUNC(BASE) | ||
| 1209 | | mtctr CRET1 | ||
| 1210 | | bctr | ||
| 1191 | | | 1211 | | |
| 1192 | |//----------------------------------------------------------------------- | 1212 | |//----------------------------------------------------------------------- |
| 1193 | |//-- Trace exit handler ------------------------------------------------- | 1213 | |//-- Trace exit handler ------------------------------------------------- |
