* [Xenomai-help] Problem compiling 2.5.1
@ 2010-02-04 13:43 Ivan Kalatchev
2010-02-04 14:10 ` Gilles Chanteperdrix
0 siblings, 1 reply; 4+ messages in thread
From: Ivan Kalatchev @ 2010-02-04 13:43 UTC (permalink / raw)
To: Xenomai-help
[-- Attachment #1: Type: text/plain, Size: 1600 bytes --]
I have compiler error when compiling xenomai-2.5.1. Again probably because
my tool chain is outdated - gcc 3.4.4.
make[3]: Entering directory
`/mnt/drive-1/build/xenomai-2.5.1/src/skins/native'
/bin/sh ../../../libtool --tag=CC --mode=compile arm-linux-gcc
-DHAVE_CONFIG_H -I. -I../../../src/include -O2 -D_GNU_SOURCE -D_REENTRANT
-Wall -pipe -march=armv5 -D__XENO__ -D__IN_XENO__ -Wstrict-prototypes
-I../../../include -MT libnative_la-timer.lo -MD -MP -MF
.deps/libnative_la-timer.Tpo -c -o libnative_la-timer.lo `test -f 'timer.c'
|| echo './'`timer.c
libtool: compile: arm-linux-gcc -DHAVE_CONFIG_H -I. -I../../../src/include
-O2 -D_GNU_SOURCE -D_REENTRANT -Wall -pipe -march=armv5 -D__XENO__
-D__IN_XENO__ -Wstrict-prototypes -I../../../include -MT
libnative_la-timer.lo -MD -MP -MF .deps/libnative_la-timer.Tpo -c timer.c
-fPIC -DPIC -o .libs/libnative_la-timer.o
{standard input}: Assembler messages:
{standard input}:102: Error: bad instruction `lsrs sl,r7,#30'
make[3]: *** [libnative_la-timer.lo] Error 1
make[3]: Leaving directory
`/mnt/drive-1/build/xenomai-2.5.1/src/skins/native'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/mnt/drive-1/build/xenomai-2.5.1/src/skins'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/mnt/drive-1/build/xenomai-2.5.1/src'
make: *** [all-recursive] Error 1
Is there way to modify assembler code so that code would compile ?
Regards,
Ivan Kalatchev
Senior Software Developer
ESG Canada Inc.
20 Hyperion Court,
Kingston, ON, Canada
K7K 7K2
Tel: 1 613 548-8287 ext. 247
[-- Attachment #2: Type: text/html, Size: 6162 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [Xenomai-help] Problem compiling 2.5.1 2010-02-04 13:43 [Xenomai-help] Problem compiling 2.5.1 Ivan Kalatchev @ 2010-02-04 14:10 ` Gilles Chanteperdrix 2010-02-04 14:18 ` Gilles Chanteperdrix 0 siblings, 1 reply; 4+ messages in thread From: Gilles Chanteperdrix @ 2010-02-04 14:10 UTC (permalink / raw) To: Ivan Kalatchev; +Cc: Xenomai-help Ivan Kalatchev wrote: > I have compiler error when compiling xenomai-2.5.1. Again probably because > my tool chain is outdated - gcc 3.4.4. > (...) > {standard input}:102: Error: bad instruction `lsrs sl,r7,#30' > (...) > > Is there way to modify assembler code so that code would compile ? Ok. lsrs looks like a valid instruction, but s1 looks strange as a register name. The problem may be to call the variable "s", could you try to call it "sign" instead ? This way: diff --git a/include/asm-arm/arith.h b/include/asm-arm/arith.h index 9af5c5c..4ea5aae 100644 --- a/include/asm-arm/arith.h +++ b/include/asm-arm/arith.h @@ -32,6 +32,7 @@ rthal_arm_nodiv_llimd(const long long op, #include <asm-generic/xenomai/arith.h> +#if __LINUX_ARM_ARCH__ >= 4 #define rthal_arm_nodiv_ullimd_str \ "umull %[tl], %[rl], %[opl], %[fracl]\n\t" \ "umull %[rm], %[rh], %[oph], %[frach]\n\t" \ @@ -49,8 +50,6 @@ rthal_arm_nodiv_llimd(const long long op, "umlal %[rm], %[rh], %[opl], %[integ]\n\t" \ "mla %[rh], %[oph], %[integ], %[rh]\n\t" - -#if __LINUX_ARM_ARCH__ >= 4 static inline __attribute__((__const__)) unsigned long long rthal_arm_nodiv_ullimd(const unsigned long long op, const unsigned long long frac, @@ -101,19 +100,19 @@ rthal_arm_nodiv_llimd(const long long op, __rthal_u64tou32(op, oph, opl); __rthal_u64tou32(frac, frach, fracl); - __asm__ ("lsrs %[s], %[oph], #30\n\t" + __asm__ ("lsrs %[sign], %[oph], #30\n\t" "beq 1f\n\t" "rsbs %[opl], %[opl], #0\n\t" "rsc %[oph], %[oph], #0\n" "1:\t" rthal_arm_nodiv_ullimd_str - "teq %[s], #0\n\t" + "teq %[sign], #0\n\t" "beq 2f\n\t" "rsbs %[rm], %[rm], #0\n\t" "rsc %[rh], %[rh], #0\n" "2:\t" : [rl]"=r"(rl), [rm]"=r"(rm), [rh]"=r"(rh), - [tl]"=r"(tl), [th]"=r"(th), [s]"=r"(s) + [tl]"=r"(tl), [th]"=r"(th), [sign]"=r"(s) : [opl]"r"(opl), [oph]"r"(oph), [fracl]"r"(fracl), [frach]"r"(frach), [integ]"r"(integ) If it does not work, tell me and we will disable this implementation of rthal_nodiv_llimd for gcc versions < 4. -- Gilles. ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Xenomai-help] Problem compiling 2.5.1 2010-02-04 14:10 ` Gilles Chanteperdrix @ 2010-02-04 14:18 ` Gilles Chanteperdrix 2010-02-04 14:49 ` Ivan Kalatchev 0 siblings, 1 reply; 4+ messages in thread From: Gilles Chanteperdrix @ 2010-02-04 14:18 UTC (permalink / raw) To: Ivan Kalatchev; +Cc: Xenomai-help Gilles Chanteperdrix wrote: > Ivan Kalatchev wrote: >> I have compiler error when compiling xenomai-2.5.1. Again probably because >> my tool chain is outdated - gcc 3.4.4. >> (...) >> {standard input}:102: Error: bad instruction `lsrs sl,r7,#30' >> (...) >> >> Is there way to modify assembler code so that code would compile ? > > Ok. lsrs looks like a valid instruction, but s1 looks strange as a It is "sl", not "s1", and sl is a valid name for r10. The problem is indeed lsrs, it is in fact a synonym for the equivalent mov with shifted second operand in older assembly sources. So, please try the following patch: diff --git a/include/asm-arm/arith.h b/include/asm-arm/arith.h index 9af5c5c..e86975c 100644 --- a/include/asm-arm/arith.h +++ b/include/asm-arm/arith.h @@ -32,6 +32,7 @@ rthal_arm_nodiv_llimd(const long long op, #include <asm-generic/xenomai/arith.h> +#if __LINUX_ARM_ARCH__ >= 4 #define rthal_arm_nodiv_ullimd_str \ "umull %[tl], %[rl], %[opl], %[fracl]\n\t" \ "umull %[rm], %[rh], %[oph], %[frach]\n\t" \ @@ -49,8 +50,6 @@ rthal_arm_nodiv_llimd(const long long op, "umlal %[rm], %[rh], %[opl], %[integ]\n\t" \ "mla %[rh], %[oph], %[integ], %[rh]\n\t" - -#if __LINUX_ARM_ARCH__ >= 4 static inline __attribute__((__const__)) unsigned long long rthal_arm_nodiv_ullimd(const unsigned long long op, const unsigned long long frac, @@ -101,7 +100,7 @@ rthal_arm_nodiv_llimd(const long long op, __rthal_u64tou32(op, oph, opl); __rthal_u64tou32(frac, frach, fracl); - __asm__ ("lsrs %[s], %[oph], #30\n\t" + __asm__ ("movs %[s], %[oph], lsr #30\n\t" "beq 1f\n\t" "rsbs %[opl], %[opl], #0\n\t" "rsc %[oph], %[oph], #0\n" -- Gilles. ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Xenomai-help] Problem compiling 2.5.1 2010-02-04 14:18 ` Gilles Chanteperdrix @ 2010-02-04 14:49 ` Ivan Kalatchev 0 siblings, 0 replies; 4+ messages in thread From: Ivan Kalatchev @ 2010-02-04 14:49 UTC (permalink / raw) To: 'Gilles Chanteperdrix'; +Cc: Xenomai-help Thanks Gilles, This modification worked. I have xenomai compiled fine now Regards, Ivan > -----Original Message----- > From: Gilles Chanteperdrix [mailto:gilles.chanteperdrix@xenomai.org] > Sent: February-04-10 9:19 AM > To: Ivan Kalatchev > Cc: Xenomai-help@domain.hid > Subject: Re: [Xenomai-help] Problem compiling 2.5.1 > > Gilles Chanteperdrix wrote: > > Ivan Kalatchev wrote: > >> I have compiler error when compiling xenomai-2.5.1. Again probably > because > >> my tool chain is outdated - gcc 3.4.4. > >> (...) > >> {standard input}:102: Error: bad instruction `lsrs sl,r7,#30' > >> (...) > >> > >> Is there way to modify assembler code so that code would compile ? > > > > Ok. lsrs looks like a valid instruction, but s1 looks strange as a > > It is "sl", not "s1", and sl is a valid name for r10. The problem is > indeed lsrs, it is in fact a synonym for the equivalent mov with > shifted > second operand in older assembly sources. So, please try the following > patch: > > diff --git a/include/asm-arm/arith.h b/include/asm-arm/arith.h > index 9af5c5c..e86975c 100644 > --- a/include/asm-arm/arith.h > +++ b/include/asm-arm/arith.h > @@ -32,6 +32,7 @@ rthal_arm_nodiv_llimd(const long long op, > > #include <asm-generic/xenomai/arith.h> > > +#if __LINUX_ARM_ARCH__ >= 4 > #define rthal_arm_nodiv_ullimd_str \ > "umull %[tl], %[rl], %[opl], %[fracl]\n\t" \ > "umull %[rm], %[rh], %[oph], %[frach]\n\t" \ > @@ -49,8 +50,6 @@ rthal_arm_nodiv_llimd(const long long op, > "umlal %[rm], %[rh], %[opl], %[integ]\n\t" \ > "mla %[rh], %[oph], %[integ], %[rh]\n\t" > > - > -#if __LINUX_ARM_ARCH__ >= 4 > static inline __attribute__((__const__)) unsigned long long > rthal_arm_nodiv_ullimd(const unsigned long long op, > const unsigned long long frac, > @@ -101,7 +100,7 @@ rthal_arm_nodiv_llimd(const long long op, > __rthal_u64tou32(op, oph, opl); > __rthal_u64tou32(frac, frach, fracl); > > - __asm__ ("lsrs %[s], %[oph], #30\n\t" > + __asm__ ("movs %[s], %[oph], lsr #30\n\t" > "beq 1f\n\t" > "rsbs %[opl], %[opl], #0\n\t" > "rsc %[oph], %[oph], #0\n" > > > -- > Gilles. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-02-04 14:49 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-02-04 13:43 [Xenomai-help] Problem compiling 2.5.1 Ivan Kalatchev 2010-02-04 14:10 ` Gilles Chanteperdrix 2010-02-04 14:18 ` Gilles Chanteperdrix 2010-02-04 14:49 ` Ivan Kalatchev
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.