From c8dc44b9fafe06eb6e9e949ac2650dab8ebf54e2 Mon Sep 17 00:00:00 2001 From: cracyc Date: Thu, 7 Feb 2013 01:28:14 +0000 Subject: [PATCH] i386: improve tlb performance slightly (nw) --- src/emu/cpu/i386/i386priv.h | 12 +++++------- src/emu/cpu/vtlb.c | 1 - 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/emu/cpu/i386/i386priv.h b/src/emu/cpu/i386/i386priv.h index a3279246082..b068039bb2d 100644 --- a/src/emu/cpu/i386/i386priv.h +++ b/src/emu/cpu/i386/i386priv.h @@ -527,11 +527,10 @@ static int i386_translate_address(i386_state *cpustate, int intention, offs_t *a ret = FALSE; else { - if(!(page_dir & 0x40) && write) - { - cpustate->program->write_dword(pdbr + directory * 4, page_dir | 0x60); + if(write) perm |= VTLB_FLAG_DIRTY; - } + if(!(page_dir & 0x40) && write) + cpustate->program->write_dword(pdbr + directory * 4, page_dir | 0x60); else if(!(page_dir & 0x20)) cpustate->program->write_dword(pdbr + directory * 4, page_dir | 0x20); ret = TRUE; @@ -557,13 +556,12 @@ static int i386_translate_address(i386_state *cpustate, int intention, offs_t *a ret = FALSE; else { + if(write) + perm |= VTLB_FLAG_DIRTY; if(!(page_dir & 0x20)) cpustate->program->write_dword(pdbr + directory * 4, page_dir | 0x20); if(!(page_entry & 0x40) && write) - { cpustate->program->write_dword((page_dir & 0xfffff000) + (table * 4), page_entry | 0x60); - perm |= VTLB_FLAG_DIRTY; - } else if(!(page_entry & 0x20)) cpustate->program->write_dword((page_dir & 0xfffff000) + (table * 4), page_entry | 0x20); ret = TRUE; diff --git a/src/emu/cpu/vtlb.c b/src/emu/cpu/vtlb.c index d9ab0a4c875..da583fb77e6 100644 --- a/src/emu/cpu/vtlb.c +++ b/src/emu/cpu/vtlb.c @@ -232,7 +232,6 @@ void vtlb_load(vtlb_state *vtlb, int entrynum, int numpages, offs_t address, vtl void vtlb_dynload(vtlb_state *vtlb, int index, offs_t address, vtlb_entry value) { vtlb_entry entry = vtlb->table[index]; - value &= VTLB_FLAGS_MASK; if (vtlb->dynamic == 0) {