Cached results of MMU lookup in get_phys().
This commit is contained in:
parent
20c3415202
commit
2bc2bbc939
2 changed files with 14 additions and 2 deletions
|
|
@ -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;
|
||||
|
|
|
|||
18
src/mem.h
18
src/mem.h
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue