Got completely rid of readmemb386l() and writememb386l().
This commit is contained in:
@@ -804,6 +804,55 @@ writemembl(uint32_t addr, uint8_t val)
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
rwmembl(uint32_t raddr, uint32_t waddr, uint8_t val)
|
||||
{
|
||||
uint64_t raddr64 = (uint64_t) raddr;
|
||||
uint64_t waddr64 = (uint64_t) waddr;
|
||||
mem_mapping_t *rmap, *wmap;
|
||||
uint8_t temp = 0xff;
|
||||
|
||||
mem_logical_addr = raddr;
|
||||
|
||||
if (cr0 >> 31) {
|
||||
raddr64 = mmutranslate_read(raddr);
|
||||
if (raddr64 == 0xffffffffffffffffULL)
|
||||
goto do_writebl;
|
||||
if (raddr64 > 0xffffffffULL)
|
||||
goto do_writebl;
|
||||
}
|
||||
raddr = (uint32_t) (raddr64 & rammask);
|
||||
|
||||
rmap = read_mapping[raddr >> MEM_GRANULARITY_BITS];
|
||||
if (rmap && rmap->read_b)
|
||||
temp = rmap->read_b(raddr, rmap->p);
|
||||
|
||||
do_writebl:
|
||||
if (cpu_state.abrt)
|
||||
return;
|
||||
|
||||
mem_logical_addr = waddr;
|
||||
|
||||
if (page_lookup[waddr >> 12] && page_lookup[waddr >> 12]->write_b) {
|
||||
page_lookup[waddr >> 12]->write_b(waddr, temp, page_lookup[waddr >> 12]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (cr0 >> 31) {
|
||||
waddr64 = mmutranslate_write(waddr);
|
||||
if (waddr64 == 0xffffffffffffffffULL)
|
||||
return;
|
||||
if (waddr64 > 0xffffffffULL)
|
||||
return;
|
||||
}
|
||||
waddr = (uint32_t) (waddr64 & rammask);
|
||||
|
||||
wmap = write_mapping[waddr >> MEM_GRANULARITY_BITS];
|
||||
if (wmap && wmap->write_b)
|
||||
wmap->write_b(waddr, temp, wmap->p);
|
||||
}
|
||||
|
||||
|
||||
#ifdef USE_NEW_DYNAREC
|
||||
uint16_t
|
||||
readmemwl(uint32_t addr)
|
||||
@@ -1112,20 +1161,6 @@ writememql(uint32_t addr, uint64_t val)
|
||||
}
|
||||
}
|
||||
#else
|
||||
uint8_t
|
||||
readmemb386l(uint32_t seg, uint32_t addr)
|
||||
{
|
||||
return readmembl(addr + seg);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
writememb386l(uint32_t seg, uint32_t addr, uint8_t val)
|
||||
{
|
||||
writemembl(addr + seg, val);
|
||||
}
|
||||
|
||||
|
||||
uint16_t
|
||||
readmemwl(uint32_t seg, uint32_t addr)
|
||||
{
|
||||
@@ -1143,8 +1178,7 @@ readmemwl(uint32_t seg, uint32_t addr)
|
||||
if (mmutranslate_read(addr2+1) == 0xffffffffffffffffULL)
|
||||
return 0xffff;
|
||||
}
|
||||
if (is386) return readmemb386l(seg,addr)|(((uint16_t) readmemb386l(seg,addr+1))<<8);
|
||||
else return readmembl(seg+addr)|(((uint16_t) readmembl(seg+addr+1))<<8);
|
||||
return readmembl(seg+addr)|(((uint16_t) readmembl(seg+addr+1))<<8);
|
||||
} else if (readlookup2[addr2 >> 12] != (uintptr_t) LOOKUP_INV)
|
||||
return *(uint16_t *)(readlookup2[addr2 >> 12] + addr2);
|
||||
}
|
||||
@@ -1193,13 +1227,8 @@ writememwl(uint32_t seg, uint32_t addr, uint16_t val)
|
||||
if (mmutranslate_write(addr2) == 0xffffffffffffffffULL) return;
|
||||
if (mmutranslate_write(addr2+1) == 0xffffffffffffffffULL) return;
|
||||
}
|
||||
if (is386) {
|
||||
writememb386l(seg,addr,val);
|
||||
writememb386l(seg,addr+1,val>>8);
|
||||
} else {
|
||||
writemembl(seg+addr,val);
|
||||
writemembl(seg+addr+1,val>>8);
|
||||
}
|
||||
writemembl(seg+addr,val);
|
||||
writemembl(seg+addr+1,val>>8);
|
||||
return;
|
||||
} else if (writelookup2[addr2 >> 12] != (uintptr_t) LOOKUP_INV) {
|
||||
*(uint16_t *)(writelookup2[addr2 >> 12] + addr2) = val;
|
||||
|
||||
Reference in New Issue
Block a user