diff options
Diffstat (limited to 'src/vm_ppcspe.dasc')
-rw-r--r-- | src/vm_ppcspe.dasc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/vm_ppcspe.dasc b/src/vm_ppcspe.dasc index ab2d7670..cbd6ecdd 100644 --- a/src/vm_ppcspe.dasc +++ b/src/vm_ppcspe.dasc | |||
@@ -294,10 +294,13 @@ static void build_subroutines(BuildCtx *ctx) | |||
294 | | stwu TMP1, FRAME_PC(RA) // Prepend true to results. | 294 | | stwu TMP1, FRAME_PC(RA) // Prepend true to results. |
295 | | | 295 | | |
296 | |->vm_returnc: | 296 | |->vm_returnc: |
297 | | andi. TMP0, PC, FRAME_TYPE | 297 | | addi RD, RD, 8 // RD = (nresults+1)*8. |
298 | | addi RD, RD, 8 // RD = (nresults+1)*8. | 298 | | andi. TMP0, PC, FRAME_TYPE |
299 | | mr MULTRES, RD | 299 | | cmpwi cr1, RD, 0 |
300 | | beq ->BC_RET_Z // Handle regular return to Lua. | 300 | | li CRET1, LUA_YIELD |
301 | | beq cr1, ->vm_unwind_c_eh | ||
302 | | mr MULTRES, RD | ||
303 | | beq ->BC_RET_Z // Handle regular return to Lua. | ||
301 | | | 304 | | |
302 | |->vm_return: | 305 | |->vm_return: |
303 | | // BASE = base, RA = resultptr, RD/MULTRES = (nresults+1)*8, PC = return | 306 | | // BASE = base, RA = resultptr, RD/MULTRES = (nresults+1)*8, PC = return |