Flush memory->codeblock list heads on CPU reset - fixes "block->next->pc=0" errors on reset on some machines.

This commit is contained in:
TomW 2015-07-12 14:53:03 +01:00
commit d79814692f
3 changed files with 16 additions and 0 deletions

View file

@ -86,6 +86,7 @@ void codegen_reset()
{
memset(codeblock, 0, BLOCK_SIZE * sizeof(codeblock_t));
memset(codeblock_hash, 0, HASH_SIZE * sizeof(codeblock_t *));
mem_reset_page_blocks();
}
void dump_block()

View file

@ -1800,6 +1800,20 @@ void mem_resize()
// pclog("Mem resize %i %i\n",mem_size,c);
}
void mem_reset_page_blocks()
{
int c;
for (c = 0; c < ((mem_size * 1024 * 1024) >> 12); c++)
{
pages[c].write_b = mem_write_ramb_page;
pages[c].write_w = mem_write_ramw_page;
pages[c].write_l = mem_write_raml_page;
pages[c].block = NULL;
pages[c].block_2 = NULL;
}
}
int mem_a20_key = 0, mem_a20_alt = 0;
static int mem_a20_state = 0;

View file

@ -143,3 +143,4 @@ void mem_write_ramb_page(uint32_t addr, uint8_t val, page_t *p);
void mem_write_ramw_page(uint32_t addr, uint16_t val, page_t *p);
void mem_write_raml_page(uint32_t addr, uint32_t val, page_t *p);
void mem_reset_page_blocks();