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 <[EMAIL PROTECTED]>


_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main

Reply via email to