Index: /trunk/include/VBox/dis.h
===================================================================
--- /trunk/include/VBox/dis.h	(revision 41661)
+++ /trunk/include/VBox/dis.h	(revision 41662)
@@ -372,8 +372,15 @@
     uint64_t        parval;
     uint64_t        flags;
-    int64_t         disp64;
-    int32_t         disp32;
-    int32_t         disp16;
-    int32_t         disp8;
+    union
+    {
+        int64_t     i64;
+        int32_t     i32;
+        int32_t     i16;
+        int32_t     i8;
+        uint64_t    u64;
+        uint32_t    u32;
+        uint32_t    u16;
+        uint32_t    u8;
+    } uDisp;
     uint32_t        size;
     int32_t         param;
Index: /trunk/src/VBox/Disassembler/DisasmCore.cpp
===================================================================
--- /trunk/src/VBox/Disassembler/DisasmCore.cpp	(revision 41661)
+++ /trunk/src/VBox/Disassembler/DisasmCore.cpp	(revision 41662)
@@ -549,5 +549,5 @@
         {
             pParam->flags |= USE_DISPLACEMENT32;
-            pParam->disp32 = pCpu->i32SibDisp;
+            pParam->uDisp.i32 = pCpu->i32SibDisp;
             disasmAddChar(pParam->szParam, '+');
             disasmPrintDisp32(pParam);
@@ -556,5 +556,5 @@
         {   /* sign-extend to 64 bits */
             pParam->flags |= USE_DISPLACEMENT64;
-            pParam->disp64 = pCpu->i32SibDisp;
+            pParam->uDisp.i64 = pCpu->i32SibDisp;
             disasmAddChar(pParam->szParam, '+');
             disasmPrintDisp64(pParam);
@@ -737,5 +737,5 @@
                 {
                     pParam->flags |= USE_DISPLACEMENT32;
-                    pParam->disp32 = pCpu->i32SibDisp;
+                    pParam->uDisp.i32 = pCpu->i32SibDisp;
                     disasmPrintDisp32(pParam);
                 }
@@ -743,10 +743,11 @@
                 {
                     pParam->flags |= USE_RIPDISPLACEMENT32;
-                    pParam->disp32 = pCpu->i32SibDisp;
+                    pParam->uDisp.i32 = pCpu->i32SibDisp;
                     disasmAddString(pParam->szParam, "RIP+");
                     disasmPrintDisp32(pParam);
                 }
             }
-            else {//register address
+            else
+            {   //register address
                 pParam->flags |= USE_BASE;
                 disasmModRMReg(pCpu, pOp, rm, pParam, 1);
@@ -766,10 +767,10 @@
                 disasmModRMReg(pCpu, pOp, rm, pParam, 1);
             }
-            pParam->disp8 = pCpu->i32SibDisp;
+            pParam->uDisp.i8 = pCpu->i32SibDisp;
             pParam->flags |= USE_DISPLACEMENT8;
 
-            if (pParam->disp8 != 0)
+            if (pParam->uDisp.i8 != 0)
             {
-                if (pParam->disp8 > 0)
+                if (pParam->uDisp.i8 > 0)
                     disasmAddChar(pParam->szParam, '+');
                 disasmPrintDisp8(pParam);
@@ -789,8 +790,8 @@
                 disasmModRMReg(pCpu, pOp, rm, pParam, 1);
             }
-            pParam->disp32 = pCpu->i32SibDisp;
+            pParam->uDisp.i32 = pCpu->i32SibDisp;
             pParam->flags |= USE_DISPLACEMENT32;
 
-            if (pParam->disp32 != 0)
+            if (pParam->uDisp.i32 != 0)
             {
                 disasmAddChar(pParam->szParam, '+');
@@ -814,5 +815,5 @@
             if (rm == 6)
             {//16 bits displacement
-                pParam->disp16 = pCpu->i32SibDisp;
+                pParam->uDisp.i16 = pCpu->i32SibDisp;
                 pParam->flags |= USE_DISPLACEMENT16;
                 disasmPrintDisp16(pParam);
@@ -830,10 +831,10 @@
             disasmAddChar(pParam->szParam, '[');
             disasmModRMReg16(pCpu, pOp, rm, pParam);
-            pParam->disp8 = pCpu->i32SibDisp;
+            pParam->uDisp.i8 = pCpu->i32SibDisp;
             pParam->flags |= USE_BASE | USE_DISPLACEMENT8;
 
-            if (pParam->disp8 != 0)
+            if (pParam->uDisp.i8 != 0)
             {
-                if (pParam->disp8 > 0)
+                if (pParam->uDisp.i8 > 0)
                     disasmAddChar(pParam->szParam, '+');
                 disasmPrintDisp8(pParam);
@@ -846,8 +847,8 @@
             disasmAddChar(pParam->szParam, '[');
             disasmModRMReg16(pCpu, pOp, rm, pParam);
-            pParam->disp16 = pCpu->i32SibDisp;
+            pParam->uDisp.i16 = pCpu->i32SibDisp;
             pParam->flags |= USE_BASE | USE_DISPLACEMENT16;
 
-            if (pParam->disp16 != 0)
+            if (pParam->uDisp.i16 != 0)
             {
                 disasmAddChar(pParam->szParam, '+');
@@ -1428,9 +1429,9 @@
              * so we treat it like displacement.
              */
-            pParam->disp32 = DISReadDWord(pCpu, lpszCodeBlock);
+            pParam->uDisp.i32 = DISReadDWord(pCpu, lpszCodeBlock);
             pParam->flags |= USE_DISPLACEMENT32;
             pParam->size   = sizeof(uint32_t);
 
-            disasmAddStringF1(pParam->szParam, "[0%08Xh]", pParam->disp32);
+            disasmAddStringF1(pParam->szParam, "[0%08Xh]", pParam->uDisp.i32);
             return sizeof(uint32_t);
         }
@@ -1445,9 +1446,9 @@
          * so we treat it like displacement.
          */
-        pParam->disp64 = DISReadQWord(pCpu, lpszCodeBlock);
+        pParam->uDisp.i64 = DISReadQWord(pCpu, lpszCodeBlock);
         pParam->flags |= USE_DISPLACEMENT64;
         pParam->size   = sizeof(uint64_t);
 
-        disasmAddStringF2(pParam->szParam, "[0%08X%08Xh]", (uint32_t)(pParam->disp64 >> 32), (uint32_t)pParam->disp64);
+        disasmAddStringF2(pParam->szParam, "[0%08X%08Xh]", (uint32_t)(pParam->uDisp.i64 >> 32), (uint32_t)pParam->uDisp.i64);
         return sizeof(uint64_t);
     }
@@ -1469,9 +1470,9 @@
              * so we treat it like displacement.
              */
-            pParam->disp16 = DISReadWord(pCpu, lpszCodeBlock);
+            pParam->uDisp.i16 = DISReadWord(pCpu, lpszCodeBlock);
             pParam->flags |= USE_DISPLACEMENT16;
             pParam->size   = sizeof(uint16_t);
 
-            disasmAddStringF1(pParam->szParam, "[0%04Xh]", (uint32_t)pParam->disp16);
+            disasmAddStringF1(pParam->szParam, "[0%04Xh]", (uint32_t)pParam->uDisp.i16);
             return sizeof(uint16_t);
         }
@@ -2442,5 +2443,5 @@
 void disasmPrintAbs32(POP_PARAMETER pParam)
 {
-    disasmAddStringF1(pParam->szParam, "%08Xh", pParam->disp32); NOREF(pParam);
+    disasmAddStringF1(pParam->szParam, "%08Xh", pParam->uDisp.i32); NOREF(pParam);
 }
 //*****************************************************************************
@@ -2448,5 +2449,5 @@
 void disasmPrintDisp32(POP_PARAMETER pParam)
 {
-    disasmAddStringF1(pParam->szParam, "%08Xh", pParam->disp32); NOREF(pParam);
+    disasmAddStringF1(pParam->szParam, "%08Xh", pParam->uDisp.i32); NOREF(pParam);
 }
 //*****************************************************************************
@@ -2454,5 +2455,5 @@
 void disasmPrintDisp64(POP_PARAMETER pParam)
 {
-    disasmAddStringF1(pParam->szParam, "%16RX64h", pParam->disp64); NOREF(pParam);
+    disasmAddStringF1(pParam->szParam, "%16RX64h", pParam->uDisp.i64); NOREF(pParam);
 }
 //*****************************************************************************
@@ -2460,5 +2461,5 @@
 void disasmPrintDisp8(POP_PARAMETER pParam)
 {
-    disasmAddStringF1(pParam->szParam, "%d", pParam->disp8); NOREF(pParam);
+    disasmAddStringF1(pParam->szParam, "%d", pParam->uDisp.i8); NOREF(pParam);
 }
 //*****************************************************************************
@@ -2466,5 +2467,5 @@
 void disasmPrintDisp16(POP_PARAMETER pParam)
 {
-    disasmAddStringF1(pParam->szParam, "%04Xh", pParam->disp16); NOREF(pParam);
+    disasmAddStringF1(pParam->szParam, "%04Xh", pParam->uDisp.i16); NOREF(pParam);
 }
 //*****************************************************************************
Index: /trunk/src/VBox/Disassembler/DisasmFormatYasm.cpp
===================================================================
--- /trunk/src/VBox/Disassembler/DisasmFormatYasm.cpp	(revision 41661)
+++ /trunk/src/VBox/Disassembler/DisasmFormatYasm.cpp	(revision 41662)
@@ -683,15 +683,15 @@
                         {
                             if (   (pParam->flags & USE_DISPLACEMENT8)
-                                && !pParam->disp8)
+                                && !pParam->uDisp.i8)
                                 PUT_SZ("byte ");
                             else if (   (pParam->flags & USE_DISPLACEMENT16)
-                                     && (int8_t)pParam->disp16 == (int16_t)pParam->disp16)
+                                     && (int8_t)pParam->uDisp.i16 == (int16_t)pParam->uDisp.i16)
                                 PUT_SZ("word ");
                             else if (   (pParam->flags & USE_DISPLACEMENT32)
-                                     && (int16_t)pParam->disp32 == (int32_t)pParam->disp32) //??
+                                     && (int16_t)pParam->uDisp.i32 == (int32_t)pParam->uDisp.i32) //??
                                 PUT_SZ("dword ");
                             else if (   (pParam->flags & USE_DISPLACEMENT64)
                                      && (pCpu->SIB.Bits.Base != 5 || pCpu->ModRM.Bits.Mod != 0)
-                                     && (int32_t)pParam->disp64 == (int64_t)pParam->disp64) //??
+                                     && (int32_t)pParam->uDisp.i64 == (int64_t)pParam->uDisp.i64) //??
                                 PUT_SZ("qword ");
                         }
@@ -731,11 +731,11 @@
                             int64_t off2;
                             if (pParam->flags & USE_DISPLACEMENT8)
-                                off2 = pParam->disp8;
+                                off2 = pParam->uDisp.i8;
                             else if (pParam->flags & USE_DISPLACEMENT16)
-                                off2 = pParam->disp16;
+                                off2 = pParam->uDisp.i16;
                             else if (pParam->flags & (USE_DISPLACEMENT32 | USE_RIPDISPLACEMENT32))
-                                off2 = pParam->disp32;
+                                off2 = pParam->uDisp.i32;
                             else if (pParam->flags & USE_DISPLACEMENT64)
-                                off2 = pParam->disp64;
+                                off2 = pParam->uDisp.i64;
                             else
                             {
@@ -1019,17 +1019,17 @@
                                 break;
                             case USE_DISPLACEMENT16:
-                                PUT_NUM_16(pParam->disp16);
+                                PUT_NUM_16(pParam->uDisp.i16);
                                 if (pfnGetSymbol)
-                                    rc = pfnGetSymbol(pCpu, DIS_FMT_SEL_FROM_REG(DIS_SELREG_CS), (uint16_t)pParam->disp16, szSymbol, sizeof(szSymbol), &off, pvUser);
+                                    rc = pfnGetSymbol(pCpu, DIS_FMT_SEL_FROM_REG(DIS_SELREG_CS), pParam->uDisp.u16, szSymbol, sizeof(szSymbol), &off, pvUser);
                                 break;
                             case USE_DISPLACEMENT32:
-                                PUT_NUM_32(pParam->disp32);
+                                PUT_NUM_32(pParam->uDisp.i32);
                                 if (pfnGetSymbol)
-                                    rc = pfnGetSymbol(pCpu, DIS_FMT_SEL_FROM_REG(DIS_SELREG_CS), (uint32_t)pParam->disp32, szSymbol, sizeof(szSymbol), &off, pvUser);
+                                    rc = pfnGetSymbol(pCpu, DIS_FMT_SEL_FROM_REG(DIS_SELREG_CS), pParam->uDisp.u32, szSymbol, sizeof(szSymbol), &off, pvUser);
                                 break;
                             case USE_DISPLACEMENT64:
-                                PUT_NUM_64(pParam->disp64);
+                                PUT_NUM_64(pParam->uDisp.i64);
                                 if (pfnGetSymbol)
-                                    rc = pfnGetSymbol(pCpu, DIS_FMT_SEL_FROM_REG(DIS_SELREG_CS), (uint64_t)pParam->disp64, szSymbol, sizeof(szSymbol), &off, pvUser);
+                                    rc = pfnGetSymbol(pCpu, DIS_FMT_SEL_FROM_REG(DIS_SELREG_CS), pParam->uDisp.u64, szSymbol, sizeof(szSymbol), &off, pvUser);
                                 break;
                             default:
Index: /trunk/src/VBox/Disassembler/DisasmReg.cpp
===================================================================
--- /trunk/src/VBox/Disassembler/DisasmReg.cpp	(revision 41661)
+++ /trunk/src/VBox/Disassembler/DisasmReg.cpp	(revision 41662)
@@ -603,10 +603,10 @@
         {
             if (pCpu->mode == CPUMODE_32BIT)
-                pParamVal->val.val32 += (int32_t)pParam->disp8;
+                pParamVal->val.val32 += (int32_t)pParam->uDisp.i8;
             else
             if (pCpu->mode == CPUMODE_64BIT)
-                pParamVal->val.val64 += (int64_t)pParam->disp8;
-            else
-                pParamVal->val.val16 += (int16_t)pParam->disp8;
+                pParamVal->val.val64 += (int64_t)pParam->uDisp.i8;
+            else
+                pParamVal->val.val16 += (int16_t)pParam->uDisp.i8;
         }
         else
@@ -614,10 +614,10 @@
         {
             if (pCpu->mode == CPUMODE_32BIT)
-                pParamVal->val.val32 += (int32_t)pParam->disp16;
+                pParamVal->val.val32 += (int32_t)pParam->uDisp.i16;
             else
             if (pCpu->mode == CPUMODE_64BIT)
-                pParamVal->val.val64 += (int64_t)pParam->disp16;
-            else
-                pParamVal->val.val16 += pParam->disp16;
+                pParamVal->val.val64 += (int64_t)pParam->uDisp.i16;
+            else
+                pParamVal->val.val16 += pParam->uDisp.i16;
         }
         else
@@ -625,7 +625,7 @@
         {
             if (pCpu->mode == CPUMODE_32BIT)
-                pParamVal->val.val32 += pParam->disp32;
-            else
-                pParamVal->val.val64 += pParam->disp32;
+                pParamVal->val.val32 += pParam->uDisp.i32;
+            else
+                pParamVal->val.val64 += pParam->uDisp.i32;
         }
         else
@@ -633,5 +633,5 @@
         {
             Assert(pCpu->mode == CPUMODE_64BIT);
-            pParamVal->val.val64 += (int64_t)pParam->disp64;
+            pParamVal->val.val64 += pParam->uDisp.i64;
         }
         else
@@ -640,5 +640,5 @@
             Assert(pCpu->mode == CPUMODE_64BIT);
             /* Relative to the RIP of the next instruction. */
-            pParamVal->val.val64 += pParam->disp32 + pCtx->rip + pCpu->opsize;
+            pParamVal->val.val64 += pParam->uDisp.i32 + pCtx->rip + pCpu->opsize;
         }
         return VINF_SUCCESS;
Index: /trunk/src/VBox/VMM/VMMR3/CSAM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/CSAM.cpp	(revision 41661)
+++ /trunk/src/VBox/VMM/VMMR3/CSAM.cpp	(revision 41662)
@@ -1333,5 +1333,5 @@
             {
                 addr = 0;
-                PGMPhysSimpleReadGCPtr(pVCpu, &addr, (RTRCUINTPTR)cpu.param1.disp32, sizeof(addr));
+                PGMPhysSimpleReadGCPtr(pVCpu, &addr, (RTRCUINTPTR)cpu.param1.uDisp.i32, sizeof(addr));
             }
             else
