summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortakemura <takemura@NetBSD.org>1999-09-29 13:19:13 +0000
committertakemura <takemura@NetBSD.org>1999-09-29 13:19:13 +0000
commitcdabc2eb91cc574c8f0cfe6fc13af8780c073960 (patch)
tree7c15bb7559014b7e6f0e9313652df6d5a24a7efb
parentf644b42971edfe705df6e2130447ce2df223dcc9 (diff)
Hpcmips needs completely FPU instruction free user land.
XXX, this modification is kinda ad-hoc.
-rw-r--r--gnu/dist/gcc/config/mips/ecoff.h2
-rw-r--r--gnu/dist/gcc/config/mips/elf.h2
-rw-r--r--gnu/dist/gcc/config/mips/netbsd.h9
-rw-r--r--gnu/lib/libgcc/Makefile6
-rw-r--r--gnu/lib/libobjc/Makefile6
-rw-r--r--gnu/usr.bin/egcs/Makefile.inc6
-rw-r--r--lib/libc/arch/mips/Makefile.inc8
-rw-r--r--lib/libc/arch/mips/gen/Makefile.inc8
-rw-r--r--lib/libc/arch/mips/gen/__setjmp14.S6
-rw-r--r--lib/libc/arch/mips/gen/_setjmp.S8
-rw-r--r--lib/libc/arch/mips/gen/setjmp.S6
11 files changed, 56 insertions, 11 deletions
diff --git a/gnu/dist/gcc/config/mips/ecoff.h b/gnu/dist/gcc/config/mips/ecoff.h
index dcc00a4b4b8..e4fc1120b20 100644
--- a/gnu/dist/gcc/config/mips/ecoff.h
+++ b/gnu/dist/gcc/config/mips/ecoff.h
@@ -19,8 +19,10 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef NOUSE_GOFAST
/* US Software GOFAST library support. */
#define INIT_SUBTARGET_OPTABS INIT_GOFAST_OPTABS
+#endif
#include "mips/mips.h"
diff --git a/gnu/dist/gcc/config/mips/elf.h b/gnu/dist/gcc/config/mips/elf.h
index cfaa9d1f21f..684ed71b415 100644
--- a/gnu/dist/gcc/config/mips/elf.h
+++ b/gnu/dist/gcc/config/mips/elf.h
@@ -29,7 +29,9 @@ Boston, MA 02111-1307, USA. */
#endif
/* Mostly like ECOFF. */
+#ifndef NOUSE_GOFAST
#include "gofast.h"
+#endif
#include "mips/ecoff.h"
/* We need to use .esize and .etype instead of .size and .type to
diff --git a/gnu/dist/gcc/config/mips/netbsd.h b/gnu/dist/gcc/config/mips/netbsd.h
index 03bcebc866f..72577d3fb2b 100644
--- a/gnu/dist/gcc/config/mips/netbsd.h
+++ b/gnu/dist/gcc/config/mips/netbsd.h
@@ -23,6 +23,11 @@ Boston, MA 02111-1307, USA. */
#define TARGET_ENDIAN_DEFAULT 0
#define TARGET_DEFAULT MASK_GAS
+#ifdef hpcmips /* XXX should use distinct target name -uch */
+#define NOUSE_GOFAST
+#define SOFT_FLOAT
+#endif
+
/* Get generic mips ELF definitions. */
#include <mips/elf.h>
@@ -252,7 +257,11 @@ do { \
GO_IF_LEGITIMATE_ADDRESS ever accepting such addresses. */
#undef TARGET_DEFAULT
+#ifdef SOFT_FLOAT
+#define TARGET_DEFAULT (MASK_GAS|MASK_DEBUG_A|MASK_SOFT_FLOAT)
+#else
#define TARGET_DEFAULT (MASK_GAS|MASK_DEBUG_A)
+#endif
/* Since gas and gld are standard on NetBSD, we don't need these */
#undef ASM_FINAL_SPEC
diff --git a/gnu/lib/libgcc/Makefile b/gnu/lib/libgcc/Makefile
index f1ce58a7acf..acb21d33faf 100644
--- a/gnu/lib/libgcc/Makefile
+++ b/gnu/lib/libgcc/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.8 1999/02/24 17:18:26 drochner Exp $
+# $NetBSD: Makefile,v 1.9 1999/09/29 13:19:14 takemura Exp $
HAVE_GCC28!= ${CXX} --version | egrep "^(2\.8|egcs)" ; echo
@@ -18,6 +18,10 @@ ARCHSUBDIR= ${MACHINE_ARCH}
CPPFLAGS+= -I${ARCH}/${ARCHSUBDIR} -I${ARCH} \
-I${DIST}/config -I${DIST}/cp -I${DIST}
+.if (${MACHINE} == "hpcmips") # XXX
+CPPFLAGS+=-D${MACHINE}
+.endif
+
LIB2OBJS= __gcc_bcmp.o _varargs.o __dummy.o _eprintf.o _bb.o _shtab.o \
_clear_cache.o _trampoline.o __main.o _exit.o _ctors.o \
_pure.o
diff --git a/gnu/lib/libobjc/Makefile b/gnu/lib/libobjc/Makefile
index 669cb06abad..d007c1943e2 100644
--- a/gnu/lib/libobjc/Makefile
+++ b/gnu/lib/libobjc/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.6 1999/02/24 17:18:26 drochner Exp $
+# $NetBSD: Makefile,v 1.7 1999/09/29 13:19:15 takemura Exp $
HAVE_GCC28!= ${CXX} --version | egrep "^(2\.8|egcs)" ; echo
@@ -24,6 +24,10 @@ ARCHSUBDIR= ${MACHINE_ARCH}
CPPFLAGS+= -I. -I${ARCH}/${ARCHSUBDIR} -I${ARCH} \
-I${DIST}/config -I${DIST}
+.if (${MACHINE} == "hpcmips") # XXX
+CPPFLAGS+=-D${MACHINE}
+.endif
+
MKLINT= no
DIST= ${.CURDIR}/../../dist/gcc
diff --git a/gnu/usr.bin/egcs/Makefile.inc b/gnu/usr.bin/egcs/Makefile.inc
index 72d2c290232..5ac14d4ae3f 100644
--- a/gnu/usr.bin/egcs/Makefile.inc
+++ b/gnu/usr.bin/egcs/Makefile.inc
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.20 1999/07/30 04:07:23 mycroft Exp $
+# $NetBSD: Makefile.inc,v 1.21 1999/09/29 13:19:15 takemura Exp $
.if !defined(GCC_MAKEFILE_INC)
GCC_MAKEFILE_INC=1
@@ -38,6 +38,10 @@ CPPFLAGS+= -I${.CURDIR}/../arch \
CPPFLAGS+=-DDEFAULT_ELF
.endif
+.if (${MACHINE} == "hpcmips") # XXX
+CPPFLAGS+=-D${MACHINE}
+.endif
+
HOST_CPPFLAGS= ${CPPFLAGS}
.PATH: ${.CURDIR}/../arch \
diff --git a/lib/libc/arch/mips/Makefile.inc b/lib/libc/arch/mips/Makefile.inc
index 0076516db53..2da5b3ad9d0 100644
--- a/lib/libc/arch/mips/Makefile.inc
+++ b/lib/libc/arch/mips/Makefile.inc
@@ -1,4 +1,10 @@
-# $NetBSD: Makefile.inc,v 1.2 1996/09/16 18:10:35 jonathan Exp $
+# $NetBSD: Makefile.inc,v 1.3 1999/09/29 13:19:15 takemura Exp $
KMINCLUDES=
KMSRCS=
+
+.if (${MACHINE} == "hpcmips")
+CPPFLAGS+=-DSOFTFLOAT
+
+.include <fplib/Makefile.inc>
+.endif
diff --git a/lib/libc/arch/mips/gen/Makefile.inc b/lib/libc/arch/mips/gen/Makefile.inc
index 33c24e9b19f..978ba55a6e5 100644
--- a/lib/libc/arch/mips/gen/Makefile.inc
+++ b/lib/libc/arch/mips/gen/Makefile.inc
@@ -1,8 +1,14 @@
-# $NetBSD: Makefile.inc,v 1.9 1999/08/29 23:01:40 mycroft Exp $
+# $NetBSD: Makefile.inc,v 1.10 1999/09/29 13:19:16 takemura Exp $
+.if (${MACHINE} == "hpcmips")
+SRCS+= sf_fabs.c frexp.c infinity.c sf_isinf.c sf_ldexp.c sf_modf.c
+SRCS+= sf_flt_rounds.c sf_fpgetmask.c sf_fpgetround.c sf_fpgetsticky.c \
+ sf_fpsetmask.c sf_fpsetround.c sf_fpsetsticky.c
+.else
SRCS+= fabs.S frexp.c infinity.c isinf.c isnan.c ldexp.S modf.S
SRCS+= flt_rounds.c fpgetmask.c fpgetround.c fpgetsticky.c fpsetmask.c \
fpsetround.c fpsetsticky.c
+.endif
SRCS+= setjmp.S __setjmp14.S
SRCS+= _setjmp.S
diff --git a/lib/libc/arch/mips/gen/__setjmp14.S b/lib/libc/arch/mips/gen/__setjmp14.S
index 352c231648b..7432a7bffa6 100644
--- a/lib/libc/arch/mips/gen/__setjmp14.S
+++ b/lib/libc/arch/mips/gen/__setjmp14.S
@@ -1,4 +1,4 @@
-/* $NetBSD: __setjmp14.S,v 1.3 1999/01/31 00:57:10 castor Exp $ */
+/* $NetBSD: __setjmp14.S,v 1.4 1999/09/29 13:19:16 takemura Exp $ */
/*-
* Copyright (c) 1991, 1993
@@ -45,7 +45,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
ASMSTR("from: @(#)setjmp.s 8.1 (Berkeley) 6/4/93")
- ASMSTR("$NetBSD: __setjmp14.S,v 1.3 1999/01/31 00:57:10 castor Exp $")
+ ASMSTR("$NetBSD: __setjmp14.S,v 1.4 1999/09/29 13:19:16 takemura Exp $")
#endif /* LIBC_SCCS and not lint */
#ifdef ABICALLS
@@ -117,6 +117,7 @@ NON_LEAF(__setjmp14, SETJMP_FRAME_SIZE, ra)
REG_S s8, (_OFFSETOF_SC_REGS + S8 * SZREG)(a0)
li v0, 1 # be nice if we could tell
sw v0, (_OFFSETOF_SC_REGS + 34 * SZREG)(a0) # sc_fpused = 1
+#ifndef SOFTFLOAT
cfc1 v0, $31
swc1 $f20, (20 * 4 + _OFFSETOF_SC_FPREGS)(a0)
swc1 $f21, (21 * 4 + _OFFSETOF_SC_FPREGS)(a0)
@@ -130,6 +131,7 @@ NON_LEAF(__setjmp14, SETJMP_FRAME_SIZE, ra)
swc1 $f29, (29 * 4 + _OFFSETOF_SC_FPREGS)(a0)
swc1 $f30, (30 * 4 + _OFFSETOF_SC_FPREGS)(a0)
swc1 $f31, (31 * 4 + _OFFSETOF_SC_FPREGS)(a0)
+#endif
sw v0, (32 * 4 + _OFFSETOF_SC_FPREGS)(a0)
move v0, zero
j ra
diff --git a/lib/libc/arch/mips/gen/_setjmp.S b/lib/libc/arch/mips/gen/_setjmp.S
index ff0341e2117..8258cb8650a 100644
--- a/lib/libc/arch/mips/gen/_setjmp.S
+++ b/lib/libc/arch/mips/gen/_setjmp.S
@@ -1,4 +1,4 @@
-/* $NetBSD: _setjmp.S,v 1.11 1999/02/05 00:41:42 jonathan Exp $ */
+/* $NetBSD: _setjmp.S,v 1.12 1999/09/29 13:19:16 takemura Exp $ */
/*-
* Copyright (c) 1991, 1993
@@ -44,7 +44,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
ASMSTR("from: @(#)_setjmp.s 8.1 (Berkeley) 6/4/93")
- ASMSTR("$NetBSD: _setjmp.S,v 1.11 1999/02/05 00:41:42 jonathan Exp $")
+ ASMSTR("$NetBSD: _setjmp.S,v 1.12 1999/09/29 13:19:16 takemura Exp $")
#endif /* LIBC_SCCS and not lint */
#ifdef ABICALLS
@@ -85,6 +85,7 @@ LEAF(_setjmp)
REG_S s7, (S7 * SZREG + _OFFSETOF_SC_REGS)(a0)
REG_S sp, (SP * SZREG + _OFFSETOF_SC_REGS)(a0)
REG_S s8, (S8 * SZREG + _OFFSETOF_SC_REGS)(a0)
+#ifndef SOFTFLOAT
cfc1 v0, $31 # too bad cant check if FP used
swc1 $f20, (20 * 4 + _OFFSETOF_SC_FPREGS)(a0)
swc1 $f21, (21 * 4 + _OFFSETOF_SC_FPREGS)(a0)
@@ -98,6 +99,7 @@ LEAF(_setjmp)
swc1 $f29, (29 * 4 + _OFFSETOF_SC_FPREGS)(a0)
swc1 $f30, (30 * 4 + _OFFSETOF_SC_FPREGS)(a0)
swc1 $f31, (31 * 4 + _OFFSETOF_SC_FPREGS)(a0)
+#endif
sw v0, (32 * 4 + _OFFSETOF_SC_FPREGS)(a0)
REG_EPILOGUE
j ra
@@ -130,6 +132,7 @@ LEAF(_longjmp)
lw v0, (32 * 4 + _OFFSETOF_SC_FPREGS)(a0) # get fpu status
REG_L sp, (SP * SZREG + _OFFSETOF_SC_REGS)(a0)
REG_L s8, (S8 * SZREG + _OFFSETOF_SC_REGS)(a0)
+#ifndef SOFTFLOAT
ctc1 v0, $31
lwc1 $f20, (20 * 4 + _OFFSETOF_SC_FPREGS)(a0)
lwc1 $f21, (21 * 4 + _OFFSETOF_SC_FPREGS)(a0)
@@ -143,6 +146,7 @@ LEAF(_longjmp)
lwc1 $f29, (29 * 4 + _OFFSETOF_SC_FPREGS)(a0)
lwc1 $f30, (30 * 4 + _OFFSETOF_SC_FPREGS)(a0)
lwc1 $f31, (31 * 4 + _OFFSETOF_SC_FPREGS)(a0)
+#endif
j ra
move v0, a1
diff --git a/lib/libc/arch/mips/gen/setjmp.S b/lib/libc/arch/mips/gen/setjmp.S
index 984d718a0b3..b0d850af5dc 100644
--- a/lib/libc/arch/mips/gen/setjmp.S
+++ b/lib/libc/arch/mips/gen/setjmp.S
@@ -1,4 +1,4 @@
-/* $NetBSD: setjmp.S,v 1.10 1999/01/31 00:57:10 castor Exp $ */
+/* $NetBSD: setjmp.S,v 1.11 1999/09/29 13:19:16 takemura Exp $ */
/*-
* Copyright (c) 1991, 1993
@@ -45,7 +45,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
ASMSTR("from: @(#)setjmp.s 8.1 (Berkeley) 6/4/93")
- ASMSTR("$NetBSD: setjmp.S,v 1.10 1999/01/31 00:57:10 castor Exp $")
+ ASMSTR("$NetBSD: setjmp.S,v 1.11 1999/09/29 13:19:16 takemura Exp $")
#endif /* LIBC_SCCS and not lint */
#ifdef ABICALLS
@@ -109,6 +109,7 @@ NON_LEAF(setjmp, SETJMP_FRAME_SIZE, ra)
REG_S s8, (_OFFSETOF_SC_REGS + SZREG * S8)(a0)
li v0, 1 # be nice if we could tell
sw v0, (_OFFSETOF_SC_REGS + 34 * SZREG)(a0) # sc_fpused = 1
+#ifndef SOFTFLOAT
cfc1 v0, $31
swc1 $f20, (20 * 4 + _OFFSETOF_SC_FPREGS)(a0)
swc1 $f21, (21 * 4 + _OFFSETOF_SC_FPREGS)(a0)
@@ -122,6 +123,7 @@ NON_LEAF(setjmp, SETJMP_FRAME_SIZE, ra)
swc1 $f29, (29 * 4 + _OFFSETOF_SC_FPREGS)(a0)
swc1 $f30, (30 * 4 + _OFFSETOF_SC_FPREGS)(a0)
swc1 $f31, (31 * 4 + _OFFSETOF_SC_FPREGS)(a0)
+#endif
sw v0, ((32 * 4) + _OFFSETOF_SC_FPREGS)(a0)
REG_EPILOGUE
move v0, zero