VirtualBox

Changeset 61807 in vbox


Ignore:
Timestamp:
Jun 21, 2016 7:41:29 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
108208
Message:

VMM: attempt to fix the Windows breakage

Location:
trunk/src/VBox/VMM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/APICAll.cpp

    r61800 r61807  
    17931793 * @interface_method_impl{PDMAPICREG,pfnReadMsrR3}
    17941794 */
    1795 DECLCALLBACK(VBOXSTRICTRC) apicReadMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint32_t u32Reg, uint64_t *pu64Value)
     1795APICBOTHCBDECL(VBOXSTRICTRC) apicReadMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint32_t u32Reg, uint64_t *pu64Value)
    17961796{
    17971797    /*
     
    19001900 * @interface_method_impl{PDMAPICREG,pfnWriteMsrR3}
    19011901 */
    1902 DECLCALLBACK(VBOXSTRICTRC) apicWriteMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint32_t u32Reg, uint64_t u64Value)
     1902APICBOTHCBDECL(VBOXSTRICTRC) apicWriteMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint32_t u32Reg, uint64_t u64Value)
    19031903{
    19041904    /*
     
    20372037 * @interface_method_impl{PDMAPICREG,pfnSetBaseMsrR3}
    20382038 */
    2039 DECLCALLBACK(VBOXSTRICTRC) apicSetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint64_t u64BaseMsr)
     2039APICBOTHCBDECL(VBOXSTRICTRC) apicSetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint64_t u64BaseMsr)
    20402040{
    20412041    Assert(pVCpu);
     
    21742174 * @interface_method_impl{PDMAPICREG,pfnGetBaseMsrR3}
    21752175 */
    2176 DECLCALLBACK(uint64_t) apicGetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu)
     2176APICBOTHCBDECL(uint64_t) apicGetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu)
    21772177{
    21782178    VMCPU_ASSERT_EMT_OR_NOT_RUNNING(pVCpu);
     
    21862186 * @interface_method_impl{PDMAPICREG,pfnSetTprR3}
    21872187 */
    2188 DECLCALLBACK(void) apicSetTpr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t u8Tpr)
     2188APICBOTHCBDECL(void) apicSetTpr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t u8Tpr)
    21892189{
    21902190    apicSetTpr(pVCpu, u8Tpr);
     
    22182218 * @interface_method_impl{PDMAPICREG,pfnGetTprR3}
    22192219 */
    2220 DECLCALLBACK(uint8_t) apicGetTpr(PPDMDEVINS pDevIns, PVMCPU pVCpu, bool *pfPending, uint8_t *pu8PendingIntr)
     2220APICBOTHCBDECL(uint8_t) apicGetTpr(PPDMDEVINS pDevIns, PVMCPU pVCpu, bool *pfPending, uint8_t *pu8PendingIntr)
    22212221{
    22222222    VMCPU_ASSERT_EMT(pVCpu);
     
    22392239 * @interface_method_impl{PDMAPICREG,pfnGetTimerFreqR3}
    22402240 */
    2241 DECLCALLBACK(uint64_t) apicGetTimerFreq(PPDMDEVINS pDevIns)
     2241APICBOTHCBDECL(uint64_t) apicGetTimerFreq(PPDMDEVINS pDevIns)
    22422242{
    22432243    PVM      pVM      = PDMDevHlpGetVM(pDevIns);
     
    22532253 * @remarks This is a private interface between the IOAPIC and the APIC.
    22542254 */
    2255 DECLCALLBACK(int) apicBusDeliver(PPDMDEVINS pDevIns, uint8_t uDest, uint8_t uDestMode, uint8_t uDeliveryMode, uint8_t uVector,
     2255APICBOTHCBDECL(int) apicBusDeliver(PPDMDEVINS pDevIns, uint8_t uDest, uint8_t uDestMode, uint8_t uDeliveryMode, uint8_t uVector,
    22562256                            uint8_t uPolarity, uint8_t uTriggerMode, uint32_t uTagSrc)
    22572257{
     
    22872287 * @remarks This is a private interface between the PIC and the APIC.
    22882288 */
    2289 DECLCALLBACK(VBOXSTRICTRC) apicLocalInterrupt(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t u8Pin, uint8_t u8Level, int rcRZ)
     2289APICBOTHCBDECL(VBOXSTRICTRC) apicLocalInterrupt(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t u8Pin, uint8_t u8Level, int rcRZ)
    22902290{
    22912291    NOREF(pDevIns);
     
    24482448 * @interface_method_impl{PDMAPICREG,pfnGetInterruptR3}
    24492449 */
    2450 DECLCALLBACK(int) apicGetInterrupt(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t *pu8Vector, uint32_t *pu32TagSrc)
     2450APICBOTHCBDECL(int) apicGetInterrupt(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t *pu8Vector, uint32_t *pu32TagSrc)
    24512451{
    24522452    VMCPU_ASSERT_EMT(pVCpu);
     
    25202520 * @callback_method_impl{FNIOMMMIOREAD}
    25212521 */
    2522 DECLCALLBACK(int) apicReadMmio(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void *pv, unsigned cb)
     2522APICBOTHCBDECL(int) apicReadMmio(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void *pv, unsigned cb)
    25232523{
    25242524    NOREF(pvUser);
     
    25442544 * @callback_method_impl{FNIOMMMIOWRITE}
    25452545 */
    2546 DECLCALLBACK(int) apicWriteMmio(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void const *pv, unsigned cb)
     2546APICBOTHCBDECL(int) apicWriteMmio(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void const *pv, unsigned cb)
    25472547{
    25482548    NOREF(pvUser);
  • trunk/src/VBox/VMM/include/APICInternal.h

    r61795 r61807  
    14081408RT_C_DECLS_BEGIN
    14091409
    1410 const char                 *apicGetModeName(APICMODE enmMode);
    1411 const char                 *apicGetDestFormatName(XAPICDESTFORMAT enmDestFormat);
    1412 const char                 *apicGetDeliveryModeName(XAPICDELIVERYMODE enmDeliveryMode);
    1413 const char                 *apicGetDestModeName(XAPICDESTMODE enmDestMode);
    1414 const char                 *apicGetTriggerModeName(XAPICTRIGGERMODE enmTriggerMode);
    1415 const char                 *apicGetDestShorthandName(XAPICDESTSHORTHAND enmDestShorthand);
    1416 const char                 *apicGetTimerModeName(XAPICTIMERMODE enmTimerMode);
    1417 void                        apicHintTimerFreq(PAPICCPU pApicCpu, uint32_t uInitialCount, uint8_t uTimerShift);
    1418 APICMODE                    apicGetMode(uint64_t uApicBaseMsr);
    1419 
    1420 DECLCALLBACK(uint64_t)      apicGetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu);
    1421 DECLCALLBACK(VBOXSTRICTRC)  apicSetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint64_t uBase);
    1422 DECLCALLBACK(uint8_t)       apicGetTpr(PPDMDEVINS pDevIns, PVMCPU pVCpu, bool *pfPending, uint8_t *pu8PendingIntr);
    1423 DECLCALLBACK(void)          apicSetTpr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t u8Tpr);
    1424 DECLCALLBACK(uint64_t)      apicGetTimerFreq(PPDMDEVINS pDevIns);
    1425 DECLCALLBACK(int)           apicReadMmio(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void *pv, unsigned cb);
    1426 DECLCALLBACK(int)           apicWriteMmio(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void const *pv, unsigned cb);
    1427 DECLCALLBACK(VBOXSTRICTRC)  apicReadMsr(PPDMDEVINS pDevIns,  PVMCPU pVCpu, uint32_t u32Reg, uint64_t *pu64Val);
    1428 DECLCALLBACK(VBOXSTRICTRC)  apicWriteMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint32_t u32Reg, uint64_t u64Val);
    1429 DECLCALLBACK(int)           apicGetInterrupt(PPDMDEVINS pDevIns,  PVMCPU pVCpu, uint8_t *puVector, uint32_t *puTagSrc);
    1430 DECLCALLBACK(VBOXSTRICTRC)  apicLocalInterrupt(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t u8Pin, uint8_t u8Level, int rcRZ);
    1431 DECLCALLBACK(int)           apicBusDeliver(PPDMDEVINS pDevIns, uint8_t uDest, uint8_t uDestMode, uint8_t uDeliveryMode,
    1432                                            uint8_t uVector, uint8_t uPolarity, uint8_t uTriggerMode, uint32_t uTagSrc);
    1433 
    1434 VMM_INT_DECL(void)          apicPostInterrupt(PVMCPU pVCpu, uint8_t uVector, XAPICTRIGGERMODE enmTriggerMode);
    1435 VMM_INT_DECL(void)          apicStartTimer(PVMCPU pVCpu, uint32_t uInitialCount);
    1436 VMM_INT_DECL(void)          apicStopTimer(PVMCPU pVCpu);
    1437 VMM_INT_DECL(void)          apicSetInterruptFF(PVMCPU pVCpu, PDMAPICIRQ enmType);
    1438 VMM_INT_DECL(void)          apicClearInterruptFF(PVMCPU pVCpu, PDMAPICIRQ enmType);
     1410
     1411/** @def APICBOTHCBDECL
     1412 * Macro for declaring a callback which is static in HC and exported in GC.
     1413 */
     1414#if defined(IN_RC) || defined(IN_RING0)
     1415# ifdef __cplusplus
     1416#  define APICBOTHCBDECL(type)   extern "C" DECLEXPORT(type)
     1417# else
     1418#  define APICBOTHCBDECL(type)   DECLEXPORT(type)
     1419# endif
     1420#else
     1421# define APICBOTHCBDECL(type)    DECLCALLBACK(type)
     1422#endif
     1423
     1424const char                   *apicGetModeName(APICMODE enmMode);
     1425const char                   *apicGetDestFormatName(XAPICDESTFORMAT enmDestFormat);
     1426const char                   *apicGetDeliveryModeName(XAPICDELIVERYMODE enmDeliveryMode);
     1427const char                   *apicGetDestModeName(XAPICDESTMODE enmDestMode);
     1428const char                   *apicGetTriggerModeName(XAPICTRIGGERMODE enmTriggerMode);
     1429const char                   *apicGetDestShorthandName(XAPICDESTSHORTHAND enmDestShorthand);
     1430const char                   *apicGetTimerModeName(XAPICTIMERMODE enmTimerMode);
     1431void                          apicHintTimerFreq(PAPICCPU pApicCpu, uint32_t uInitialCount, uint8_t uTimerShift);
     1432APICMODE                      apicGetMode(uint64_t uApicBaseMsr);
     1433
     1434APICBOTHCBDECL(uint64_t)      apicGetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu);
     1435APICBOTHCBDECL(VBOXSTRICTRC)  apicSetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint64_t uBase);
     1436APICBOTHCBDECL(uint8_t)       apicGetTpr(PPDMDEVINS pDevIns, PVMCPU pVCpu, bool *pfPending, uint8_t *pu8PendingIntr);
     1437APICBOTHCBDECL(void)          apicSetTpr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t u8Tpr);
     1438APICBOTHCBDECL(uint64_t)      apicGetTimerFreq(PPDMDEVINS pDevIns);
     1439APICBOTHCBDECL(int)           apicReadMmio(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void *pv, unsigned cb);
     1440APICBOTHCBDECL(int)           apicWriteMmio(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void const *pv, unsigned cb);
     1441APICBOTHCBDECL(VBOXSTRICTRC)  apicReadMsr(PPDMDEVINS pDevIns,  PVMCPU pVCpu, uint32_t u32Reg, uint64_t *pu64Val);
     1442APICBOTHCBDECL(VBOXSTRICTRC)  apicWriteMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint32_t u32Reg, uint64_t u64Val);
     1443APICBOTHCBDECL(int)           apicGetInterrupt(PPDMDEVINS pDevIns,  PVMCPU pVCpu, uint8_t *puVector, uint32_t *puTagSrc);
     1444APICBOTHCBDECL(VBOXSTRICTRC)  apicLocalInterrupt(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t u8Pin, uint8_t u8Level, int rcRZ);
     1445APICBOTHCBDECL(int)           apicBusDeliver(PPDMDEVINS pDevIns, uint8_t uDest, uint8_t uDestMode, uint8_t uDeliveryMode,
     1446                                             uint8_t uVector, uint8_t uPolarity, uint8_t uTriggerMode, uint32_t uTagSrc);
     1447
     1448VMM_INT_DECL(void)            apicPostInterrupt(PVMCPU pVCpu, uint8_t uVector, XAPICTRIGGERMODE enmTriggerMode);
     1449VMM_INT_DECL(void)            apicStartTimer(PVMCPU pVCpu, uint32_t uInitialCount);
     1450VMM_INT_DECL(void)            apicStopTimer(PVMCPU pVCpu);
     1451VMM_INT_DECL(void)            apicSetInterruptFF(PVMCPU pVCpu, PDMAPICIRQ enmType);
     1452VMM_INT_DECL(void)            apicClearInterruptFF(PVMCPU pVCpu, PDMAPICIRQ enmType);
    14391453
    14401454#ifdef IN_RING3
    1441 VMMR3_INT_DECL(void)        apicR3ResetCpu(PVMCPU pVCpu, bool fResetApicBaseMsr);
     1455VMMR3_INT_DECL(void)          apicR3ResetCpu(PVMCPU pVCpu, bool fResetApicBaseMsr);
    14421456#endif
    14431457
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