VirtualBox

Changeset 46314 in vbox


Ignore:
Timestamp:
May 29, 2013 2:27:46 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
86080
Message:

VMM/HM: AMD-V bits. Get rid of unnecessary pragma packs and use 'u' instead of 'au64[1]' of the structure sizing.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/hm_svm.h

    r46311 r46314  
    457457 * SVM Event injection structure (EVENTINJ and EXITINTINFO).
    458458 */
    459 #pragma pack(1)
    460459typedef union
    461460{
     
    469468        uint32_t    u32ErrorCode        : 32;
    470469    } n;
    471     uint64_t    au64[1];
     470    uint64_t    u;
    472471} SVMEVENT;
    473 #pragma pack()
    474472
    475473
     
    477475 * SVM Interrupt control structure (Virtual Interrupt Control).
    478476 */
    479 #pragma pack(1)
    480477typedef union
    481478{
     
    494491        uint32_t    u24Reserved         : 24;
    495492    } n;
    496     uint64_t    au64[1];
     493    uint64_t    u;
    497494} SVMINTCTRL;
    498 #pragma pack()
    499 
    500495
    501496/**
    502497 * SVM TLB control structure.
    503498 */
    504 #pragma pack(1)
    505499typedef union
    506500{
     
    511505        uint32_t    u24Reserved         : 24;
    512506    } n;
    513     uint64_t    au64[1];
     507    uint64_t    u;
    514508} SVMTLBCTRL;
    515 #pragma pack()
    516 
    517509
    518510/**
    519511 * SVM IOIO exit structure (EXITINFO1 for IOIO intercepts).
    520512 */
    521 #pragma pack(1)
    522513typedef union
    523514{
     
    537528        uint32_t    u16Port             : 16;
    538529    } n;
    539     uint32_t    au32[1];
     530    uint32_t    u;
    540531} SVMIOIOEXIT;
    541 #pragma pack()
    542532
    543533/**
    544534 * SVM nested paging structure.
    545535 */
    546 #pragma pack(1)
    547536typedef union
    548537{
     
    551540        uint32_t    u1NestedPaging      : 1;             /**< enabled/disabled */
    552541    } n;
    553     uint64_t    au64[1];
     542    uint64_t    u;
    554543} SVMNPCTRL;
    555 #pragma pack()
    556544
    557545/**
    558546 * SVM AVIC.
    559547 */
    560 #pragma pack(1)
    561548typedef union
    562549{
     
    569556    uint64_t    u;
    570557} SVMAVIC;
    571 #pragma pack()
    572558
    573559/**
    574560 * SVM AVIC PHYSICAL_TABLE pointer.
    575561 */
    576 #pragma pack(1)
    577562typedef union
    578563{
     
    586571    uint64_t    u;
    587572} SVMAVICPHYS;
    588 #pragma pack()
    589573
    590574/**
  • trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp

    r46310 r46314  
    524524{
    525525#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));
    527527#endif
    528528
     
    531531
    532532    /* 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;
    535535}
    536536
     
    553553    {
    554554        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));
    556556    }
    557557    else if (pEvent->n.u8Vector < 0x20)
     
    566566
    567567    /* Set event injection state. */
    568     pVmcb->ctrl.EventInject.au64[0] = pEvent->au64[0];
     568    pVmcb->ctrl.EventInject.u = pEvent->u;
    569569}
    570570
     
    594594             (RTGCPTR)pCtx->rip));
    595595        STAM_COUNTER_INC(&pVCpu->hm.s.StatIntReinject);
    596         Event.au64[0] = pVCpu->hm.s.Event.u64IntrInfo;
     596        Event.u = pVCpu->hm.s.Event.u64IntrInfo;
    597597        hmR0SvmInjectEvent(pVCpu, pVmcb, pCtx, &Event);
    598598
     
    688688        RTGCUINT    u32ErrorCode;
    689689
    690         Event.au64[0] = 0;
     690        Event.u = 0;
    691691
    692692        /* If a new event is pending, then dispatch it now. */
     
    15981598        Log(("ctrl.ExitIntInfo.u1Valid          %x\n",      pVmcb->ctrl.ExitIntInfo.n.u1Valid));
    15991599        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));
    16011601        Log(("ctrl.EventInject.u8Vector         %x\n",      pVmcb->ctrl.EventInject.n.u8Vector));
    16021602        Log(("ctrl.EventInject.u3Type           %x\n",      pVmcb->ctrl.EventInject.n.u3Type));
     
    17901790
    17911791    /* 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;
    17931793    if (    pVmcb->ctrl.ExitIntInfo.n.u1Valid
    17941794            /* we don't care about 'int xx' as the instruction will be restarted. */
     
    17991799#ifdef LOG_ENABLED
    18001800        SVMEVENT Event;
    1801         Event.au64[0] = pVCpu->hm.s.Event.u64IntrInfo;
     1801        Event.u = pVCpu->hm.s.Event.u64IntrInfo;
    18021802
    18031803        if (    exitCode == SVM_EXIT_EXCEPTION_E
     
    18481848    RTTraceBufAddMsgF(pVM->CTX_SUFF(hTraceBuf), "vmexit %08x at %04:%08RX64 %RX64 %RX64 %RX64",
    18491849                      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);
    18511851#endif
    18521852#if ARCH_BITS == 64 /* for the time being */
    18531853    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);
    18551855#endif
    18561856    STAM_PROFILE_ADV_STOP_START(&pVCpu->hm.s.StatExit1, &pVCpu->hm.s.StatExit2, x);
     
    18881888
    18891889                /* Reinject the exception. */
    1890                 Event.au64[0]    = 0;
     1890                Event.u          = 0;
    18911891                Event.n.u3Type   = SVM_EVENT_EXCEPTION; /* trap or fault */
    18921892                Event.n.u1Valid  = 1;
     
    19221922            STAM_COUNTER_INC(&pVCpu->hm.s.StatExitGuestNM);
    19231923
    1924             Event.au64[0]    = 0;
     1924            Event.u          = 0;
    19251925            Event.n.u3Type   = SVM_EVENT_EXCEPTION;
    19261926            Event.n.u1Valid  = 1;
     
    19491949                pCtx->cr2 = uFaultAddress;
    19501950
    1951                 Event.au64[0]               = 0;
     1951                Event.u                     = 0;
    19521952                Event.n.u3Type              = SVM_EVENT_EXCEPTION;
    19531953                Event.n.u1Valid             = 1;
     
    20232023                pCtx->cr2 = uFaultAddress;
    20242024
    2025                 Event.au64[0]               = 0;
     2025                Event.u                     = 0;
    20262026                Event.n.u3Type              = SVM_EVENT_EXCEPTION;
    20272027                Event.n.u1Valid             = 1;
     
    20542054            Log(("Trap %x at %RGv\n", vector, (RTGCPTR)pCtx->rip));
    20552055
    2056             Event.au64[0]    = 0;
     2056            Event.u          = 0;
    20572057            Event.n.u3Type   = SVM_EVENT_EXCEPTION;
    20582058            Event.n.u1Valid  = 1;
     
    20712071        case X86_XCPT_NP:   /* Segment not present exception. */
    20722072        {
    2073             Event.au64[0]    = 0;
     2073            Event.u          = 0;
    20742074            Event.n.u3Type   = SVM_EVENT_EXCEPTION;
    20752075            Event.n.u1Valid  = 1;
     
    24492449        SVMIOIOEXIT   IoExitInfo;
    24502450
    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;
    24532453        uint32_t uIOSize   = g_aIOSize[uIdx];
    24542454        uint32_t uAndVal   = g_aIOOpAnd[uIdx];
     
    25782578                            Log(("Inject IO debug trap at %RGv\n", (RTGCPTR)pCtx->rip));
    25792579
    2580                             Event.au64[0]    = 0;
     2580                            Event.u          = 0;
    25812581                            Event.n.u3Type   = SVM_EVENT_EXCEPTION; /* trap or fault */
    25822582                            Event.n.u1Valid  = 1;
     
    26782678        SVMEVENT Event;
    26792679
    2680         Event.au64[0]    = 0;
     2680        Event.u          = 0;
    26812681        Event.n.u3Type   = SVM_EVENT_EXCEPTION;
    26822682        Event.n.u1Valid  = 1;
     
    27362736        {
    27372737            SVMEVENT Event;
    2738             Event.au64[0] = pVCpu->hm.s.Event.u64IntrInfo;
     2738            Event.u = pVCpu->hm.s.Event.u64IntrInfo;
    27392739
    27402740            /* Caused by an injected interrupt. */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette