Changeset 22037 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Aug 6, 2009 3:27:25 PM (15 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/CPUM.cpp
r21353 r22037 534 534 * info too in these leaves (like words about having a constant TSC). 535 535 */ 536 #if 0 537 /** @todo NT4 installation regression - investigate */ 538 /** Note from Intel manuals: 539 * CPUID leaves > 3 < 80000000 are visible only when 540 * IA32_MISC_ENABLES.BOOT_NT4[bit 22] = 0 (default). 541 * 542 */ 543 if (pCPUM->aGuestCpuIdStd[0].eax > 5) 544 pCPUM->aGuestCpuIdStd[0].eax = 5; 545 #else 546 if (pCPUM->aGuestCpuIdStd[0].eax > 2) 547 pCPUM->aGuestCpuIdStd[0].eax = 2; 548 #endif 536 if (pCPUM->aGuestCpuIdStd[0].eax > pVM->cCpuidLeafs) 537 pCPUM->aGuestCpuIdStd[0].eax = pVM->cCpuidLeafs; 538 549 539 for (i = pCPUM->aGuestCpuIdStd[0].eax + 1; i < RT_ELEMENTS(pCPUM->aGuestCpuIdStd); i++) 550 540 pCPUM->aGuestCpuIdStd[i] = pCPUM->GuestCpuIdDef; -
trunk/src/VBox/VMM/VM.cpp
r20864 r22037 594 594 rc = VERR_INVALID_PARAMETER; 595 595 } 596 } 597 /* 598 * Set correct CPUID leafs limit, some guests types, 599 * notably Win NT 4.0 may wish to override this value. 600 */ 601 if (RT_SUCCESS(rc)) 602 { 603 uint32_t cCpuidLeafs; 604 rc = CFGMR3QueryU32Def(CFGMR3GetRoot(pVM), "CpuidLeafs", &cCpuidLeafs, 5); 605 pVM->cCpuidLeafs = cCpuidLeafs; 596 606 } 597 607 if (RT_SUCCESS(rc)) … … 3572 3582 return pUVCpu->vm.s.ThreadEMT; 3573 3583 } 3574 -
trunk/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp
r21252 r22037 1065 1065 pCpuId = &pVM->cpum.s.GuestCpuIdDef; 1066 1066 1067 bool fHasMoreCaches = (*pEcx == 0); 1068 1067 1069 *pEax = pCpuId->eax; 1068 1070 *pEbx = pCpuId->ebx; … … 1076 1078 Assert(pVCpu->idCpu <= 255); 1077 1079 *pEbx |= (pVCpu->idCpu << 24); 1080 } 1081 1082 if ( iLeaf == 4 && fHasMoreCaches && 1083 pVM->cpum.s.enmCPUVendor == CPUMCPUVENDOR_INTEL) 1084 { 1085 /* Report unified L0 cache, Linux'es num_cpu_cores() requires 1086 * that to be non-0 to detect core count correctly. */ 1087 *pEax |= (1 << 5) | 3; 1078 1088 } 1079 1089 … … 2048 2058 return enmMode; 2049 2059 } 2050 -
trunk/src/VBox/VMM/VMMAll/EMAll.cpp
r21174 r22037 1985 1985 pRegFrame->rax = 0; 1986 1986 pRegFrame->rbx = 0; 1987 pRegFrame->rcx = 0;1987 pRegFrame->rcx &= UINT64_C(0x00000000ffffffff); 1988 1988 pRegFrame->rdx = 0; 1989 1989
Note:
See TracChangeset
for help on using the changeset viewer.