Commit 0475a5ca544e3a59fb961f14342228aad1d0acb6

Authored by ths
1 parent e5febef5

Solaris 9/x86 support, by Ben Taylor.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2577 c046a42c-6fe2-441c-8c8c-71466251a162
Makefile.target
... ... @@ -217,6 +217,12 @@ LIBS+=-lwinmm -lws2_32 -liphlpapi
217 217 endif
218 218 ifdef CONFIG_SOLARIS
219 219 LIBS+=-lsocket -lnsl -lresolv
  220 +ifdef NEEDS_LIBSUNMATH
  221 +LIBS+=-lsunmath
  222 +LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
  223 +OP_CFLAGS+=-I/opt/SUNWspro/prod/include/cc
  224 +BASE_CFLAGS+=-I/opt/SUNWspro/prod/include/cc
  225 +endif
220 226 endif
221 227  
222 228 # profiling code
... ...
configure
... ... @@ -139,9 +139,21 @@ SunOS)
139 139 solaris="yes"
140 140 make="gmake"
141 141 install="ginstall"
  142 + needs_libsunmath="no"
142 143 solarisrev=`uname -r | cut -f2 -d.`
143 144 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
144   - if test "$solarisrev" -ge 10 ; then
  145 + if test "$solarisrev" -le 9 ; then
  146 + if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
  147 + needs_libsunmath="yes"
  148 + else
  149 + echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
  150 + echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
  151 + echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
  152 + echo "Studio 11 can be downloaded from www.sun.com."
  153 + exit 1
  154 + fi
  155 + fi
  156 + if test "$solarisrev" -ge 9 ; then
145 157 kqemu="yes"
146 158 fi
147 159 fi
... ... @@ -727,6 +739,10 @@ fi
727 739 if test "$solaris" = "yes" ; then
728 740 echo "CONFIG_SOLARIS=yes" >> $config_mak
729 741 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
  742 + if test "$needs_libsunmath" = "yes" ; then
  743 + echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
  744 + echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
  745 + fi
730 746 fi
731 747 if test "$gdbstub" = "yes" ; then
732 748 echo "CONFIG_GDBSTUB=yes" >> $config_mak
... ...
fpu/softfloat-native.c
... ... @@ -30,6 +30,25 @@ void set_floatx80_rounding_precision(int val STATUS_PARAM)
30 30 #define sqrtf(f) ((float)sqrt(f))
31 31 #define remainderf(fa, fb) ((float)remainder(fa, fb))
32 32 #define rintf(f) ((float)rint(f))
  33 +#if !defined(__sparc__) && HOST_SOLARIS < 10
  34 +extern long double rintl(long double);
  35 +extern long double scalbnl(long double, int);
  36 +
  37 +long long
  38 +llrintl(long double x) {
  39 + return ((long long) rintl(x));
  40 +}
  41 +
  42 +long
  43 +lrintl(long double x) {
  44 + return ((long) rintl(x));
  45 +}
  46 +
  47 +long double
  48 +ldexpl(long double x, int n) {
  49 + return (scalbnl(x, n));
  50 +}
  51 +#endif
33 52 #endif
34 53  
35 54 #if defined(__powerpc__)
... ...
fpu/softfloat.h
... ... @@ -32,6 +32,10 @@ these four paragraphs for those parts of this code that are retained.
32 32 #ifndef SOFTFLOAT_H
33 33 #define SOFTFLOAT_H
34 34  
  35 +#if defined(HOST_SOLARIS) && defined(NEEDS_LIBSUNMATH)
  36 +#include <sunmath.h>
  37 +#endif
  38 +
35 39 #include <inttypes.h>
36 40 #include "config.h"
37 41  
... ...