Jeremy Brown wrote:
> On Mon, May 17, 2010 at 11:25 AM, Gilles Chanteperdrix
> <[email protected]> wrote:
>> Jeremy Brown wrote:
>>> {standard input}: Assembler messages:
>>> {standard input}:140: Error: selected processor does not support `rsc
>>> r7,r7,#0'
>>> {standard input}:159: Error: selected processor does not support `rsc
>>> r1,r1,#0'
>>> make: *** [libxenomai_la-timeconv.lo] Error 1
>> Ok. Could you try and compile the following piece of code with your
>> toolchain and show me the disassembly ?
>>
>> long long foo(long long x)
>> {
>> return -x;
>> }
>>
>> --
>> Gilles.
>
> Thanks for the quick reply! Here's the complete contents of foo.s:
>
> .syntax unified
That is the key: I presume this means your compiler generates syntax
which works both with ARM and thumb2, and rsc does not exist with
thumb2. Note that from a performance point of view, this may not be a win.
So be it. Try the following patch:
diff --git a/include/asm-arm/arith.h b/include/asm-arm/arith.h
index e86975c..72c0ab7 100644
--- a/include/asm-arm/arith.h
+++ b/include/asm-arm/arith.h
@@ -103,13 +103,13 @@ rthal_arm_nodiv_llimd(const long long op,
__asm__ ("movs %[s], %[oph], lsr #30\n\t"
"beq 1f\n\t"
"rsbs %[opl], %[opl], #0\n\t"
- "rsc %[oph], %[oph], #0\n"
+ "sbc %[oph], %[oph], %[oph], lsl #1\n"
"1:\t"
rthal_arm_nodiv_ullimd_str
"teq %[s], #0\n\t"
"beq 2f\n\t"
"rsbs %[rm], %[rm], #0\n\t"
- "rsc %[rh], %[rh], #0\n"
+ "sbc %[rh], %[rh], %[rh], lsl #1\n"
"2:\t"
: [rl]"=r"(rl), [rm]"=r"(rm), [rh]"=r"(rh),
[tl]"=r"(tl), [th]"=r"(th), [s]"=r"(s)
--
Gilles.
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help