Only sync ID cache is necessary when guest do read. diff -r 571022d5afa2 tools/ioemu/target-i386-dm/exec-dm.c --- a/tools/ioemu/target-i386-dm/exec-dm.c Mon Aug 07 14:11:58 2006 -0600 +++ b/tools/ioemu/target-i386-dm/exec-dm.c Wed Aug 09 09:06:44 2006 +0800 @@ -449,6 +449,9 @@ void cpu_physical_memory_rw(target_phys_ /* RAM case */ ptr = phys_ram_base + addr1; memcpy(ptr, buf, l); +#ifdef __ia64__ + sync_icache((unsigned long)ptr, l); +#endif } } else { if (io_index) { @@ -473,9 +476,6 @@ void cpu_physical_memory_rw(target_phys_ ptr = phys_ram_base + (pd & TARGET_PAGE_MASK) + (addr & ~TARGET_PAGE_MASK); memcpy(buf, ptr, l); -#ifdef __ia64__ - sync_icache((unsigned long)ptr, l); -#endif } else { /* unreported MMIO space */ memset(buf, 0xff, len);