Changeset 46314 in vbox
- Timestamp:
- May 29, 2013 2:27:46 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 86080
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/hm_svm.h
r46311 r46314 457 457 * SVM Event injection structure (EVENTINJ and EXITINTINFO). 458 458 */ 459 #pragma pack(1)460 459 typedef union 461 460 { … … 469 468 uint32_t u32ErrorCode : 32; 470 469 } n; 471 uint64_t au64[1];470 uint64_t u; 472 471 } SVMEVENT; 473 #pragma pack()474 472 475 473 … … 477 475 * SVM Interrupt control structure (Virtual Interrupt Control). 478 476 */ 479 #pragma pack(1)480 477 typedef union 481 478 { … … 494 491 uint32_t u24Reserved : 24; 495 492 } n; 496 uint64_t au64[1];493 uint64_t u; 497 494 } SVMINTCTRL; 498 #pragma pack()499 500 495 501 496 /** 502 497 * SVM TLB control structure. 503 498 */ 504 #pragma pack(1)505 499 typedef union 506 500 { … … 511 505 uint32_t u24Reserved : 24; 512 506 } n; 513 uint64_t au64[1];507 uint64_t u; 514 508 } SVMTLBCTRL; 515 #pragma pack()516 517 509 518 510 /** 519 511 * SVM IOIO exit structure (EXITINFO1 for IOIO intercepts). 520 512 */ 521 #pragma pack(1)522 513 typedef union 523 514 { … … 537 528 uint32_t u16Port : 16; 538 529 } n; 539 uint32_t au32[1];530 uint32_t u; 540 531 } SVMIOIOEXIT; 541 #pragma pack()542 532 543 533 /** 544 534 * SVM nested paging structure. 545 535 */ 546 #pragma pack(1)547 536 typedef union 548 537 { … … 551 540 uint32_t u1NestedPaging : 1; /**< enabled/disabled */ 552 541 } n; 553 uint64_t au64[1];542 uint64_t u; 554 543 } SVMNPCTRL; 555 #pragma pack()556 544 557 545 /** 558 546 * SVM AVIC. 559 547 */ 560 #pragma pack(1)561 548 typedef union 562 549 { … … 569 556 uint64_t u; 570 557 } SVMAVIC; 571 #pragma pack()572 558 573 559 /** 574 560 * SVM AVIC PHYSICAL_TABLE pointer. 575 561 */ 576 #pragma pack(1)577 562 typedef union 578 563 { … … 586 571 uint64_t u; 587 572 } SVMAVICPHYS; 588 #pragma pack()589 573 590 574 /** -
trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp
r46310 r46314 524 524 { 525 525 #ifdef VBOX_STRICT 526 Log(("SVM: Set pending event: intInfo=%016llx\n", pEvent-> au64[0]));526 Log(("SVM: Set pending event: intInfo=%016llx\n", pEvent->u)); 527 527 #endif 528 528 … … 531 531 532 532 /* Set pending event state. */ 533 pVCpu->hm.s.Event.u64IntrInfo = pEvent->au64[0];534 pVCpu->hm.s.Event.fPending = true;533 pVCpu->hm.s.Event.u64IntrInfo = pEvent->u; 534 pVCpu->hm.s.Event.fPending = true; 535 535 } 536 536 … … 553 553 { 554 554 Log(("SVM: Inject int %d at %RGv error code=%02x CR2=%RGv intInfo=%08x\n", pEvent->n.u8Vector, 555 (RTGCPTR)pCtx->rip, pEvent->n.u32ErrorCode, (RTGCPTR)pCtx->cr2, pEvent-> au64[0]));555 (RTGCPTR)pCtx->rip, pEvent->n.u32ErrorCode, (RTGCPTR)pCtx->cr2, pEvent->u)); 556 556 } 557 557 else if (pEvent->n.u8Vector < 0x20) … … 566 566 567 567 /* Set event injection state. */ 568 pVmcb->ctrl.EventInject. au64[0] = pEvent->au64[0];568 pVmcb->ctrl.EventInject.u = pEvent->u; 569 569 } 570 570 … … 594 594 (RTGCPTR)pCtx->rip)); 595 595 STAM_COUNTER_INC(&pVCpu->hm.s.StatIntReinject); 596 Event. au64[0]= pVCpu->hm.s.Event.u64IntrInfo;596 Event.u = pVCpu->hm.s.Event.u64IntrInfo; 597 597 hmR0SvmInjectEvent(pVCpu, pVmcb, pCtx, &Event); 598 598 … … 688 688 RTGCUINT u32ErrorCode; 689 689 690 Event. au64[0]= 0;690 Event.u = 0; 691 691 692 692 /* If a new event is pending, then dispatch it now. */ … … 1598 1598 Log(("ctrl.ExitIntInfo.u1Valid %x\n", pVmcb->ctrl.ExitIntInfo.n.u1Valid)); 1599 1599 Log(("ctrl.ExitIntInfo.u32ErrorCode %x\n", pVmcb->ctrl.ExitIntInfo.n.u32ErrorCode)); 1600 Log(("ctrl.NestedPaging %RX64\n", pVmcb->ctrl.NestedPaging. au64));1600 Log(("ctrl.NestedPaging %RX64\n", pVmcb->ctrl.NestedPaging.u)); 1601 1601 Log(("ctrl.EventInject.u8Vector %x\n", pVmcb->ctrl.EventInject.n.u8Vector)); 1602 1602 Log(("ctrl.EventInject.u3Type %x\n", pVmcb->ctrl.EventInject.n.u3Type)); … … 1790 1790 1791 1791 /* Check if an injected event was interrupted prematurely. */ 1792 pVCpu->hm.s.Event.u64IntrInfo = pVmcb->ctrl.ExitIntInfo. au64[0];1792 pVCpu->hm.s.Event.u64IntrInfo = pVmcb->ctrl.ExitIntInfo.u; 1793 1793 if ( pVmcb->ctrl.ExitIntInfo.n.u1Valid 1794 1794 /* we don't care about 'int xx' as the instruction will be restarted. */ … … 1799 1799 #ifdef LOG_ENABLED 1800 1800 SVMEVENT Event; 1801 Event. au64[0]= pVCpu->hm.s.Event.u64IntrInfo;1801 Event.u = pVCpu->hm.s.Event.u64IntrInfo; 1802 1802 1803 1803 if ( exitCode == SVM_EXIT_EXCEPTION_E … … 1848 1848 RTTraceBufAddMsgF(pVM->CTX_SUFF(hTraceBuf), "vmexit %08x at %04:%08RX64 %RX64 %RX64 %RX64", 1849 1849 exitCode, pCtx->cs.Sel, pCtx->rip, 1850 pVmcb->ctrl.u64ExitInfo1, pVmcb->ctrl.u64ExitInfo2, pVmcb->ctrl.ExitIntInfo. au64[0]);1850 pVmcb->ctrl.u64ExitInfo1, pVmcb->ctrl.u64ExitInfo2, pVmcb->ctrl.ExitIntInfo.u); 1851 1851 #endif 1852 1852 #if ARCH_BITS == 64 /* for the time being */ 1853 1853 VBOXVMM_R0_HMSVM_VMEXIT(pVCpu, pCtx, exitCode, pVmcb->ctrl.u64ExitInfo1, pVmcb->ctrl.u64ExitInfo2, 1854 pVmcb->ctrl.ExitIntInfo. au64[0], UINT64_MAX);1854 pVmcb->ctrl.ExitIntInfo.u, UINT64_MAX); 1855 1855 #endif 1856 1856 STAM_PROFILE_ADV_STOP_START(&pVCpu->hm.s.StatExit1, &pVCpu->hm.s.StatExit2, x); … … 1888 1888 1889 1889 /* Reinject the exception. */ 1890 Event. au64[0]= 0;1890 Event.u = 0; 1891 1891 Event.n.u3Type = SVM_EVENT_EXCEPTION; /* trap or fault */ 1892 1892 Event.n.u1Valid = 1; … … 1922 1922 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitGuestNM); 1923 1923 1924 Event. au64[0]= 0;1924 Event.u = 0; 1925 1925 Event.n.u3Type = SVM_EVENT_EXCEPTION; 1926 1926 Event.n.u1Valid = 1; … … 1949 1949 pCtx->cr2 = uFaultAddress; 1950 1950 1951 Event. au64[0]= 0;1951 Event.u = 0; 1952 1952 Event.n.u3Type = SVM_EVENT_EXCEPTION; 1953 1953 Event.n.u1Valid = 1; … … 2023 2023 pCtx->cr2 = uFaultAddress; 2024 2024 2025 Event. au64[0]= 0;2025 Event.u = 0; 2026 2026 Event.n.u3Type = SVM_EVENT_EXCEPTION; 2027 2027 Event.n.u1Valid = 1; … … 2054 2054 Log(("Trap %x at %RGv\n", vector, (RTGCPTR)pCtx->rip)); 2055 2055 2056 Event. au64[0]= 0;2056 Event.u = 0; 2057 2057 Event.n.u3Type = SVM_EVENT_EXCEPTION; 2058 2058 Event.n.u1Valid = 1; … … 2071 2071 case X86_XCPT_NP: /* Segment not present exception. */ 2072 2072 { 2073 Event. au64[0]= 0;2073 Event.u = 0; 2074 2074 Event.n.u3Type = SVM_EVENT_EXCEPTION; 2075 2075 Event.n.u1Valid = 1; … … 2449 2449 SVMIOIOEXIT IoExitInfo; 2450 2450 2451 IoExitInfo. au32[0] =pVmcb->ctrl.u64ExitInfo1;2452 unsigned uIdx = (IoExitInfo. au32[0]>> 4) & 0x7;2451 IoExitInfo.u = (uint32_t)pVmcb->ctrl.u64ExitInfo1; 2452 unsigned uIdx = (IoExitInfo.u >> 4) & 0x7; 2453 2453 uint32_t uIOSize = g_aIOSize[uIdx]; 2454 2454 uint32_t uAndVal = g_aIOOpAnd[uIdx]; … … 2578 2578 Log(("Inject IO debug trap at %RGv\n", (RTGCPTR)pCtx->rip)); 2579 2579 2580 Event. au64[0]= 0;2580 Event.u = 0; 2581 2581 Event.n.u3Type = SVM_EVENT_EXCEPTION; /* trap or fault */ 2582 2582 Event.n.u1Valid = 1; … … 2678 2678 SVMEVENT Event; 2679 2679 2680 Event. au64[0]= 0;2680 Event.u = 0; 2681 2681 Event.n.u3Type = SVM_EVENT_EXCEPTION; 2682 2682 Event.n.u1Valid = 1; … … 2736 2736 { 2737 2737 SVMEVENT Event; 2738 Event. au64[0]= pVCpu->hm.s.Event.u64IntrInfo;2738 Event.u = pVCpu->hm.s.Event.u64IntrInfo; 2739 2739 2740 2740 /* Caused by an injected interrupt. */
Note:
See TracChangeset
for help on using the changeset viewer.