From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <451A4ED8.7040708@domain.hid> Date: Wed, 27 Sep 2006 12:13:44 +0200 From: Wolfgang Grandegger MIME-Version: 1.0 Subject: Re: [Xenomai-core] Problem with periodic timer on PPC40x solved References: <200609262056.30673.niklaus.giger@domain.hid> <45198C45.6080904@domain.hid> <200609262326.04533.niklaus.giger@domain.hid> In-Reply-To: <200609262326.04533.niklaus.giger@domain.hid> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: "Xenomai life and development \(bug reports, patches, discussions\)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: niklaus.giger@domain.hid Cc: xenomai@xenomai.org Niklaus Giger wrote: > Am Dienstag, 26. September 2006 22:23 schrieb Wolfgang Grandegger: >> Niklaus Giger wrote: >>> Am Dienstag, 26. September 2006 18:28 schrieb Wolfgang Grandegger: >>>> Philippe Gerum wrote: >>>>> On Tue, 2006-09-26 at 16:56 +0200, gilles.chanteperdrix wrote: >>>> OK, but in general, soft-float emulation should be used on systems >>>> without FPU and this is even more important for real-time. This is a >>>> tool chain issue. Niklaus, what tool chain are you using? >>> In my .config I have >>> MATH_EMULATION=y >> You seem to need that because your compiler generates code with hard FP >> instructions. You could check this with: >> >> $ ppc-linux-objdump -d prog|egrep ":\s*[e-f]" > This does not return any match on my system. Oops, then your compiler seems _not_ to create hard FP instruction, otherwise you would get: ppc_82xx-objdump -d latency|egrep ":\s*[e-f]" latency: file format elf32-powerpc 100036ac: fc 21 f8 28 fsub f1,f1,f31 100036b4: fc 42 f8 28 fsub f2,f2,f31 100036c4: fc 63 f8 28 fsub f3,f3,f31 100036cc: fc 21 f0 24 fdiv f1,f1,f30 100036dc: fc 84 f8 28 fsub f4,f4,f31 ... > But looking at the disassembly of the latency program I have code like: > 100081bc <_restfpr_28_x>: > 100081bc: cb 8b ff e0 lfd f28,-32(r11) > or > 1000798c <__floatsidf>: > 1000798c: 7c 08 02 a6 mflr r0 > 10007990: 2f 83 00 00 cmpwi cr7,r3,0 > 10007994: 94 21 ff c0 stwu r1,-64(r1) > 10007998: 90 01 00 44 stw r0,68(r1) > 1000799c: 54 60 0f fe rlwinm r0,r3,1,31,31 > 100079a0: 90 01 00 14 stw r0,20(r1) > 100079a4: 40 9e 00 24 bne- cr7,100079c8 <__floatsidf+0x3c> That's from soft float emulation. >>> The toolchain is gcc-3.4.4-glibc-2.3.5/powerpc-405-linux-gnu built using >>> Dan Kegel crosstool (Version 0.42 if I remember exactly). >>> >>> Shall I switch to another one? Maybe (likely) there is nothing wrong with your tool chain. >> The ELDK from DENX uses FP soft-emulation for 4xx (http://www.denx.de). >> Choose v3.1.1 for Linux 2.4 and v4 for Linux 2.6. > > I am breathing only PowerPC code on my Mac PowerBook (running Debian) and > never managed to installed ELDK on it. (And even Detlev as a Debian developer > couldn't recommend a simple way.) I remember Detlev's pain and frustration. > But I assume that I specifying GLIBC_EXTRA_CONFIG="--without-fp" in the > powerpc-405.dat should be enough to make Dan Kegels crosstool emit Soft-FPU > emulation. See above. > I will try to run the tests at work where I have installed ELDK 4.0, but not > yet a fully working environment. Therefore it may take some time to report a > result back. I'm now a bit puzzled why a FP exception occurs. What happens if you disable MATH_EMULATION in your kernel (that's what I normally have). It will try the latency test on my Walnut-Board with CONFIG_XENO_OPT_DEBUG asap. Wolfgang.