diff --git a/src/hardware/vga_memory.cpp b/src/hardware/vga_memory.cpp index 31d309cd..76487aff 100644 --- a/src/hardware/vga_memory.cpp +++ b/src/hardware/vga_memory.cpp @@ -309,35 +309,23 @@ public: } Bitu readw(PhysPt addr ) { addr = PAGING_GetPhysicalAddress(addr) & 0xffff; - return readHandler( addr ); + if (GCC_UNLIKELY(addr & 1)) + return + (readHandler( addr+0 ) << 0 ) | + (readHandler( addr+1 ) << 8 ); + else + return readHandler( addr ); } Bitu readd(PhysPt addr ) { addr = PAGING_GetPhysicalAddress(addr) & 0xffff; - return readHandler( addr ); - } - bool readw_checked( PhysPt addr,Bitu *val ) { - addr = PAGING_GetPhysicalAddress(addr) & 0xffff; - if ( addr & 1) { - *val = - (readHandler( addr+0 ) << 0 ) | - (readHandler( addr+1 ) << 8 ); - } else { - *val = readHandler( addr ); - } - return false; - } - bool readd_checked( PhysPt addr,Bitu *val ) { - addr = PAGING_GetPhysicalAddress(addr) & 0xffff; - if ( addr & 3) { - *val = + if (GCC_UNLIKELY(addr & 3)) + return (readHandler( addr+0 ) << 0 ) | (readHandler( addr+1 ) << 8 ) | (readHandler( addr+2 ) << 16 ) | (readHandler( addr+3 ) << 24 ); - } else { - *val = readHandler( addr ); - } - return false; + else + return readHandler( addr ); } void writeb(PhysPt addr, Bitu val ) { addr = PAGING_GetPhysicalAddress(addr) & 0xffff; @@ -348,46 +336,28 @@ public: void writew(PhysPt addr,Bitu val) { addr = PAGING_GetPhysicalAddress(addr) & 0xffff; MEM_CHANGED( addr ); - writeHandler( addr, val ); +// MEM_CHANGED( addr + 1); + if (GCC_UNLIKELY(addr & 1)) { + writeHandler( addr+0, val >> 0 ); + writeHandler( addr+1, val >> 8 ); + } else { + writeHandler( addr, val ); + } writeCache( addr, val ); } void writed(PhysPt addr,Bitu val) { addr = PAGING_GetPhysicalAddress(addr) & 0xffff; MEM_CHANGED( addr ); - writeHandler( addr, val ); - writeCache( addr, val ); - } - bool writew_checked( PhysPt addr,Bitu val ) { - addr = PAGING_GetPhysicalAddress(addr) & 0xffff; - if ( addr & 1 ) { - MEM_CHANGED( addr ); - MEM_CHANGED( addr + 1); - writeHandler( addr+0, val >> 0 ); - writeHandler( addr+1, val >> 8 ); - writeCache( addr, val ); - } else { - MEM_CHANGED( addr ); - writeHandler( addr, val ); - writeCache( addr, val ); - } - return false; - } - bool writed_checked( PhysPt addr,Bitu val ) { - addr = PAGING_GetPhysicalAddress(addr) & 0xffff; - if ( addr & 3) { - MEM_CHANGED( addr ); - MEM_CHANGED( addr + 3); +// MEM_CHANGED( addr + 3); + if (GCC_UNLIKELY(addr & 3)) { writeHandler( addr+0, val >> 0 ); writeHandler( addr+1, val >> 8 ); writeHandler( addr+2, val >> 16 ); writeHandler( addr+3, val >> 24 ); - writeCache( addr, val ); } else { - MEM_CHANGED( addr ); writeHandler( addr, val ); - writeCache( addr, val ); } - return false; + writeCache( addr, val ); } }; @@ -586,13 +556,6 @@ public: hostWrite( &vga.mem.linear[addr], val ); MEM_CHANGED( addr ); } - bool writed_checked( PhysPt addr,Bitu val ) { - addr = PAGING_GetPhysicalAddress(addr) - vga.lfb.addr; - hostWrite( &vga.mem.linear[addr], val ); - MEM_CHANGED( addr ); - return false; - } - }; class VGA_LFB_Handler : public PageHandler {