aboutsummaryrefslogtreecommitdiff
path: root/sim/mips
diff options
context:
space:
mode:
authorJackie Smith Cashion <jsmith@redhat.com>1996-03-28 14:08:51 +0000
committerJackie Smith Cashion <jsmith@redhat.com>1996-03-28 14:08:51 +0000
commitd0757082eb9320d85a668f38eade30ee6d0e2f60 (patch)
tree5f2be810f1c278f00982b60ad528d8d6a13ec3f8 /sim/mips
parent1d8eda7ab48030197747490cb54b8123cc4cbddd (diff)
downloadgdb-d0757082eb9320d85a668f38eade30ee6d0e2f60.zip
gdb-d0757082eb9320d85a668f38eade30ee6d0e2f60.tar.gz
gdb-d0757082eb9320d85a668f38eade30ee6d0e2f60.tar.bz2
Thu Mar 28 13:50:51 1996 James G. Smith <jsmith@cygnus.co.uk>
* interp.c (Convert): Provide round-to-nearest and round-to-zero support for Sun hosts. * Makefile.in (gencode): Ensure the host compiler and libraries used for cross-hosted build. Allow a DOS hosted version of the simulator to be built. NOTE: The FP is still not complete, since round-to-nearest and round-to-zero have not been implemented generically.
Diffstat (limited to 'sim/mips')
-rw-r--r--sim/mips/ChangeLog7
-rw-r--r--sim/mips/interp.c20
2 files changed, 26 insertions, 1 deletions
diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog
index 4f4ffc8..f221324 100644
--- a/sim/mips/ChangeLog
+++ b/sim/mips/ChangeLog
@@ -1,3 +1,10 @@
+Thu Mar 28 13:50:51 1996 James G. Smith <jsmith@cygnus.co.uk>
+
+ * interp.c (Convert): Provide round-to-nearest and round-to-zero
+ support for Sun hosts.
+ * Makefile.in (gencode): Ensure the host compiler and libraries
+ used for cross-hosted build.
+
Wed Mar 27 14:42:12 1996 James G. Smith <jsmith@cygnus.co.uk>
* interp.c, gencode.c: Some more (TODO) tidying.
diff --git a/sim/mips/interp.c b/sim/mips/interp.c
index 65a34a8..d1e9feb 100644
--- a/sim/mips/interp.c
+++ b/sim/mips/interp.c
@@ -494,6 +494,8 @@ sim_open (args)
s[1] = 0x00000000;
if (((float)4.01102924346923828125 != *(float *)s) || ((double)523.2939453125 != *(double *)s)) {
fprintf(stderr,"The host executing the simulator does not seem to have IEEE 754-1985 std FP\n");
+ fprintf(stderr,"*(float *)s = %f (4.01102924346923828125)\n",*(float *)s);
+ fprintf(stderr,"*(double *)s = %f (523.2939453125)\n",*(double *)s);
exit(1);
}
}
@@ -814,7 +816,7 @@ sim_close (quitting)
#endif /* TRACE */
if (membank)
- cfree(membank);
+ free(membank); /* cfree not available on all hosts */
membank = NULL;
return;
@@ -2912,13 +2914,21 @@ Convert(rm,op,from,to)
/* Round result to nearest representable value. When two
representable values are equally near, round to the value
that has a least significant bit of zero (i.e. is even). */
+#if defined(sun)
tmp = (float)anint((double)tmp);
+#else
+ /* TODO: Provide round-to-nearest */
+#endif
break;
case FP_RM_TOZERO:
/* Round result to the value closest to, and not greater in
magnitude than, the result. */
+#if defined(sun)
tmp = (float)aint((double)tmp);
+#else
+ /* TODO: Provide round-to-zero */
+#endif
break;
case FP_RM_TOPINF:
@@ -2960,11 +2970,19 @@ Convert(rm,op,from,to)
switch (rm) {
case FP_RM_NEAREST:
+#if defined(sun)
tmp = anint(*(double *)&tmp);
+#else
+ /* TODO: Provide round-to-nearest */
+#endif
break;
case FP_RM_TOZERO:
+#if defined(sun)
tmp = aint(*(double *)&tmp);
+#else
+ /* TODO: Provide round-to-zero */
+#endif
break;
case FP_RM_TOPINF: