X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=urjtag%2Fsrc%2Fbus%2Fejtag_dma.c;h=986fbabc62d6b7a50b821692043a0c4828355ce2;hb=46b6c6c2a90cd8c4696503158dd64fb669929461;hp=d81130c005d2d4a23249e2632e821785dd9f9bbc;hpb=5dd251e5a41936508b641a4e077b72649b18a3bb;p=pf3gnuchains%2Furjtag.git diff --git a/urjtag/src/bus/ejtag_dma.c b/urjtag/src/bus/ejtag_dma.c index d81130c..986fbab 100644 --- a/urjtag/src/bus/ejtag_dma.c +++ b/urjtag/src/bus/ejtag_dma.c @@ -342,10 +342,20 @@ ejtag_dma_read (urj_bus_t *bus, unsigned int addr, int sz) switch (sz) { case DMA_HALFWORD: - ret &= ret & 0xffff; + if (addr & 2) + ret = (ret >> 16) & 0xffff; + else + ret = ret & 0xffff; break; case DMA_BYTE: - ret &= ret & 0xff; + if ((addr & 3) == 3) + ret = (ret >> 24) & 0xff; + else if ((addr & 3) == 2) + ret = (ret >> 16) & 0xff; + else if ((addr & 3) == 1) + ret = (ret >> 8) & 0xff; + else + ret = ret & 0xff; break; case DMA_WORD: default: