On Mon,  7 Apr 2014 14:57:10 +0300
Pekka Paalanen <ppaala...@gmail.com> wrote:

> From: Pekka Paalanen <pekka.paala...@collabora.co.uk>
> 
> The two ARM headers contained open-coded copies of pixman_asm_function,
> replace these.
> 
> Since it seems customary that ARM headers do not use CPP include guards,
> rely on the .S files to #include "pixman-arm-asm.h" first. They all
> already do.
> ---
>  pixman/pixman-arm-neon-asm.h | 20 ++++----------------
>  pixman/pixman-arm-simd-asm.h |  9 +--------
>  2 files changed, 5 insertions(+), 24 deletions(-)
> 
> diff --git a/pixman/pixman-arm-neon-asm.h b/pixman/pixman-arm-neon-asm.h
> index d0d92d7..bdcf6a9 100644
> --- a/pixman/pixman-arm-neon-asm.h
> +++ b/pixman/pixman-arm-neon-asm.h
> @@ -631,14 +631,8 @@ local skip1
>                                     src_basereg_   = 0, \
>                                     mask_basereg_  = 24
>  
> -    .func fname
> -    .global fname
> -    /* For ELF format also set function visibility to hidden */
> -#ifdef __ELF__
> -    .hidden fname
> -    .type fname, %function
> -#endif
> -fname:
> +    pixman_asm_function fname
> +
>      push        {r4-r12, lr}        /* save all registers */
>  
>  /*
> @@ -945,14 +939,8 @@ fname:
>                                                     src_basereg_   = 0, \
>                                                     mask_basereg_  = 24
>  
> -    .func fname
> -    .global fname
> -    /* For ELF format also set function visibility to hidden */
> -#ifdef __ELF__
> -    .hidden fname
> -    .type fname, %function
> -#endif
> -fname:
> +    pixman_asm_function fname
> +
>      .set PREFETCH_TYPE_CURRENT, PREFETCH_TYPE_NONE
>  /*
>   * Make some macro arguments globally visible and accessible
> diff --git a/pixman/pixman-arm-simd-asm.h b/pixman/pixman-arm-simd-asm.h
> index 24b1ad2..1b2c592 100644
> --- a/pixman/pixman-arm-simd-asm.h
> +++ b/pixman/pixman-arm-simd-asm.h
> @@ -561,13 +561,7 @@
>                                     process_tail, \
>                                     process_inner_loop
>  
> - .func fname
> - .global fname
> - /* For ELF format also set function visibility to hidden */
> -#ifdef __ELF__
> - .hidden fname
> - .type fname, %function
> -#endif
> +    pixman_asm_function fname
>  
>  /*
>   * Make some macro arguments globally visible and accessible
> @@ -679,7 +673,6 @@
>      SCRATCH     .req    r12
>      ORIG_W      .req    r14 /* width (pixels) */
>  
> -fname:
>          push    {r4-r11, lr}        /* save all registers */
>  
>          subs    Y, Y, #1

Sorry, there is something wrong with this one. I asked a friend to
compile-test it on an ARM box with NEON, and it worked fine, but when I
compile on RPi, I get:

  CPPAS  pixman-arm-simd-asm.lo
pixman-arm-simd-asm.h: Assembler messages:
pixman-arm-simd-asm.h:563: Error: bad instruction `pixman_asm_function 
pixman_composite_src_8888_8888_asm_armv6'
pixman-arm-simd-asm.h:660: Error: missing .func

And I've no idea what it's about. Maybe the assembler cannot expand
nested macros?

So, ignore this patch for the moment.


Thanks,
pq
_______________________________________________
Pixman mailing list
Pixman@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pixman

Reply via email to