[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH 4/6] dbdma: fix load_word/store_word value endianness
From: |
Mark Cave-Ayland |
Subject: |
[Qemu-ppc] [PATCH 4/6] dbdma: fix load_word/store_word value endianness |
Date: |
Sun, 10 Jul 2016 19:08:56 +0100 |
The values to read/write to/from physical memory are copied directly to the
physical address with no endian swapping required.
Also add some extra information to debugging output while we are here.
Signed-off-by: Mark Cave-Ayland <address@hidden>
Acked-by: Benjamin Herrenschmidt <address@hidden>
---
hw/misc/macio/mac_dbdma.c | 24 +++++-------------------
1 file changed, 5 insertions(+), 19 deletions(-)
diff --git a/hw/misc/macio/mac_dbdma.c b/hw/misc/macio/mac_dbdma.c
index bb52cb9..f437a55 100644
--- a/hw/misc/macio/mac_dbdma.c
+++ b/hw/misc/macio/mac_dbdma.c
@@ -350,9 +350,8 @@ static void load_word(DBDMA_channel *ch, int key, uint32_t
addr,
uint16_t len)
{
dbdma_cmd *current = &ch->current;
- uint32_t val;
- DBDMA_DPRINTFCH(ch, "load_word\n");
+ DBDMA_DPRINTFCH(ch, "load_word %d bytes, addr=%08x\n", len, addr);
/* only implements KEY_SYSTEM */
@@ -362,14 +361,7 @@ static void load_word(DBDMA_channel *ch, int key, uint32_t
addr,
return;
}
- dma_memory_read(&address_space_memory, addr, &val, len);
-
- if (len == 2)
- val = (val << 16) | (current->cmd_dep & 0x0000ffff);
- else if (len == 1)
- val = (val << 24) | (current->cmd_dep & 0x00ffffff);
-
- current->cmd_dep = val;
+ dma_memory_read(&address_space_memory, addr, ¤t->cmd_dep, len);
if (conditional_wait(ch))
goto wait;
@@ -389,9 +381,9 @@ static void store_word(DBDMA_channel *ch, int key, uint32_t
addr,
uint16_t len)
{
dbdma_cmd *current = &ch->current;
- uint32_t val;
- DBDMA_DPRINTFCH(ch, "store_word\n");
+ DBDMA_DPRINTFCH(ch, "store_word %d bytes, addr=%08x pa=%x\n",
+ len, addr, le32_to_cpu(current->cmd_dep));
/* only implements KEY_SYSTEM */
@@ -401,13 +393,7 @@ static void store_word(DBDMA_channel *ch, int key,
uint32_t addr,
return;
}
- val = current->cmd_dep;
- if (len == 2)
- val >>= 16;
- else if (len == 1)
- val >>= 24;
-
- dma_memory_write(&address_space_memory, addr, &val, len);
+ dma_memory_write(&address_space_memory, addr, ¤t->cmd_dep, len);
if (conditional_wait(ch))
goto wait;
--
1.7.10.4
- [Qemu-ppc] [PATCH 0/6] dbdma: improve logging and various fixes, Mark Cave-Ayland, 2016/07/10
- [Qemu-ppc] [PATCH 6/6] dbdma: reset io->processing flag for unassigned DBDMA channel rw accesses, Mark Cave-Ayland, 2016/07/10
- [Qemu-ppc] [PATCH 3/6] dbdma: fix endian of DBDMA_CMDPTR_LO during branch, Mark Cave-Ayland, 2016/07/10
- [Qemu-ppc] [PATCH 4/6] dbdma: fix load_word/store_word value endianness,
Mark Cave-Ayland <=
- [Qemu-ppc] [PATCH 5/6] dbdma: set FLUSH bit upon reception of flush command for unassigned DBDMA channels, Mark Cave-Ayland, 2016/07/10
- [Qemu-ppc] [PATCH 2/6] dbdma: add per-channel debugging enabled via DEBUG_DBDMA_CHANMASK, Mark Cave-Ayland, 2016/07/10
- [Qemu-ppc] [PATCH 1/6] dbdma: always define DBDMA_DPRINTF and enable debug with DEBUG_DBDMA, Mark Cave-Ayland, 2016/07/10
- Re: [Qemu-ppc] [PATCH 0/6] dbdma: improve logging and various fixes, David Gibson, 2016/07/10