Index: /trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp	(revision 54817)
+++ /trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp	(revision 54818)
@@ -4372,5 +4372,5 @@
                         "         %s\n"
                         "     Leaf/sub-leaf  eax      ebx      ecx      edx\n", pszTitle);
-        while (   pCurLeaf - paLeaves < cLeaves
+        while (   (uintptr_t)(pCurLeaf - paLeaves) < cLeaves
                && pCurLeaf->uLeaf <= uUpToLeaf)
         {
@@ -4439,5 +4439,5 @@
         {
             ASMCpuIdExSlow(uLeaf, 0, uSubLeaf, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx);
-            if (   pCurLeaf - paLeaves < cLeaves
+            if (   (uintptr_t)(pCurLeaf - paLeaves) < cLeaves
                 && pCurLeaf->uLeaf    == uLeaf
                 && pCurLeaf->uSubLeaf == uSubLeaf)
@@ -4458,5 +4458,5 @@
 
             /* Done? */
-            if (   (   pCurLeaf - paLeaves >= cLeaves
+            if (   (   (uintptr_t)(pCurLeaf - paLeaves) >= cLeaves
                     || pCurLeaf->uLeaf != uLeaf)
                 && (   (uLeaf == 0x4 && ((Host.uEax & 0x000f) == 0 || (Host.uEax & 0x000f) >= 8))
@@ -4687,5 +4687,5 @@
     ASMCpuIdExSlow(UINT32_C(0x40000000), 0, 0, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx);
     cHstMax  = Host.uEax >= UINT32_C(0x40000001) && Host.uEax <= UINT32_C(0x40000fff) ? Host.uEax : 0;
-    cGstMax  = pCurLeaf - paLeaves < cLeaves && pCurLeaf->uLeaf == UINT32_C(0x40000000)
+    cGstMax  = (uintptr_t)(pCurLeaf - paLeaves) < cLeaves && pCurLeaf->uLeaf == UINT32_C(0x40000000)
              ? RT_MIN(pCurLeaf->uEax, UINT32_C(0x40000fff)) : 0;
     cMax     = RT_MAX(cHstMax, cGstMax);
@@ -4708,5 +4708,5 @@
     ASMCpuIdExSlow(UINT32_C(0x80000000), 0, 0, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx);
     cHstMax  = ASMIsValidExtRange(Host.uEax) ? RT_MIN(Host.uEax, UINT32_C(0x80000fff)) : 0;
-    cGstMax  = pCurLeaf - paLeaves < cLeaves && pCurLeaf->uLeaf == UINT32_C(0x80000000)
+    cGstMax  = (uintptr_t)(pCurLeaf - paLeaves) < cLeaves && pCurLeaf->uLeaf == UINT32_C(0x80000000)
              ? RT_MIN(pCurLeaf->uEax, UINT32_C(0x80000fff)) : 0;
     cMax     = RT_MAX(cHstMax, cGstMax);
@@ -4727,5 +4727,5 @@
             {
                 ASMCpuIdExSlow(uLeaf, 0, uSubLeaf, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx);
-                if (   pCurLeaf - paLeaves < cLeaves
+                if (   (uintptr_t)(pCurLeaf - paLeaves) < cLeaves
                     && pCurLeaf->uLeaf    == uLeaf
                     && pCurLeaf->uSubLeaf == uSubLeaf)
@@ -4746,5 +4746,5 @@
 
                 /* Done? */
-                if (   (   pCurLeaf - paLeaves >= cLeaves
+                if (   (   (uintptr_t)(pCurLeaf - paLeaves) >= cLeaves
                         || pCurLeaf->uLeaf != uLeaf)
                     && (uLeaf == UINT32_C(0x8000001d) && ((Host.uEax & 0x000f) == 0 || (Host.uEax & 0x000f) >= 8)) )
@@ -5047,5 +5047,5 @@
     cHstMax  = Host.uEax >= UINT32_C(0xc0000001) && Host.uEax <= UINT32_C(0xc0000fff)
              ? RT_MIN(Host.uEax,      UINT32_C(0xc0000fff)) : 0;
-    cGstMax  = pCurLeaf - paLeaves < cLeaves && pCurLeaf->uLeaf == UINT32_C(0xc0000000)
+    cGstMax  = (uintptr_t)(pCurLeaf - paLeaves) < cLeaves && pCurLeaf->uLeaf == UINT32_C(0xc0000000)
              ? RT_MIN(pCurLeaf->uEax, UINT32_C(0xc0000fff)) : 0;
     cMax     = RT_MAX(cHstMax, cGstMax);
