--- memory/memory.cc 10 Apr 2005 19:42:48 -0000 1.40 +++ memory/memory.cc 30 Sep 2005 20:00:22 -0000 @@ -43,15 +43,6 @@ #endif a20addr = A20ADDR(addr); - struct memory_handler_struct *memory_handler = memory_handlers[a20addr >> 20]; - while (memory_handler) { - if (memory_handler->begin <= a20addr && - memory_handler->end >= a20addr && - memory_handler->write_handler(a20addr, len, data, memory_handler->write_param)) - return; - memory_handler = memory_handler->next; - } - BX_INSTR_PHY_WRITE(cpu->which_cpu(), a20addr, len); #if BX_DEBUGGER @@ -65,6 +56,15 @@ } #endif + struct memory_handler_struct *memory_handler = memory_handlers[a20addr >> 20]; + while (memory_handler) { + if (memory_handler->begin <= a20addr && + memory_handler->end >= a20addr && + memory_handler->write_handler(a20addr, len, data, memory_handler->write_param)) + return; + memory_handler = memory_handler->next; + } + #if BX_SUPPORT_ICACHE if (a20addr < BX_MEM_THIS len) pageWriteStampTable.decWriteStamp(a20addr); @@ -202,15 +202,6 @@ #endif a20addr = A20ADDR(addr); - struct memory_handler_struct *memory_handler = memory_handlers[a20addr >> 20]; - while (memory_handler) { - if (memory_handler->begin <= a20addr && - memory_handler->end >= a20addr && - memory_handler->read_handler(a20addr, len, data, memory_handler->read_param)) - return; - memory_handler = memory_handler->next; - } - BX_INSTR_PHY_READ(cpu->which_cpu(), a20addr, len); #if BX_DEBUGGER @@ -224,6 +215,15 @@ } #endif + struct memory_handler_struct *memory_handler = memory_handlers[a20addr >> 20]; + while (memory_handler) { + if (memory_handler->begin <= a20addr && + memory_handler->end >= a20addr && + memory_handler->read_handler(a20addr, len, data, memory_handler->read_param)) + return; + memory_handler = memory_handler->next; + } + #if BX_SUPPORT_APIC bx_generic_apic_c *local_apic = &cpu->local_apic; bx_generic_apic_c *ioapic = bx_devices.ioapic;