Index: /trunk/src/VBox/VMM/CPUM.cpp
===================================================================
--- /trunk/src/VBox/VMM/CPUM.cpp	(revision 464)
+++ /trunk/src/VBox/VMM/CPUM.cpp	(revision 465)
@@ -133,4 +133,8 @@
         pVM->cpum.s.CR4.OrMask  = X86_CR4_OSFSXR;
     }
+
+#ifdef CPUM_TRAP_RDTSC
+    pVM->cpum.s.CR4.OrMask |= X86_CR4_TSD;
+#endif
 
     if (!pVM->cpum.s.CPUFeatures.edx.u1MMX)
Index: /trunk/src/VBox/VMM/VMMGC/TRPMGCHandlers.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMGC/TRPMGCHandlers.cpp	(revision 464)
+++ /trunk/src/VBox/VMM/VMMGC/TRPMGCHandlers.cpp	(revision 465)
@@ -572,4 +572,20 @@
             return trpmGCExitTrap(pVM, rc, pRegFrame);
         }
+
+        case OP_RDTSC:
+        {
+            unsigned uCR4 = CPUMGetGuestCR4(pVM);
+
+            if (uCR4 & X86_CR4_TSD)
+                break; /* genuine #GP */
+
+            uint64_t uTicks = TMCpuTickGet(pVM);
+
+            pRegFrame->eax = uTicks;
+            pRegFrame->edx = (uTicks >> 32ULL);
+
+            pRegFrame->eip += pCpu->opsize;
+            return trpmGCExitTrap(pVM, VINF_SUCCESS, pRegFrame);
+        }
     }
 
