From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46264) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UlNAu-00018g-K7 for qemu-devel@nongnu.org; Sat, 08 Jun 2013 13:43:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UlNAt-0006TW-JE for qemu-devel@nongnu.org; Sat, 08 Jun 2013 13:43:36 -0400 Received: from [101.78.175.194] (port=46169 helo=ibis.ibis) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UlNAt-0006TQ-7K for qemu-devel@nongnu.org; Sat, 08 Jun 2013 13:43:35 -0400 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Sun, 9 Jun 2013 01:44:04 +0800 Message-Id: <1370713446-9460-7-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 6/8] ppc: simplify access to PReP I/O region List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, Paolo Bonzini , =?UTF-8?q?Andreas=20F=C3=A4rber?= , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Alexander Graf We can now simply use address_space_rw instead of the more convoluted cpu_in() and cpu_out() functions. Signed-off-by: Hervé Poussineau --- hw/ppc/prep.c | 65 ++++++++------------------------------------------------- 1 file changed, 9 insertions(+), 56 deletions(-) diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index be8a50e..bb77e1f 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -341,75 +341,28 @@ static inline hwaddr prep_IO_address(sysctrl_t *sysctrl, return addr; } -static void PPC_prep_io_writeb (void *opaque, hwaddr addr, - uint32_t value) +static uint64_t PPC_prep_io_read(void *opaque, hwaddr addr, unsigned int size) { sysctrl_t *sysctrl = opaque; + uint64_t data = 0; addr = prep_IO_address(sysctrl, addr); - cpu_outb(addr, value); + address_space_read(&address_space_io, addr, (uint8_t *)&data, size); + return data; } -static uint32_t PPC_prep_io_readb (void *opaque, hwaddr addr) +static void PPC_prep_io_write(void *opaque, hwaddr addr, uint64_t data, + unsigned int size) { sysctrl_t *sysctrl = opaque; - uint32_t ret; addr = prep_IO_address(sysctrl, addr); - ret = cpu_inb(addr); - - return ret; -} - -static void PPC_prep_io_writew (void *opaque, hwaddr addr, - uint32_t value) -{ - sysctrl_t *sysctrl = opaque; - - addr = prep_IO_address(sysctrl, addr); - PPC_IO_DPRINTF("0x" TARGET_FMT_plx " => 0x%08" PRIx32 "\n", addr, value); - cpu_outw(addr, value); -} - -static uint32_t PPC_prep_io_readw (void *opaque, hwaddr addr) -{ - sysctrl_t *sysctrl = opaque; - uint32_t ret; - - addr = prep_IO_address(sysctrl, addr); - ret = cpu_inw(addr); - PPC_IO_DPRINTF("0x" TARGET_FMT_plx " <= 0x%08" PRIx32 "\n", addr, ret); - - return ret; -} - -static void PPC_prep_io_writel (void *opaque, hwaddr addr, - uint32_t value) -{ - sysctrl_t *sysctrl = opaque; - - addr = prep_IO_address(sysctrl, addr); - PPC_IO_DPRINTF("0x" TARGET_FMT_plx " => 0x%08" PRIx32 "\n", addr, value); - cpu_outl(addr, value); -} - -static uint32_t PPC_prep_io_readl (void *opaque, hwaddr addr) -{ - sysctrl_t *sysctrl = opaque; - uint32_t ret; - - addr = prep_IO_address(sysctrl, addr); - ret = cpu_inl(addr); - PPC_IO_DPRINTF("0x" TARGET_FMT_plx " <= 0x%08" PRIx32 "\n", addr, ret); - - return ret; + address_space_write(&address_space_io, addr, (uint8_t *)&data, size); } static const MemoryRegionOps PPC_prep_io_ops = { - .old_mmio = { - .read = { PPC_prep_io_readb, PPC_prep_io_readw, PPC_prep_io_readl }, - .write = { PPC_prep_io_writeb, PPC_prep_io_writew, PPC_prep_io_writel }, - }, + .read = PPC_prep_io_read, + .write = PPC_prep_io_write, .endianness = DEVICE_LITTLE_ENDIAN, }; -- 1.7.10.4