* [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
* [Adeos-main] [PATCH - ARM] ldrex/strex syntax errors with recent compilers
2007-03-15 13:53 [Xenomai-core] [PATCH - ARM] ldrex/strex syntax errors with recent compilers Stelian Pop
@ 2007-03-15 13:57 ` Stelian Pop
2007-03-18 16:18 ` Gilles Chanteperdrix
2007-03-15 16:02 ` [Xenomai-core] " Stelian Pop
1 sibling, 1 reply; 4+ messages in thread
From: Stelian Pop @ 2007-03-15 13:57 UTC (permalink / raw)
To: adeos-main
Le jeudi 15 mars 2007 à 14:53 +0100, Stelian Pop a écrit :
[on xenomai-core ml]
> 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.
The same issue is present in the mainline kernel too. I'll report this
on LKML but meanwhile the patch below could be included in the Adeos
patch as well...
Thanks.
Stelian.
diff --git a/include/asm-arm/atomic.h b/include/asm-arm/atomic.h
index c86c3d0..5dda903 100644
--- a/include/asm-arm/atomic.h
+++ b/include/asm-arm/atomic.h
@@ -103,9 +103,9 @@ static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
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@domain.hid>
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Xenomai-core] [PATCH - ARM] ldrex/strex syntax errors with recent compilers
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-15 16:02 ` Stelian Pop
1 sibling, 0 replies; 4+ messages in thread
From: Stelian Pop @ 2007-03-15 16:02 UTC (permalink / raw)
To: xenomai
Le jeudi 15 mars 2007 à 14:53 +0100, Stelian Pop a écrit :
> It appears that the patch below fixes the compile error. I also verified
> that gcc-4.0.0 generates identical code using both forms.
FWIW, the same fix at a different place in the mainline kernel has been
acked by Catalin Marinas from ARM.
Ah, and the patch I submitted was against the 2.3.x branch although it
will probably apply more or less cleanly on trunk.
Thanks,
--
Stelian Pop <stelian.pop@domain.hid>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Adeos-main] [PATCH - ARM] ldrex/strex syntax errors with recent compilers
2007-03-15 13:57 ` [Adeos-main] " Stelian Pop
@ 2007-03-18 16:18 ` Gilles Chanteperdrix
0 siblings, 0 replies; 4+ messages in thread
From: Gilles Chanteperdrix @ 2007-03-18 16:18 UTC (permalink / raw)
To: Stelian Pop; +Cc: adeos-main
Stelian Pop wrote:
> Le jeudi 15 mars 2007 ~ 14:53 +0100, Stelian Pop a ~crit :
>
> [on xenomai-core ml]
> > 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.
>
> The same issue is present in the mainline kernel too. I'll report this
> on LKML but meanwhile the patch below could be included in the Adeos
> patch as well...
Applied all your patches. Thanks.
--
Gilles Chanteperdrix.
^ 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.