This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: Maverick (EP9312) floating point issues
- From: Nick Clifton <nickc at redhat dot com>
- To: Wouter van Heyst <wouter at vidicode dot nl>
- Cc: binutils at sources dot redhat dot com
- Date: Tue, 21 Oct 2003 15:10:22 +0100
- Subject: Re: Maverick (EP9312) floating point issues
- References: <20031021104707.GA6987@larstiq.dyndns.org>
Hi Wouter,
> --- binutils-2.14.90.0.5.old/bfd/elf32-arm.h 2003-07-23 17:08:08.000000000 +0200
> +++ binutils-2.14.90.0.5/bfd/elf32-arm.h 2003-10-21 11:28:58.000000000 +0200
> @@ -2366 +2366 @@
> -ERROR: %s uses Maverick instructions, whereas %s does not"),
> +ERROR: %s does not use Maverick instructions, whereas %s does"),
> --- binutils-2.14.90.0.5.old/gas/config/tc-arm.c 2003-07-23 17:08:10.000000000 +0200
> +++ binutils-2.14.90.0.5/gas/config/tc-arm.c 2003-10-21 12:39:03.000000000 +0200
> @@ -772 +772 @@
> - {mav_mvdx_table, 15, NULL, N_("Maverick MVFX register expected")},
> + {mav_mvdx_table, 15, NULL, N_("Maverick MVDX register expected")},
Thanks for these two patches - I have applied them to the source code
in the CVS repository.
> Now, to get rid of the merging problem I will probably rebuild my entire
> toolchain specifically for the ep9312. Apparently you get software
> floating point if you select a Maverick cpu, in gas/config/tc-arm.c
> there is this piece of code:
>
> #if defined OBJ_ELF
> if (cpu_variant & ARM_CEXT_MAVERICK)
> {
> flags ^= F_SOFT_FLOAT;
> flags |= EF_ARM_MAVERICK_FLOAT;
> }
> #endif
>
> As far as I understand it, the ep9312 accepts regular and fpu
> instructions in the same stream, and dispatches the floating point ops
> to the crunch core. Could someone tell me how software fp comes into the equation?
It does not. This is a bug. The above code was meant to be:
flags &= ~F_SOFT_FLOAT;
I have also applied this patch to the sources.
Cheers
Nick