VirtualBox

Changeset 37476 in vbox for trunk/src/VBox/Devices/PC


Ignore:
Timestamp:
Jun 15, 2011 4:52:47 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
72292
Message:

DevAPIC.cpp: Some variable renaming

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/DevAPIC.cpp

    r37475 r37476  
    6060/** @def APIC_LOCK
    6161 * Acquires the PDM lock. */
    62 #define APIC_LOCK(pThis, rcBusy) \
     62#define APIC_LOCK(a_pDev, rcBusy) \
    6363    do { \
    64         int rc2 = PDMCritSectEnter((pThis)->CTX_SUFF(pCritSect), (rcBusy)); \
     64        int rc2 = PDMCritSectEnter((a_pDev)->CTX_SUFF(pCritSect), (rcBusy)); \
    6565        if (rc2 != VINF_SUCCESS) \
    6666            return rc2; \
     
    6969/** @def APIC_LOCK_VOID
    7070 * Acquires the PDM lock and does not expect failure (i.e. ring-3 only!). */
    71 #define APIC_LOCK_VOID(pThis, rcBusy) \
     71#define APIC_LOCK_VOID(a_pDev, rcBusy) \
    7272    do { \
    73         int rc2 = PDMCritSectEnter((pThis)->CTX_SUFF(pCritSect), (rcBusy)); \
     73        int rc2 = PDMCritSectEnter((a_pDev)->CTX_SUFF(pCritSect), (rcBusy)); \
    7474        AssertLogRelRCReturnVoid(rc2); \
    7575    } while (0)
     
    7777/** @def APIC_UNLOCK
    7878 * Releases the PDM lock. */
    79 #define APIC_UNLOCK(pThis) \
    80     PDMCritSectLeave((pThis)->CTX_SUFF(pCritSect))
     79#define APIC_UNLOCK(a_pDev) \
     80    PDMCritSectLeave((a_pDev)->CTX_SUFF(pCritSect))
    8181
    8282/** @def APIC_AND_TM_LOCK
     
    118118
    119119
    120 #define foreach_apic(dev, mask, code)                     \
     120#define foreach_apic(pDev, mask, code)                    \
    121121    do {                                                  \
    122         uint32_t i;                                       \
    123         APICState *apic = (dev)->CTX_SUFF(paLapics);      \
    124         for (i = 0; i < (dev)->cCpus; i++)                  \
     122        APICState *apic = (pDev)->CTX_SUFF(paLapics);     \
     123        for (uint32_t i = 0; i < (pDev)->cCpus; i++)      \
    125124        {                                                 \
    126125            if (mask & (1 << (apic->id)))                 \
     
    362361*   Internal Functions                                                         *
    363362*******************************************************************************/
    364 static void apic_update_tpr(APICDeviceInfo *dev, APICState* s, uint32_t val);
    365 
    366 static void apic_eoi(APICDeviceInfo *dev, APICState* s); /*  */
    367 static uint32_t apic_get_delivery_bitmask(APICDeviceInfo* dev, uint8_t dest, uint8_t dest_mode);
    368 static int apic_deliver(APICDeviceInfo* dev, APICState *s,
     363static void apic_update_tpr(APICDeviceInfo *pDev, APICState* s, uint32_t val);
     364
     365static void apic_eoi(APICDeviceInfo *pDev, APICState* s); /*  */
     366static uint32_t apic_get_delivery_bitmask(APICDeviceInfo* pDev, uint8_t dest, uint8_t dest_mode);
     367static int apic_deliver(APICDeviceInfo* pDev, APICState *s,
    369368                        uint8_t dest, uint8_t dest_mode,
    370369                        uint8_t delivery_mode, uint8_t vector_num,
     
    372371static int apic_get_arb_pri(APICState *s);
    373372static int apic_get_ppr(APICState *s);
    374 static uint32_t apic_get_current_count(APICDeviceInfo* dev, APICState *s);
    375 static void apicTimerSetInitialCount(APICDeviceInfo *dev, APICState *s, uint32_t initial_count);
    376 static void apicTimerSetLvt(APICDeviceInfo *dev, APICState *pThis, uint32_t fNew);
    377 static void apicSendInitIpi(APICDeviceInfo* dev, APICState *s);
    378 
    379 static void apic_init_ipi(APICDeviceInfo* dev, APICState *s);
    380 static void apic_set_irq(APICDeviceInfo* dev, APICState *s, int vector_num, int trigger_mode);
    381 static bool apic_update_irq(APICDeviceInfo* dev, APICState *s);
    382 
    383 
    384 DECLINLINE(APICState*) getLapicById(APICDeviceInfo* dev, VMCPUID id)
    385 {
    386     AssertFatalMsg(id < dev->cCpus, ("CPU id %d out of range\n", id));
    387     return &dev->CTX_SUFF(paLapics)[id];
    388 }
    389 
    390 DECLINLINE(APICState*) getLapic(APICDeviceInfo* dev)
     373static uint32_t apic_get_current_count(APICDeviceInfo* pDev, APICState *s);
     374static void apicTimerSetInitialCount(APICDeviceInfo *pDev, APICState *s, uint32_t initial_count);
     375static void apicTimerSetLvt(APICDeviceInfo *pDev, APICState *pApic, uint32_t fNew);
     376static void apicSendInitIpi(APICDeviceInfo* pDev, APICState *s);
     377
     378static void apic_init_ipi(APICDeviceInfo* pDev, APICState *s);
     379static void apic_set_irq(APICDeviceInfo* pDev, APICState *s, int vector_num, int trigger_mode);
     380static bool apic_update_irq(APICDeviceInfo* pDev, APICState *s);
     381
     382
     383DECLINLINE(APICState*) getLapicById(APICDeviceInfo *pDev, VMCPUID id)
     384{
     385    AssertFatalMsg(id < pDev->cCpus, ("CPU id %d out of range\n", id));
     386    return &pDev->CTX_SUFF(paLapics)[id];
     387}
     388
     389DECLINLINE(APICState*) getLapic(APICDeviceInfo* pDev)
    391390{
    392391    /* LAPIC's array is indexed by CPU id */
    393     VMCPUID id = dev->CTX_SUFF(pApicHlp)->pfnGetCpuId(dev->CTX_SUFF(pDevIns));
    394     return getLapicById(dev, id);
    395 }
    396 
    397 DECLINLINE(VMCPUID) getCpuFromLapic(APICDeviceInfo* dev, APICState *s)
     392    VMCPUID id = pDev->CTX_SUFF(pApicHlp)->pfnGetCpuId(pDev->CTX_SUFF(pDevIns));
     393    return getLapicById(pDev, id);
     394}
     395
     396DECLINLINE(VMCPUID) getCpuFromLapic(APICDeviceInfo* pDev, APICState *s)
    398397{
    399398    /* for now we assume LAPIC physical id == CPU id */
     
    401400}
    402401
    403 DECLINLINE(void) cpuSetInterrupt(APICDeviceInfo* dev, APICState *s, PDMAPICIRQ enmType = PDMAPICIRQ_HARDWARE)
    404 {
    405     LogFlow(("apic: setting interrupt flag for cpu %d\n", getCpuFromLapic(dev, s)));
    406     dev->CTX_SUFF(pApicHlp)->pfnSetInterruptFF(dev->CTX_SUFF(pDevIns), enmType,
    407                                                getCpuFromLapic(dev, s));
    408 }
    409 
    410 DECLINLINE(void) cpuClearInterrupt(APICDeviceInfo* dev, APICState *s, PDMAPICIRQ enmType = PDMAPICIRQ_HARDWARE)
     402DECLINLINE(void) cpuSetInterrupt(APICDeviceInfo* pDev, APICState *s, PDMAPICIRQ enmType = PDMAPICIRQ_HARDWARE)
     403{
     404    LogFlow(("apic: setting interrupt flag for cpu %d\n", getCpuFromLapic(pDev, s)));
     405    pDev->CTX_SUFF(pApicHlp)->pfnSetInterruptFF(pDev->CTX_SUFF(pDevIns), enmType,
     406                                               getCpuFromLapic(pDev, s));
     407}
     408
     409DECLINLINE(void) cpuClearInterrupt(APICDeviceInfo* pDev, APICState *s, PDMAPICIRQ enmType = PDMAPICIRQ_HARDWARE)
    411410{
    412411    LogFlow(("apic: clear interrupt flag\n"));
    413     dev->CTX_SUFF(pApicHlp)->pfnClearInterruptFF(dev->CTX_SUFF(pDevIns), enmType,
    414                                                  getCpuFromLapic(dev, s));
     412    pDev->CTX_SUFF(pApicHlp)->pfnClearInterruptFF(pDev->CTX_SUFF(pDevIns), enmType,
     413                                                 getCpuFromLapic(pDev, s));
    415414}
    416415
    417416# ifdef IN_RING3
    418417
    419 DECLINLINE(void) cpuSendSipi(APICDeviceInfo* dev, APICState *s, int vector)
     418DECLINLINE(void) cpuSendSipi(APICDeviceInfo* pDev, APICState *s, int vector)
    420419{
    421420    Log2(("apic: send SIPI vector=%d\n", vector));
    422421
    423     dev->pApicHlpR3->pfnSendSipi(dev->pDevInsR3,
    424                                  getCpuFromLapic(dev, s),
     422    pDev->pApicHlpR3->pfnSendSipi(pDev->pDevInsR3,
     423                                 getCpuFromLapic(pDev, s),
    425424                                 vector);
    426425}
    427426
    428 DECLINLINE(void) cpuSendInitIpi(APICDeviceInfo* dev, APICState *s)
     427DECLINLINE(void) cpuSendInitIpi(APICDeviceInfo* pDev, APICState *s)
    429428{
    430429    Log2(("apic: send init IPI\n"));
    431430
    432     dev->pApicHlpR3->pfnSendInitIpi(dev->pDevInsR3,
    433                                     getCpuFromLapic(dev, s));
     431    pDev->pApicHlpR3->pfnSendInitIpi(pDev->pDevInsR3,
     432                                    getCpuFromLapic(pDev, s));
    434433}
    435434
    436435# endif /* IN_RING3 */
    437436
    438 DECLINLINE(uint32_t) getApicEnableBits(APICDeviceInfo* dev)
    439 {
    440     switch (dev->enmVersion)
     437DECLINLINE(uint32_t) getApicEnableBits(APICDeviceInfo* pDev)
     438{
     439    switch (pDev->enmVersion)
    441440    {
    442441        case PDMAPICVERSION_NONE:
     
    447446            return MSR_IA32_APICBASE_ENABLE | MSR_IA32_APICBASE_X2ENABLE ;
    448447        default:
    449             AssertMsgFailed(("Unsupported APIC version %d\n", dev->enmVersion));
     448            AssertMsgFailed(("Unsupported APIC version %d\n", pDev->enmVersion));
    450449            return 0;
    451450    }
     
    469468}
    470469
    471 static int apic_bus_deliver(APICDeviceInfo* dev,
     470static int apic_bus_deliver(APICDeviceInfo* pDev,
    472471                            uint32_t deliver_bitmask, uint8_t delivery_mode,
    473472                            uint8_t vector_num, uint8_t polarity,
     
    483482            if (d >= 0)
    484483            {
    485                 APICState* apic = getLapicById(dev, d);
    486                 apic_set_irq(dev, apic, vector_num, trigger_mode);
     484                APICState* apic = getLapicById(pDev, d);
     485                apic_set_irq(pDev, apic, vector_num, trigger_mode);
    487486            }
    488487            return VINF_SUCCESS;
     
    493492
    494493        case APIC_DM_SMI:
    495             foreach_apic(dev, deliver_bitmask,
    496                          cpuSetInterrupt(dev, apic, PDMAPICIRQ_SMI));
     494            foreach_apic(pDev, deliver_bitmask,
     495                         cpuSetInterrupt(pDev, apic, PDMAPICIRQ_SMI));
    497496            return VINF_SUCCESS;
    498497
    499498        case APIC_DM_NMI:
    500             foreach_apic(dev, deliver_bitmask,
    501                          cpuSetInterrupt(dev, apic, PDMAPICIRQ_NMI));
     499            foreach_apic(pDev, deliver_bitmask,
     500                         cpuSetInterrupt(pDev, apic, PDMAPICIRQ_NMI));
    502501            return VINF_SUCCESS;
    503502
     
    505504            /* normal INIT IPI sent to processors */
    506505#ifdef IN_RING3
    507             foreach_apic(dev, deliver_bitmask,
    508                          apicSendInitIpi(dev, apic));
     506            foreach_apic(pDev, deliver_bitmask,
     507                         apicSendInitIpi(pDev, apic));
    509508            return VINF_SUCCESS;
    510509#else
     
    521520    }
    522521
    523     foreach_apic(dev, deliver_bitmask,
    524                        apic_set_irq (dev, apic, vector_num, trigger_mode));
     522    foreach_apic(pDev, deliver_bitmask,
     523                       apic_set_irq (pDev, apic, vector_num, trigger_mode));
    525524    return VINF_SUCCESS;
    526525}
     
    529528PDMBOTHCBDECL(void) apicSetBase(PPDMDEVINS pDevIns, uint64_t val)
    530529{
    531     APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    532     Assert(PDMCritSectIsOwner(dev->CTX_SUFF(pCritSect)));
    533     APICState *s = getLapic(dev); /** @todo fix interface */
     530    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     531    Assert(PDMCritSectIsOwner(pDev->CTX_SUFF(pCritSect)));
     532    APICState *s = getLapic(pDev); /** @todo fix interface */
    534533    Log(("apicSetBase: %016RX64\n", val));
    535534
    536535    /** @todo: do we need to lock here ? */
    537     /* APIC_LOCK_VOID(dev, VERR_INTERNAL_ERROR); */
     536    /* APIC_LOCK_VOID(pDev, VERR_INTERNAL_ERROR); */
    538537    /** @todo If this change is valid immediately, then we should change the MMIO registration! */
    539538    /* We cannot change if this CPU is BSP or not by writing to MSR - it's hardwired */
     
    541540    s->apicbase =
    542541            (val & 0xfffff000) | /* base */
    543             (val & getApicEnableBits(dev)) | /* mode */
     542            (val & getApicEnableBits(pDev)) | /* mode */
    544543            (s->apicbase & MSR_IA32_APICBASE_BSP) /* keep BSP bit */;
    545544    PDMAPICVERSION newMode = getApicMode(s);
     
    553552                s->spurious_vec &= ~APIC_SV_ENABLE;
    554553                /* Clear any pending APIC interrupt action flag. */
    555                 cpuClearInterrupt(dev, s);
     554                cpuClearInterrupt(pDev, s);
    556555                /** @todo: why do we do that? */
    557                 dev->CTX_SUFF(pApicHlp)->pfnChangeFeature(pDevIns, PDMAPICVERSION_NONE);
     556                pDev->CTX_SUFF(pApicHlp)->pfnChangeFeature(pDevIns, PDMAPICVERSION_NONE);
    558557                break;
    559558            }
     
    568567        }
    569568    }
    570     /* APIC_UNLOCK(dev); */
     569    /* APIC_UNLOCK(pDev); */
    571570}
    572571
    573572PDMBOTHCBDECL(uint64_t) apicGetBase(PPDMDEVINS pDevIns)
    574573{
    575     APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    576     Assert(PDMCritSectIsOwner(dev->CTX_SUFF(pCritSect)));
    577     APICState *s = getLapic(dev); /** @todo fix interface */
     574    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     575    Assert(PDMCritSectIsOwner(pDev->CTX_SUFF(pCritSect)));
     576    APICState *s = getLapic(pDev); /** @todo fix interface */
    578577    LogFlow(("apicGetBase: %016llx\n", (uint64_t)s->apicbase));
    579578    return s->apicbase;
     
    582581PDMBOTHCBDECL(void) apicSetTPR(PPDMDEVINS pDevIns, VMCPUID idCpu, uint8_t val)
    583582{
    584     APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    585     Assert(PDMCritSectIsOwner(dev->CTX_SUFF(pCritSect)));
    586     APICState *s = getLapicById(dev, idCpu);
     583    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     584    Assert(PDMCritSectIsOwner(pDev->CTX_SUFF(pCritSect)));
     585    APICState *s = getLapicById(pDev, idCpu);
    587586    LogFlow(("apicSetTPR: val=%#x (trp %#x -> %#x)\n", val, s->tpr, val));
    588     apic_update_tpr(dev, s, val);
     587    apic_update_tpr(pDev, s, val);
    589588}
    590589
     
    592591{
    593592    /* We don't perform any locking here as that would cause a lot of contention for VT-x/AMD-V. */
    594     APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    595     APICState *s = getLapicById(dev, idCpu);
     593    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     594    APICState *s = getLapicById(pDev, idCpu);
    596595    Log2(("apicGetTPR: returns %#x\n", s->tpr));
    597596    return s->tpr;
     
    768767PDMBOTHCBDECL(int) apicReadMSR(PPDMDEVINS pDevIns, VMCPUID idCpu, uint32_t u32Reg, uint64_t *pu64Value)
    769768{
    770     APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    771     Assert(PDMCritSectIsOwner(dev->CTX_SUFF(pCritSect)));
    772 
    773     if (dev->enmVersion < PDMAPICVERSION_X2APIC)
     769    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     770    Assert(PDMCritSectIsOwner(pDev->CTX_SUFF(pCritSect)));
     771
     772    if (pDev->enmVersion < PDMAPICVERSION_X2APIC)
    774773        return VERR_EM_INTERPRETER;
    775774
    776775    uint32_t    index = (u32Reg - MSR_IA32_APIC_START) & 0xff;
    777     APICState  *apic = getLapicById(dev, idCpu);
     776    APICState  *apic = getLapicById(pDev, idCpu);
    778777    uint64_t    val = 0;
    779778    int         rc = VINF_SUCCESS;
     
    835834            break;
    836835        case 0x39:
    837             val = apic_get_current_count(dev, apic);
     836            val = apic_get_current_count(pDev, apic);
    838837            break;
    839838        case 0x3e:
     
    870869                                           uint8_t u8TriggerMode)
    871870{
    872     APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    873     Assert(PDMCritSectIsOwner(dev->CTX_SUFF(pCritSect)));
     871    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     872    Assert(PDMCritSectIsOwner(pDev->CTX_SUFF(pCritSect)));
    874873    LogFlow(("apicBusDeliverCallback: pDevIns=%p u8Dest=%#x u8DestMode=%#x u8DeliveryMode=%#x iVector=%#x u8Polarity=%#x u8TriggerMode=%#x\n",
    875874             pDevIns, u8Dest, u8DestMode, u8DeliveryMode, iVector, u8Polarity, u8TriggerMode));
    876     return apic_bus_deliver(dev, apic_get_delivery_bitmask(dev, u8Dest, u8DestMode),
     875    return apic_bus_deliver(pDev, apic_get_delivery_bitmask(pDev, u8Dest, u8DestMode),
    877876                            u8DeliveryMode, iVector, u8Polarity, u8TriggerMode);
    878877}
     
    884883PDMBOTHCBDECL(int) apicLocalInterrupt(PPDMDEVINS pDevIns, uint8_t u8Pin, uint8_t u8Level)
    885884{
    886     APICDeviceInfo  *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    887     APICState       *s = getLapicById(dev, 0);
    888 
    889     Assert(PDMCritSectIsOwner(dev->CTX_SUFF(pCritSect)));
     885    APICDeviceInfo  *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     886    APICState       *s = getLapicById(pDev, 0);
     887
     888    Assert(PDMCritSectIsOwner(pDev->CTX_SUFF(pCritSect)));
    890889    LogFlow(("apicLocalInterrupt: pDevIns=%p u8Pin=%x u8Level=%x\n", pDevIns, u8Pin, u8Level));
    891890
     
    895894        LogFlow(("apicLocalInterrupt: LAPIC disabled, delivering directly to CPU core.\n"));
    896895        if (u8Level)
    897             cpuSetInterrupt(dev, s, PDMAPICIRQ_EXTINT);
     896            cpuSetInterrupt(pDev, s, PDMAPICIRQ_EXTINT);
    898897        else
    899             cpuClearInterrupt(dev, s, PDMAPICIRQ_EXTINT);
     898            cpuClearInterrupt(pDev, s, PDMAPICIRQ_EXTINT);
    900899
    901900        return VINF_SUCCESS;
     
    928927                LogFlow(("apicLocalInterrupt: %s ExtINT interrupt\n", u8Level ? "setting" : "clearing"));
    929928                if (u8Level)
    930                     cpuSetInterrupt(dev, s, enmType);
     929                    cpuSetInterrupt(pDev, s, enmType);
    931930                else
    932                     cpuClearInterrupt(dev, s, enmType);
     931                    cpuClearInterrupt(pDev, s, enmType);
    933932                return VINF_SUCCESS;
    934933            case APIC_DM_NMI:
     
    963962        }
    964963        LogFlow(("apicLocalInterrupt: setting local interrupt type %d\n", enmType));
    965         cpuSetInterrupt(dev, s, enmType);
     964        cpuSetInterrupt(pDev, s, enmType);
    966965    }
    967966    return VINF_SUCCESS;
     
    10131012
    10141013/* signal the CPU if an irq is pending */
    1015 static bool apic_update_irq(APICDeviceInfo *dev, APICState* s)
     1014static bool apic_update_irq(APICDeviceInfo *pDev, APICState* s)
    10161015{
    10171016    int irrv, ppr;
     
    10191018    {
    10201019        /* Clear any pending APIC interrupt action flag. */
    1021         cpuClearInterrupt(dev, s);
     1020        cpuClearInterrupt(pDev, s);
    10221021        return false;
    10231022    }
     
    10291028    if (ppr && (irrv & 0xf0) <= (ppr & 0xf0))
    10301029        return false;
    1031     cpuSetInterrupt(dev, s);
     1030    cpuSetInterrupt(pDev, s);
    10321031    return true;
    10331032}
     
    10371036{
    10381037    int irrv, ppr;
    1039     APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    1040     if (!dev)
     1038    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     1039    if (!pDev)
    10411040        return false;
    10421041
    10431042    /* We don't perform any locking here as that would cause a lot of contention for VT-x/AMD-V. */
    10441043
    1045     APICState *s = getLapic(dev); /** @todo fix interface */
     1044    APICState *s = getLapic(pDev); /** @todo fix interface */
    10461045
    10471046    /*
     
    10611060}
    10621061
    1063 static void apic_update_tpr(APICDeviceInfo *dev, APICState* s, uint32_t val)
     1062static void apic_update_tpr(APICDeviceInfo *pDev, APICState* s, uint32_t val)
    10641063{
    10651064    bool fIrqIsActive = false;
    10661065    bool fIrqWasActive = false;
    10671066
    1068     fIrqWasActive = apic_update_irq(dev, s);
     1067    fIrqWasActive = apic_update_irq(pDev, s);
    10691068    s->tpr        = val;
    1070     fIrqIsActive  = apic_update_irq(dev, s);
     1069    fIrqIsActive  = apic_update_irq(pDev, s);
    10711070
    10721071    /* If an interrupt is pending and now masked, then clear the FF flag. */
     
    10741073    {
    10751074        Log(("apic_update_tpr: deactivate interrupt that was masked by the TPR update (%x)\n", val));
    1076         STAM_COUNTER_INC(&dev->StatClearedActiveIrq);
    1077         cpuClearInterrupt(dev, s);
    1078     }
    1079 }
    1080 
    1081 static void apic_set_irq(APICDeviceInfo *dev,  APICState* s, int vector_num, int trigger_mode)
     1075        STAM_COUNTER_INC(&pDev->StatClearedActiveIrq);
     1076        cpuClearInterrupt(pDev, s);
     1077    }
     1078}
     1079
     1080static void apic_set_irq(APICDeviceInfo *pDev,  APICState* s, int vector_num, int trigger_mode)
    10821081{
    10831082    LogFlow(("CPU%d: apic_set_irq vector=%x, trigger_mode=%x\n", s->phys_id, vector_num, trigger_mode));
     
    10871086    else
    10881087        reset_bit(s->tmr, vector_num);
    1089     apic_update_irq(dev, s);
    1090 }
    1091 
    1092 static void apic_eoi(APICDeviceInfo *dev, APICState* s)
     1088    apic_update_irq(pDev, s);
     1089}
     1090
     1091static void apic_eoi(APICDeviceInfo *pDev, APICState* s)
    10931092{
    10941093    int isrv;
     
    11001099    /* XXX: send the EOI packet to the APIC bus to allow the I/O APIC to
    11011100            set the remote IRR bit for level triggered interrupts. */
    1102     apic_update_irq(dev, s);
    1103 }
    1104 
    1105 static uint32_t apic_get_delivery_bitmask(APICDeviceInfo *dev, uint8_t dest, uint8_t dest_mode)
     1101    apic_update_irq(pDev, s);
     1102}
     1103
     1104static uint32_t apic_get_delivery_bitmask(APICDeviceInfo *pDev, uint8_t dest, uint8_t dest_mode)
    11061105{
    11071106    uint32_t mask = 0;
     
    11161115    else
    11171116    {
    1118         APICState *apic = dev->CTX_SUFF(paLapics);
     1117        APICState *apic = pDev->CTX_SUFF(paLapics);
    11191118        uint32_t i;
    11201119
    11211120        /* XXX: cluster mode */
    1122         for(i = 0; i < dev->cCpus; i++)
     1121        for(i = 0; i < pDev->cCpus; i++)
    11231122        {
    11241123            if (apic->dest_mode == APIC_DESTMODE_FLAT)
     
    11441143
    11451144#ifdef IN_RING3
    1146 static void apic_init_ipi(APICDeviceInfo* dev, APICState *s)
     1145static void apic_init_ipi(APICDeviceInfo* pDev, APICState *s)
    11471146{
    11481147    int i;
     
    11671166
    11681167
    1169 static void apicSendInitIpi(APICDeviceInfo* dev, APICState *s)
    1170 {
    1171     apic_init_ipi(dev, s);
    1172     cpuSendInitIpi(dev, s);
     1168static void apicSendInitIpi(APICDeviceInfo* pDev, APICState *s)
     1169{
     1170    apic_init_ipi(pDev, s);
     1171    cpuSendInitIpi(pDev, s);
    11731172}
    11741173
    11751174/* send a SIPI message to the CPU to start it */
    1176 static void apic_startup(APICDeviceInfo* dev, APICState *s, int vector_num)
     1175static void apic_startup(APICDeviceInfo* pDev, APICState *s, int vector_num)
    11771176{
    11781177    Log(("[SMP] apic_startup: %d on CPUs %d\n", vector_num, s->phys_id));
    1179     cpuSendSipi(dev, s, vector_num);
     1178    cpuSendSipi(pDev, s, vector_num);
    11801179}
    11811180#endif /* IN_RING3 */
    11821181
    1183 static int  apic_deliver(APICDeviceInfo* dev, APICState *s,
     1182static int  apic_deliver(APICDeviceInfo* pDev, APICState *s,
    11841183                         uint8_t dest, uint8_t dest_mode,
    11851184                         uint8_t delivery_mode, uint8_t vector_num,
     
    11931192    switch (dest_shorthand) {
    11941193        case 0:
    1195             deliver_bitmask = apic_get_delivery_bitmask(dev, dest, dest_mode);
     1194            deliver_bitmask = apic_get_delivery_bitmask(pDev, dest, dest_mode);
    11961195            break;
    11971196        case 1:
     
    12121211                int level = (s->icr[0] >> 14) & 1;
    12131212                if (level == 0 && trig_mode == 1) {
    1214                     foreach_apic(dev, deliver_bitmask,
     1213                    foreach_apic(pDev, deliver_bitmask,
    12151214                                       apic->arb_id = apic->id);
    12161215                    Log(("CPU%d: APIC_DM_INIT arbitration id(s) set\n", s->phys_id));
     
    12221221        case APIC_DM_SIPI:
    12231222# ifdef IN_RING3
    1224             foreach_apic(dev, deliver_bitmask,
    1225                          apic_startup(dev, apic, vector_num));
     1223            foreach_apic(pDev, deliver_bitmask,
     1224                         apic_startup(pDev, apic, vector_num));
    12261225            return VINF_SUCCESS;
    12271226# else
     
    12321231    }
    12331232
    1234     return apic_bus_deliver(dev, deliver_bitmask, delivery_mode, vector_num,
     1233    return apic_bus_deliver(pDev, deliver_bitmask, delivery_mode, vector_num,
    12351234                            polarity, trigger_mode);
    12361235}
     
    12391238PDMBOTHCBDECL(int) apicGetInterrupt(PPDMDEVINS pDevIns)
    12401239{
    1241     APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     1240    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    12421241    /* if the APIC is not installed or enabled, we let the 8259 handle the
    12431242       IRQs */
    1244     if (!dev)
     1243    if (!pDev)
    12451244    {
    12461245        Log(("apic_get_interrupt: returns -1 (!s)\n"));
     
    12481247    }
    12491248
    1250     Assert(PDMCritSectIsOwner(dev->CTX_SUFF(pCritSect)));
    1251 
    1252     APICState *s = getLapic(dev);  /** @todo fix interface */
     1249    Assert(PDMCritSectIsOwner(pDev->CTX_SUFF(pCritSect)));
     1250
     1251    APICState *s = getLapic(pDev);  /** @todo fix interface */
    12531252    int intno;
    12541253
     
    12701269    reset_bit(s->irr, intno);
    12711270    set_bit(s->isr, intno);
    1272     apic_update_irq(dev, s);
     1271    apic_update_irq(pDev, s);
    12731272    LogFlow(("CPU%d: apic_get_interrupt: returns %d\n", s->phys_id, intno));
    12741273    return intno;
     
    12781277 * May return to ring-3 to acquire the TM and PDM lock.
    12791278 */
    1280 static uint32_t apic_get_current_count(APICDeviceInfo *dev, APICState *s)
     1279static uint32_t apic_get_current_count(APICDeviceInfo *pDev, APICState *s)
    12811280{
    12821281    int64_t d;
     
    12841283
    12851284    /* Acquire the timer lock w/ lock order kludge. */
    1286     PDMCritSectLeave(dev->CTX_SUFF(pCritSect));
     1285    PDMCritSectLeave(pDev->CTX_SUFF(pCritSect));
    12871286    TMTimerLock(s->CTX_SUFF(pTimer), VINF_SUCCESS);
    1288     PDMCritSectEnter(dev->CTX_SUFF(pCritSect), VINF_SUCCESS);
     1287    PDMCritSectEnter(pDev->CTX_SUFF(pCritSect), VINF_SUCCESS);
    12891288
    12901289    d = (TMTimerGet(s->CTX_SUFF(pTimer)) - s->initial_count_load_time) >>
     
    13091308 * Does the frequency hinting and logging.
    13101309 *
    1311  * @param   pThis               The device state.
     1310 * @param   pApic               The device state.
    13121311 */
    1313 DECLINLINE(void) apicDoFrequencyHinting(APICState *pThis)
    1314 {
    1315     if (   pThis->uHintedInitialCount != pThis->initial_count
    1316         || pThis->uHintedCountShift   != (uint32_t)pThis->count_shift)
     1312DECLINLINE(void) apicDoFrequencyHinting(APICState *pApic)
     1313{
     1314    if (   pApic->uHintedInitialCount != pApic->initial_count
     1315        || pApic->uHintedCountShift   != (uint32_t)pApic->count_shift)
    13171316    {
    1318         pThis->uHintedInitialCount  = pThis->initial_count;
    1319         pThis->uHintedCountShift    = pThis->count_shift;
     1317        pApic->uHintedInitialCount  = pApic->initial_count;
     1318        pApic->uHintedCountShift    = pApic->count_shift;
    13201319
    13211320        uint32_t uHz;
    1322         if (pThis->initial_count > 0)
     1321        if (pApic->initial_count > 0)
    13231322        {
    1324             Assert((unsigned)pThis->count_shift < 30);
    1325             uint64_t cTickPerPeriod = ((uint64_t)pThis->initial_count + 1) << pThis->count_shift;
    1326             uHz = TMTimerGetFreq(pThis->CTX_SUFF(pTimer)) / cTickPerPeriod;
     1323            Assert((unsigned)pApic->count_shift < 30);
     1324            uint64_t cTickPerPeriod = ((uint64_t)pApic->initial_count + 1) << pApic->count_shift;
     1325            uHz = TMTimerGetFreq(pApic->CTX_SUFF(pTimer)) / cTickPerPeriod;
    13271326        }
    13281327        else
    13291328            uHz = 0;
    1330         TMTimerSetFrequencyHint(pThis->CTX_SUFF(pTimer), uHz);
     1329        TMTimerSetFrequencyHint(pApic->CTX_SUFF(pTimer), uHz);
    13311330        Log(("apic: %u Hz\n", uHz));
    13321331    }
     
    13361335 * Implementation of the 0380h access: Timer reset + new initial count.
    13371336 *
    1338  * @param   dev                 The device state.
    1339  * @param   pThis               The APIC sub-device state.
     1337 * @param   pDev                 The device state.
     1338 * @param   pApic               The APIC sub-device state.
    13401339 * @param   u32NewInitialCount  The new initial count for the timer.
    13411340 */
    1342 static void apicTimerSetInitialCount(APICDeviceInfo *dev, APICState *pThis, uint32_t u32NewInitialCount)
    1343 {
    1344     STAM_COUNTER_INC(&pThis->StatTimerSetInitialCount);
    1345     pThis->initial_count = u32NewInitialCount;
     1341static void apicTimerSetInitialCount(APICDeviceInfo *pDev, APICState *pApic, uint32_t u32NewInitialCount)
     1342{
     1343    STAM_COUNTER_INC(&pApic->StatTimerSetInitialCount);
     1344    pApic->initial_count = u32NewInitialCount;
    13461345
    13471346    /*
     
    13491348     * a zero length one-shot timer.
    13501349     */
    1351     if (    !(pThis->lvt[APIC_LVT_TIMER] & APIC_LVT_MASKED)
     1350    if (    !(pApic->lvt[APIC_LVT_TIMER] & APIC_LVT_MASKED)
    13521351        &&  u32NewInitialCount > 0)
    13531352    {
     
    13581357        uint64_t cTicksNext = u32NewInitialCount;
    13591358        cTicksNext         += 1;
    1360         cTicksNext        <<= pThis->count_shift;
    1361         TMTimerSetRelative(pThis->CTX_SUFF(pTimer), cTicksNext, &pThis->initial_count_load_time);
    1362         pThis->next_time = pThis->initial_count_load_time + cTicksNext;
    1363         pThis->fTimerArmed = true;
    1364         apicDoFrequencyHinting(pThis);
    1365         STAM_COUNTER_INC(&pThis->StatTimerSetInitialCountArm);
    1366         Log(("apicTimerSetInitialCount: cTicksNext=%'llu (%#llx) ic=%#x sh=%#x nxt=%#llx\n", cTicksNext, cTicksNext, u32NewInitialCount, pThis->count_shift, pThis->next_time));
     1359        cTicksNext        <<= pApic->count_shift;
     1360        TMTimerSetRelative(pApic->CTX_SUFF(pTimer), cTicksNext, &pApic->initial_count_load_time);
     1361        pApic->next_time = pApic->initial_count_load_time + cTicksNext;
     1362        pApic->fTimerArmed = true;
     1363        apicDoFrequencyHinting(pApic);
     1364        STAM_COUNTER_INC(&pApic->StatTimerSetInitialCountArm);
     1365        Log(("apicTimerSetInitialCount: cTicksNext=%'llu (%#llx) ic=%#x sh=%#x nxt=%#llx\n",
     1366             cTicksNext, cTicksNext, u32NewInitialCount, pApic->count_shift, pApic->next_time));
    13671367    }
    13681368    else
    13691369    {
    13701370        /* Stop it if necessary and record the load time for unmasking. */
    1371         if (pThis->fTimerArmed)
     1371        if (pApic->fTimerArmed)
    13721372        {
    1373             STAM_COUNTER_INC(&pThis->StatTimerSetInitialCountDisarm);
    1374             TMTimerStop(pThis->CTX_SUFF(pTimer));
    1375             pThis->fTimerArmed = false;
    1376             pThis->uHintedCountShift = pThis->uHintedInitialCount = 0;
     1373            STAM_COUNTER_INC(&pApic->StatTimerSetInitialCountDisarm);
     1374            TMTimerStop(pApic->CTX_SUFF(pTimer));
     1375            pApic->fTimerArmed = false;
     1376            pApic->uHintedCountShift = pApic->uHintedInitialCount = 0;
    13771377        }
    1378         pThis->initial_count_load_time = TMTimerGet(pThis->CTX_SUFF(pTimer));
    1379         Log(("apicTimerSetInitialCount: ic=%#x sh=%#x iclt=%#llx\n", u32NewInitialCount, pThis->count_shift, pThis->initial_count_load_time));
     1378        pApic->initial_count_load_time = TMTimerGet(pApic->CTX_SUFF(pTimer));
     1379        Log(("apicTimerSetInitialCount: ic=%#x sh=%#x iclt=%#llx\n", u32NewInitialCount, pApic->count_shift, pApic->initial_count_load_time));
    13801380    }
    13811381}
     
    13841384 * Implementation of the 0320h access: change the LVT flags.
    13851385 *
    1386  * @param   dev             The device state.
    1387  * @param   pThis           The APIC sub-device state to operate on.
     1386 * @param   pDev             The device state.
     1387 * @param   pApic           The APIC sub-device state to operate on.
    13881388 * @param   fNew            The new flags.
    13891389 */
    1390 static void apicTimerSetLvt(APICDeviceInfo *dev, APICState *pThis, uint32_t fNew)
    1391 {
    1392     STAM_COUNTER_INC(&pThis->StatTimerSetLvt);
     1390static void apicTimerSetLvt(APICDeviceInfo *pDev, APICState *pApic, uint32_t fNew)
     1391{
     1392    STAM_COUNTER_INC(&pApic->StatTimerSetLvt);
    13931393
    13941394    /*
     
    13961396     * unnecessary work.
    13971397     */
    1398     uint32_t const fOld = pThis->lvt[APIC_LVT_TIMER];
    1399     pThis->lvt[APIC_LVT_TIMER] = fNew;
     1398    uint32_t const fOld = pApic->lvt[APIC_LVT_TIMER];
     1399    pApic->lvt[APIC_LVT_TIMER] = fNew;
    14001400
    14011401    /* Only the masked and peridic bits are relevant (see apic_timer_update). */
     
    14131413            && !(fNew & APIC_LVT_TIMER_PERIODIC))
    14141414        {
    1415             STAM_COUNTER_INC(&pThis->StatTimerSetLvtClearPeriodic);
    1416             uint64_t cTicks = (pThis->next_time - pThis->initial_count_load_time) >> pThis->count_shift;
    1417             if (cTicks >= pThis->initial_count)
     1415            STAM_COUNTER_INC(&pApic->StatTimerSetLvtClearPeriodic);
     1416            uint64_t cTicks = (pApic->next_time - pApic->initial_count_load_time) >> pApic->count_shift;
     1417            if (cTicks >= pApic->initial_count)
    14181418            {
    14191419                /* not first period, stop it. */
    1420                 TMTimerStop(pThis->CTX_SUFF(pTimer));
    1421                 pThis->fTimerArmed = false;
    1422                 pThis->uHintedCountShift = pThis->uHintedInitialCount = 0;
     1420                TMTimerStop(pApic->CTX_SUFF(pTimer));
     1421                pApic->fTimerArmed = false;
     1422                pApic->uHintedCountShift = pApic->uHintedInitialCount = 0;
    14231423            }
    14241424            /* else: first period, let it fire normally. */
     
    14311431         */
    14321432        if (fNew & APIC_LVT_MASKED)
    1433             STAM_COUNTER_INC(&pThis->StatTimerSetLvtPostponed);
    1434         else if (pThis->fTimerArmed)
    1435             STAM_COUNTER_INC(&pThis->StatTimerSetLvtArmed);
     1433            STAM_COUNTER_INC(&pApic->StatTimerSetLvtPostponed);
     1434        else if (pApic->fTimerArmed)
     1435            STAM_COUNTER_INC(&pApic->StatTimerSetLvtArmed);
    14361436        /*
    14371437         * If unmasked, not armed and with a valid initial count value (according
     
    14421442         */
    14431443        else if (   (fOld & APIC_LVT_MASKED)
    1444                  && pThis->initial_count > 0)
     1444                 && pApic->initial_count > 0)
    14451445        {
    1446             STAM_COUNTER_INC(&pThis->StatTimerSetLvtArm);
     1446            STAM_COUNTER_INC(&pApic->StatTimerSetLvtArm);
    14471447            for (unsigned cTries = 0; ; cTries++)
    14481448            {
    14491449                uint64_t NextTS;
    1450                 uint64_t cTicks = (TMTimerGet(pThis->CTX_SUFF(pTimer)) - pThis->initial_count_load_time) >> pThis->count_shift;
     1450                uint64_t cTicks = (TMTimerGet(pApic->CTX_SUFF(pTimer)) - pApic->initial_count_load_time) >> pApic->count_shift;
    14511451                if (fNew & APIC_LVT_TIMER_PERIODIC)
    1452                     NextTS = ((cTicks / ((uint64_t)pThis->initial_count + 1)) + 1) * ((uint64_t)pThis->initial_count + 1);
     1452                    NextTS = ((cTicks / ((uint64_t)pApic->initial_count + 1)) + 1) * ((uint64_t)pApic->initial_count + 1);
    14531453                else
    14541454                {
    1455                     if (cTicks >= pThis->initial_count)
     1455                    if (cTicks >= pApic->initial_count)
    14561456                        break;
    1457                     NextTS = (uint64_t)pThis->initial_count + 1;
     1457                    NextTS = (uint64_t)pApic->initial_count + 1;
    14581458                }
    1459                 NextTS <<= pThis->count_shift;
    1460                 NextTS += pThis->initial_count_load_time;
     1459                NextTS <<= pApic->count_shift;
     1460                NextTS += pApic->initial_count_load_time;
    14611461
    14621462                /* Try avoid the assertion in TM.cpp... this isn't perfect! */
    1463                 if (    NextTS > TMTimerGet(pThis->CTX_SUFF(pTimer))
     1463                if (    NextTS > TMTimerGet(pApic->CTX_SUFF(pTimer))
    14641464                    ||  cTries > 10)
    14651465                {
    1466                     TMTimerSet(pThis->CTX_SUFF(pTimer), NextTS);
    1467                     pThis->next_time = NextTS;
    1468                     pThis->fTimerArmed = true;
    1469                     apicDoFrequencyHinting(pThis);
    1470                     Log(("apicTimerSetLvt: ic=%#x sh=%#x nxt=%#llx\n", pThis->initial_count, pThis->count_shift, pThis->next_time));
     1466                    TMTimerSet(pApic->CTX_SUFF(pTimer), NextTS);
     1467                    pApic->next_time = NextTS;
     1468                    pApic->fTimerArmed = true;
     1469                    apicDoFrequencyHinting(pApic);
     1470                    Log(("apicTimerSetLvt: ic=%#x sh=%#x nxt=%#llx\n", pApic->initial_count, pApic->count_shift, pApic->next_time));
    14711471                    break;
    14721472                }
    1473                 STAM_COUNTER_INC(&pThis->StatTimerSetLvtArmRetries);
     1473                STAM_COUNTER_INC(&pApic->StatTimerSetLvtArmRetries);
    14741474            }
    14751475        }
    14761476    }
    14771477    else
    1478         STAM_COUNTER_INC(&pThis->StatTimerSetLvtNoRelevantChange);
     1478        STAM_COUNTER_INC(&pApic->StatTimerSetLvtNoRelevantChange);
    14791479}
    14801480
     
    14891489static DECLCALLBACK(void) apicTimerCallback(PPDMDEVINS pDevIns, PTMTIMER pTimer, void *pvUser)
    14901490{
    1491     APICDeviceInfo *dev   = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    1492     APICState      *pThis = (APICState *)pvUser;
    1493     Assert(pThis->pTimerR3 == pTimer);
    1494     Assert(pThis->fTimerArmed);
    1495     Assert(PDMCritSectIsOwned(dev->pCritSectR3));
     1491    APICDeviceInfo *pDev   = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     1492    APICState      *pApic = (APICState *)pvUser;
     1493    Assert(pApic->pTimerR3 == pTimer);
     1494    Assert(pApic->fTimerArmed);
     1495    Assert(PDMCritSectIsOwned(pDev->pCritSectR3));
    14961496    Assert(TMTimerIsLockOwner(pTimer));
    14971497
    1498     if (!(pThis->lvt[APIC_LVT_TIMER] & APIC_LVT_MASKED)) {
     1498    if (!(pApic->lvt[APIC_LVT_TIMER] & APIC_LVT_MASKED)) {
    14991499        LogFlow(("apic_timer: trigger irq\n"));
    1500         apic_set_irq(dev, pThis, pThis->lvt[APIC_LVT_TIMER] & 0xff, APIC_TRIGGER_EDGE);
    1501 
    1502         if (   (pThis->lvt[APIC_LVT_TIMER] & APIC_LVT_TIMER_PERIODIC)
    1503             && pThis->initial_count > 0) {
     1500        apic_set_irq(pDev, pApic, pApic->lvt[APIC_LVT_TIMER] & 0xff, APIC_TRIGGER_EDGE);
     1501
     1502        if (   (pApic->lvt[APIC_LVT_TIMER] & APIC_LVT_TIMER_PERIODIC)
     1503            && pApic->initial_count > 0) {
    15041504            /* new interval. */
    1505             pThis->next_time += (((uint64_t)pThis->initial_count + 1) << pThis->count_shift);
    1506             TMTimerSet(pThis->CTX_SUFF(pTimer), pThis->next_time);
    1507             pThis->fTimerArmed = true;
    1508             apicDoFrequencyHinting(pThis);
    1509             Log2(("apicTimerCallback: ic=%#x sh=%#x nxt=%#llx\n", pThis->initial_count, pThis->count_shift, pThis->next_time));
     1505            pApic->next_time += (((uint64_t)pApic->initial_count + 1) << pApic->count_shift);
     1506            TMTimerSet(pApic->CTX_SUFF(pTimer), pApic->next_time);
     1507            pApic->fTimerArmed = true;
     1508            apicDoFrequencyHinting(pApic);
     1509            Log2(("apicTimerCallback: ic=%#x sh=%#x nxt=%#llx\n", pApic->initial_count, pApic->count_shift, pApic->next_time));
    15101510        } else {
    15111511            /* single shot or disabled. */
    1512             pThis->fTimerArmed = false;
    1513             pThis->uHintedCountShift = pThis->uHintedInitialCount = 0;
     1512            pApic->fTimerArmed = false;
     1513            pApic->uHintedCountShift = pApic->uHintedInitialCount = 0;
    15141514        }
    15151515    } else {
    15161516        /* masked, do not rearm. */
    1517         pThis->fTimerArmed = false;
    1518         pThis->uHintedCountShift = pThis->uHintedInitialCount = 0;
     1517        pApic->fTimerArmed = false;
     1518        pApic->uHintedCountShift = pApic->uHintedInitialCount = 0;
    15191519    }
    15201520}
    15211521# endif /* IN_RING3 */
    15221522
    1523 static uint32_t apic_mem_readl(APICDeviceInfo* dev, APICState *s, RTGCPHYS addr)
     1523static uint32_t apic_mem_readl(APICDeviceInfo* pDev, APICState *s, RTGCPHYS addr)
    15241524{
    15251525    uint32_t val;
     
    15821582        break;
    15831583    case 0x39:
    1584         val = apic_get_current_count(dev, s);
     1584        val = apic_get_current_count(pDev, s);
    15851585        break;
    15861586    case 0x3e:
     
    19261926PDMBOTHCBDECL(int) apicMMIORead(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void *pv, unsigned cb)
    19271927{
    1928     APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    1929     APICState *s = getLapic(dev);
     1928    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     1929    APICState *s = getLapic(pDev);
    19301930
    19311931    Log(("CPU%d: apicMMIORead at %llx\n", s->phys_id,  (uint64_t)GCPhysAddr));
     
    19341934               different physical addresses, see #3092) */
    19351935
    1936     STAM_COUNTER_INC(&CTXSUFF(dev->StatMMIORead));
     1936    STAM_COUNTER_INC(&CTXSUFF(pDev->StatMMIORead));
    19371937    switch (cb)
    19381938    {
     
    19641964#endif
    19651965#endif /* experimental */
    1966             APIC_LOCK(dev, VINF_IOM_HC_MMIO_READ);
    1967             *(uint32_t *)pv = apic_mem_readl(dev, s, GCPhysAddr);
    1968             APIC_UNLOCK(dev);
     1966            APIC_LOCK(pDev, VINF_IOM_HC_MMIO_READ);
     1967            *(uint32_t *)pv = apic_mem_readl(pDev, s, GCPhysAddr);
     1968            APIC_UNLOCK(pDev);
    19691969            break;
    19701970        }
     
    19781978PDMBOTHCBDECL(int) apicMMIOWrite(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void *pv, unsigned cb)
    19791979{
    1980     APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    1981     APICState *s = getLapic(dev);
     1980    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     1981    APICState *s = getLapic(pDev);
    19821982
    19831983    Log(("CPU%d: apicMMIOWrite at %llx\n", s->phys_id, (uint64_t)GCPhysAddr));
     
    19861986               different physical addresses, see #3092) */
    19871987
    1988     STAM_COUNTER_INC(&CTXSUFF(dev->StatMMIOWrite));
     1988    STAM_COUNTER_INC(&CTXSUFF(pDev->StatMMIOWrite));
    19891989    switch (cb)
    19901990    {
     
    19961996        case 4:
    19971997            /* It does its own locking. */
    1998             return acpiWriteRegister(dev, s, (GCPhysAddr >> 4) & 0xff, *(uint32_t const *)pv,
     1998            return acpiWriteRegister(pDev, s, (GCPhysAddr >> 4) & 0xff, *(uint32_t const *)pv,
    19991999                                     VINF_IOM_HC_MMIO_WRITE, false /*fMsr*/);
    20002000
     
    20092009
    20102010/* Print a 8-dword LAPIC bit map (256 bits). */
    2011 static void lapicDumpVec(APICDeviceInfo  *dev, APICState *lapic, PCDBGFINFOHLP pHlp, unsigned start)
     2011static void lapicDumpVec(APICDeviceInfo  *pDev, APICState *lapic, PCDBGFINFOHLP pHlp, unsigned start)
    20122012{
    20132013    unsigned    i;
     
    20162016    for (i = 0; i < 8; ++i)
    20172017    {
    2018         val = apic_mem_readl(dev, lapic, start + (i << 4));
     2018        val = apic_mem_readl(pDev, lapic, start + (i << 4));
    20192019        pHlp->pfnPrintf(pHlp, "%08X", val);
    20202020    }
     
    20232023
    20242024/* Print basic LAPIC state. */
    2025 static DECLCALLBACK(void) lapicInfoBasic(APICDeviceInfo  *dev, APICState *lapic, PCDBGFINFOHLP pHlp)
     2025static DECLCALLBACK(void) lapicInfoBasic(APICDeviceInfo  *pDev, APICState *lapic, PCDBGFINFOHLP pHlp)
    20262026{
    20272027    uint32_t        val;
     
    20292029
    20302030    pHlp->pfnPrintf(pHlp, "Local APIC at %08X:\n", lapic->apicbase);
    2031     val = apic_mem_readl(dev, lapic, 0x20);
     2031    val = apic_mem_readl(pDev, lapic, 0x20);
    20322032    pHlp->pfnPrintf(pHlp, "  LAPIC ID  : %08X\n", val);
    20332033    pHlp->pfnPrintf(pHlp, "    APIC ID = %02X\n", (val >> 24) & 0xff);
    2034     val = apic_mem_readl(dev, lapic, 0x30);
     2034    val = apic_mem_readl(pDev, lapic, 0x30);
    20352035    max_lvt = (val >> 16) & 0xff;
    20362036    pHlp->pfnPrintf(pHlp, "  APIC VER   : %08X\n", val);
    20372037    pHlp->pfnPrintf(pHlp, "    version  = %02X\n", val & 0xff);
    20382038    pHlp->pfnPrintf(pHlp, "    lvts     = %d\n", ((val >> 16) & 0xff) + 1);
    2039     val = apic_mem_readl(dev, lapic, 0x80);
     2039    val = apic_mem_readl(pDev, lapic, 0x80);
    20402040    pHlp->pfnPrintf(pHlp, "  TPR        : %08X\n", val);
    20412041    pHlp->pfnPrintf(pHlp, "    task pri = %d/%d\n", (val >> 4) & 0xf, val & 0xf);
    2042     val = apic_mem_readl(dev, lapic, 0xA0);
     2042    val = apic_mem_readl(pDev, lapic, 0xA0);
    20432043    pHlp->pfnPrintf(pHlp, "  PPR        : %08X\n", val);
    20442044    pHlp->pfnPrintf(pHlp, "    cpu pri  = %d/%d\n", (val >> 4) & 0xf, val & 0xf);
    2045     val = apic_mem_readl(dev, lapic, 0xD0);
     2045    val = apic_mem_readl(pDev, lapic, 0xD0);
    20462046    pHlp->pfnPrintf(pHlp, "  LDR       : %08X\n", val);
    20472047    pHlp->pfnPrintf(pHlp, "    log id  = %02X\n", (val >> 24) & 0xff);
    2048     val = apic_mem_readl(dev, lapic, 0xE0);
     2048    val = apic_mem_readl(pDev, lapic, 0xE0);
    20492049    pHlp->pfnPrintf(pHlp, "  DFR       : %08X\n", val);
    2050     val = apic_mem_readl(dev, lapic, 0xF0);
     2050    val = apic_mem_readl(pDev, lapic, 0xF0);
    20512051    pHlp->pfnPrintf(pHlp, "  SVR       : %08X\n", val);
    20522052    pHlp->pfnPrintf(pHlp, "    focus   = %s\n", val & (1 << 9) ? "check off" : "check on");
     
    20542054    pHlp->pfnPrintf(pHlp, "    vector  = %02X\n", val & 0xff);
    20552055    pHlp->pfnPrintf(pHlp, "  ISR       : ");
    2056     lapicDumpVec(dev, lapic, pHlp, 0x100);
     2056    lapicDumpVec(pDev, lapic, pHlp, 0x100);
    20572057    val = get_highest_priority_int(lapic->isr);
    20582058    pHlp->pfnPrintf(pHlp, "    highest = %02X\n", val == ~0U ? 0 : val);
    20592059    pHlp->pfnPrintf(pHlp, "  IRR       : ");
    2060     lapicDumpVec(dev, lapic, pHlp, 0x200);
     2060    lapicDumpVec(pDev, lapic, pHlp, 0x200);
    20612061    val = get_highest_priority_int(lapic->irr);
    20622062    pHlp->pfnPrintf(pHlp, "    highest = %02X\n", val == ~0U ? 0 : val);
    2063     val = apic_mem_readl(dev, lapic, 0x320);
     2063    val = apic_mem_readl(pDev, lapic, 0x320);
    20642064}
    20652065
    20662066/* Print the more interesting LAPIC LVT entries. */
    2067 static DECLCALLBACK(void) lapicInfoLVT(APICDeviceInfo  *dev, APICState *lapic, PCDBGFINFOHLP pHlp)
     2067static DECLCALLBACK(void) lapicInfoLVT(APICDeviceInfo  *pDev, APICState *lapic, PCDBGFINFOHLP pHlp)
    20682068{
    20692069    uint32_t        val;
     
    20712071                                    "NMI", "INIT", "Reserved", "ExtINT" };
    20722072
    2073     val = apic_mem_readl(dev, lapic, 0x320);
     2073    val = apic_mem_readl(pDev, lapic, 0x320);
    20742074    pHlp->pfnPrintf(pHlp, "  LVT Timer : %08X\n", val);
    20752075    pHlp->pfnPrintf(pHlp, "    mode    = %s\n", val & (1 << 17) ? "periodic" : "one-shot");
     
    20772077    pHlp->pfnPrintf(pHlp, "    status  = %s\n", val & (1 << 12) ? "pending" : "idle");
    20782078    pHlp->pfnPrintf(pHlp, "    vector  = %02X\n", val & 0xff);
    2079     val = apic_mem_readl(dev, lapic, 0x350);
     2079    val = apic_mem_readl(pDev, lapic, 0x350);
    20802080    pHlp->pfnPrintf(pHlp, "  LVT LINT0 : %08X\n", val);
    20812081    pHlp->pfnPrintf(pHlp, "    mask    = %d\n", (val >> 16) & 1);
     
    20862086    pHlp->pfnPrintf(pHlp, "    delivry = %s\n", dmodes[(val >> 8) & 7]);
    20872087    pHlp->pfnPrintf(pHlp, "    vector  = %02X\n", val & 0xff);
    2088     val = apic_mem_readl(dev, lapic, 0x360);
     2088    val = apic_mem_readl(pDev, lapic, 0x360);
    20892089    pHlp->pfnPrintf(pHlp, "  LVT LINT1 : %08X\n", val);
    20902090    pHlp->pfnPrintf(pHlp, "    mask    = %d\n", (val >> 16) & 1);
     
    20982098
    20992099/* Print LAPIC timer state. */
    2100 static DECLCALLBACK(void) lapicInfoTimer(APICDeviceInfo  *dev, APICState *lapic, PCDBGFINFOHLP pHlp)
     2100static DECLCALLBACK(void) lapicInfoTimer(APICDeviceInfo  *pDev, APICState *lapic, PCDBGFINFOHLP pHlp)
    21012101{
    21022102    uint32_t        val;
     
    21042104
    21052105    pHlp->pfnPrintf(pHlp, "Local APIC timer:\n");
    2106     val = apic_mem_readl(dev, lapic, 0x380);
     2106    val = apic_mem_readl(pDev, lapic, 0x380);
    21072107    pHlp->pfnPrintf(pHlp, "  Initial count : %08X\n", val);
    2108     val = apic_mem_readl(dev, lapic, 0x390);
     2108    val = apic_mem_readl(pDev, lapic, 0x390);
    21092109    pHlp->pfnPrintf(pHlp, "  Current count : %08X\n", val);
    2110     val = apic_mem_readl(dev, lapic, 0x3E0);
     2110    val = apic_mem_readl(pDev, lapic, 0x3E0);
    21112111    pHlp->pfnPrintf(pHlp, "  Divide config : %08X\n", val);
    21122112    divider = ((val >> 1) & 0x04) | (val & 0x03);
     
    21232123static DECLCALLBACK(void) lapicInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    21242124{
    2125     APICDeviceInfo  *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     2125    APICDeviceInfo  *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    21262126    APICState       *lapic;
    21272127
    2128     lapic = getLapic(dev);
     2128    lapic = getLapic(pDev);
    21292129
    21302130    if (pszArgs == NULL || !strcmp(pszArgs, "basic"))
    21312131    {
    2132         lapicInfoBasic(dev, lapic, pHlp);
     2132        lapicInfoBasic(pDev, lapic, pHlp);
    21332133    }
    21342134    else if (!strcmp(pszArgs, "lvt"))
    21352135    {
    2136         lapicInfoLVT(dev, lapic, pHlp);
     2136        lapicInfoLVT(pDev, lapic, pHlp);
    21372137    }
    21382138    else if (!strcmp(pszArgs, "timer"))
    21392139    {
    2140         lapicInfoTimer(dev, lapic, pHlp);
     2140        lapicInfoTimer(pDev, lapic, pHlp);
    21412141    }
    21422142    else
     
    21512151static DECLCALLBACK(int) apicLiveExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSM, uint32_t uPass)
    21522152{
    2153     APICDeviceInfo *pThis = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    2154 
    2155     SSMR3PutU32( pSSM, pThis->cCpus);
    2156     SSMR3PutBool(pSSM, pThis->fIoApic);
    2157     SSMR3PutU32( pSSM, pThis->enmVersion);
     2153    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     2154
     2155    SSMR3PutU32( pSSM, pDev->cCpus);
     2156    SSMR3PutBool(pSSM, pDev->fIoApic);
     2157    SSMR3PutU32( pSSM, pDev->enmVersion);
    21582158    AssertCompile(PDMAPICVERSION_APIC == 2);
    21592159
     
    21662166static DECLCALLBACK(int) apicSaveExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSM)
    21672167{
    2168     APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     2168    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    21692169
    21702170    /* config */
     
    21722172
    21732173    /* save all APICs data, @todo: is it correct? */
    2174     foreach_apic(dev, 0xffffffff, apic_save(pSSM, apic));
     2174    foreach_apic(pDev, 0xffffffff, apic_save(pSSM, apic));
    21752175
    21762176    return VINF_SUCCESS;
     
    21822182static DECLCALLBACK(int) apicLoadExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSM, uint32_t uVersion, uint32_t uPass)
    21832183{
    2184     APICDeviceInfo *pThis = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     2184    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    21852185
    21862186    if (    uVersion != APIC_SAVED_STATE_VERSION
     
    21932193        uint32_t cCpus;
    21942194        int rc = SSMR3GetU32(pSSM, &cCpus); AssertRCReturn(rc, rc);
    2195         if (cCpus != pThis->cCpus)
    2196             return SSMR3SetCfgError(pSSM, RT_SRC_POS, N_("Config mismatch - cCpus: saved=%#x config=%#x"), cCpus, pThis->cCpus);
     2195        if (cCpus != pDev->cCpus)
     2196            return SSMR3SetCfgError(pSSM, RT_SRC_POS, N_("Config mismatch - cCpus: saved=%#x config=%#x"), cCpus, pDev->cCpus);
    21972197        bool fIoApic;
    21982198        rc = SSMR3GetBool(pSSM, &fIoApic); AssertRCReturn(rc, rc);
    2199         if (fIoApic != pThis->fIoApic)
    2200             return SSMR3SetCfgError(pSSM, RT_SRC_POS, N_("Config mismatch - fIoApic: saved=%RTbool config=%RTbool"), fIoApic, pThis->fIoApic);
     2199        if (fIoApic != pDev->fIoApic)
     2200            return SSMR3SetCfgError(pSSM, RT_SRC_POS, N_("Config mismatch - fIoApic: saved=%RTbool config=%RTbool"), fIoApic, pDev->fIoApic);
    22012201        uint32_t uApicVersion;
    22022202        rc = SSMR3GetU32(pSSM, &uApicVersion); AssertRCReturn(rc, rc);
    2203         if (uApicVersion != (uint32_t)pThis->enmVersion)
    2204             return SSMR3SetCfgError(pSSM, RT_SRC_POS, N_("Config mismatch - uApicVersion: saved=%#x config=%#x"), uApicVersion, pThis->enmVersion);
     2203        if (uApicVersion != (uint32_t)pDev->enmVersion)
     2204            return SSMR3SetCfgError(pSSM, RT_SRC_POS, N_("Config mismatch - uApicVersion: saved=%#x config=%#x"), uApicVersion, pDev->enmVersion);
    22052205    }
    22062206
     
    22092209
    22102210    /* load all APICs data */ /** @todo: is it correct? */
    2211     APIC_LOCK(pThis, VERR_INTERNAL_ERROR_3);
    2212     foreach_apic(pThis, 0xffffffff,
     2211    APIC_LOCK(pDev, VERR_INTERNAL_ERROR_3);
     2212    foreach_apic(pDev, 0xffffffff,
    22132213                 if (apic_load(pSSM, apic, uVersion)) {
    22142214                      AssertFailed();
    2215                       APIC_UNLOCK(pThis);
     2215                      APIC_UNLOCK(pDev);
    22162216                      return VERR_SSM_UNSUPPORTED_DATA_UNIT_VERSION;
    22172217                 }
    22182218                 );
    2219     APIC_UNLOCK(pThis);
     2219    APIC_UNLOCK(pDev);
    22202220    return VINF_SUCCESS;
    22212221}
     
    22262226static DECLCALLBACK(void) apicReset(PPDMDEVINS pDevIns)
    22272227{
    2228     APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    2229     unsigned i;
    2230 
    2231     APIC_LOCK_VOID(dev, VERR_INTERNAL_ERROR);
     2228    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     2229    APIC_LOCK_VOID(pDev, VERR_INTERNAL_ERROR);
    22322230
    22332231    /* Reset all APICs. */
    2234     for (i = 0; i < dev->cCpus; i++) {
    2235         APICState *pApic = &dev->CTX_SUFF(paLapics)[i];
     2232    for (VMCPUID i = 0; i < pDev->cCpus; i++) {
     2233        APICState *pApic = &pDev->CTX_SUFF(paLapics)[i];
    22362234        TMTimerStop(pApic->CTX_SUFF(pTimer));
    22372235
    22382236        /* Clear LAPIC state as if an INIT IPI was sent. */
    2239         apic_init_ipi(dev, pApic);
     2237        apic_init_ipi(pDev, pApic);
    22402238        /* The IDs are not touched by apic_init_ipi() and must be reset now. */
    22412239        pApic->arb_id = pApic->id = i;
     
    22472245
    22482246        /* Clear any pending APIC interrupt action flag. */
    2249         cpuClearInterrupt(dev, pApic);
     2247        cpuClearInterrupt(pDev, pApic);
    22502248    }
    22512249    /** @todo r=bird: Why is this done everytime, while the constructor first
    22522250     *        checks the CPUID?  Who is right? */
    2253     dev->pApicHlpR3->pfnChangeFeature(dev->pDevInsR3, dev->enmVersion);
    2254 
    2255     APIC_UNLOCK(dev);
     2251    pDev->pApicHlpR3->pfnChangeFeature(pDev->pDevInsR3, pDev->enmVersion);
     2252
     2253    APIC_UNLOCK(pDev);
    22562254}
    22572255
     
    22612259static DECLCALLBACK(void) apicRelocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta)
    22622260{
    2263     APICDeviceInfo *pThis = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    2264     pThis->pDevInsRC   = PDMDEVINS_2_RCPTR(pDevIns);
    2265     pThis->pApicHlpRC  = pThis->pApicHlpR3->pfnGetRCHelpers(pDevIns);
    2266     pThis->paLapicsRC  = MMHyperR3ToRC(PDMDevHlpGetVM(pDevIns), pThis->paLapicsR3);
    2267     pThis->pCritSectRC = pThis->pApicHlpR3->pfnGetRCCritSect(pDevIns);
    2268     for (uint32_t i = 0; i < pThis->cCpus; i++)
    2269         pThis->paLapicsR3[i].pTimerRC = TMTimerRCPtr(pThis->paLapicsR3[i].pTimerR3);
     2261    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     2262    pDev->pDevInsRC   = PDMDEVINS_2_RCPTR(pDevIns);
     2263    pDev->pApicHlpRC  = pDev->pApicHlpR3->pfnGetRCHelpers(pDevIns);
     2264    pDev->paLapicsRC  = MMHyperR3ToRC(PDMDevHlpGetVM(pDevIns), pDev->paLapicsR3);
     2265    pDev->pCritSectRC = pDev->pApicHlpR3->pfnGetRCCritSect(pDevIns);
     2266    for (uint32_t i = 0; i < pDev->cCpus; i++)
     2267        pDev->paLapicsR3[i].pTimerRC = TMTimerRCPtr(pDev->paLapicsR3[i].pTimerR3);
    22702268}
    22712269
     
    22972295    bool            fGCEnabled;
    22982296    bool            fR0Enabled;
    2299     APICDeviceInfo  *pThis = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
     2297    APICDeviceInfo *pDev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    23002298    uint32_t        cCpus;
    23012299
     
    23462344     * Init the data.
    23472345     */
    2348     pThis->pDevInsR3  = pDevIns;
    2349     pThis->pDevInsR0  = PDMDEVINS_2_R0PTR(pDevIns);
    2350     pThis->pDevInsRC  = PDMDEVINS_2_RCPTR(pDevIns);
    2351     pThis->cCpus      = cCpus;
    2352     pThis->fIoApic    = fIoApic;
     2346    pDev->pDevInsR3  = pDevIns;
     2347    pDev->pDevInsR0  = PDMDEVINS_2_R0PTR(pDevIns);
     2348    pDev->pDevInsRC  = PDMDEVINS_2_RCPTR(pDevIns);
     2349    pDev->cCpus      = cCpus;
     2350    pDev->fIoApic    = fIoApic;
    23532351    /* Use PDMAPICVERSION_X2APIC to activate x2APIC mode */
    2354     pThis->enmVersion = PDMAPICVERSION_APIC;
     2352    pDev->enmVersion = PDMAPICVERSION_APIC;
    23552353
    23562354    /* Disable locking in this device. */
     
    23632361     * We are not freeing this memory, as it's automatically released when guest exits.
    23642362     */
    2365     rc = MMHyperAlloc(pVM, cCpus * sizeof(APICState), 1, MM_TAG_PDM_DEVICE_USER, (void **)&pThis->paLapicsR3);
     2363    rc = MMHyperAlloc(pVM, cCpus * sizeof(APICState), 1, MM_TAG_PDM_DEVICE_USER, (void **)&pDev->paLapicsR3);
    23662364    if (RT_FAILURE(rc))
    23672365        return VERR_NO_MEMORY;
    2368     pThis->paLapicsR0 = MMHyperR3ToR0(pVM, pThis->paLapicsR3);
    2369     pThis->paLapicsRC = MMHyperR3ToRC(pVM, pThis->paLapicsR3);
     2366    pDev->paLapicsR0 = MMHyperR3ToR0(pVM, pDev->paLapicsR3);
     2367    pDev->paLapicsRC = MMHyperR3ToRC(pVM, pDev->paLapicsR3);
    23702368
    23712369    for (i = 0; i < cCpus; i++)
    2372         initApicData(&pThis->paLapicsR3[i], i);
     2370        initApicData(&pDev->paLapicsR3[i], i);
    23732371
    23742372    /*
     
    24332431    }
    24342432
    2435     rc = PDMDevHlpAPICRegister(pDevIns, &ApicReg, &pThis->pApicHlpR3);
     2433    rc = PDMDevHlpAPICRegister(pDevIns, &ApicReg, &pDev->pApicHlpR3);
    24362434    AssertLogRelRCReturn(rc, rc);
    2437     pThis->pCritSectR3 = pThis->pApicHlpR3->pfnGetR3CritSect(pDevIns);
     2435    pDev->pCritSectR3 = pDev->pApicHlpR3->pfnGetR3CritSect(pDevIns);
    24382436
    24392437    /*
     
    24522450                && u32Edx == X86_CPUID_VENDOR_AMD_EDX   /* AuthenticAMD */)) {
    24532451            LogRel(("Activating Local APIC\n"));
    2454             pThis->pApicHlpR3->pfnChangeFeature(pDevIns, pThis->enmVersion);
     2452            pDev->pApicHlpR3->pfnChangeFeature(pDevIns, pDev->enmVersion);
    24552453        }
    24562454    }
     
    24602458     * @todo: shall reregister, if base changes.
    24612459     */
    2462     uint32_t ApicBase = pThis->paLapicsR3[0].apicbase & ~0xfff;
    2463     rc = PDMDevHlpMMIORegister(pDevIns, ApicBase, 0x1000, pThis,
     2460    uint32_t ApicBase = pDev->paLapicsR3[0].apicbase & ~0xfff;
     2461    rc = PDMDevHlpMMIORegister(pDevIns, ApicBase, 0x1000, pDev,
    24642462                               apicMMIOWrite, apicMMIORead, NULL, "APIC Memory");
    24652463    if (RT_FAILURE(rc))
     
    24672465
    24682466    if (fGCEnabled) {
    2469         pThis->pApicHlpRC  = pThis->pApicHlpR3->pfnGetRCHelpers(pDevIns);
    2470         pThis->pCritSectRC = pThis->pApicHlpR3->pfnGetRCCritSect(pDevIns);
     2467        pDev->pApicHlpRC  = pDev->pApicHlpR3->pfnGetRCHelpers(pDevIns);
     2468        pDev->pCritSectRC = pDev->pApicHlpR3->pfnGetRCCritSect(pDevIns);
    24712469
    24722470        rc = PDMDevHlpMMIORegisterRC(pDevIns, ApicBase, 0x1000, 0,
     
    24772475
    24782476    if (fR0Enabled) {
    2479         pThis->pApicHlpR0  = pThis->pApicHlpR3->pfnGetR0Helpers(pDevIns);
    2480         pThis->pCritSectR0 = pThis->pApicHlpR3->pfnGetR0CritSect(pDevIns);
     2477        pDev->pApicHlpR0  = pDev->pApicHlpR3->pfnGetR0Helpers(pDevIns);
     2478        pDev->pCritSectR0 = pDev->pApicHlpR3->pfnGetR0CritSect(pDevIns);
    24812479
    24822480        rc = PDMDevHlpMMIORegisterR0(pDevIns, ApicBase, 0x1000, 0,
     
    24902488     */
    24912489    for (i = 0; i < cCpus; i++) {
    2492         APICState *pApic = &pThis->paLapicsR3[i];
     2490        APICState *pApic = &pDev->paLapicsR3[i];
    24932491        pApic->pszDesc = MMR3HeapAPrintf(pVM, MM_TAG_PDM_DEVICE_USER, "APIC Timer #%u", i);
    24942492        rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, apicTimerCallback, pApic,
     
    24982496        pApic->pTimerR0 = TMTimerR0Ptr(pApic->pTimerR3);
    24992497        pApic->pTimerRC = TMTimerRCPtr(pApic->pTimerR3);
    2500         TMR3TimerSetCritSect(pApic->pTimerR3, pThis->pCritSectR3);
     2498        TMR3TimerSetCritSect(pApic->pTimerR3, pDev->pCritSectR3);
    25012499    }
    25022500
     
    25042502     * Saved state.
    25052503     */
    2506     rc = PDMDevHlpSSMRegister3(pDevIns, APIC_SAVED_STATE_VERSION, sizeof(*pThis),
     2504    rc = PDMDevHlpSSMRegister3(pDevIns, APIC_SAVED_STATE_VERSION, sizeof(*pDev),
    25072505                               apicLiveExec, apicSaveExec, apicLoadExec);
    25082506    if (RT_FAILURE(rc))
     
    25192517     * Statistics.
    25202518     */
    2521     PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMMIOReadGC,     STAMTYPE_COUNTER,  "/Devices/APIC/MMIOReadGC",   STAMUNIT_OCCURENCES, "Number of APIC MMIO reads in GC.");
    2522     PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMMIOReadHC,     STAMTYPE_COUNTER,  "/Devices/APIC/MMIOReadHC",   STAMUNIT_OCCURENCES, "Number of APIC MMIO reads in HC.");
    2523     PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMMIOWriteGC,    STAMTYPE_COUNTER,  "/Devices/APIC/MMIOWriteGC",  STAMUNIT_OCCURENCES, "Number of APIC MMIO writes in GC.");
    2524     PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMMIOWriteHC,    STAMTYPE_COUNTER,  "/Devices/APIC/MMIOWriteHC",  STAMUNIT_OCCURENCES, "Number of APIC MMIO writes in HC.");
    2525     PDMDevHlpSTAMRegister(pDevIns, &pThis->StatClearedActiveIrq,STAMTYPE_COUNTER, "/Devices/APIC/MaskedActiveIRQ", STAMUNIT_OCCURENCES, "Number of cleared irqs.");
     2519    PDMDevHlpSTAMRegister(pDevIns, &pDev->StatMMIOReadGC,     STAMTYPE_COUNTER,  "/Devices/APIC/MMIOReadGC",   STAMUNIT_OCCURENCES, "Number of APIC MMIO reads in GC.");
     2520    PDMDevHlpSTAMRegister(pDevIns, &pDev->StatMMIOReadHC,     STAMTYPE_COUNTER,  "/Devices/APIC/MMIOReadHC",   STAMUNIT_OCCURENCES, "Number of APIC MMIO reads in HC.");
     2521    PDMDevHlpSTAMRegister(pDevIns, &pDev->StatMMIOWriteGC,    STAMTYPE_COUNTER,  "/Devices/APIC/MMIOWriteGC",  STAMUNIT_OCCURENCES, "Number of APIC MMIO writes in GC.");
     2522    PDMDevHlpSTAMRegister(pDevIns, &pDev->StatMMIOWriteHC,    STAMTYPE_COUNTER,  "/Devices/APIC/MMIOWriteHC",  STAMUNIT_OCCURENCES, "Number of APIC MMIO writes in HC.");
     2523    PDMDevHlpSTAMRegister(pDevIns, &pDev->StatClearedActiveIrq,STAMTYPE_COUNTER, "/Devices/APIC/MaskedActiveIRQ", STAMUNIT_OCCURENCES, "Number of cleared irqs.");
    25262524    for (i = 0; i < cCpus; i++) {
    2527         APICState *pApic = &pThis->paLapicsR3[i];
     2525        APICState *pApic = &pDev->paLapicsR3[i];
    25282526        PDMDevHlpSTAMRegisterF(pDevIns, &pApic->StatTimerSetInitialCount,       STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Calls to apicTimerSetInitialCount.",   "/Devices/APIC/%u/TimerSetInitialCount", i);
    25292527        PDMDevHlpSTAMRegisterF(pDevIns, &pApic->StatTimerSetInitialCountArm,    STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "TMTimerSetRelative calls.",            "/Devices/APIC/%u/TimerSetInitialCount/Arm", i);
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