From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1L97I1-0000uI-CB for qemu-devel@nongnu.org; Sat, 06 Dec 2008 19:14:25 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1L97I0-0000tu-JW for qemu-devel@nongnu.org; Sat, 06 Dec 2008 19:14:24 -0500 Received: from [199.232.76.173] (port=33875 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L97I0-0000tp-E3 for qemu-devel@nongnu.org; Sat, 06 Dec 2008 19:14:24 -0500 Received: from savannah.gnu.org ([199.232.41.3]:57935 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1L97I0-0003Mh-6m for qemu-devel@nongnu.org; Sat, 06 Dec 2008 19:14:24 -0500 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1L97Hz-0007Wb-0i for qemu-devel@nongnu.org; Sun, 07 Dec 2008 00:14:23 +0000 Received: from edgar_igl by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1L97Hy-0007WV-Hv for qemu-devel@nongnu.org; Sun, 07 Dec 2008 00:14:22 +0000 MIME-Version: 1.0 Errors-To: edgar_igl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: "Edgar E. Iglesias" Message-Id: Date: Sun, 07 Dec 2008 00:14:22 +0000 Subject: [Qemu-devel] [5898] ETRAX-FS: Simplify the DMA blocks address registration and decoding. Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 5898 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5898 Author: edgar_igl Date: 2008-12-07 00:14:21 +0000 (Sun, 07 Dec 2008) Log Message: ----------- ETRAX-FS: Simplify the DMA blocks address registration and decoding. Signed-off-by: Edgar E. Iglesias Modified Paths: -------------- trunk/hw/etraxfs_dma.c Modified: trunk/hw/etraxfs_dma.c =================================================================== --- trunk/hw/etraxfs_dma.c 2008-12-06 23:19:03 UTC (rev 5897) +++ trunk/hw/etraxfs_dma.c 2008-12-07 00:14:21 UTC (rev 5898) @@ -165,11 +165,9 @@ struct fs_dma_channel { - int regmap; qemu_irq *irq; struct etraxfs_dma_client *client; - /* Internal status. */ int stream_cmd_src; enum dma_ch_state state; @@ -187,6 +185,7 @@ struct fs_dma_ctrl { + int map; CPUState *env; int nr_channels; @@ -570,9 +569,9 @@ int c; uint32_t r = 0; - /* Make addr relative to this instances base. */ + /* Make addr relative to this channel and bounded to nr regs. */ c = fs_channel(addr); - addr &= 0x1fff; + addr &= 0xff; switch (addr) { case RW_STAT: @@ -616,9 +615,9 @@ struct fs_dma_ctrl *ctrl = opaque; int c; - /* Make addr relative to this instances base. */ + /* Make addr relative to this channel and bounded to nr regs. */ c = fs_channel(addr); - addr &= 0x1fff; + addr &= 0xff; switch (addr) { case RW_DATA: @@ -744,7 +743,6 @@ target_phys_addr_t base, int nr_channels) { struct fs_dma_ctrl *ctrl = NULL; - int i; ctrl = qemu_mallocz(sizeof *ctrl); if (!ctrl) @@ -758,17 +756,8 @@ if (!ctrl->channels) goto err; - for (i = 0; i < nr_channels; i++) - { - ctrl->channels[i].regmap = cpu_register_io_memory(0, - dma_read, - dma_write, - ctrl); - cpu_register_physical_memory_offset (base + i * 0x2000, - sizeof ctrl->channels[i].regs, ctrl->channels[i].regmap, - i * 0x2000); - } - + ctrl->map = cpu_register_io_memory(0, dma_read, dma_write, ctrl); + cpu_register_physical_memory(base, nr_channels * 0x2000, ctrl->map); return ctrl; err: qemu_free(ctrl->channels);