[PATCH] RADEONCopySwap: Fix RADEON_HOST_DATA_SWAP_16BIT case.

Alex Deucher alexdeucher at gmail.com
Mon Apr 16 06:47:19 PDT 2012


2012/4/16 Michel Dänzer <michel at daenzer.net>:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> It was the same code as for RADEON_HOST_DATA_SWAP_32BIT. This caused bus errors
> on FreeBSD/PPC, but I'm not sure how it could not cause problems anywhere...
>
> Reported-by: Andreas Tobler <andreast at fgznet.ch>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

Reviewed-by: Alex Deucher <alexdeucher at amd.com>

> ---
>  src/radeon_accel.c |    5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/src/radeon_accel.c b/src/radeon_accel.c
> index 1cebcf6..784502d 100644
> --- a/src/radeon_accel.c
> +++ b/src/radeon_accel.c
> @@ -982,10 +982,9 @@ void RADEONCopySwap(uint8_t *dst, uint8_t *src, unsigned int size, int swap)
>
>            for (; nwords > 0; --nwords, ++d, ++s)
>  #ifdef __powerpc__
> -               asm volatile("stwbrx %0,0,%1" : : "r" (*s), "r" (d));
> +               asm volatile("sthbrx %0,0,%1" : : "r" (*s), "r" (d));
>  #else
> -               *d = ((*s >> 24) & 0xff) | ((*s >> 8) & 0xff00)
> -                       | ((*s & 0xff00) << 8) | ((*s & 0xff) << 24);
> +               *d = (*s >> 8) | (*s << 8);
>  #endif
>            return;
>        }
> --
> 1.7.10
>
> _______________________________________________
> xorg-driver-ati mailing list
> xorg-driver-ati at lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-driver-ati


More information about the xorg-driver-ati mailing list