Soft Float for PC386

Angelo Fraietta angelo at hunterlink.net.au
Tue Feb 27 07:38:13 UTC 2001


The computer no longer re-boots when running two tasks with  the -mno-fp-ret-in-387 flags.
However, there are still co-processor commands occuring. This is where the exception occurs:


with CPU_CFLAGS =-msoft-float -mno-fp-ret-in-387

  10ba89: 5e                    pop    %esi
  10ba8a: 5f                    pop    %edi
  10ba8b: dd 45 f0              fldl   0xfffffff0(%ebp)
  10ba8e: c9                    leave


Ralf Corsepius wrote:

> Angelo Fraietta wrote:
> >
> > If I build the pc386 with both the -mno-fp-ret-in-387 and the -msoft-float flags
> > the machine re-boots if you try to create a task. Eg, if you try to run the
> > ticker sample, the machine re-boots.  If you only use the -msoft-float and not
> > the -mno-fp-ret-in-387 flag, the tasks run OK.
> > I am mentioning this because the ts_386ex build uses both flags, and so if
> > someone tests these on a ts_386ex, they may want to try running ticker on it to
> > see if it crashes.
> >
> This doesn't surprize me, because newlib unconditionally inserts
> FPU-code into its libc, no matter which compiler options are used
> for building it. I.e. at least one cause of your problems is lurking
> in newlib.
>
> I believe to have fixed this issue, so you could consider rebuilding
> your gcc-newlib rpms, using the *.nosrc.rpm below, which contains my
> fixes.
>
> Procedure for rebuilding:
> 1) Copy gcc-2.95.2.tar.gz and newlib-1.9.0.tar.gz to
> /usr/src/redhat/SOURCES.
>
> 2) rpm -i i386-rtems-gcc-newlib-gcc2.95.2newlib1.9.0-1.nosrc.rpm
> [This will install RTEMS diffs and my patches to
> /usr/src/redhat/SOURCES]
>
> 3)
> export PATH=/opt/rtems/bin:$PATH
> rpm -bb
> /usr/src/redhat/SPECS/i386-rtems-gcc-newlib-gcc2.95.2newlib1.9.0.spec
> [Now wait a couple of hours for the built to finish. Requires 500MB
> to 1GB of free diskspace below /usr/src/redhat]
>
> 4) /usr/src/redhat/RPMS/i386 now should contain the new
> i386-rtems-*.rpms
>
> 5) Rebuild RTEMS w/ -msoft-float -mno-fp-ret-in-387.
>
> 6) Test at run-time.
>
> Hope that helps.
>
> FYI: These patches already are submitted to Joel and to the newlib
> maintainers.
>
> AFAIK, Joel already is preparing new RTEMS toolchain rpms. So if you
> can't build the toolchain yourself for some reason, it's probably
> only a matter of days until new RTEMS toolchain rpms will appear on
> OAR's site.
>
> Ralf
>
> --
> Ralf Corsepius
> Forschungsinstitut fuer Anwendungsorientierte Wissensverarbeitung
> (FAW)
> Helmholtzstr. 16, 89081 Ulm, Germany     Tel: +49/731/501-8690
> mailto:corsepiu at faw.uni-ulm.de           FAX: +49/731/501-999
> http://www.faw.uni-ulm.de
>
>   ------------------------------------------------------------------------
>                                                              Name: i386-rtems-gcc-newlib-gcc2.95.2newlib1.9.0-1.nosrc.rpm
>    i386-rtems-gcc-newlib-gcc2.95.2newlib1.9.0-1.nosrc.rpm    Type: RealPlayer(tm) as Plug-in (audio/x-pn-realaudio-plugin)
>                                                          Encoding: base64

--
Angelo Fraietta

PO Box 859
Hamilton NSW 2303

Home Page

http://users.hunterlink.net.au/~maaaf/

There are those who seek knowledge for the sake of knowledge - that is CURIOSITY
There are those who seek knowledge to be known by others - that is VANITY
There are those who seek knowledge in order to serve - that is LOVE
    Bernard of Clairvaux (1090 - 1153)





More information about the users mailing list