diff options
author | Jackie Smith Cashion <jsmith@redhat.com> | 1996-03-28 14:08:51 +0000 |
---|---|---|
committer | Jackie Smith Cashion <jsmith@redhat.com> | 1996-03-28 14:08:51 +0000 |
commit | d0757082eb9320d85a668f38eade30ee6d0e2f60 (patch) | |
tree | 5f2be810f1c278f00982b60ad528d8d6a13ec3f8 /sim/mips | |
parent | 1d8eda7ab48030197747490cb54b8123cc4cbddd (diff) | |
download | gdb-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/ChangeLog | 7 | ||||
-rw-r--r-- | sim/mips/interp.c | 20 |
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: |