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);
|
// pclog("rammask now %08X\n", rammask);
|
||||||
mem_a20_state = state;
|
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;
|
extern page_t **page_lookup;
|
||||||
|
|
||||||
uint32_t mmutranslate_noabrt(uint32_t addr, int rw);
|
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)
|
static inline get_phys(uint32_t addr)
|
||||||
{
|
{
|
||||||
if (!(cr0 >> 31))
|
if (!((addr ^ get_phys_virt) & ~0xfff))
|
||||||
return addr & rammask;
|
return get_phys_phys | (addr & 0xfff);
|
||||||
|
|
||||||
return mmutranslatereal(addr, 0) & rammask;
|
get_phys_virt = addr;
|
||||||
|
|
||||||
|
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)
|
static inline get_phys_noabrt(uint32_t addr)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue