diff options
Diffstat (limited to 'src/vm_ppc.dasc')
-rw-r--r-- | src/vm_ppc.dasc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/vm_ppc.dasc b/src/vm_ppc.dasc index 61ebbb04..d6792f2c 100644 --- a/src/vm_ppc.dasc +++ b/src/vm_ppc.dasc | |||
@@ -1537,8 +1537,12 @@ static void build_subroutines(BuildCtx *ctx) | |||
1537 | |//-- Base library: catch errors ---------------------------------------- | 1537 | |//-- Base library: catch errors ---------------------------------------- |
1538 | | | 1538 | | |
1539 | |.ffunc pcall | 1539 | |.ffunc pcall |
1540 | | lwz TMP1, L->maxstack | ||
1541 | | add TMP2, BASE, NARGS8:RC | ||
1540 | | cmplwi NARGS8:RC, 8 | 1542 | | cmplwi NARGS8:RC, 8 |
1541 | | lbz TMP3, DISPATCH_GL(hookmask)(DISPATCH) | 1543 | | lbz TMP3, DISPATCH_GL(hookmask)(DISPATCH) |
1544 | | cmplw cr1, TMP1, TMP2 | ||
1545 | | cror 4*cr0+lt, 4*cr0+lt, 4*cr1+lt | ||
1542 | | blt ->fff_fallback | 1546 | | blt ->fff_fallback |
1543 | | mr TMP2, BASE | 1547 | | mr TMP2, BASE |
1544 | | la BASE, 8(BASE) | 1548 | | la BASE, 8(BASE) |
@@ -1549,9 +1553,13 @@ static void build_subroutines(BuildCtx *ctx) | |||
1549 | | b ->vm_call_dispatch | 1553 | | b ->vm_call_dispatch |
1550 | | | 1554 | | |
1551 | |.ffunc xpcall | 1555 | |.ffunc xpcall |
1556 | | lwz TMP1, L->maxstack | ||
1557 | | add TMP2, BASE, NARGS8:RC | ||
1552 | | cmplwi NARGS8:RC, 16 | 1558 | | cmplwi NARGS8:RC, 16 |
1553 | | lwz CARG4, 8(BASE) | 1559 | | lwz CARG4, 8(BASE) |
1560 | | cmplw cr1, TMP1, TMP2 | ||
1554 | | lfd FARG2, 8(BASE) | 1561 | | lfd FARG2, 8(BASE) |
1562 | | cror 4*cr0+lt, 4*cr0+lt, 4*cr1+lt | ||
1555 | | lfd FARG1, 0(BASE) | 1563 | | lfd FARG1, 0(BASE) |
1556 | | blt ->fff_fallback | 1564 | | blt ->fff_fallback |
1557 | | lbz TMP1, DISPATCH_GL(hookmask)(DISPATCH) | 1565 | | lbz TMP1, DISPATCH_GL(hookmask)(DISPATCH) |