Index: /trunk/include/VBox/cpum.h
===================================================================
--- /trunk/include/VBox/cpum.h	(revision 9420)
+++ /trunk/include/VBox/cpum.h	(revision 9421)
@@ -48,5 +48,5 @@
 {
     /** Base register. */
-    uint32_t    u32Base;
+    uint64_t    u64Base;
     /** Limit (expanded). */
     uint32_t    u32Limit;
Index: /trunk/include/VBox/cpum.mac
===================================================================
--- /trunk/include/VBox/cpum.mac	(revision 9420)
+++ /trunk/include/VBox/cpum.mac	(revision 9421)
@@ -71,25 +71,25 @@
     .r15            resq    1
 
-    .esHid.u32Base      resd    1
+    .esHid.u64Base      resq    1
     .esHid.u32Limit     resd    1
     .esHid.Attr         resd    1
 
-    .csHid.u32Base      resd    1
+    .csHid.u64Base      resq    1
     .csHid.u32Limit     resd    1
     .csHid.Attr         resd    1
 
-    .ssHid.u32Base      resd    1
+    .ssHid.u64Base      resq    1
     .ssHid.u32Limit     resd    1
     .ssHid.Attr         resd    1
 
-    .dsHid.u32Base      resd    1
+    .dsHid.u64Base      resq    1
     .dsHid.u32Limit     resd    1
     .dsHid.Attr         resd    1
 
-    .fsHid.u32Base      resd    1
+    .fsHid.u64Base      resq    1
     .fsHid.u32Limit     resd    1
     .fsHid.Attr         resd    1
 
-    .gsHid.u32Base      resd    1
+    .gsHid.u64Base      resq    1
     .gsHid.u32Limit     resd    1
     .gsHid.Attr         resd    1
@@ -134,25 +134,25 @@
     .r15            resq    1
 
-    .esHid.u32Base      resd    1
+    .esHid.u64Base      resq    1
     .esHid.u32Limit     resd    1
     .esHid.Attr         resd    1
 
-    .csHid.u32Base      resd    1
+    .csHid.u64Base      resq    1
     .csHid.u32Limit     resd    1
     .csHid.Attr         resd    1
 
-    .ssHid.u32Base      resd    1
+    .ssHid.u64Base      resq    1
     .ssHid.u32Limit     resd    1
     .ssHid.Attr         resd    1
 
-    .dsHid.u32Base      resd    1
+    .dsHid.u64Base      resq    1
     .dsHid.u32Limit     resd    1
     .dsHid.Attr         resd    1
 
-    .fsHid.u32Base      resd    1
+    .fsHid.u64Base      resq    1
     .fsHid.u32Limit     resd    1
     .fsHid.Attr         resd    1
 
-    .gsHid.u32Base      resd    1
+    .gsHid.u64Base      resq    1
     .gsHid.u32Limit     resd    1
     .gsHid.Attr         resd    1
@@ -199,9 +199,9 @@
     .msrKERNELGSBASE    resb    8
 
-    .ldtrHid.u32Base    resd    1
+    .ldtrHid.u64Base    resq    1
     .ldtrHid.u32Limit   resd    1
     .ldtrHid.Attr       resd    1
 
-    .trHid.u32Base      resd    1
+    .trHid.u64Base      resq    1
     .trHid.u32Limit     resd    1
     .trHid.Attr         resd    1
Index: /trunk/src/VBox/VMM/CPUM.cpp
===================================================================
--- /trunk/src/VBox/VMM/CPUM.cpp	(revision 9420)
+++ /trunk/src/VBox/VMM/CPUM.cpp	(revision 9421)
@@ -538,5 +538,5 @@
 
     pCtx->cs                        = 0xf000;
-    pCtx->csHid.u32Base             = UINT32_C(0xffff0000);
+    pCtx->csHid.u64Base             = UINT64_C(0xffff0000);
     pCtx->csHid.u32Limit            = 0x0000ffff;
     pCtx->csHid.Attr.n.u1DescType   = 1; /* code/data segment */
@@ -831,13 +831,13 @@
                 pszPrefix, pCtxCore->eax, pszPrefix, pCtxCore->ebx, pszPrefix, pCtxCore->ecx, pszPrefix, pCtxCore->edx, pszPrefix, pCtxCore->esi, pszPrefix, pCtxCore->edi,
                 pszPrefix, pCtxCore->eip, pszPrefix, pCtxCore->esp, pszPrefix, pCtxCore->ebp, pszPrefix, X86_EFL_GET_IOPL(efl), *pszPrefix ? 33 : 31, szEFlags,
-                pszPrefix, (RTSEL)pCtxCore->cs, pCtx->csHid.u32Base, pCtx->csHid.u32Limit, pCtx->csHid.Attr.u, pszPrefix, pCtx->dr0,  pszPrefix, pCtx->dr1,
-                pszPrefix, (RTSEL)pCtxCore->ds, pCtx->dsHid.u32Base, pCtx->dsHid.u32Limit, pCtx->dsHid.Attr.u, pszPrefix, pCtx->dr2,  pszPrefix, pCtx->dr3,
-                pszPrefix, (RTSEL)pCtxCore->es, pCtx->esHid.u32Base, pCtx->esHid.u32Limit, pCtx->esHid.Attr.u, pszPrefix, pCtx->dr4,  pszPrefix, pCtx->dr5,
-                pszPrefix, (RTSEL)pCtxCore->fs, pCtx->fsHid.u32Base, pCtx->fsHid.u32Limit, pCtx->fsHid.Attr.u, pszPrefix, pCtx->dr6,  pszPrefix, pCtx->dr7,
-                pszPrefix, (RTSEL)pCtxCore->gs, pCtx->gsHid.u32Base, pCtx->gsHid.u32Limit, pCtx->gsHid.Attr.u, pszPrefix, pCtx->cr0,  pszPrefix, pCtx->cr2,
-                pszPrefix, (RTSEL)pCtxCore->ss, pCtx->ssHid.u32Base, pCtx->ssHid.u32Limit, pCtx->ssHid.Attr.u, pszPrefix, pCtx->cr3,  pszPrefix, pCtx->cr4,
+                pszPrefix, (RTSEL)pCtxCore->cs, pCtx->csHid.u64Base, pCtx->csHid.u32Limit, pCtx->csHid.Attr.u, pszPrefix, pCtx->dr0,  pszPrefix, pCtx->dr1,
+                pszPrefix, (RTSEL)pCtxCore->ds, pCtx->dsHid.u64Base, pCtx->dsHid.u32Limit, pCtx->dsHid.Attr.u, pszPrefix, pCtx->dr2,  pszPrefix, pCtx->dr3,
+                pszPrefix, (RTSEL)pCtxCore->es, pCtx->esHid.u64Base, pCtx->esHid.u32Limit, pCtx->esHid.Attr.u, pszPrefix, pCtx->dr4,  pszPrefix, pCtx->dr5,
+                pszPrefix, (RTSEL)pCtxCore->fs, pCtx->fsHid.u64Base, pCtx->fsHid.u32Limit, pCtx->fsHid.Attr.u, pszPrefix, pCtx->dr6,  pszPrefix, pCtx->dr7,
+                pszPrefix, (RTSEL)pCtxCore->gs, pCtx->gsHid.u64Base, pCtx->gsHid.u32Limit, pCtx->gsHid.Attr.u, pszPrefix, pCtx->cr0,  pszPrefix, pCtx->cr2,
+                pszPrefix, (RTSEL)pCtxCore->ss, pCtx->ssHid.u64Base, pCtx->ssHid.u32Limit, pCtx->ssHid.Attr.u, pszPrefix, pCtx->cr3,  pszPrefix, pCtx->cr4,
                 pszPrefix, pCtx->gdtr.pGdt, pCtx->gdtr.cbGdt, pszPrefix, pCtx->idtr.pIdt, pCtx->idtr.cbIdt, pszPrefix, efl,
-                pszPrefix, (RTSEL)pCtx->ldtr, pCtx->ldtrHid.u32Base, pCtx->ldtrHid.u32Limit, pCtx->ldtrHid.Attr.u,
-                pszPrefix, (RTSEL)pCtx->tr, pCtx->trHid.u32Base, pCtx->trHid.u32Limit, pCtx->trHid.Attr.u,
+                pszPrefix, (RTSEL)pCtx->ldtr, pCtx->ldtrHid.u64Base, pCtx->ldtrHid.u32Limit, pCtx->ldtrHid.Attr.u,
+                pszPrefix, (RTSEL)pCtx->tr, pCtx->trHid.u64Base, pCtx->trHid.u32Limit, pCtx->trHid.Attr.u,
                 pszPrefix, pCtx->SysEnter.cs, pCtx->SysEnter.eip, pCtx->SysEnter.esp);
 
@@ -1803,6 +1803,6 @@
         if (CPUMAreHiddenSelRegsValid(pVM))
         {
-            State.GCPtrSegBase    = pCtx->csHid.u32Base;
-            State.GCPtrSegEnd     = pCtx->csHid.u32Limit + 1 + (RTGCUINTPTR)pCtx->csHid.u32Base;
+            State.GCPtrSegBase    = pCtx->csHid.u64Base;
+            State.GCPtrSegEnd     = pCtx->csHid.u32Limit + 1 + (RTGCUINTPTR)pCtx->csHid.u64Base;
             State.cbSegLimit      = pCtx->csHid.u32Limit;
             pCpu->mode            = pCtx->csHid.Attr.n.u1DefBig ? CPUMODE_32BIT : CPUMODE_16BIT;
Index: /trunk/src/VBox/VMM/CPUMInternal.mac
===================================================================
--- /trunk/src/VBox/VMM/CPUMInternal.mac	(revision 9420)
+++ /trunk/src/VBox/VMM/CPUMInternal.mac	(revision 9421)
@@ -206,25 +206,25 @@
     .Hyper.r15            resq    1
 
-    .Hyper.esHid.u32Base      resd    1
+    .Hyper.esHid.u64Base      resq    1
     .Hyper.esHid.u32Limit     resd    1
     .Hyper.esHid.Attr         resd    1
 
-    .Hyper.csHid.u32Base      resd    1
+    .Hyper.csHid.u64Base      resq    1
     .Hyper.csHid.u32Limit     resd    1
     .Hyper.csHid.Attr         resd    1
 
-    .Hyper.ssHid.u32Base      resd    1
+    .Hyper.ssHid.u64Base      resq    1
     .Hyper.ssHid.u32Limit     resd    1
     .Hyper.ssHid.Attr         resd    1
 
-    .Hyper.dsHid.u32Base      resd    1
+    .Hyper.dsHid.u64Base      resq    1
     .Hyper.dsHid.u32Limit     resd    1
     .Hyper.dsHid.Attr         resd    1
 
-    .Hyper.fsHid.u32Base      resd    1
+    .Hyper.fsHid.u64Base      resq    1
     .Hyper.fsHid.u32Limit     resd    1
     .Hyper.fsHid.Attr         resd    1
 
-    .Hyper.gsHid.u32Base      resd    1
+    .Hyper.gsHid.u64Base      resq    1
     .Hyper.gsHid.u32Limit     resd    1
     .Hyper.gsHid.Attr         resd    1
@@ -270,9 +270,9 @@
     .Hyper.msrKERNELGSBASE    resb    8
 
-    .Hyper.ldtrHid.u32Base    resd    1
+    .Hyper.ldtrHid.u64Base    resq    1
     .Hyper.ldtrHid.u32Limit   resd    1
     .Hyper.ldtrHid.Attr       resd    1
 
-    .Hyper.trHid.u32Base      resd    1
+    .Hyper.trHid.u64Base      resq    1
     .Hyper.trHid.u32Limit     resd    1
     .Hyper.trHid.Attr         resd    1
@@ -322,25 +322,25 @@
     .Guest.r15            resq    1
 
-    .Guest.esHid.u32Base      resd    1
+    .Guest.esHid.u64Base      resq    1
     .Guest.esHid.u32Limit     resd    1
     .Guest.esHid.Attr         resd    1
 
-    .Guest.csHid.u32Base      resd    1
+    .Guest.csHid.u64Base      resq    1
     .Guest.csHid.u32Limit     resd    1
     .Guest.csHid.Attr         resd    1
 
-    .Guest.ssHid.u32Base      resd    1
+    .Guest.ssHid.u64Base      resq    1
     .Guest.ssHid.u32Limit     resd    1
     .Guest.ssHid.Attr         resd    1
 
-    .Guest.dsHid.u32Base      resd    1
+    .Guest.dsHid.u64Base      resq    1
     .Guest.dsHid.u32Limit     resd    1
     .Guest.dsHid.Attr         resd    1
 
-    .Guest.fsHid.u32Base      resd    1
+    .Guest.fsHid.u64Base      resq    1
     .Guest.fsHid.u32Limit     resd    1
     .Guest.fsHid.Attr         resd    1
 
-    .Guest.gsHid.u32Base      resd    1
+    .Guest.gsHid.u64Base      resq    1
     .Guest.gsHid.u32Limit     resd    1
     .Guest.gsHid.Attr         resd    1
@@ -386,9 +386,9 @@
     .Guest.msrKERNELGSBASE    resb    8
 
-    .Guest.ldtrHid.u32Base    resd    1
+    .Guest.ldtrHid.u64Base    resq    1
     .Guest.ldtrHid.u32Limit   resd    1
     .Guest.ldtrHid.Attr       resd    1
 
-    .Guest.trHid.u32Base      resd    1
+    .Guest.trHid.u64Base      resq    1
     .Guest.trHid.u32Limit     resd    1
     .Guest.trHid.Attr         resd    1
@@ -436,5 +436,5 @@
 
     ; CPUMCTX debug stuff...
-    .GuestEntry           resb   1024
+    .GuestEntry           resb   1056
 
 endstruc
Index: /trunk/src/VBox/VMM/DBGF.cpp
===================================================================
--- /trunk/src/VBox/VMM/DBGF.cpp	(revision 9420)
+++ /trunk/src/VBox/VMM/DBGF.cpp	(revision 9421)
@@ -560,5 +560,5 @@
         PCPUMCTX pCtx;
         CPUMQueryGuestCtxPtr(pVM, &pCtx);
-        uint32_t eip = pCtx->eip + pCtx->csHid.u32Base;
+        RTGCPTR eip = pCtx->rip + pCtx->csHid.u64Base;
 #endif
         for (iBp = 0; iBp < ELEMENTS(pVM->dbgf.s.aBreakpoints); iBp++)
Index: /trunk/src/VBox/VMM/DBGFDisas.cpp
===================================================================
--- /trunk/src/VBox/VMM/DBGFDisas.cpp	(revision 9420)
+++ /trunk/src/VBox/VMM/DBGFDisas.cpp	(revision 9421)
@@ -323,5 +323,5 @@
         &&  CPUMAreHiddenSelRegsValid(pVM))
     {
-        SelInfo.GCPtrBase           = pHiddenSel->u32Base;
+        SelInfo.GCPtrBase           = pHiddenSel->u64Base;
         SelInfo.cbLimit             = pHiddenSel->u32Limit;
         SelInfo.fHyper              = false;
Index: /trunk/src/VBox/VMM/VMMAll/SELMAll.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/SELMAll.cpp	(revision 9420)
+++ /trunk/src/VBox/VMM/VMMAll/SELMAll.cpp	(revision 9421)
@@ -99,5 +99,5 @@
 
         if (CPUMAreHiddenSelRegsValid(pVM))
-            uFlat += pHiddenSel->u32Base;
+            uFlat += pHiddenSel->u64Base;
         else
             uFlat += ((RTGCUINTPTR)Sel << 4);
@@ -108,5 +108,5 @@
     if (!CPUMAreHiddenSelRegsValid(pVM))
         return selmToFlat(pVM, Sel, Addr);
-    return (RTGCPTR)(pHiddenSel->u32Base + (RTGCUINTPTR)Addr);
+    return (RTGCPTR)(pHiddenSel->u64Base + (RTGCUINTPTR)Addr);
 }
 
@@ -142,5 +142,5 @@
             if (    pHiddenSel
                 &&  CPUMAreHiddenSelRegsValid(pVM))
-                *ppvGC = (RTGCPTR)(pHiddenSel->u32Base + uFlat);
+                *ppvGC = (RTGCPTR)(pHiddenSel->u64Base + uFlat);
             else
                 *ppvGC = (RTGCPTR)(((RTGCUINTPTR)Sel << 4) + uFlat);
@@ -166,5 +166,5 @@
 
         u32Limit      = pHiddenSel->u32Limit;
-        pvFlat        = (RTGCPTR)(pHiddenSel->u32Base + (RTGCUINTPTR)Addr);
+        pvFlat        = (RTGCPTR)(pHiddenSel->u64Base + (RTGCUINTPTR)Addr);
     }
     else
@@ -334,5 +334,5 @@
         uFlat += ((RTGCUINTPTR)SelCS << 4);
     else
-        uFlat += pHidCS->u32Base;
+        uFlat += pHidCS->u64Base;
     *ppvFlat = (RTGCPTR)uFlat;
     return VINF_SUCCESS;
@@ -457,5 +457,5 @@
                 if ((RTGCUINTPTR)Addr <= u32Limit)
                 {
-                    *ppvFlat = (RTGCPTR)(  (RTGCUINTPTR)Addr + pHidCS->u32Base );
+                    *ppvFlat = (RTGCPTR)(  (RTGCUINTPTR)Addr + pHidCS->u64Base );
                     return VINF_SUCCESS;
                 }
@@ -850,5 +850,5 @@
         pHiddenTRReg = CPUMGetGuestTRHid(pVM);
 
-        *pGCPtrTss = pHiddenTRReg->u32Base;
+        *pGCPtrTss = pHiddenTRReg->u64Base;
         *pcbTss    = pHiddenTRReg->u32Limit;
 
Index: /trunk/src/VBox/VMM/VMMR0/HWACCMR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/HWACCMR0.cpp	(revision 9420)
+++ /trunk/src/VBox/VMM/VMMR0/HWACCMR0.cpp	(revision 9421)
@@ -981,28 +981,28 @@
     Log(("eax=%08x ebx=%08x ecx=%08x edx=%08x esi=%08x edi=%08x\n"
          "eip=%08x esp=%08x ebp=%08x iopl=%d %*s\n"
-         "cs={%04x base=%08x limit=%08x flags=%08x} dr0=%08RX64 dr1=%08RX64\n"
-         "ds={%04x base=%08x limit=%08x flags=%08x} dr2=%08RX64 dr3=%08RX64\n"
-         "es={%04x base=%08x limit=%08x flags=%08x} dr4=%08RX64 dr5=%08RX64\n"
-         "fs={%04x base=%08x limit=%08x flags=%08x} dr6=%08RX64 dr7=%08RX64\n"
+         "cs={%04x base=%VGv limit=%08x flags=%08x} dr0=%08RX64 dr1=%08RX64\n"
+         "ds={%04x base=%VGv limit=%08x flags=%08x} dr2=%08RX64 dr3=%08RX64\n"
+         "es={%04x base=%VGv limit=%08x flags=%08x} dr4=%08RX64 dr5=%08RX64\n"
+         "fs={%04x base=%VGv limit=%08x flags=%08x} dr6=%08RX64 dr7=%08RX64\n"
          ,
          pCtx->eax, pCtx->ebx, pCtx->ecx, pCtx->edx, pCtx->esi, pCtx->edi,
          pCtx->eip, pCtx->esp, pCtx->ebp, X86_EFL_GET_IOPL(efl), 31, szEFlags,
-         (RTSEL)pCtx->cs, pCtx->csHid.u32Base, pCtx->csHid.u32Limit, pCtx->csHid.Attr.u, pCtx->dr0,  pCtx->dr1,
-         (RTSEL)pCtx->ds, pCtx->dsHid.u32Base, pCtx->dsHid.u32Limit, pCtx->dsHid.Attr.u, pCtx->dr2,  pCtx->dr3,
-         (RTSEL)pCtx->es, pCtx->esHid.u32Base, pCtx->esHid.u32Limit, pCtx->esHid.Attr.u, pCtx->dr4,  pCtx->dr5,
-         (RTSEL)pCtx->fs, pCtx->fsHid.u32Base, pCtx->fsHid.u32Limit, pCtx->fsHid.Attr.u, pCtx->dr6,  pCtx->dr7));
-
-    Log(("gs={%04x base=%08x limit=%08x flags=%08x} cr0=%08RX64 cr2=%08RX64\n"
-         "ss={%04x base=%08x limit=%08x flags=%08x} cr3=%08RX64 cr4=%08RX64\n"
+         (RTSEL)pCtx->cs, pCtx->csHid.u64Base, pCtx->csHid.u32Limit, pCtx->csHid.Attr.u, pCtx->dr0,  pCtx->dr1,
+         (RTSEL)pCtx->ds, pCtx->dsHid.u64Base, pCtx->dsHid.u32Limit, pCtx->dsHid.Attr.u, pCtx->dr2,  pCtx->dr3,
+         (RTSEL)pCtx->es, pCtx->esHid.u64Base, pCtx->esHid.u32Limit, pCtx->esHid.Attr.u, pCtx->dr4,  pCtx->dr5,
+         (RTSEL)pCtx->fs, pCtx->fsHid.u64Base, pCtx->fsHid.u32Limit, pCtx->fsHid.Attr.u, pCtx->dr6,  pCtx->dr7));
+
+    Log(("gs={%04x base=%VGv limit=%08x flags=%08x} cr0=%08RX64 cr2=%08RX64\n"
+         "ss={%04x base=%VGv limit=%08x flags=%08x} cr3=%08RX64 cr4=%08RX64\n"
          "gdtr=%08x:%04x  idtr=%08x:%04x  eflags=%08x\n"
-         "ldtr={%04x base=%08x limit=%08x flags=%08x}\n"
-         "tr  ={%04x base=%08x limit=%08x flags=%08x}\n"
+         "ldtr={%04x base=%VGv limit=%08x flags=%08x}\n"
+         "tr  ={%04x base=%VGv limit=%08x flags=%08x}\n"
          "SysEnter={cs=%04llx eip=%08llx esp=%08llx}\n"
          "FCW=%04x FSW=%04x FTW=%04x\n",
-         (RTSEL)pCtx->gs, pCtx->gsHid.u32Base, pCtx->gsHid.u32Limit, pCtx->gsHid.Attr.u, pCtx->cr0,  pCtx->cr2,
-         (RTSEL)pCtx->ss, pCtx->ssHid.u32Base, pCtx->ssHid.u32Limit, pCtx->ssHid.Attr.u, pCtx->cr3,  pCtx->cr4,
+         (RTSEL)pCtx->gs, pCtx->gsHid.u64Base, pCtx->gsHid.u32Limit, pCtx->gsHid.Attr.u, pCtx->cr0,  pCtx->cr2,
+         (RTSEL)pCtx->ss, pCtx->ssHid.u64Base, pCtx->ssHid.u32Limit, pCtx->ssHid.Attr.u, pCtx->cr3,  pCtx->cr4,
          pCtx->gdtr.pGdt, pCtx->gdtr.cbGdt, pCtx->idtr.pIdt, pCtx->idtr.cbIdt, efl,
-         (RTSEL)pCtx->ldtr, pCtx->ldtrHid.u32Base, pCtx->ldtrHid.u32Limit, pCtx->ldtrHid.Attr.u,
-         (RTSEL)pCtx->tr, pCtx->trHid.u32Base, pCtx->trHid.u32Limit, pCtx->trHid.Attr.u,
+         (RTSEL)pCtx->ldtr, pCtx->ldtrHid.u64Base, pCtx->ldtrHid.u32Limit, pCtx->ldtrHid.Attr.u,
+         (RTSEL)pCtx->tr, pCtx->trHid.u64Base, pCtx->trHid.u32Limit, pCtx->trHid.Attr.u,
          pCtx->SysEnter.cs, pCtx->SysEnter.eip, pCtx->SysEnter.esp,
          pCtx->fpu.FCW, pCtx->fpu.FSW, pCtx->fpu.FTW));
Index: /trunk/src/VBox/VMM/VMMR0/HWSVMR0.h
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/HWSVMR0.h	(revision 9420)
+++ /trunk/src/VBox/VMM/VMMR0/HWSVMR0.h	(revision 9421)
@@ -143,5 +143,5 @@
         pVMCB->guest.REG.u16Sel   = pCtx->reg;                          \
         pVMCB->guest.REG.u32Limit = pCtx->reg##Hid.u32Limit;            \
-        pVMCB->guest.REG.u64Base  = pCtx->reg##Hid.u32Base;             \
+        pVMCB->guest.REG.u64Base  = pCtx->reg##Hid.u64Base;             \
         pVMCB->guest.REG.u16Attr  = SVM_HIDSEGATTR_VMX2SVM(pCtx->reg##Hid.Attr.u);
 
@@ -149,5 +149,5 @@
         pCtx->reg                = pVMCB->guest.REG.u16Sel;             \
         pCtx->reg##Hid.u32Limit  = pVMCB->guest.REG.u32Limit;           \
-        pCtx->reg##Hid.u32Base   = pVMCB->guest.REG.u64Base;            \
+        pCtx->reg##Hid.u64Base   = pVMCB->guest.REG.u64Base;            \
         pCtx->reg##Hid.Attr.u    = SVM_HIDSEGATTR_SVM2VMX(pVMCB->guest.REG.u16Attr);
 
Index: /trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp	(revision 9420)
+++ /trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp	(revision 9421)
@@ -703,5 +703,5 @@
             rc =  VMXWriteVMCS(VMX_VMCS_GUEST_FIELD_LDTR,         pCtx->ldtr);
             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_LDTR_LIMIT,         pCtx->ldtrHid.u32Limit);
-            rc |= VMXWriteVMCS(VMX_VMCS_GUEST_LDTR_BASE,          pCtx->ldtrHid.u32Base);
+            rc |= VMXWriteVMCS(VMX_VMCS_GUEST_LDTR_BASE,          pCtx->ldtrHid.u64Base);
             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_LDTR_ACCESS_RIGHTS, pCtx->ldtrHid.Attr.u);
         }
@@ -722,5 +722,5 @@
         {
             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_TR_LIMIT,         pCtx->trHid.u32Limit);
-            rc |= VMXWriteVMCS(VMX_VMCS_GUEST_TR_BASE,          pCtx->trHid.u32Base);
+            rc |= VMXWriteVMCS(VMX_VMCS_GUEST_TR_BASE,          pCtx->trHid.u64Base);
         }
         val = pCtx->trHid.Attr.u;
Index: /trunk/src/VBox/VMM/VMMR0/HWVMXR0.h
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/HWVMXR0.h	(revision 9420)
+++ /trunk/src/VBox/VMM/VMMR0/HWVMXR0.h	(revision 9421)
@@ -140,5 +140,5 @@
         rc  = VMXWriteVMCS(VMX_VMCS_GUEST_FIELD_##REG,      pCtx->reg);                         \
         rc |= VMXWriteVMCS(VMX_VMCS_GUEST_##REG##_LIMIT,    pCtx->reg##Hid.u32Limit);           \
-        rc |= VMXWriteVMCS(VMX_VMCS_GUEST_##REG##_BASE,     pCtx->reg##Hid.u32Base);            \
+        rc |= VMXWriteVMCS(VMX_VMCS_GUEST_##REG##_BASE,     pCtx->reg##Hid.u64Base);            \
         if (pCtx->eflags.u32 & X86_EFL_VM)                                                      \
             val = pCtx->reg##Hid.Attr.u;                                                        \
@@ -157,5 +157,5 @@
         pCtx->reg##Hid.u32Limit    = val;                            \
         VMXReadVMCS(VMX_VMCS_GUEST_##REG##_BASE,          &val);     \
-        pCtx->reg##Hid.u32Base     = val;                            \
+        pCtx->reg##Hid.u64Base     = val;                            \
         VMXReadVMCS(VMX_VMCS_GUEST_##REG##_ACCESS_RIGHTS, &val);     \
         pCtx->reg##Hid.Attr.u    = val;
Index: /trunk/src/VBox/VMM/VMMTests.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMTests.cpp	(revision 9420)
+++ /trunk/src/VBox/VMM/VMMTests.cpp	(revision 9421)
@@ -437,5 +437,5 @@
             AssertRC(rc);                                                               \
                                                                                         \
-            pHyperCtx->reg##Hid.u32Base              = selInfo.GCPtrBase;               \
+            pHyperCtx->reg##Hid.u64Base              = selInfo.GCPtrBase;               \
             pHyperCtx->reg##Hid.u32Limit             = selInfo.cbLimit;                 \
             pHyperCtx->reg##Hid.Attr.n.u1Present     = selInfo.Raw.Gen.u1Present;       \
Index: /trunk/src/recompiler/VBoxRecompiler.c
===================================================================
--- /trunk/src/recompiler/VBoxRecompiler.c	(revision 9420)
+++ /trunk/src/recompiler/VBoxRecompiler.c	(revision 9421)
@@ -1109,20 +1109,20 @@
 
         Ctx.tr             = env->tr.selector;
-        Ctx.trHid.u32Base  = (uint32_t)env->tr.base;
+        Ctx.trHid.u64Base  = env->tr.base;
         Ctx.trHid.u32Limit = env->tr.limit;
         Ctx.trHid.Attr.u   = (env->tr.flags >> 8) & 0xF0FF;
 
         Ctx.idtr.cbIdt     = env->idt.limit;
-        Ctx.idtr.pIdt      = (uint32_t)env->idt.base;
+        Ctx.idtr.pIdt      = env->idt.base;
 
         Ctx.eflags.u32     = env->eflags;
 
         Ctx.cs             = env->segs[R_CS].selector;
-        Ctx.csHid.u32Base  = (uint32_t)env->segs[R_CS].base;
+        Ctx.csHid.u64Base  = env->segs[R_CS].base;
         Ctx.csHid.u32Limit = env->segs[R_CS].limit;
         Ctx.csHid.Attr.u   = (env->segs[R_CS].flags >> 8) & 0xF0FF;
 
         Ctx.ss             = env->segs[R_SS].selector;
-        Ctx.ssHid.u32Base  = (uint32_t)env->segs[R_SS].base;
+        Ctx.ssHid.u64Base  = env->segs[R_SS].base;
         Ctx.ssHid.u32Limit = env->segs[R_SS].limit;
         Ctx.ssHid.Attr.u   = (env->segs[R_SS].flags >> 8) & 0xF0FF;
@@ -1753,5 +1753,5 @@
             {
                 pVM->rem.s.Env.ldt.selector = pCtx->ldtr;
-                pVM->rem.s.Env.ldt.base     = pCtx->ldtrHid.u32Base;
+                pVM->rem.s.Env.ldt.base     = pCtx->ldtrHid.u64Base;
                 pVM->rem.s.Env.ldt.limit    = pCtx->ldtrHid.u32Limit;
                 pVM->rem.s.Env.ldt.flags    = (pCtx->ldtrHid.Attr.u << 8) & 0xFFFFFF;;
@@ -1766,5 +1766,5 @@
             {
                 pVM->rem.s.Env.tr.selector = pCtx->tr;
-                pVM->rem.s.Env.tr.base     = pCtx->trHid.u32Base;
+                pVM->rem.s.Env.tr.base     = pCtx->trHid.u64Base;
                 pVM->rem.s.Env.tr.limit    = pCtx->trHid.u32Limit;
                 pVM->rem.s.Env.tr.flags    = (pCtx->trHid.Attr.u << 8) & 0xFFFFFF;;
@@ -1808,10 +1808,10 @@
         cpu_x86_set_cpl(&pVM->rem.s.Env, CPUMGetGuestCPL(pVM, CPUMCTX2CORE(pCtx)));
 
-        cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_CS, pCtx->cs, pCtx->csHid.u32Base, pCtx->csHid.u32Limit, (pCtx->csHid.Attr.u << 8) & 0xFFFFFF);
-        cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_SS, pCtx->ss, pCtx->ssHid.u32Base, pCtx->ssHid.u32Limit, (pCtx->ssHid.Attr.u << 8) & 0xFFFFFF);
-        cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_DS, pCtx->ds, pCtx->dsHid.u32Base, pCtx->dsHid.u32Limit, (pCtx->dsHid.Attr.u << 8) & 0xFFFFFF);
-        cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_ES, pCtx->es, pCtx->esHid.u32Base, pCtx->esHid.u32Limit, (pCtx->esHid.Attr.u << 8) & 0xFFFFFF);
-        cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_FS, pCtx->fs, pCtx->fsHid.u32Base, pCtx->fsHid.u32Limit, (pCtx->fsHid.Attr.u << 8) & 0xFFFFFF);
-        cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_GS, pCtx->gs, pCtx->gsHid.u32Base, pCtx->gsHid.u32Limit, (pCtx->gsHid.Attr.u << 8) & 0xFFFFFF);
+        cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_CS, pCtx->cs, pCtx->csHid.u64Base, pCtx->csHid.u32Limit, (pCtx->csHid.Attr.u << 8) & 0xFFFFFF);
+        cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_SS, pCtx->ss, pCtx->ssHid.u64Base, pCtx->ssHid.u32Limit, (pCtx->ssHid.Attr.u << 8) & 0xFFFFFF);
+        cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_DS, pCtx->ds, pCtx->dsHid.u64Base, pCtx->dsHid.u32Limit, (pCtx->dsHid.Attr.u << 8) & 0xFFFFFF);
+        cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_ES, pCtx->es, pCtx->esHid.u64Base, pCtx->esHid.u32Limit, (pCtx->esHid.Attr.u << 8) & 0xFFFFFF);
+        cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_FS, pCtx->fs, pCtx->fsHid.u64Base, pCtx->fsHid.u32Limit, (pCtx->fsHid.Attr.u << 8) & 0xFFFFFF);
+        cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_GS, pCtx->gs, pCtx->gsHid.u64Base, pCtx->gsHid.u32Limit, (pCtx->gsHid.Attr.u << 8) & 0xFFFFFF);
     }
     else
@@ -2165,34 +2165,34 @@
 
     /** @todo These values could still be out of sync! */
-    pCtx->csHid.u32Base    = (uint32_t)pVM->rem.s.Env.segs[R_CS].base;
+    pCtx->csHid.u64Base    = pVM->rem.s.Env.segs[R_CS].base;
     pCtx->csHid.u32Limit   = pVM->rem.s.Env.segs[R_CS].limit;
     /** @note QEmu saves the 2nd dword of the descriptor; we should store the attribute word only! */
     pCtx->csHid.Attr.u     = (pVM->rem.s.Env.segs[R_CS].flags >> 8) & 0xF0FF;
 
-    pCtx->dsHid.u32Base    = (uint32_t)pVM->rem.s.Env.segs[R_DS].base;
+    pCtx->dsHid.u64Base    = pVM->rem.s.Env.segs[R_DS].base;
     pCtx->dsHid.u32Limit   = pVM->rem.s.Env.segs[R_DS].limit;
     pCtx->dsHid.Attr.u     = (pVM->rem.s.Env.segs[R_DS].flags >> 8) & 0xF0FF;
 
-    pCtx->esHid.u32Base    = (uint32_t)pVM->rem.s.Env.segs[R_ES].base;
+    pCtx->esHid.u64Base    = pVM->rem.s.Env.segs[R_ES].base;
     pCtx->esHid.u32Limit   = pVM->rem.s.Env.segs[R_ES].limit;
     pCtx->esHid.Attr.u     = (pVM->rem.s.Env.segs[R_ES].flags >> 8) & 0xF0FF;
 
-    pCtx->fsHid.u32Base    = (uint32_t)pVM->rem.s.Env.segs[R_FS].base;
+    pCtx->fsHid.u64Base    = pVM->rem.s.Env.segs[R_FS].base;
     pCtx->fsHid.u32Limit   = pVM->rem.s.Env.segs[R_FS].limit;
     pCtx->fsHid.Attr.u     = (pVM->rem.s.Env.segs[R_FS].flags >> 8) & 0xF0FF;
 
-    pCtx->gsHid.u32Base    = (uint32_t)pVM->rem.s.Env.segs[R_GS].base;
+    pCtx->gsHid.u64Base    = pVM->rem.s.Env.segs[R_GS].base;
     pCtx->gsHid.u32Limit   = pVM->rem.s.Env.segs[R_GS].limit;
     pCtx->gsHid.Attr.u     = (pVM->rem.s.Env.segs[R_GS].flags >> 8) & 0xF0FF;
 
-    pCtx->ssHid.u32Base    = (uint32_t)pVM->rem.s.Env.segs[R_SS].base;
+    pCtx->ssHid.u64Base    = pVM->rem.s.Env.segs[R_SS].base;
     pCtx->ssHid.u32Limit   = pVM->rem.s.Env.segs[R_SS].limit;
     pCtx->ssHid.Attr.u     = (pVM->rem.s.Env.segs[R_SS].flags >> 8) & 0xF0FF;
 
-    pCtx->ldtrHid.u32Base  = (uint32_t)pVM->rem.s.Env.ldt.base;
+    pCtx->ldtrHid.u64Base  = pVM->rem.s.Env.ldt.base;
     pCtx->ldtrHid.u32Limit = pVM->rem.s.Env.ldt.limit;
     pCtx->ldtrHid.Attr.u   = (pVM->rem.s.Env.ldt.flags >> 8) & 0xF0FF;
 
-    pCtx->trHid.u32Base    = (uint32_t)pVM->rem.s.Env.tr.base;
+    pCtx->trHid.u64Base    = pVM->rem.s.Env.tr.base;
     pCtx->trHid.u32Limit   = pVM->rem.s.Env.tr.limit;
     pCtx->trHid.Attr.u     = (pVM->rem.s.Env.tr.flags >> 8) & 0xF0FF;
@@ -2367,34 +2367,34 @@
 
     /** @todo These values could still be out of sync! */
-    pCtx->csHid.u32Base    = (uint32_t)pVM->rem.s.Env.segs[R_CS].base;
+    pCtx->csHid.u64Base    = pVM->rem.s.Env.segs[R_CS].base;
     pCtx->csHid.u32Limit   = pVM->rem.s.Env.segs[R_CS].limit;
     /** @note QEmu saves the 2nd dword of the descriptor; we should store the attribute word only! */
     pCtx->csHid.Attr.u     = (pVM->rem.s.Env.segs[R_CS].flags >> 8) & 0xFFFF;
 
-    pCtx->dsHid.u32Base    = (uint32_t)pVM->rem.s.Env.segs[R_DS].base;
+    pCtx->dsHid.u64Base    = pVM->rem.s.Env.segs[R_DS].base;
     pCtx->dsHid.u32Limit   = pVM->rem.s.Env.segs[R_DS].limit;
     pCtx->dsHid.Attr.u     = (pVM->rem.s.Env.segs[R_DS].flags >> 8) & 0xFFFF;
 
-    pCtx->esHid.u32Base    = (uint32_t)pVM->rem.s.Env.segs[R_ES].base;
+    pCtx->esHid.u64Base    = pVM->rem.s.Env.segs[R_ES].base;
     pCtx->esHid.u32Limit   = pVM->rem.s.Env.segs[R_ES].limit;
     pCtx->esHid.Attr.u     = (pVM->rem.s.Env.segs[R_ES].flags >> 8) & 0xFFFF;
 
-    pCtx->fsHid.u32Base    = (uint32_t)pVM->rem.s.Env.segs[R_FS].base;
+    pCtx->fsHid.u64Base    = pVM->rem.s.Env.segs[R_FS].base;
     pCtx->fsHid.u32Limit   = pVM->rem.s.Env.segs[R_FS].limit;
     pCtx->fsHid.Attr.u     = (pVM->rem.s.Env.segs[R_FS].flags >> 8) & 0xFFFF;
 
-    pCtx->gsHid.u32Base    = (uint32_t)pVM->rem.s.Env.segs[R_GS].base;
+    pCtx->gsHid.u64Base    = pVM->rem.s.Env.segs[R_GS].base;
     pCtx->gsHid.u32Limit   = pVM->rem.s.Env.segs[R_GS].limit;
     pCtx->gsHid.Attr.u     = (pVM->rem.s.Env.segs[R_GS].flags >> 8) & 0xFFFF;
 
-    pCtx->ssHid.u32Base    = (uint32_t)pVM->rem.s.Env.segs[R_SS].base;
+    pCtx->ssHid.u64Base    = pVM->rem.s.Env.segs[R_SS].base;
     pCtx->ssHid.u32Limit   = pVM->rem.s.Env.segs[R_SS].limit;
     pCtx->ssHid.Attr.u     = (pVM->rem.s.Env.segs[R_SS].flags >> 8) & 0xFFFF;
 
-    pCtx->ldtrHid.u32Base  = (uint32_t)pVM->rem.s.Env.ldt.base;
+    pCtx->ldtrHid.u64Base  = pVM->rem.s.Env.ldt.base;
     pCtx->ldtrHid.u32Limit = pVM->rem.s.Env.ldt.limit;
     pCtx->ldtrHid.Attr.u   = (pVM->rem.s.Env.ldt.flags >> 8) & 0xFFFF;
 
-    pCtx->trHid.u32Base    = (uint32_t)pVM->rem.s.Env.tr.base;
+    pCtx->trHid.u64Base    = pVM->rem.s.Env.tr.base;
     pCtx->trHid.u32Limit   = pVM->rem.s.Env.tr.limit;
     pCtx->trHid.Attr.u     = (pVM->rem.s.Env.tr.flags >> 8) & 0xFFFF;
