wince: fix load state hanging
This commit is contained in:
parent
af2ba55bac
commit
3e8cdc76f3
|
@ -56,7 +56,7 @@ extern int vmem_fd;
|
|||
#define VMEM32_ERROR_NOT_MAPPED 0x100
|
||||
|
||||
static const u64 VMEM32_SIZE = 0x100000000L;
|
||||
static const u64 KERNEL_SPACE = 0x80000000L;
|
||||
static const u64 USER_SPACE = 0x80000000L;
|
||||
static const u64 AREA7_ADDRESS = 0x7C000000L;
|
||||
|
||||
#define VRAM_PROT_SEGMENT (1024 * 1024) // vram protection regions are grouped by 1MB segment
|
||||
|
@ -67,7 +67,7 @@ struct vram_lock {
|
|||
u32 end;
|
||||
};
|
||||
static std::vector<vram_lock> vram_blocks[VRAM_SIZE / VRAM_PROT_SEGMENT];
|
||||
static u8 sram_mapped_pages[KERNEL_SPACE / PAGE_SIZE / 8]; // bit set to 1 if page is mapped
|
||||
static u8 sram_mapped_pages[USER_SPACE / PAGE_SIZE / 8]; // bit set to 1 if page is mapped
|
||||
|
||||
bool vmem32_inited;
|
||||
|
||||
|
@ -368,7 +368,7 @@ void vmem32_flush_mmu()
|
|||
//vmem32_flush++;
|
||||
vram_mapped_pages.clear();
|
||||
memset(sram_mapped_pages, 0, sizeof(sram_mapped_pages));
|
||||
vmem32_unmap_buffer(0, KERNEL_SPACE);
|
||||
vmem32_unmap_buffer(0, USER_SPACE);
|
||||
// TODO flush P3?
|
||||
}
|
||||
|
||||
|
@ -380,6 +380,7 @@ bool vmem32_init()
|
|||
if (settings.dynarec.disable_vmem32 || !_nvmem_4gb_space())
|
||||
return false;
|
||||
vmem32_inited = true;
|
||||
vmem32_flush_mmu();
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -455,7 +455,13 @@ void* dc_run(void*)
|
|||
do {
|
||||
reset_requested = false;
|
||||
|
||||
try {
|
||||
sh4_cpu.Run();
|
||||
} catch (const FatalError& error) {
|
||||
printf("FATAL: %s in %s:%d: %s\n", error.message.c_str(), error.file.c_str(), error.line, error.function.c_str());
|
||||
reset_requested = false;
|
||||
sh4_cpu.Stop();
|
||||
}
|
||||
|
||||
SaveRomFiles(get_writable_data_path("/data/"));
|
||||
if (reset_requested)
|
||||
|
@ -949,6 +955,7 @@ void dc_loadstate()
|
|||
#ifndef NO_MMU
|
||||
mmu_flush_table();
|
||||
#endif
|
||||
bm_Reset();
|
||||
|
||||
if ( ! dc_unserialize(&data_ptr, &total_size) )
|
||||
{
|
||||
|
@ -959,7 +966,6 @@ void dc_loadstate()
|
|||
}
|
||||
|
||||
mmu_set_state();
|
||||
bm_Reset();
|
||||
sh4_cpu.ResetCache();
|
||||
dsp.dyndirty = true;
|
||||
sh4_sched_ffts();
|
||||
|
|
|
@ -671,8 +671,8 @@ extern Sh4RegType div_som_reg3;
|
|||
//extern u8 SH4_TCB[CODE_SIZE+4096];
|
||||
//one time ptr set
|
||||
//extern u8* CodeCache;
|
||||
extern u32 LastAddr;
|
||||
extern u32 LastAddr_min;
|
||||
//extern u32 LastAddr;
|
||||
//extern u32 LastAddr_min;
|
||||
//temp storage only
|
||||
//extern u32* emit_ptr;
|
||||
extern char block_hash[1024];
|
||||
|
@ -1097,8 +1097,8 @@ bool dc_serialize(void **data, unsigned int *total_size)
|
|||
REICAST_S(div_som_reg2);
|
||||
REICAST_S(div_som_reg3);
|
||||
|
||||
REICAST_S(LastAddr);
|
||||
REICAST_S(LastAddr_min);
|
||||
REICAST_S(i); //LastAddr
|
||||
REICAST_S(i); //LastAddr_min
|
||||
REICAST_SA(block_hash,1024);
|
||||
|
||||
REICAST_SA(RegisterWrite,sh4_reg_count);
|
||||
|
@ -1492,8 +1492,8 @@ static bool dc_unserialize_libretro(void **data, unsigned int *total_size)
|
|||
|
||||
//REICAST_USA(CodeCache,CODE_SIZE) ;
|
||||
//REICAST_USA(SH4_TCB,CODE_SIZE+4096);
|
||||
REICAST_US(LastAddr);
|
||||
REICAST_US(LastAddr_min);
|
||||
REICAST_US(i); //LastAddr
|
||||
REICAST_US(i); //LastAddr_min
|
||||
REICAST_USA(block_hash,1024);
|
||||
|
||||
|
||||
|
@ -1870,8 +1870,8 @@ bool dc_unserialize(void **data, unsigned int *total_size)
|
|||
|
||||
//REICAST_USA(CodeCache,CODE_SIZE) ;
|
||||
//REICAST_USA(SH4_TCB,CODE_SIZE+4096);
|
||||
REICAST_US(LastAddr);
|
||||
REICAST_US(LastAddr_min);
|
||||
REICAST_US(i); //LastAddr
|
||||
REICAST_US(i); //LastAddr_min);
|
||||
REICAST_USA(block_hash,1024);
|
||||
|
||||
REICAST_USA(RegisterWrite,sh4_reg_count);
|
||||
|
|
Loading…
Reference in New Issue