qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] arm: explicitly mark loads as little-endian


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH] arm: explicitly mark loads as little-endian
Date: Fri, 4 Dec 2015 12:51:31 +0000

On 4 December 2015 at 12:28, Paolo Bonzini <address@hidden> wrote:
> ARM softmmu is always compiled as little endian; BE8/BE32 can be
> done as part of CPU emulation.  Thus, devices need not use the
> endian-dependent loads and swaps.

The patch code is right, but I think the more significant point
here is that the behaviour of the PXA2xx and OMAP devices being
emulated here doesn't (shouldn't) depend on the CPU endianness
anyway, and these devices are little endian when they do DMA
accesses.

> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
>  hw/display/omap_lcd_template.h | 4 ++--
>  hw/display/pxa2xx_lcd.c        | 8 ++++----
>  2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/hw/display/omap_lcd_template.h b/hw/display/omap_lcd_template.h
> index e5dd447..f0ce71f 100644
> --- a/hw/display/omap_lcd_template.h
> +++ b/hw/display/omap_lcd_template.h
> @@ -136,7 +136,7 @@ static void glue(draw_line12_, DEPTH)(void *opaque,
>      uint8_t r, g, b;
>
>      do {
> -        v = lduw_p((void *) s);
> +        v = lduw_le_p((void *) s);
>          r = (v >> 4) & 0xf0;
>          g = v & 0xf0;
>          b = (v << 4) & 0xf0;
> @@ -159,7 +159,7 @@ static void glue(draw_line16_, DEPTH)(void *opaque,
>      uint8_t r, g, b;
>
>      do {
> -        v = lduw_p((void *) s);
> +        v = lduw_le_p((void *) s);
>          r = (v >> 8) & 0xf8;
>          g = (v >> 3) & 0xfc;
>          b = (v << 3) & 0xf8;
> diff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c
> index 494700d..4d36c94 100644
> --- a/hw/display/pxa2xx_lcd.c
> +++ b/hw/display/pxa2xx_lcd.c
> @@ -309,10 +309,10 @@ static void pxa2xx_descriptor_load(PXA2xxLCDState *s)
>          }
>
>          cpu_physical_memory_read(descptr, &desc, sizeof(desc));
> -        s->dma_ch[i].descriptor = tswap32(desc.fdaddr);
> -        s->dma_ch[i].source = tswap32(desc.fsaddr);
> -        s->dma_ch[i].id = tswap32(desc.fidr);
> -        s->dma_ch[i].command = tswap32(desc.ldcmd);
> +        s->dma_ch[i].descriptor = le32_to_cpu(desc.fdaddr);
> +        s->dma_ch[i].source = le32_to_cpu(desc.fsaddr);
> +        s->dma_ch[i].id = le32_to_cpu(desc.fidr);
> +        s->dma_ch[i].command = le32_to_cpu(desc.ldcmd);
>      }
>  }
>
> --
> 1.8.3.1

Reviewed-by: Peter Maydell <address@hidden>

thanks
-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]