Linux MIPS Architecture development
 help / color / mirror / Atom feed
From: Jun Sun <jsun@mvista.com>
To: Andreas Jaeger <aj@suse.de>
Cc: "Kevin D. Kissell" <kevink@mips.com>,
	Florian Lohoff <flo@rfc822.org>,
	linux-mips@oss.sgi.com
Subject: Re: [RESUME] fpu emulator
Date: Fri, 09 Feb 2001 11:30:57 -0800	[thread overview]
Message-ID: <3A844571.7B5F8F61@mvista.com> (raw)
In-Reply-To: hoae7wjjvy.fsf@gee.suse.de

[-- Attachment #1: Type: text/plain, Size: 1627 bytes --]

Andreas Jaeger wrote:
> 
> Jun Sun <jsun@mvista.com> writes:
> 
> > Andreas Jaeger wrote:
> > >
> >
> > > > saves/restores the FP registers in setjmp/longjmp, the
> > >
> > > Any ideas how this can be done?
> > >
> > > > model of "simply sending SIGILL/SIGFPE" will result
> > > > in *all* processes being terminated with extreme prejudice,
> > > > starting with init!
> > >
> >
> > There is a patch for glibc2.0.7, which I think was done by Jay Carlson.  It
> > basically works for glibc2.0.6 as well.  See the one for glibc2.0.6 attached
> > below.
> >
> > I think the patch is not "clean", in the sense that you only want to apply it
> > if you want to configure with "--without-fp".  Otherwise the patch will break
> > other configurations.
> >
> > Jun--- glibc-2.0.6/sysdeps/mips/__longjmp.c.orig-rpm  Sat Sep 11 00:01:44 1999
> > +++ glibc-2.0.6/sysdeps/mips/__longjmp.c      Sat Sep 11 00:02:36 1999
> > @@ -35,6 +35,7 @@
> >       along the way.  */
> >    register int val asm ("a1");
> >
> > +#ifdef __HAVE_FPU__
> 
> I looked through the whole of glibc and GCC and __HAVE_FPU__ is nowhere
> defined for MIPS.  __HAVE_FPU__ is defined for m68k in GCC but that's
> the only platform.
>

You are right - it is not defined in glibc.  Instead it is defined in egcs. 
For this particular build, I need to apply the mips patch for egcs 1.0.3a,
which supplies __HAVE_FPU__.  You can find it somewhere on oss.sgi site. 
There is an additional patch for softfloat which makes __HAVE_FPU__
conditional.  See the attachement.
 
> Therefore I don't think the patch makes any sense at all,

Therefore, it does make sense. :-)

Jun

[-- Attachment #2: egcs-1.0.3a-mips-softfloat.patch --]
[-- Type: text/plain, Size: 1675 bytes --]

--- egcs-1.0.3a/gcc/config/mips/t-linux.orig	Mon Sep  6 21:38:16 1999
+++ egcs-1.0.3a/gcc/config/mips/t-linux	Wed Sep  8 08:43:58 1999
@@ -9,8 +9,28 @@
 LIBGCC1 =
 CROSS_LIBGCC1 =
 
-MULTILIB_OPTIONS= EL/EB
-MULTILIB_DIRNAMES= el eb
+# These are really part of libgcc1, but this will cause them to be
+# built correctly, so... [taken from t-sparclite]
+LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c
+
+dp-bit.c: $(srcdir)/config/fp-bit.c
+	echo '#ifdef __MIPSEL__' > dp-bit.c
+	echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c
+	echo '#endif' >> dp-bit.c
+	echo '#define US_SOFTWARE_GOFAST' >> dp-bit.c
+	cat $(srcdir)/config/fp-bit.c >> dp-bit.c
+
+fp-bit.c: $(srcdir)/config/fp-bit.c
+	echo '#define FLOAT' > fp-bit.c
+	echo '#ifdef __MIPSEL__' >> fp-bit.c
+	echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c
+	echo '#endif' >> fp-bit.c
+	echo '#define US_SOFTWARE_GOFAST' >> fp-bit.c
+	cat $(srcdir)/config/fp-bit.c >> fp-bit.c
+
+
+MULTILIB_OPTIONS= EL/EB msoft-float
+MULTILIB_DIRNAMES= el eb soft-float
 MULTILIB_MATCHES=
 MULTILIB_EXCEPTIONS=
 
--- egcs-1.0.3a/gcc/config/mips/linux.h.orig	Mon Sep  6 21:38:16 1999
+++ egcs-1.0.3a/gcc/config/mips/linux.h	Wed Sep  8 08:43:40 1999
@@ -82,7 +82,7 @@
 %{!mabi*: -U__mips64} \
 %{fno-PIC:-U__PIC__ -U__pic__} %{fno-pic:-U__PIC__ -U__pic__} \
 %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \
-%{-D__HAVE_FPU__ } \
+%{!msoft-float: -D__HAVE_FPU__ } \
 %{posix:-D_POSIX_SOURCE} \
 %{pthread:-D_REENTRANT}"
 
@@ -756,3 +756,7 @@
 
 #undef	MAX_WCHAR_TYPE_SIZE
 #define MAX_WCHAR_TYPE_SIZE	MAX_LONG_TYPE_SIZE
+
+/* US Software GOFAST library support.  */
+#include "gofast.h"
+#define INIT_TARGET_OPTABS INIT_GOFAST_OPTABS

  reply	other threads:[~2001-02-09 19:32 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-02-08 11:20 [RESUME] fpu emulator Florian Lohoff
2001-02-08 11:43 ` Kevin D. Kissell
2001-02-08 11:43   ` Kevin D. Kissell
2001-02-08 12:06   ` Andreas Jaeger
2001-02-08 12:06     ` Andreas Jaeger
2001-02-08 20:42     ` Jun Sun
2001-02-09  9:17       ` Andreas Jaeger
2001-02-09 19:30         ` Jun Sun [this message]
2001-02-09 20:31           ` Andreas Jaeger
2001-02-09 21:09             ` Jun Sun
2001-02-08 12:33   ` Florian Lohoff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3A844571.7B5F8F61@mvista.com \
    --to=jsun@mvista.com \
    --cc=aj@suse.de \
    --cc=flo@rfc822.org \
    --cc=kevink@mips.com \
    --cc=linux-mips@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox