diff options
Diffstat (limited to '')
-rw-r--r-- | src/vm_ppc.dasc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/vm_ppc.dasc b/src/vm_ppc.dasc index f2e5a08f..abcc03e5 100644 --- a/src/vm_ppc.dasc +++ b/src/vm_ppc.dasc | |||
@@ -1735,8 +1735,12 @@ static void build_subroutines(BuildCtx *ctx) | |||
1735 | |//-- Base library: catch errors ---------------------------------------- | 1735 | |//-- Base library: catch errors ---------------------------------------- |
1736 | | | 1736 | | |
1737 | |.ffunc pcall | 1737 | |.ffunc pcall |
1738 | | lwz TMP1, L->maxstack | ||
1739 | | add TMP2, BASE, NARGS8:RC | ||
1738 | | cmplwi NARGS8:RC, 8 | 1740 | | cmplwi NARGS8:RC, 8 |
1739 | | lbz TMP3, DISPATCH_GL(hookmask)(DISPATCH) | 1741 | | lbz TMP3, DISPATCH_GL(hookmask)(DISPATCH) |
1742 | | cmplw cr1, TMP1, TMP2 | ||
1743 | | cror 4*cr0+lt, 4*cr0+lt, 4*cr1+lt | ||
1740 | | blt ->fff_fallback | 1744 | | blt ->fff_fallback |
1741 | | mr TMP2, BASE | 1745 | | mr TMP2, BASE |
1742 | | la BASE, 8(BASE) | 1746 | | la BASE, 8(BASE) |
@@ -1747,14 +1751,19 @@ static void build_subroutines(BuildCtx *ctx) | |||
1747 | | b ->vm_call_dispatch | 1751 | | b ->vm_call_dispatch |
1748 | | | 1752 | | |
1749 | |.ffunc xpcall | 1753 | |.ffunc xpcall |
1754 | | lwz TMP1, L->maxstack | ||
1755 | | add TMP2, BASE, NARGS8:RC | ||
1750 | | cmplwi NARGS8:RC, 16 | 1756 | | cmplwi NARGS8:RC, 16 |
1751 | | lwz CARG3, 8(BASE) | 1757 | | lwz CARG3, 8(BASE) |
1758 | | cmplw cr1, TMP1, TMP2 | ||
1752 | |.if FPU | 1759 | |.if FPU |
1753 | | lfd FARG2, 8(BASE) | 1760 | | lfd FARG2, 8(BASE) |
1761 | | cror 4*cr0+lt, 4*cr0+lt, 4*cr1+lt | ||
1754 | | lfd FARG1, 0(BASE) | 1762 | | lfd FARG1, 0(BASE) |
1755 | |.else | 1763 | |.else |
1756 | | lwz CARG1, 0(BASE) | 1764 | | lwz CARG1, 0(BASE) |
1757 | | lwz CARG2, 4(BASE) | 1765 | | lwz CARG2, 4(BASE) |
1766 | | cror 4*cr0+lt, 4*cr0+lt, 4*cr1+lt | ||
1758 | | lwz CARG4, 12(BASE) | 1767 | | lwz CARG4, 12(BASE) |
1759 | |.endif | 1768 | |.endif |
1760 | | blt ->fff_fallback | 1769 | | blt ->fff_fallback |