mirror of
https://github.com/holub/mame
synced 2025-07-03 17:08:39 +03:00
i386: improve tlb performance slightly (nw)
This commit is contained in:
parent
27ff493685
commit
c8dc44b9fa
@ -527,11 +527,10 @@ static int i386_translate_address(i386_state *cpustate, int intention, offs_t *a
|
|||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!(page_dir & 0x40) && write)
|
if(write)
|
||||||
{
|
|
||||||
cpustate->program->write_dword(pdbr + directory * 4, page_dir | 0x60);
|
|
||||||
perm |= VTLB_FLAG_DIRTY;
|
perm |= VTLB_FLAG_DIRTY;
|
||||||
}
|
if(!(page_dir & 0x40) && write)
|
||||||
|
cpustate->program->write_dword(pdbr + directory * 4, page_dir | 0x60);
|
||||||
else if(!(page_dir & 0x20))
|
else if(!(page_dir & 0x20))
|
||||||
cpustate->program->write_dword(pdbr + directory * 4, page_dir | 0x20);
|
cpustate->program->write_dword(pdbr + directory * 4, page_dir | 0x20);
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
@ -557,13 +556,12 @@ static int i386_translate_address(i386_state *cpustate, int intention, offs_t *a
|
|||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if(write)
|
||||||
|
perm |= VTLB_FLAG_DIRTY;
|
||||||
if(!(page_dir & 0x20))
|
if(!(page_dir & 0x20))
|
||||||
cpustate->program->write_dword(pdbr + directory * 4, page_dir | 0x20);
|
cpustate->program->write_dword(pdbr + directory * 4, page_dir | 0x20);
|
||||||
if(!(page_entry & 0x40) && write)
|
if(!(page_entry & 0x40) && write)
|
||||||
{
|
|
||||||
cpustate->program->write_dword((page_dir & 0xfffff000) + (table * 4), page_entry | 0x60);
|
cpustate->program->write_dword((page_dir & 0xfffff000) + (table * 4), page_entry | 0x60);
|
||||||
perm |= VTLB_FLAG_DIRTY;
|
|
||||||
}
|
|
||||||
else if(!(page_entry & 0x20))
|
else if(!(page_entry & 0x20))
|
||||||
cpustate->program->write_dword((page_dir & 0xfffff000) + (table * 4), page_entry | 0x20);
|
cpustate->program->write_dword((page_dir & 0xfffff000) + (table * 4), page_entry | 0x20);
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
|
@ -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)
|
void vtlb_dynload(vtlb_state *vtlb, int index, offs_t address, vtlb_entry value)
|
||||||
{
|
{
|
||||||
vtlb_entry entry = vtlb->table[index];
|
vtlb_entry entry = vtlb->table[index];
|
||||||
value &= VTLB_FLAGS_MASK;
|
|
||||||
|
|
||||||
if (vtlb->dynamic == 0)
|
if (vtlb->dynamic == 0)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user