diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/buildvm_ppc.dasc | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index d016ec47..57c146b8 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc | |||
| @@ -345,14 +345,32 @@ static void build_subroutines(BuildCtx *ctx) | |||
| 345 | | b <2 | 345 | | b <2 |
| 346 | | | 346 | | |
| 347 | |->vm_unwind_c: // Unwind C stack, return from vm_pcall. | 347 | |->vm_unwind_c: // Unwind C stack, return from vm_pcall. |
| 348 | | NYI | 348 | | // (void *cframe, int errcode) |
| 349 | | mr sp, CARG1 | ||
| 350 | | mr CRET1, CARG2 | ||
| 349 | |->vm_unwind_c_eh: // Landing pad for external unwinder. | 351 | |->vm_unwind_c_eh: // Landing pad for external unwinder. |
| 350 | | NYI | 352 | | lwz L, SAVE_L |
| 353 | | li TMP0, ~LJ_VMST_C | ||
| 354 | | lwz GL:TMP1, L->glref | ||
| 355 | | stw TMP0, GL:TMP1->vmstate | ||
| 356 | | b ->vm_leave_unw | ||
| 351 | | | 357 | | |
| 352 | |->vm_unwind_ff: // Unwind C stack, return from ff pcall. | 358 | |->vm_unwind_ff: // Unwind C stack, return from ff pcall. |
| 353 | | NYI | 359 | | // (void *cframe) |
| 360 | | rlwinm sp, CARG1, 0, 0, 29 | ||
| 354 | |->vm_unwind_ff_eh: // Landing pad for external unwinder. | 361 | |->vm_unwind_ff_eh: // Landing pad for external unwinder. |
| 355 | | NYI | 362 | | lwz L, SAVE_L |
| 363 | | lwz BASE, L->base | ||
| 364 | | li TMP1, LJ_TFALSE | ||
| 365 | | lwz DISPATCH, L->glref // Setup pointer to dispatch table. | ||
| 366 | | li_vmstate INTERP | ||
| 367 | | lwz PC, FRAME_PC(BASE) // Fetch PC of previous frame. | ||
| 368 | | subi RA, BASE, 8 // Results start at BASE-8. | ||
| 369 | | addi DISPATCH, DISPATCH, GG_G2DISP | ||
| 370 | | stw TMP1, 0(RA) // Prepend false to error message. | ||
| 371 | | li RD, 16 // 2 results: false + error message. | ||
| 372 | | st_vmstate | ||
| 373 | | b ->vm_returnc | ||
| 356 | | | 374 | | |
| 357 | |//----------------------------------------------------------------------- | 375 | |//----------------------------------------------------------------------- |
| 358 | |//-- Grow stack for calls ----------------------------------------------- | 376 | |//-- Grow stack for calls ----------------------------------------------- |
