Changeset 51283 in vbox for trunk/include/VBox/vmm
- Timestamp:
- May 19, 2014 7:48:18 AM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 93750
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/cpum.h
r51281 r51283 30 30 #include <VBox/types.h> 31 31 #include <VBox/vmm/cpumctx.h> 32 #include <VBox/vmm/stam.h> 32 33 33 34 RT_C_DECLS_BEGIN … … 329 330 typedef CPUMUKNOWNCPUID *PCPUMUKNOWNCPUID; 330 331 332 333 /** 334 * MSR range. 335 */ 336 typedef struct CPUMMSRRANGE 337 { 338 /** The first MSR. [0] */ 339 uint32_t uFirst; 340 /** The last MSR. [4] */ 341 uint32_t uLast; 342 /** The read function (CPUMMSRRDFN). [8] */ 343 uint16_t enmRdFn; 344 /** The write function (CPUMMSRWRFN). [10] */ 345 uint16_t enmWrFn; 346 /** The offset of the 64-bit MSR value relative to the start of CPUMCPU. 347 * UINT16_MAX if not used by the read and write functions. [12] */ 348 uint16_t offCpumCpu; 349 /** Reserved for future hacks. [14] */ 350 uint16_t fReserved; 351 /** The init/read value. [16] 352 * When enmRdFn is kCpumMsrRdFn_INIT_VALUE, this is the value returned on RDMSR. 353 * offCpumCpu must be UINT16_MAX in that case, otherwise it must be a valid 354 * offset into CPUM. */ 355 uint64_t uValue; 356 /** The bits to ignore when writing. [24] */ 357 uint64_t fWrIgnMask; 358 /** The bits that will cause a GP(0) when writing. [32] 359 * This is always checked prior to calling the write function. Using 360 * UINT64_MAX effectively marks the MSR as read-only. */ 361 uint64_t fWrGpMask; 362 /** The register name, if applicable. [40] */ 363 char szName[56]; 364 365 #ifdef VBOX_WITH_STATISTICS 366 /** The number of reads. */ 367 STAMCOUNTER cReads; 368 /** The number of writes. */ 369 STAMCOUNTER cWrites; 370 /** The number of times ignored bits were written. */ 371 STAMCOUNTER cIgnoredBits; 372 /** The number of GPs generated. */ 373 STAMCOUNTER cGps; 374 #endif 375 } CPUMMSRRANGE; 376 #ifdef VBOX_WITH_STATISTICS 377 AssertCompileSize(CPUMMSRRANGE, 128); 378 #else 379 AssertCompileSize(CPUMMSRRANGE, 96); 380 #endif 381 /** Pointer to an MSR range. */ 382 typedef CPUMMSRRANGE *PCPUMMSRRANGE; 383 /** Pointer to a const MSR range. */ 384 typedef CPUMMSRRANGE const *PCCPUMMSRRANGE; 331 385 332 386 … … 725 779 VMMR3DECL(const char *) CPUMR3CpuVendorName(CPUMCPUVENDOR enmVendor); 726 780 781 VMMR3DECL(int) CPUMR3MsrRangesInsert(PVM pVM, PCCPUMMSRRANGE pNewRange); 782 727 783 /** @} */ 728 784 #endif /* IN_RING3 */
Note:
See TracChangeset
for help on using the changeset viewer.