Problem with libpthread of uClibc

Nitin Garg nitingarg98 at gmail.com
Sat May 30 01:30:23 UTC 2009


Sorry for typo we are using gcc-4.4.0.

Sent from my iPhone

On May 29, 2009, at 4:56 PM, Umut Tezduyar <maps at tezduyar.com> wrote:

> Hi Nitin,
>
> I think both you and I are having the same problem. My question on  
> the thread is one before yours.
>
> First, I don't think you can use ldrex and strex because they will  
> not be atomic. SWP instruction swaps register value with the value  
> at memory address. Swapping values with SWP instruction is atomic  
> and can not be interrupted.
>
> __pthread_trylock defined in libpthread/linuxthreads/spinlock.h uses  
> SWP instruction.
>
> I assume Cortex-A9 has both thumb and arm instruction set and swp is  
> disabled. You are kind of lucky because Cortex-M3 we are using  
> doesn't support arm instruction set.
>
> Thumb2 instruction set has test and set instruction which can be  
> used instead of swp.
>
> On Fri, May 29, 2009 at 1:53 PM, Nitin Garg <nitingarg98 at gmail.com>  
> wrote:
> Hi,
>
> We are using ARM Cortex-A9 processor. The toolchain is gcc-4.0.0 with
> uClibc-0.9.30 and the kernel is 2.6.28.
>
> Using this toolchain when we build any application like "Hello World"
> and link it against pthread lib, the application does a segmentation
> fault when executed on target and gives "Illegal instruction" error
> message.
>
> I debugged the problem and it came out to be that "swp" instructions
> were disabled on the cortex-a9. The SWP instruction has been
> deprecated starting with the ARMv6 architecture. On newer ARMv7
> processors, this instruction is disabled by default but it can be
> enabled by bit 10 in the System Control register. We can also build
> the kernel with CONFIG_OABI_COMPAT enabled.
>
> The real problem seems to be in the linuxthreads of uClibc where "swp"
> is being used for locks.
> Shall this not be replaced with ldrex/strex for ARMv7 onwards?
>
> Regards,
> Nitin
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://lists.busybox.net/mailman/listinfo/uclibc
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/uclibc/attachments/20090529/db4545ee/attachment-0001.htm>


More information about the uClibc mailing list