Index: trunk/src/VBox/Runtime/common/math/watcom/I8D-x86-32.asm
===================================================================
--- trunk/src/VBox/Runtime/common/math/watcom/I8D-x86-32.asm	(revision 75129)
+++ trunk/src/VBox/Runtime/common/math/watcom/I8D-x86-32.asm	(revision 75129)
@@ -0,0 +1,98 @@
+; $Id$
+;; @file
+; BS3Kit - 32-bit Watcom C/C++, 64-bit signed integer division.
+;
+
+;
+; Copyright (C) 2007-2017 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+; The contents of this file may alternatively be used under the terms
+; of the Common Development and Distribution License Version 1.0
+; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+; VirtualBox OSE distribution, in which case the provisions of the
+; CDDL are applicable instead of those of the GPL.
+;
+; You may elect to license modified versions of this file under the
+; terms and conditions of either the GPL or the CDDL or both.
+;
+
+%include "iprt/asmdefs.mac"
+
+
+BEGINCODE
+
+extern __U8D
+
+
+;;
+; 64-bit signed integer division.
+;
+; @returns  EDX:EAX Quotient, ECX:EBX Remainder.
+; @param    EDX:EAX     Dividend.
+; @param    ECX:EBX     Divisor
+;
+global __I8D
+__I8D:
+        ;
+        ; We use __U8D to do the work, we take care of the signedness.
+        ;
+        or      edx, edx
+        js      .negative_dividend
+
+        or      ecx, ecx
+        js      .negative_divisor_positive_dividend
+        jmp     __U8D
+
+
+.negative_divisor_positive_dividend:
+        ; negate the divisor, do unsigned division, and negate the quotient.
+        neg     ecx
+        neg     ebx
+        sbb     ecx, 0
+
+        call    __U8D
+
+        neg     edx
+        neg     eax
+        sbb     edx, 0
+        ret
+
+.negative_dividend:
+        neg     edx
+        neg     eax
+        sbb     edx, 0
+
+        or      ecx, ecx
+        js      .negative_dividend_negative_divisor
+
+.negative_dividend_positive_divisor:
+        ; negate the dividend (above), do unsigned division, and negate both quotient and remainder
+        call    __U8D
+
+        neg     edx
+        neg     eax
+        sbb     edx, 0
+
+.return_negated_remainder:
+        neg     ecx
+        neg     ebx
+        sbb     ecx, 0
+        ret
+
+.negative_dividend_negative_divisor:
+        ; negate both dividend (above) and divisor, do unsigned division, and negate the remainder.
+        neg     ecx
+        neg     ebx
+        sbb     ecx, 0
+
+        call    __U8D
+        jmp     .return_negated_remainder
+
Index: trunk/src/VBox/Runtime/common/math/watcom/RTWatcomUInt64Div.c
===================================================================
--- trunk/src/VBox/Runtime/common/math/watcom/RTWatcomUInt64Div.c	(revision 75129)
+++ trunk/src/VBox/Runtime/common/math/watcom/RTWatcomUInt64Div.c	(revision 75129)
@@ -0,0 +1,38 @@
+/* $Id$ */
+/** @file
+ * BS3Kit - Unsigned 64-bit division (compiler support routine helper).
+ */
+
+/*
+ * Copyright (C) 2007-2017 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ *
+ * The contents of this file may alternatively be used under the terms
+ * of the Common Development and Distribution License Version 1.0
+ * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+ * VirtualBox OSE distribution, in which case the provisions of the
+ * CDDL are applicable instead of those of the GPL.
+ *
+ * You may elect to license modified versions of this file under the
+ * terms and conditions of either the GPL or the CDDL or both.
+ */
+
+
+/*********************************************************************************************************************************
+*   Header Files                                                                                                                 *
+*********************************************************************************************************************************/
+#include <iprt/uint64.h>
+
+
+DECLASM(void) RTWatcomUInt64Div(RTUINT64U uDividend, RTUINT64U uDivisor, RTUINT64U RT_FAR *paQuotientReminder)
+{
+    RTUInt64DivRem(&paQuotientReminder[0], &paQuotientReminder[1], &uDividend, &uDivisor);
+}
+
Index: trunk/src/VBox/Runtime/common/math/watcom/U8D-x86-32.asm
===================================================================
--- trunk/src/VBox/Runtime/common/math/watcom/U8D-x86-32.asm	(revision 75129)
+++ trunk/src/VBox/Runtime/common/math/watcom/U8D-x86-32.asm	(revision 75129)
@@ -0,0 +1,74 @@
+; $Id$
+;; @file
+; BS3Kit - 32-bit Watcom C/C++, 64-bit unsigned integer division.
+;
+
+;
+; Copyright (C) 2007-2017 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+; The contents of this file may alternatively be used under the terms
+; of the Common Development and Distribution License Version 1.0
+; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+; VirtualBox OSE distribution, in which case the provisions of the
+; CDDL are applicable instead of those of the GPL.
+;
+; You may elect to license modified versions of this file under the
+; terms and conditions of either the GPL or the CDDL or both.
+;
+
+%include "iprt/asmdefs.mac"
+
+
+BEGINCODE
+
+extern NAME(RTWatcomUInt64Div)
+
+
+;;
+; 64-bit unsigned integer division.
+;
+; @returns  EDX:EAX Quotient, ECX:EBX Remainder.
+; @param    EDX:EAX     Dividend.
+; @param    ECX:EBX     Divisor
+;
+global __U8D
+__U8D:
+        ;
+        ; Convert to a C __cdecl call - not doing this in assembly.
+        ;
+
+        ; Set up a frame, allocating 16 bytes for the result buffer.
+        push    ebp
+        mov     ebp, esp
+        sub     esp, 10h
+
+        ; Pointer to the return buffer.
+        push    esp
+
+        ; The divisor.
+        push    ecx
+        push    ebx
+
+        ; The dividend.
+        push    edx
+        push    eax
+
+        call    NAME(RTWatcomUInt64Div)
+
+        ; Load the result.
+        mov     ecx, [ebp - 10h + 12]
+        mov     ebx, [ebp - 10h + 8]
+        mov     edx, [ebp - 10h + 4]
+        mov     eax, [ebp - 10h]
+
+        leave
+        ret
+
Index: trunk/src/VBox/Runtime/common/math/watcom/U8LS-x86-32.asm
===================================================================
--- trunk/src/VBox/Runtime/common/math/watcom/U8LS-x86-32.asm	(revision 75129)
+++ trunk/src/VBox/Runtime/common/math/watcom/U8LS-x86-32.asm	(revision 75129)
@@ -0,0 +1,64 @@
+; $Id$
+;; @file
+; BS3Kit - 32-bit Watcom C/C++, 64-bit integer left shift.
+;
+
+;
+; Copyright (C) 2007-2017 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+; The contents of this file may alternatively be used under the terms
+; of the Common Development and Distribution License Version 1.0
+; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+; VirtualBox OSE distribution, in which case the provisions of the
+; CDDL are applicable instead of those of the GPL.
+;
+; You may elect to license modified versions of this file under the
+; terms and conditions of either the GPL or the CDDL or both.
+;
+
+%include "iprt/asmdefs.mac"
+
+
+BEGINCODE
+
+;;
+; 64-bit integer left shift.
+;
+; @returns  EDX:EAX
+; @param    EDX:EAX     Value to shift.
+; @param    BL          Shift count (it's specified as ECX:EBX, but we only use BL).
+;
+global __U8LS
+__U8LS:
+global __I8LS
+__I8LS:
+        push    ecx                     ; We're allowed to trash ECX, but why bother.
+
+        mov     cl, bl
+        and     cl, 3fh
+        test    cl, 20h
+        jnz     .big_shift
+
+        ; Shifting less than 32.
+        shld    edx, eax, cl
+        shl     eax, cl
+
+.return:
+        pop     ecx
+        ret
+
+.big_shift:
+        ; Shifting 32 or more.
+        mov     edx, eax
+        shl     edx, cl                 ; Only uses lower 5 bits.
+        xor     eax, eax
+        jmp     .return
+
Index: trunk/src/VBox/Runtime/common/math/watcom/U8M-I8M-x86-32.asm
===================================================================
--- trunk/src/VBox/Runtime/common/math/watcom/U8M-I8M-x86-32.asm	(revision 75129)
+++ trunk/src/VBox/Runtime/common/math/watcom/U8M-I8M-x86-32.asm	(revision 75129)
@@ -0,0 +1,77 @@
+; $Id$
+;; @file
+; BS3Kit - 32-bit Watcom C/C++, 64-bit unsigned integer division.
+;
+
+;
+; Copyright (C) 2007-2017 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+; The contents of this file may alternatively be used under the terms
+; of the Common Development and Distribution License Version 1.0
+; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+; VirtualBox OSE distribution, in which case the provisions of the
+; CDDL are applicable instead of those of the GPL.
+;
+; You may elect to license modified versions of this file under the
+; terms and conditions of either the GPL or the CDDL or both.
+;
+
+%include "iprt/asmdefs.mac"
+
+
+BEGINCODE
+
+
+;;
+; 64-bit signed & unsigned integer multiplication.
+;
+; @returns  EDX:EAX product
+; @param    EDX:EAX     Factor #1.
+; @param    ECX:EBX     Factor #2.
+; @uses     ECX, EBX
+;
+global __U8M
+__U8M:
+global __I8M
+__I8M:
+        ;
+        ; See if this is a pure 32-bit multiplication.  We might get lucky.
+        ;
+        test    edx, edx
+        jnz     .complicated
+        test    ecx, ecx
+        jnz     .complicated
+
+        mul     ebx                     ; eax * ebx -> edx:eax
+        ret
+
+.complicated:
+        push    eax
+        push    edx
+
+        ; ecx = F1.lo * F2.hi  (edx contains overflow here can be ignored)
+        mul     ecx
+        mov     ecx, eax
+
+        ; ecx += F1.hi * F2.lo (edx can be ignored again)
+        pop     eax
+        mul     ebx
+        add     ecx, eax
+
+        ; edx:eax = F1.lo * F2.lo
+        pop     eax
+        mul     ebx
+
+        ; Add ecx to the high part (edx).
+        add     edx, ecx
+
+        ret
+
Index: trunk/src/VBox/Runtime/common/math/watcom/U8RS-x86-32.asm
===================================================================
--- trunk/src/VBox/Runtime/common/math/watcom/U8RS-x86-32.asm	(revision 75129)
+++ trunk/src/VBox/Runtime/common/math/watcom/U8RS-x86-32.asm	(revision 75129)
@@ -0,0 +1,63 @@
+; $Id$
+;; @file
+; BS3Kit - 32-bit Watcom C/C++, 64-bit unsigned integer right shift.
+;
+
+;
+; Copyright (C) 2007-2017 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+; The contents of this file may alternatively be used under the terms
+; of the Common Development and Distribution License Version 1.0
+; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+; VirtualBox OSE distribution, in which case the provisions of the
+; CDDL are applicable instead of those of the GPL.
+;
+; You may elect to license modified versions of this file under the
+; terms and conditions of either the GPL or the CDDL or both.
+;
+
+%include "iprt/asmdefs.mac"
+
+
+BEGINCODE
+
+
+;;
+; 64-bit unsigned integer right shift.
+;
+; @returns  EDX:EAX
+; @param    EDX:EAX     Value to shift.
+; @param    BL          Shift count (it's specified as ECX:EBX, but we only use BL).
+;
+global __U8RS
+__U8RS:
+        push    ecx                     ; We're allowed to trash ECX, but why bother.
+
+        mov     cl, bl
+        and     cl, 3fh
+        test    cl, 20h
+        jnz     .big_shift
+
+        ; Shifting less than 32.
+        shrd    eax, edx, cl
+        shr     edx, cl
+
+.return:
+        pop     ecx
+        ret
+
+.big_shift:
+        ; Shifting 32 or more.
+        mov     eax, edx
+        shr     eax, cl                 ; Only uses lower 5 bits.
+        xor     edx, edx
+        jmp     .return
+
