[oe] mono build error with swp instruction

Koen Kooi k.kooi at student.utwente.nl
Wed Jan 7 14:44:45 UTC 2009


On 07-01-09 15:35, Cliff Brake wrote:
> I ran into an interesting build error this morning that might be worth
> documenting ...

Already known:

http://cgit.openembedded.net/cgit.cgi?url=openembedded/commit/&id=e9404d66bec8f92a9e05cda5251078460bdc9ed2

>
> When building mono with the latest toolchains built with OE, I get:
>
> /tmp/ccYsXwlg.s:3067: Error: selected processor does not support `swp
> r2,r0,[r4]'
> /tmp/ccYsXwlg.s:3161: Error: selected processor does not support `swp
> r2,r0,[r4]'
> /tmp/ccYsXwlg.s:3272: Error: selected processor does not support `swp
> r3,r4,[r5]'
>
> In the libgc code, there is the following:
>
> #    ifdef ARM32
>          inline static int GC_test_and_set(volatile unsigned int *addr) {
>            int oldval;
>            /* SWP on ARM is very similar to XCHG on x86.  Doesn't lock the
>             * bus because there are no SMP ARM machines.  If/when there are,
>             * this code will likely need to be updated. */
>            /* See linuxthreads/sysdeps/arm/pt-machine.h in glibc-2.1 */
>            __asm__ __volatile__("swp %0, %1, [%2]"
>        		  	     : "=&r"(oldval)
>        			     : "r"(1), "r"(addr)
> 			     : "memory");
>            return oldval;
>          }
>
> The solution was to set ARM_INSTRUCTION_SET = "arm" in the mono recipe.
>
> Thanks,
> Cliff
>






More information about the Openembedded-devel mailing list