Added support for multiboot dols. This allows demo discs, bonus discs etc to be played.
* Flushed the JIT cache on "ICFI" (Flush Instruction Cache) * Made all instructions one cycle in duration Fixes issue 233 git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6088 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
9f57345c11
commit
6918a9e1d6
|
@ -660,7 +660,7 @@ u8 *GetPointer(const u32 _Address)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (!PanicYesNo("Unknown pointer address prefix %02X, report this to the devs: 0x%08X \n Continue?", (_Address >> 24), _Address))
|
||||
if (!Core::g_CoreStartupParameter.bMMU && !PanicYesNo("Unknown pointer address prefix %02X, report this to the devs: 0x%08X \n Continue?", (_Address >> 24), _Address))
|
||||
Crash();
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -455,7 +455,6 @@ void icbi(UGeckoInstruction _inst)
|
|||
{
|
||||
u32 address = Helper_Get_EA_X(_inst);
|
||||
PowerPC::ppcState.iCache.Invalidate(address);
|
||||
jit->GetBlockCache()->InvalidateICache(address);
|
||||
}
|
||||
|
||||
void lbzux(UGeckoInstruction _inst)
|
||||
|
|
|
@ -516,7 +516,7 @@ const u8* Jit64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
|
|||
js.op = &ops[i];
|
||||
js.instructionNumber = i;
|
||||
const GekkoOPInfo *opinfo = ops[i].opinfo;
|
||||
js.downcountAmount += (opinfo->numCyclesMinusOne + 1);
|
||||
js.downcountAmount++;
|
||||
|
||||
if (i == (int)size - 1)
|
||||
{
|
||||
|
|
|
@ -138,6 +138,13 @@ bool JitBlock::ContainsAddress(u32 em_address)
|
|||
memset(blockCodePointers, 0, sizeof(u8*)*MAX_NUM_BLOCKS);
|
||||
}
|
||||
|
||||
void JitBlockCache::ClearSafe()
|
||||
{
|
||||
memset(iCache, JIT_ICACHE_INVALID_BYTE, JIT_ICACHE_SIZE);
|
||||
memset(iCacheEx, JIT_ICACHE_INVALID_BYTE, JIT_ICACHEEX_SIZE);
|
||||
memset(iCacheVMEM, JIT_ICACHE_INVALID_BYTE, JIT_ICACHE_SIZE);
|
||||
}
|
||||
|
||||
/*void JitBlockCache::DestroyBlocksWithFlag(BlockFlag death_flag)
|
||||
{
|
||||
for (int i = 0; i < num_blocks; i++)
|
||||
|
|
|
@ -99,6 +99,7 @@ public:
|
|||
void FinalizeBlock(int block_num, bool block_link, const u8 *code_ptr);
|
||||
|
||||
void Clear();
|
||||
void ClearSafe();
|
||||
void Init();
|
||||
void Shutdown();
|
||||
void Reset();
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
#include "PPCCache.h"
|
||||
#include "../HW/Memmap.h"
|
||||
#include "PowerPC.h"
|
||||
#include "JitCommon/JitBase.h"
|
||||
#include "JitCommon/JitCache.h"
|
||||
|
||||
namespace PowerPC
|
||||
{
|
||||
|
@ -74,10 +76,14 @@ namespace PowerPC
|
|||
memset(lookup_table_ex, 0xff, sizeof(lookup_table_ex));
|
||||
memset(lookup_table_vmem, 0xff, sizeof(lookup_table_vmem));
|
||||
#endif
|
||||
if (jit)
|
||||
jit->GetBlockCache()->ClearSafe();
|
||||
}
|
||||
|
||||
void InstructionCache::Invalidate(u32 addr)
|
||||
{
|
||||
if (jit)
|
||||
jit->GetBlockCache()->InvalidateICache(addr);
|
||||
if (!HID0.ICE)
|
||||
return;
|
||||
// invalidates the whole set
|
||||
|
|
|
@ -560,7 +560,10 @@ void CCodeWindow::OnCPUMode(wxCommandEvent& event)
|
|||
}
|
||||
|
||||
// Clear the JIT cache to enable these changes
|
||||
jit->ClearCache();
|
||||
if (jit)
|
||||
{
|
||||
jit->ClearCache();
|
||||
}
|
||||
// Update
|
||||
UpdateButtonStates();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue