diff options
author | notaz | 2011-01-24 00:34:28 +0200 |
---|---|---|
committer | notaz | 2011-01-24 00:38:48 +0200 |
commit | e4eb18c1d2acc12f429723a3a65687eb2dc7eefb (patch) | |
tree | 24ac41db901997f7d3705743ee221a0e4e935748 | |
parent | 1e973cb0a85b35524ccc99766b8510534659ff65 (diff) | |
download | pcsx_rearmed-e4eb18c1d2acc12f429723a3a65687eb2dc7eefb.tar.gz pcsx_rearmed-e4eb18c1d2acc12f429723a3a65687eb2dc7eefb.tar.bz2 pcsx_rearmed-e4eb18c1d2acc12f429723a3a65687eb2dc7eefb.zip |
drc: don't leave until we really need to
-rw-r--r-- | libpcsxcore/new_dynarec/emu_if.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libpcsxcore/new_dynarec/emu_if.c b/libpcsxcore/new_dynarec/emu_if.c index 572c482..a37f7a2 100644 --- a/libpcsxcore/new_dynarec/emu_if.c +++ b/libpcsxcore/new_dynarec/emu_if.c @@ -175,7 +175,9 @@ static void ari64_reset() pending_exception = 1; } -static void ari64_execute() +// execute until predefined leave points +// (HLE softcall exit and BIOS fastboot end) +static void ari64_execute_until() { schedule_timeslice(); @@ -188,6 +190,14 @@ static void ari64_execute() psxRegs.cycle, next_interupt, next_interupt - psxRegs.cycle); } +static void ari64_execute() +{ + while (!stop) { + ari64_execute_until(); + evprintf("drc left @%08x\n", psxRegs.pc); + } +} + static void ari64_clear(u32 addr, u32 size) { u32 start, end; @@ -229,7 +239,7 @@ R3000Acpu psxRec = { ari64_reset, #if defined(__arm__) ari64_execute, - ari64_execute, + ari64_execute_until, #else intExecuteT, intExecuteBlockT, |