Cached results of MMU lookup in get_phys().

This commit is contained in:
TomW 2016-01-27 21:05:28 +00:00
commit 2bc2bbc939
2 changed files with 14 additions and 2 deletions

View file

@ -1919,3 +1919,5 @@ void mem_a20_recalc()
// pclog("rammask now %08X\n", rammask);
mem_a20_state = state;
}
uint32_t get_phys_virt,get_phys_phys;

View file

@ -118,13 +118,23 @@ extern page_t *pages;
extern page_t **page_lookup;
uint32_t mmutranslate_noabrt(uint32_t addr, int rw);
extern uint32_t get_phys_virt,get_phys_phys;
static inline get_phys(uint32_t addr)
{
if (!(cr0 >> 31))
return addr & rammask;
if (!((addr ^ get_phys_virt) & ~0xfff))
return get_phys_phys | (addr & 0xfff);
get_phys_virt = addr;
return mmutranslatereal(addr, 0) & rammask;
if (!(cr0 >> 31))
{
get_phys_phys = (addr & rammask) & ~0xfff;
return addr & rammask;
}
get_phys_phys = (mmutranslatereal(addr, 0) & rammask) & ~0xfff;
return get_phys_phys | (addr & 0xfff);
// return mmutranslatereal(addr, 0) & rammask;
}
static inline get_phys_noabrt(uint32_t addr)