Tweak flat DS/SS dynarec optimisation, should reduce block churn when routines are called both with and without flat DS/SS.
Fixed incorrect STACK32 flag when entering V86 mode that was hidden by block churn. Protected and V86 mode status now considered when selecting block.
This commit is contained in:
parent
13496ba7b9
commit
717d815604
10 changed files with 108 additions and 78 deletions
|
|
@ -1424,6 +1424,8 @@ void codegen_block_start_recompile(codeblock_t *block)
|
|||
if (block->pc != cs + cpu_state.pc || block->was_recompiled)
|
||||
fatal("Recompile to used block!\n");
|
||||
|
||||
block->status = cpu_cur_status;
|
||||
|
||||
block_pos = BLOCK_GPF_OFFSET;
|
||||
addbyte(0xc7); /*MOV [ESP],0*/
|
||||
addbyte(0x04);
|
||||
|
|
@ -1483,8 +1485,8 @@ void codegen_block_start_recompile(codeblock_t *block)
|
|||
block->TOP = cpu_state.TOP;
|
||||
block->was_recompiled = 1;
|
||||
|
||||
codegen_flat_ds = cpu_cur_status & CPU_STATUS_FLATDS;
|
||||
codegen_flat_ss = cpu_cur_status & CPU_STATUS_FLATSS;
|
||||
codegen_flat_ds = !(cpu_cur_status & CPU_STATUS_NOTFLATDS);
|
||||
codegen_flat_ss = !(cpu_cur_status & CPU_STATUS_NOTFLATSS);
|
||||
}
|
||||
|
||||
void codegen_block_remove()
|
||||
|
|
|
|||
Loading…
Reference in a new issue