All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-core] [PATCH - ARM] ldrex/strex syntax errors with recent compilers
@ 2007-03-15 13:53 Stelian Pop
  2007-03-15 13:57 ` [Adeos-main] " Stelian Pop
  2007-03-15 16:02 ` [Xenomai-core] " Stelian Pop
  0 siblings, 2 replies; 4+ messages in thread
From: Stelian Pop @ 2007-03-15 13:53 UTC (permalink / raw)
  To: xenomai

Hi,

Trying to build a xenomai-enabled kernel using a recent compiler (tried
with gcc version 4.1.1 (CodeSourcery ARM Sourcery G++ 2006q3-26), but
all gcc > 4.1 might be affected) results in the following:

  CC      kernel/xenomai/nucleus/shadow.o
/tmp/cc0XooxH.s: Assembler messages:
/tmp/cc0XooxH.s:1464: Error: instruction does not accept this addressing mode -- `ldrex r1,r2'
/tmp/cc0XooxH.s:1466: Error: instruction does not accept this addressing mode -- `strex r3,r1,r2'

Older gcc (like gcc version 4.0.0 (DENX ELDK 4.1 4.0.0)) have no problem with this.

It appears that the patch below fixes the compile error. I also verified 
that gcc-4.0.0 generates identical code using both forms.

Index: include/asm-arm/atomic.h
===================================================================
--- include/asm-arm/atomic.h	(révision 2299)
+++ include/asm-arm/atomic.h	(copie de travail)
@@ -40,9 +40,9 @@
     unsigned long tmp, tmp2;
 
     __asm__ __volatile__("@ atomic_set_mask\n"
-"1: ldrex   %0, %2\n"
+"1: ldrex   %0, [%2]\n"
 "   orr     %0, %0, %3\n"
-"   strex   %1, %0, %2\n"
+"   strex   %1, %0, [%2]\n"
 "   teq     %1, #0\n"
 "   bne     1b"
     : "=&r" (tmp), "=&r" (tmp2)
@@ -170,9 +170,9 @@
     unsigned long tmp, tmp2;
 
     __asm__ __volatile__("@ atomic_set_mask\n"
-"1: ldrex   %0, %2\n"
+"1: ldrex   %0, [%2]\n"
 "   orr     %0, %0, %3\n"
-"   strex   %1, %0, %2\n"
+"   strex   %1, %0, [%2]\n"
 "   teq     %1, #0\n"
 "   bne     1b"
     : "=&r" (tmp), "=&r" (tmp2)
@@ -185,9 +185,9 @@
     unsigned long tmp, tmp2;
 
     __asm__ __volatile__("@ atomic_clear_mask\n"
-"1: ldrex   %0, %2\n"
+"1: ldrex   %0, [%2]\n"
 "   bic     %0, %0, %3\n"
-"   strex   %1, %0, %2\n"
+"   strex   %1, %0, [%2]\n"
 "   teq     %1, #0\n"
 "   bne     1b"
     : "=&r" (tmp), "=&r" (tmp2)

-- 
Stelian Pop <stelian.pop@domain.hid>



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2007-03-18 16:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-03-15 13:53 [Xenomai-core] [PATCH - ARM] ldrex/strex syntax errors with recent compilers Stelian Pop
2007-03-15 13:57 ` [Adeos-main] " Stelian Pop
2007-03-18 16:18   ` Gilles Chanteperdrix
2007-03-15 16:02 ` [Xenomai-core] " Stelian Pop

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.