Thu Mar 28 13:50:51 1996 James G. Smith <jsmith@cygnus.co.uk>
authorJackie Smith Cashion <jsmith@redhat.com>
Thu, 28 Mar 1996 14:08:51 +0000 (14:08 +0000)
committerJackie Smith Cashion <jsmith@redhat.com>
Thu, 28 Mar 1996 14:08:51 +0000 (14:08 +0000)
* 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.

sim/mips/ChangeLog
sim/mips/interp.c

index 4f4ffc8..f221324 100644 (file)
@@ -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.
index 65a34a8..d1e9feb 100644 (file)
@@ -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: