Floating Point problems with Linux on the EST SBC8260

Gessner, Matt mattg at aiinet.com
Fri May 26 00:44:49 EST 2000


All the docs I have from Moto say that the FPU is disabled.
My ESTSBC8260 has CPU's with the following info on them:

	XPC8260ZU166A
	166/133/66 MHZ
	1K22A CRECH0005 HKG

and

	XPC8260ZU200A
	200/133/66 MHZ
	1K22A CRETK0010 HKG

Are these FPU capable?

Thx

> -----Original Message-----
> From: Neil Russell [mailto:caret at c-side.com]
> Sent: Wednesday, May 24, 2000 4:44 PM
> To: diekema_jon
> Cc: all at cideas.com; linuxppc-embedded at lists.linuxppc.org
> Subject: Re: Floating Point problems with Linux on the EST SBC8260
>
>
>
> On Wed, May 24, 2000 at 03:47:10PM -0400, diekema_jon wrote:
> >
> > Floating Point problems with Linux on the EST SBC8260:
> >
> >
> > Questions:
> >
> > - What is the state of floating point support with Linux on the
> >   MPC8260?
> >
> > - Does anybody have hard-float applications running on the MPC8260?
> >
> > - I am looking for a floating point validation test suite written in
> >   C.  The test suite should start with the fundamentals and work out
> >   from there.
> >
> >   Does anybody have any leads?  This is what I have found so far:
> >
> > 1) TestFloat-2a
> >
> > Package Overview for TestFloat Release 2a
> >
> > John R. Hauser
> > 1998 December 16
> >
> >
> > TestFloat is a program for testing that a floating-point
> implementation
> > conforms to the IEC/IEEE Standard for Binary Floating-Point
> Arithmetic.
> > TestFloat is distributed in the form of C source code.  The
> TestFloat
> > package actually provides two related programs:
> >
> > -- The `testfloat' program tests a system's floating-point
> for conformance
> >    to the IEC/IEEE Standard.  This program uses the
> SoftFloat software
> >    floating-point implementation as a basis for comparison.
> >
> > -- The `testsoftfloat' program tests SoftFloat itself for
> conformance to
> >    the IEC/IEEE Standard.  These tests are performed by
> comparing against a
> >    separate, slower software floating-point that is
> included in the TestFloat
> >    package.
> >
> > 2) UCBTEST
> >
> >      UCBTEST is a suite of programs for testing certain
> difficult cases of
> > IEEE 754 floating-point arithmetic.  Some of the difficult
> test cases are
> > obtained from number-theoretic algorithms developed by
> Turing Award winner
> > Prof. W. Kahan, Department of Electrical Engineering and
> Computer Science,
> > University of California, Berkeley, as part of ongoing
> research into test
> > methods for computer arithmetic.
> >
> >
> > Either TestFloat or UCBTEST will require some porting effort to run
> > on the PPC.  I would like to work smarter rather than
> harder. I can't
> > even get the rights answers from printf, *, or /.
> >
> >
> > Environment:
> >
> > Platform: EST SBC8260 w/ MPC8260 Rev A.1 running at 166 Mhz
> > Ethernet: 10 Mbs (SCC)
> > Linux kernel: 2.3.99-pre9
> > root filesystem (NFS mounted): MontaVista Hard Hat Linux version 1.1
> > Toolset: Denx Software CDK recompiled with gcc configured for
> >          --with-cpu=603e and hard-float (i.e. no --nfp)
> >
> >
> > Application:
> >
> > Note: The executable was statically linked to pull in the hard-float
> >       C runtime libraries.
> >
> > dell 403} cat z.c
> > #include "stdio.h"
> >
> > double x, y, z;
> >
> > main ()
> >
> > {
> >   x = 1234.33;
> >   printf("x %lf (1234.33) 0x%08lX\n", x , x);
> >
> >   y = 4444.2;
> >   printf("y %lf (4444.2)  0x%08lX\n", y , y);
> >
> >   z = x * y;
> >   printf("z = x * y, %lf %lf %lf\n", x , y, z);
> >
> >   z = x / y;
> >   printf("z = x / y, %lf %lf %lf\n", x , y, z);
> > }
> >
> > dell 404} cat z.s
> > 	.file	"z.c"
> > gcc2_compiled.:
> > 	.section	".rodata"
> > 	.align 2
> > .LC1:
> > 	.string	"x %lf (1234.33) 0x%08lX\n"
> > 	.align 2
> > .LC3:
> > 	.string	"y %lf (4444.2)  0x%08lX\n"
> > 	.align 2
> > .LC4:
> > 	.string	"z = x * y, %lf %lf %lf\n"
> > 	.align 2
> > .LC5:
> > 	.string	"z = x / y, %lf %lf %lf\n"
> > 	.align 3
> > .LC0:
> > 	.long 0x40934951
> > 	.long 0xeb851eb8
> > 	.align 3
> > .LC2:
> > 	.long 0x40b15c33
> > 	.long 0x33333333
> > 	.section	".text"
> > 	.align 2
> > 	.globl main
> > 	.type	 main, at function
> > main:
> > 	stwu 1,-16(1)
> > 	mflr 0
> > 	stw 31,12(1)
> > 	stw 0,20(1)
> > 	mr 31,1
> > 	lis 9,x at ha
> > 	lis 11,.LC0 at ha
> > 	lfd 0,.LC0 at l(11)
> > 	stfd 0,x at l(9)
> > 	lis 9,x at ha
> > 	lis 11,x at ha
> > 	lis 10,.LC1 at ha
> > 	la 3,.LC1 at l(10)
> > 	lfd 1,x at l(9)
> > 	lfd 2,x at l(11)
> > 	creqv 6,6,6
> > 	bl printf
> > 	lis 9,y at ha
> > 	lis 11,.LC2 at ha
> > 	lfd 0,.LC2 at l(11)
> > 	stfd 0,y at l(9)
> > 	lis 9,y at ha
> > 	lis 11,y at ha
> > 	lis 10,.LC3 at ha
> > 	la 3,.LC3 at l(10)
> > 	lfd 1,y at l(9)
> > 	lfd 2,y at l(11)
> > 	creqv 6,6,6
> > 	bl printf
> > 	lis 9,z at ha
> > 	lis 11,x at ha
> > 	lis 10,y at ha
> > 	lfd 0,x at l(11)
> > 	lfd 13,y at l(10)
> > 	fmul 0,0,13
> > 	stfd 0,z at l(9)
> > 	lis 9,x at ha
> > 	lis 11,y at ha
> > 	lis 10,z at ha
> > 	lis 8,.LC4 at ha
> > 	la 3,.LC4 at l(8)
> > 	lfd 1,x at l(9)
> > 	lfd 2,y at l(11)
> > 	lfd 3,z at l(10)
> > 	creqv 6,6,6
> > 	bl printf
> > 	lis 9,z at ha
> > 	lis 11,x at ha
> > 	lis 10,y at ha
> > 	lfd 0,x at l(11)
> > 	lfd 13,y at l(10)
> > 	fdiv 0,0,13
> > 	stfd 0,z at l(9)
> > 	lis 9,x at ha
> > 	lis 11,y at ha
> > 	lis 10,z at ha
> > 	lis 8,.LC5 at ha
> > 	la 3,.LC5 at l(8)
> > 	lfd 1,x at l(9)
> > 	lfd 2,y at l(11)
> > 	lfd 3,z at l(10)
> > 	creqv 6,6,6
> > 	bl printf
> > .L2:
> > 	lwz 11,0(1)
> > 	lwz 0,4(11)
> > 	mtlr 0
> > 	lwz 31,-4(11)
> > 	mr 1,11
> > 	blr
> > .Lfe1:
> > 	.size	 main,.Lfe1-main
> > 	.comm	x,8,8
> > 	.comm	y,8,8
> > 	.comm	z,8,8
> > 	.ident	"GCC: (GNU) 2.95.2 19991024 (release)"
> >
> >
> > On the target:
> >
> > > ./a.out
> > x nan (1234.33) 0x00000000
> > y 0.000000 (4444.2)  0x1003FBCC
> > z = x * y, 0.000000 0.000000 0.000000
> > z = x / y, 0.000000 0.000000 0.000000
> >
> >
> > The expected results should look something like:
> >
> > dell 420} ./a.out
> > x 1234.330000 (1234.33) 0xEB851EB8
> > y 4444.200000 (4444.2)  0x33333333
> > z = x * y, 1234.330000 4444.200000 5485609.386000
> > z = x / y, 1234.330000 4444.200000 0.277740
> >
> > We aren't even close to reasonable answers yet.
> >
>
> --
> Neil Russell <caret at c-side.com>
>

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-embedded mailing list