All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philip Balister <philip@balister.org>
To: openembedded-devel@lists.openembedded.org
Subject: Re: mono build error with swp instruction
Date: Wed, 07 Jan 2009 11:21:52 -0500	[thread overview]
Message-ID: <4964D6A0.5070402@balister.org> (raw)
In-Reply-To: <f96d234e0901070635q6c29b1d3xb3a00be2147e2c07@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1378 bytes --]

Cliff Brake wrote:
> I ran into an interesting build error this morning that might be worth
> documenting ...
> 
> 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.

On armv6 and higher, you want to use LDREX and STREX instead of SWP. 
This makes your code SMP ready (and a few other benefits I suspect) :)

Philip


> 
> Thanks,
> Cliff
> 

[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/x-pkcs7-signature, Size: 3303 bytes --]

      parent reply	other threads:[~2009-01-07 16:27 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-07 14:35 mono build error with swp instruction Cliff Brake
2009-01-07 14:44 ` Koen Kooi
2009-01-07 16:21 ` Philip Balister [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4964D6A0.5070402@balister.org \
    --to=philip@balister.org \
    --cc=openembedded-devel@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.