Flush memory->codeblock list heads on CPU reset - fixes "block->next->pc=0" errors on reset on some machines.
This commit is contained in:
parent
e590bd9ca2
commit
d79814692f
3 changed files with 16 additions and 0 deletions
|
|
@ -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()
|
||||
|
|
|
|||
14
src/mem.c
14
src/mem.c
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in a new issue