From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46110) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UlNAR-0000AH-WD for qemu-devel@nongnu.org; Sat, 08 Jun 2013 13:43:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UlNAP-0006Ew-KU for qemu-devel@nongnu.org; Sat, 08 Jun 2013 13:43:07 -0400 Received: from [101.78.175.194] (port=46133 helo=ibis.ibis) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UlNAP-0006Ea-6l for qemu-devel@nongnu.org; Sat, 08 Jun 2013 13:43:05 -0400 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Sun, 9 Jun 2013 01:44:00 +0800 Message-Id: <1370713446-9460-3-git-send-email-hpoussin@reactos.org> In-Reply-To: <1370713446-9460-1-git-send-email-hpoussin@reactos.org> References: <1370713446-9460-1-git-send-email-hpoussin@reactos.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH v2 2/8] memory: handle old_portio accesses in MMIO path List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Paolo Bonzini , =?UTF-8?q?Herv=C3=A9=20Poussineau?= This patch is only temporary, and will be removed soon. Signed-off-by: Hervé Poussineau --- memory.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/memory.c b/memory.c index 5cb8f4a..f27167c 100644 --- a/memory.c +++ b/memory.c @@ -933,6 +933,14 @@ static uint64_t memory_region_dispatch_read1(MemoryRegion *mr, mr->ops->impl.min_access_size, mr->ops->impl.max_access_size, memory_region_read_accessor, mr); + } else if (mr->ops->old_portio) { + MemoryRegionIORange mrio; + MemoryRegionSection mrs = memory_region_find(get_system_io(), addr, + size); + mrio.mr = mr; + mrio.offset = mrs.offset_within_region; + memory_region_iorange_read(&mrio.iorange, addr - mrio.offset, size, + &data); } else { access_with_adjusted_size(addr, &data, size, 1, 4, memory_region_oldmmio_read_accessor, mr); @@ -994,6 +1002,14 @@ static bool memory_region_dispatch_write(MemoryRegion *mr, mr->ops->impl.min_access_size, mr->ops->impl.max_access_size, memory_region_write_accessor, mr); + } else if (mr->ops->old_portio) { + MemoryRegionIORange mrio; + MemoryRegionSection mrs = memory_region_find(get_system_io(), addr, + size); + mrio.mr = mr; + mrio.offset = mrs.offset_within_region; + memory_region_iorange_write(&mrio.iorange, addr - mrio.offset, size, + data); } else { access_with_adjusted_size(addr, &data, size, 1, 4, memory_region_oldmmio_write_accessor, mr); -- 1.7.10.4