From patchwork Wed Aug 10 22:28:14 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 109473 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id CF1CDB6F57 for ; Thu, 11 Aug 2011 09:23:10 +1000 (EST) Received: from localhost ([::1]:51209 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QrHHm-0005zX-Fc for incoming@patchwork.ozlabs.org; Wed, 10 Aug 2011 18:30:02 -0400 Received: from eggs.gnu.org ([140.186.70.92]:49742) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QrHHF-0004Ad-GX for qemu-devel@nongnu.org; Wed, 10 Aug 2011 18:29:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QrHHD-0006NI-5N for qemu-devel@nongnu.org; Wed, 10 Aug 2011 18:29:29 -0400 Received: from mail-ww0-f53.google.com ([74.125.82.53]:54887) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QrHHD-0006La-0r for qemu-devel@nongnu.org; Wed, 10 Aug 2011 18:29:27 -0400 Received: by mail-ww0-f53.google.com with SMTP id 25so1339901wwf.10 for ; Wed, 10 Aug 2011 15:29:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=P6aYNTmfpiQukvNVRABdWDjeWacc7/AkXOcyw3Ob+rE=; b=aUk9Vv1pXtlP21JHcPDUkn0TqvasinPEpja7HmEcXmywjEiOCll2qvSE8liWEFUZa2 OtlzGNK8om6uSlwihAFQdKaPnScXNCnoucom1WiwR9JNG/g5F1I8SS4XRDWCHP9LOMOz rrALUx9p3Ji0pWSD9v37ysBkWVlSbx55RKY0U= Received: by 10.216.46.208 with SMTP id r58mr1052678web.78.1313015366610; Wed, 10 Aug 2011 15:29:26 -0700 (PDT) Received: from localhost.localdomain (c-71-227-161-214.hsd1.wa.comcast.net [71.227.161.214]) by mx.google.com with ESMTPS id m38sm880619weq.21.2011.08.10.15.29.24 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 10 Aug 2011 15:29:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 10 Aug 2011 15:28:14 -0700 Message-Id: <1313015300-23920-6-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 1.7.6 In-Reply-To: <1313015300-23920-1-git-send-email-rth@twiddle.net> References: <1313015300-23920-1-git-send-email-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 74.125.82.53 Cc: avi@redhat.com Subject: [Qemu-devel] [PATCH 05/11] cs4231a: Convert to MemoryRegion. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Richard Henderson --- hw/cs4231a.c | 38 +++++++++++++++++++------------------- 1 files changed, 19 insertions(+), 19 deletions(-) diff --git a/hw/cs4231a.c b/hw/cs4231a.c index 598f032..e16665e 100644 --- a/hw/cs4231a.c +++ b/hw/cs4231a.c @@ -59,6 +59,7 @@ static struct { typedef struct CSState { ISADevice dev; QEMUSoundCard card; + MemoryRegion ioports; qemu_irq pic; uint32_t regs[CS_REGS]; uint8_t dregs[CS_DREGS]; @@ -74,14 +75,6 @@ typedef struct CSState { int16_t *tab; } CSState; -#define IO_READ_PROTO(name) \ - static uint32_t name (void *opaque, uint32_t addr) - -#define IO_WRITE_PROTO(name) \ - static void name (void *opaque, uint32_t addr, uint32_t val) - -#define GET_SADDR(addr) (addr & 3) - #define MODE2 (1 << 6) #define MCE (1 << 6) #define PMCE (1 << 4) @@ -353,12 +346,12 @@ static void cs_reset_voices (CSState *s, uint32_t val) } } -IO_READ_PROTO (cs_read) +static uint64_t cs_read(void *opaque, target_phys_addr_t addr, unsigned size) { CSState *s = opaque; uint32_t saddr, iaddr, ret; - saddr = GET_SADDR (addr); + saddr = addr; iaddr = ~0U; switch (saddr) { @@ -390,12 +383,14 @@ IO_READ_PROTO (cs_read) return ret; } -IO_WRITE_PROTO (cs_write) +static void cs_write(void *opaque, target_phys_addr_t addr, + uint64_t val64, unsigned size) { CSState *s = opaque; - uint32_t saddr, iaddr; + uint32_t saddr, iaddr, val; - saddr = GET_SADDR (addr); + saddr = addr; + val = val64; switch (saddr) { case Index_Address: @@ -637,18 +632,23 @@ static const VMStateDescription vmstate_cs4231a = { } }; +static const MemoryRegionOps cs_ioport_ops = { + .read = cs_read, + .write = cs_write, + .impl = { + .min_access_size = 1, + .max_access_size = 1, + } +}; + static int cs4231a_initfn (ISADevice *dev) { CSState *s = DO_UPCAST (CSState, dev, dev); - int i; isa_init_irq (dev, &s->pic, s->irq); - for (i = 0; i < 4; i++) { - isa_init_ioport(dev, i); - register_ioport_write (s->port + i, 1, 1, cs_write, s); - register_ioport_read (s->port + i, 1, 1, cs_read, s); - } + memory_region_init_io(&s->ioports, &cs_ioport_ops, s, "cs4231a", 4); + isa_register_ioport(dev, &s->ioports, s->port); DMA_register_channel (s->dma, cs_dma_read, s);