Index: trunk/src/libs/softfloat-3e/Makefile.kmk
===================================================================
--- trunk/src/libs/softfloat-3e/Makefile.kmk	(revision 94545)
+++ trunk/src/libs/softfloat-3e/Makefile.kmk	(revision 94548)
@@ -367,4 +367,7 @@
 # -wd4389: f64_to_i64_r_minMag.c(93): warning C4389: '!=': signed/unsigned mismatch
 VBox-SoftFloatR0_CFLAGS.win := $(VBox-SoftFloat_CFLAGS.win) -wd4245 -wd4389
+ifn1of ($(KBUILD_TARGET),win)
+VBox-SoftFloatR0_CFLAGS     := $(VBox-SoftFloat_CFLAGS) -Wno-sign-compare
+endif
 
 include $(FILE_KBUILD_SUB_FOOTER)
Index: trunk/src/libs/softfloat-3e/source/extF80_roundToInt.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/extF80_roundToInt.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/extF80_roundToInt.c	(revision 94548)
@@ -41,4 +41,5 @@
 #include "specialize.h"
 #include "softfloat.h"
+#include <iprt/cdefs.h> /* VBox: for RT_FALL_THROUGH */
 
 extFloat80_t
@@ -97,4 +98,5 @@
          case softfloat_round_near_even:
             if ( !(sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ) break;
+            RT_FALL_THROUGH(); /* VBox */
          case softfloat_round_near_maxMag:
             if ( exp == 0x3FFE ) goto mag1;
Index: trunk/src/libs/softfloat-3e/source/f128_roundToInt.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/f128_roundToInt.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/f128_roundToInt.c	(revision 94548)
@@ -41,4 +41,5 @@
 #include "specialize.h"
 #include "softfloat.h"
+#include <iprt/cdefs.h> /* VBox: for RT_FALL_THROUGH */
 
 float128_t
@@ -116,4 +117,5 @@
              case softfloat_round_near_even:
                 if ( !(fracF128UI64( uiA64 ) | uiA0) ) break;
+                RT_FALL_THROUGH(); /* VBox */
              case softfloat_round_near_maxMag:
                 if ( exp == 0x3FFE ) uiZ.v64 |= packToF128UI64( 0, 0x3FFF, 0 );
Index: trunk/src/libs/softfloat-3e/source/f16_roundToInt.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/f16_roundToInt.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/f16_roundToInt.c	(revision 94548)
@@ -41,4 +41,5 @@
 #include "specialize.h"
 #include "softfloat.h"
+#include <iprt/cdefs.h> /* VBox: for RT_FALL_THROUGH */
 
 float16_t f16_roundToInt( float16_t a, uint_fast8_t roundingMode, bool exact )
@@ -64,4 +65,5 @@
          case softfloat_round_near_even:
             if ( !fracF16UI( uiA ) ) break;
+            RT_FALL_THROUGH(); /* VBox */
          case softfloat_round_near_maxMag:
             if ( exp == 0xE ) uiZ |= packToF16UI( 0, 0xF, 0 );
Index: trunk/src/libs/softfloat-3e/source/f32_roundToInt.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/f32_roundToInt.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/f32_roundToInt.c	(revision 94548)
@@ -41,4 +41,5 @@
 #include "specialize.h"
 #include "softfloat.h"
+#include <iprt/cdefs.h> /* VBox: for RT_FALL_THROUGH */
 
 float32_t f32_roundToInt( float32_t a, uint_fast8_t roundingMode, bool exact )
@@ -64,4 +65,5 @@
          case softfloat_round_near_even:
             if ( !fracF32UI( uiA ) ) break;
+            RT_FALL_THROUGH(); /* VBox */
          case softfloat_round_near_maxMag:
             if ( exp == 0x7E ) uiZ |= packToF32UI( 0, 0x7F, 0 );
Index: trunk/src/libs/softfloat-3e/source/f64_roundToInt.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/f64_roundToInt.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/f64_roundToInt.c	(revision 94548)
@@ -41,4 +41,5 @@
 #include "specialize.h"
 #include "softfloat.h"
+#include <iprt/cdefs.h> /* VBox: for RT_FALL_THROUGH */
 
 float64_t f64_roundToInt( float64_t a, uint_fast8_t roundingMode, bool exact )
@@ -64,4 +65,5 @@
          case softfloat_round_near_even:
             if ( !fracF64UI( uiA ) ) break;
+            RT_FALL_THROUGH(); /* VBox */
          case softfloat_round_near_maxMag:
             if ( exp == 0x3FE ) uiZ |= packToF64UI( 0, 0x3FF, 0 );
Index: trunk/src/libs/softfloat-3e/source/include/opts-GCC.h
===================================================================
--- trunk/src/libs/softfloat-3e/source/include/opts-GCC.h	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/include/opts-GCC.h	(revision 94548)
@@ -61,8 +61,11 @@
 #ifdef SOFTFLOAT_INTRINSIC_INT128
 
+#include <iprt/cdefs.h> /* VBox: shut up pedantic warnings */
+RT_GCC_EXTENSION typedef unsigned __int128  softfloat_int128_t;
+
 INLINE struct uint128 softfloat_mul64ByShifted32To128( uint64_t a, uint32_t b )
 {
-    union { unsigned __int128 ui; struct uint128 s; } uZ;
-    uZ.ui = (unsigned __int128) a * ((uint_fast64_t) b<<32);
+    union { softfloat_int128_t ui; struct uint128 s; } uZ;
+    uZ.ui = (softfloat_int128_t) a * ((uint_fast64_t) b<<32);
     return uZ.s;
 }
@@ -71,6 +74,6 @@
 INLINE struct uint128 softfloat_mul64To128( uint64_t a, uint64_t b )
 {
-    union { unsigned __int128 ui; struct uint128 s; } uZ;
-    uZ.ui = (unsigned __int128) a * b;
+    union { softfloat_int128_t ui; struct uint128 s; } uZ;
+    uZ.ui = (softfloat_int128_t) a * b;
     return uZ.s;
 }
@@ -80,6 +83,6 @@
 struct uint128 softfloat_mul128By32( uint64_t a64, uint64_t a0, uint32_t b )
 {
-    union { unsigned __int128 ui; struct uint128 s; } uZ;
-    uZ.ui = ((unsigned __int128) a64<<64 | a0) * b;
+    union { softfloat_int128_t ui; struct uint128 s; } uZ;
+    uZ.ui = ((softfloat_int128_t) a64<<64 | a0) * b;
     return uZ.s;
 }
@@ -91,10 +94,10 @@
      uint64_t a64, uint64_t a0, uint64_t b64, uint64_t b0, uint64_t *zPtr )
 {
-    unsigned __int128 z0, mid1, mid, z128;
-    z0 = (unsigned __int128) a0 * b0;
-    mid1 = (unsigned __int128) a64 * b0;
-    mid = mid1 + (unsigned __int128) a0 * b64;
-    z128 = (unsigned __int128) a64 * b64;
-    z128 += (unsigned __int128) (mid < mid1)<<64 | mid>>64;
+    softfloat_int128_t z0, mid1, mid, z128;
+    z0 = (softfloat_int128_t) a0 * b0;
+    mid1 = (softfloat_int128_t) a64 * b0;
+    mid = mid1 + (softfloat_int128_t) a0 * b64;
+    z128 = (softfloat_int128_t) a64 * b64;
+    z128 += (softfloat_int128_t) (mid < mid1)<<64 | mid>>64;
     mid <<= 64;
     z0 += mid;
Index: trunk/src/libs/softfloat-3e/source/s_add128.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_add128.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_add128.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_add128
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 struct uint128
Index: trunk/src/libs/softfloat-3e/source/s_add256M.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_add256M.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_add256M.c	(revision 94548)
@@ -40,4 +40,5 @@
 
 #ifndef softfloat_add256M
+# include "primitives.h" /* VBox: Missing prototype */
 
 void
Index: trunk/src/libs/softfloat-3e/source/s_approxRecip32_1.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_approxRecip32_1.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_approxRecip32_1.c	(revision 94548)
@@ -39,4 +39,5 @@
 
 #ifndef softfloat_approxRecip32_1
+uint32_t softfloat_approxRecip32_1( uint32_t a ); /* VBox: Missing prototype */
 
 extern const uint16_t softfloat_approxRecip_1k0s[16];
Index: trunk/src/libs/softfloat-3e/source/s_approxRecipSqrt32_1.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_approxRecipSqrt32_1.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_approxRecipSqrt32_1.c	(revision 94548)
@@ -39,4 +39,6 @@
 
 #ifndef softfloat_approxRecipSqrt32_1
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 extern const uint16_t softfloat_approxRecipSqrt_1k0s[];
Index: trunk/src/libs/softfloat-3e/source/s_eq128.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_eq128.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_eq128.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_eq128
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 bool softfloat_eq128( uint64_t a64, uint64_t a0, uint64_t b64, uint64_t b0 )
Index: trunk/src/libs/softfloat-3e/source/s_le128.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_le128.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_le128.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_le128
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 bool softfloat_le128( uint64_t a64, uint64_t a0, uint64_t b64, uint64_t b0 )
Index: trunk/src/libs/softfloat-3e/source/s_lt128.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_lt128.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_lt128.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_lt128
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 bool softfloat_lt128( uint64_t a64, uint64_t a0, uint64_t b64, uint64_t b0 )
Index: trunk/src/libs/softfloat-3e/source/s_shiftRightJam128.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_shiftRightJam128.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_shiftRightJam128.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_shiftRightJam128
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 struct uint128
Index: trunk/src/libs/softfloat-3e/source/s_shiftRightJam128Extra.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_shiftRightJam128Extra.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_shiftRightJam128Extra.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_shiftRightJam128Extra
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 struct uint128_extra
Index: trunk/src/libs/softfloat-3e/source/s_shiftRightJam256M.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_shiftRightJam256M.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_shiftRightJam256M.c	(revision 94548)
@@ -40,4 +40,5 @@
 
 #ifndef softfloat_shiftRightJam256M
+# include "primitives.h" /* VBox: Missing prototype */
 
 static
Index: trunk/src/libs/softfloat-3e/source/s_shiftRightJam32.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_shiftRightJam32.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_shiftRightJam32.c	(revision 94548)
@@ -39,4 +39,6 @@
 
 #ifndef softfloat_shiftRightJam32
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 uint32_t softfloat_shiftRightJam32( uint32_t a, uint_fast16_t dist )
Index: trunk/src/libs/softfloat-3e/source/s_shiftRightJam64.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_shiftRightJam64.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_shiftRightJam64.c	(revision 94548)
@@ -39,4 +39,6 @@
 
 #ifndef softfloat_shiftRightJam64
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 uint64_t softfloat_shiftRightJam64( uint64_t a, uint_fast32_t dist )
Index: trunk/src/libs/softfloat-3e/source/s_shiftRightJam64Extra.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_shiftRightJam64Extra.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_shiftRightJam64Extra.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_shiftRightJam64Extra
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 struct uint64_extra
Index: trunk/src/libs/softfloat-3e/source/s_shortShiftLeft128.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_shortShiftLeft128.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_shortShiftLeft128.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_shortShiftLeft128
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 struct uint128
Index: trunk/src/libs/softfloat-3e/source/s_shortShiftRight128.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_shortShiftRight128.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_shortShiftRight128.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_shortShiftRight128
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 struct uint128
Index: trunk/src/libs/softfloat-3e/source/s_shortShiftRightJam128.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_shortShiftRightJam128.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_shortShiftRightJam128.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_shortShiftRightJam128
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 struct uint128
Index: trunk/src/libs/softfloat-3e/source/s_shortShiftRightJam128Extra.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_shortShiftRightJam128Extra.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_shortShiftRightJam128Extra.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_shortShiftRightJam128Extra
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 struct uint128_extra
Index: trunk/src/libs/softfloat-3e/source/s_shortShiftRightJam64.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_shortShiftRightJam64.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_shortShiftRightJam64.c	(revision 94548)
@@ -39,4 +39,6 @@
 
 #ifndef softfloat_shortShiftRightJam64
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 uint64_t softfloat_shortShiftRightJam64( uint64_t a, uint_fast8_t dist )
Index: trunk/src/libs/softfloat-3e/source/s_shortShiftRightJam64Extra.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_shortShiftRightJam64Extra.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_shortShiftRightJam64Extra.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_shortShiftRightJam64Extra
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 struct uint64_extra
Index: trunk/src/libs/softfloat-3e/source/s_sub128.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_sub128.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_sub128.c	(revision 94548)
@@ -40,4 +40,6 @@
 
 #ifndef softfloat_sub128
+# undef INLINE_LEVEL     /* VBox: Missing prototype */
+# include "primitives.h" /* VBox: Missing prototype */
 
 struct uint128
Index: trunk/src/libs/softfloat-3e/source/s_sub256M.c
===================================================================
--- trunk/src/libs/softfloat-3e/source/s_sub256M.c	(revision 94545)
+++ trunk/src/libs/softfloat-3e/source/s_sub256M.c	(revision 94548)
@@ -40,4 +40,5 @@
 
 #ifndef softfloat_sub256M
+# include "primitives.h" /* VBox: Missing prototype */
 
 void
