diff options
Diffstat (limited to 'src/buildvm_ppc.dasc')
-rw-r--r-- | src/buildvm_ppc.dasc | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index db89ac3d..7b5919ba 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc | |||
@@ -1108,7 +1108,6 @@ static void build_subroutines(BuildCtx *ctx) | |||
1108 | | evldd CFUNC:TMP0, CFUNC:RB->upvalue[0] | 1108 | | evldd CFUNC:TMP0, CFUNC:RB->upvalue[0] |
1109 | | la RA, -8(BASE) | 1109 | | la RA, -8(BASE) |
1110 | #endif | 1110 | #endif |
1111 | | evstdd TAB:CARG1, 0(BASE) | ||
1112 | | evstdd TISNIL, 8(BASE) | 1111 | | evstdd TISNIL, 8(BASE) |
1113 | | li RD, (3+1)*8 | 1112 | | li RD, (3+1)*8 |
1114 | | evstdd CFUNC:TMP0, 0(RA) | 1113 | | evstdd CFUNC:TMP0, 0(RA) |
@@ -1169,9 +1168,8 @@ static void build_subroutines(BuildCtx *ctx) | |||
1169 | | la RA, -8(BASE) | 1168 | | la RA, -8(BASE) |
1170 | #endif | 1169 | #endif |
1171 | | evsplati TMP1, 0 | 1170 | | evsplati TMP1, 0 |
1172 | | evstdd TAB:CARG1, 0(BASE) | ||
1173 | | evstdd TMP1, 8(BASE) | ||
1174 | | li RD, (3+1)*8 | 1171 | | li RD, (3+1)*8 |
1172 | | evstdd TMP1, 8(BASE) | ||
1175 | | evstdd CFUNC:TMP0, 0(RA) | 1173 | | evstdd CFUNC:TMP0, 0(RA) |
1176 | | b ->fff_res | 1174 | | b ->fff_res |
1177 | | | 1175 | | |
@@ -1780,7 +1778,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1780 | | lwz TMP3, CFUNC:RB->f | 1778 | | lwz TMP3, CFUNC:RB->f |
1781 | | add TMP1, BASE, NARGS8:RC | 1779 | | add TMP1, BASE, NARGS8:RC |
1782 | | lwz PC, FRAME_PC(BASE) // Fallback may overwrite PC. | 1780 | | lwz PC, FRAME_PC(BASE) // Fallback may overwrite PC. |
1783 | | addi TMP0, TMP1, 8*LUA_MINSTACK-8 | 1781 | | addi TMP0, TMP1, 8*LUA_MINSTACK |
1784 | | lwz TMP2, L->maxstack | 1782 | | lwz TMP2, L->maxstack |
1785 | | stw PC, SAVE_PC // Redundant (but a defined value). | 1783 | | stw PC, SAVE_PC // Redundant (but a defined value). |
1786 | | cmplw TMP0, TMP2 | 1784 | | cmplw TMP0, TMP2 |
@@ -1796,7 +1794,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1796 | | slwi RD, CRET1, 3 | 1794 | | slwi RD, CRET1, 3 |
1797 | | la RA, -8(BASE) | 1795 | | la RA, -8(BASE) |
1798 | | bgt ->fff_res // Returned nresults+1? | 1796 | | bgt ->fff_res // Returned nresults+1? |
1799 | |1: // Returned 0: retry fast path. | 1797 | |1: // Returned 0 or -1: retry fast path. |
1800 | | lwz TMP0, L->top | 1798 | | lwz TMP0, L->top |
1801 | | lwz LFUNC:RB, FRAME_FUNC(BASE) | 1799 | | lwz LFUNC:RB, FRAME_FUNC(BASE) |
1802 | | sub NARGS8:RC, TMP0, BASE | 1800 | | sub NARGS8:RC, TMP0, BASE |
@@ -1814,11 +1812,10 @@ static void build_subroutines(BuildCtx *ctx) | |||
1814 | | b ->vm_call_dispatch // Resolve again for tailcall. | 1812 | | b ->vm_call_dispatch // Resolve again for tailcall. |
1815 | | | 1813 | | |
1816 | |5: // Grow stack for fallback handler. | 1814 | |5: // Grow stack for fallback handler. |
1817 | | mr CARG1, L | ||
1818 | | li CARG2, LUA_MINSTACK | 1815 | | li CARG2, LUA_MINSTACK |
1819 | | bl extern lj_state_growstack // (lua_State *L, int n) | 1816 | | bl extern lj_state_growstack // (lua_State *L, int n) |
1820 | | lwz BASE, L->base | 1817 | | lwz BASE, L->base |
1821 | | cmpw TMP0, TMP0 // Set 4*cr0+eq. | 1818 | | cmpw TMP0, TMP0 // Set 4*cr0+eq to force retry. |
1822 | | b <1 | 1819 | | b <1 |
1823 | | | 1820 | | |
1824 | |->fff_gcstep: // Call GC step function. | 1821 | |->fff_gcstep: // Call GC step function. |
@@ -3073,7 +3070,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
3073 | break; | 3070 | break; |
3074 | 3071 | ||
3075 | case BC_ITERC: | 3072 | case BC_ITERC: |
3076 | | // RA = base*8, (RB = (nresults+1)*8,) RC = (nargs+1)*8 ((2+1)*8) | 3073 | | // RA = base*8, (RB = (nresults+1)*8, RC = (nargs+1)*8 ((2+1)*8)) |
3077 | | subi RA, RA, 24 // evldd doesn't support neg. offsets. | 3074 | | subi RA, RA, 24 // evldd doesn't support neg. offsets. |
3078 | | mr TMP2, BASE | 3075 | | mr TMP2, BASE |
3079 | | evlddx LFUNC:RB, BASE, RA | 3076 | | evlddx LFUNC:RB, BASE, RA |