From 5440ddde148bf34a32bccf689350a2d1211e1d49 Mon Sep 17 00:00:00 2001 From: Pierre Date: Sun, 22 Jul 2012 22:55:16 +0200 Subject: [PATCH] DSP: regcache: Synch host regs back to previous state only if we are told to not emit the fixup to get it to that state --- Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.cpp b/Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.cpp index 687982cfb9..7a4050afd8 100644 --- a/Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.cpp +++ b/Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.cpp @@ -251,6 +251,18 @@ void DSPJitRegCache::flushRegs(DSPJitRegCache &cache, bool emit) regs[i].last_use_ctr = cache.regs[i].last_use_ctr; } + //sync the freely used xregs + if (!emit) { + for(i = 0; i < NUMXREGS; i++) { + if (cache.xregs[i].guest_reg == DSP_REG_USED && + xregs[i].guest_reg == DSP_REG_NONE) + xregs[i].guest_reg = DSP_REG_USED; + if (cache.xregs[i].guest_reg == DSP_REG_NONE && + xregs[i].guest_reg == DSP_REG_USED) + xregs[i].guest_reg = DSP_REG_NONE; + } + } + //consistency checks for(i = 0; i < NUMXREGS; i++) { _assert_msg_(DSPLLE,