Changeset 11269 in vbox for trunk/src/VBox/Devices/PC/DevAPIC.cpp
- Timestamp:
- Aug 8, 2008 4:24:48 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 34351
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/DevAPIC.cpp
r11223 r11269 1656 1656 static DECLCALLBACK(void) apicRelocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta) 1657 1657 { 1658 APICState *p Data= PDMINS_2_DATA(pDevIns, APICState *);1659 p Data->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);1660 p Data->pApicHlpRC = pData->pApicHlpR3->pfnGetRCHelpers(pDevIns);1661 p Data->pTimerRC = TMTimerRCPtr(pData->CTX_SUFF(pTimer));1658 APICState *pThis = PDMINS_2_DATA(pDevIns, APICState *); 1659 pThis->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns); 1660 pThis->pApicHlpRC = pThis->pApicHlpR3->pfnGetRCHelpers(pDevIns); 1661 pThis->pTimerRC = TMTimerRCPtr(pThis->CTX_SUFF(pTimer)); 1662 1662 } 1663 1663 … … 1667 1667 static DECLCALLBACK(int) apicConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGMNODE pCfgHandle) 1668 1668 { 1669 APICState *p Data= PDMINS_2_DATA(pDevIns, APICState *);1669 APICState *pThis = PDMINS_2_DATA(pDevIns, APICState *); 1670 1670 PDMAPICREG ApicReg; 1671 1671 int rc; … … 1701 1701 * Init the data. 1702 1702 */ 1703 p Data->pDevInsR3 = pDevIns;1704 p Data->pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns);1705 p Data->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);1706 p Data->apicbase = UINT32_C(0xfee00000) | MSR_IA32_APICBASE_BSP | MSR_IA32_APICBASE_ENABLE;1703 pThis->pDevInsR3 = pDevIns; 1704 pThis->pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns); 1705 pThis->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns); 1706 pThis->apicbase = UINT32_C(0xfee00000) | MSR_IA32_APICBASE_BSP | MSR_IA32_APICBASE_ENABLE; 1707 1707 for (i = 0; i < APIC_LVT_NB; i++) 1708 p Data->lvt[i] = 1 << 16; /* mask LVT */1709 p Data->spurious_vec = 0xff;1708 pThis->lvt[i] = 1 << 16; /* mask LVT */ 1709 pThis->spurious_vec = 0xff; 1710 1710 1711 1711 /* … … 1756 1756 1757 1757 Assert(pDevIns->pDevHlp->pfnAPICRegister); 1758 rc = pDevIns->pDevHlp->pfnAPICRegister(pDevIns, &ApicReg, &p Data->pApicHlpR3);1758 rc = pDevIns->pDevHlp->pfnAPICRegister(pDevIns, &ApicReg, &pThis->pApicHlpR3); 1759 1759 if (RT_FAILURE(rc)) 1760 1760 { … … 1779 1779 { 1780 1780 LogRel(("Activating Local APIC\n")); 1781 p Data->pApicHlpR3->pfnChangeFeature(pDevIns, true);1781 pThis->pApicHlpR3->pfnChangeFeature(pDevIns, true); 1782 1782 } 1783 1783 } … … 1786 1786 * Register the MMIO range. 1787 1787 */ 1788 rc = PDMDevHlpMMIORegister(pDevIns, p Data->apicbase & ~0xfff, 0x1000, pData,1788 rc = PDMDevHlpMMIORegister(pDevIns, pThis->apicbase & ~0xfff, 0x1000, pThis, 1789 1789 apicMMIOWrite, apicMMIORead, NULL, "APIC Memory"); 1790 1790 if (RT_FAILURE(rc)) … … 1792 1792 1793 1793 if (fGCEnabled) { 1794 p Data->pApicHlpRC = pData->pApicHlpR3->pfnGetRCHelpers(pDevIns);1795 1796 rc = PDMDevHlpMMIORegisterGC(pDevIns, p Data->apicbase & ~0xfff, 0x1000, 0,1794 pThis->pApicHlpRC = pThis->pApicHlpR3->pfnGetRCHelpers(pDevIns); 1795 1796 rc = PDMDevHlpMMIORegisterGC(pDevIns, pThis->apicbase & ~0xfff, 0x1000, 0, 1797 1797 "apicMMIOWrite", "apicMMIORead", NULL); 1798 1798 if (RT_FAILURE(rc)) … … 1801 1801 1802 1802 if (fR0Enabled) { 1803 p Data->pApicHlpR0 = pData->pApicHlpR3->pfnGetR0Helpers(pDevIns);1804 1805 rc = PDMDevHlpMMIORegisterR0(pDevIns, p Data->apicbase & ~0xfff, 0x1000, 0,1803 pThis->pApicHlpR0 = pThis->pApicHlpR3->pfnGetR0Helpers(pDevIns); 1804 1805 rc = PDMDevHlpMMIORegisterR0(pDevIns, pThis->apicbase & ~0xfff, 0x1000, 0, 1806 1806 "apicMMIOWrite", "apicMMIORead", NULL); 1807 1807 if (RT_FAILURE(rc)) … … 1813 1813 */ 1814 1814 rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, apicTimer, 1815 "APIC Timer", &p Data->CTX_SUFF(pTimer));1815 "APIC Timer", &pThis->CTX_SUFF(pTimer)); 1816 1816 if (RT_FAILURE(rc)) 1817 1817 return rc; 1818 p Data->pTimerR0 = TMTimerR0Ptr(pData->CTX_SUFF(pTimer));1819 p Data->pTimerRC = TMTimerRCPtr(pData->CTX_SUFF(pTimer));1818 pThis->pTimerR0 = TMTimerR0Ptr(pThis->CTX_SUFF(pTimer)); 1819 pThis->pTimerRC = TMTimerRCPtr(pThis->CTX_SUFF(pTimer)); 1820 1820 1821 1821 /* … … 1823 1823 */ 1824 1824 rc = PDMDevHlpSSMRegister(pDevIns, pDevIns->pDevReg->szDeviceName, iInstance, 1 /* version */, 1825 sizeof(*p Data), NULL, apicSaveExec, NULL, NULL, apicLoadExec, NULL);1825 sizeof(*pThis), NULL, apicSaveExec, NULL, NULL, apicLoadExec, NULL); 1826 1826 if (RT_FAILURE(rc)) 1827 1827 return rc; … … 1831 1831 * Statistics. 1832 1832 */ 1833 PDMDevHlpSTAMRegister(pDevIns, &p Data->StatMMIOReadGC, STAMTYPE_COUNTER, "/PDM/APIC/MMIOReadGC", STAMUNIT_OCCURENCES, "Number of APIC MMIO reads in GC.");1834 PDMDevHlpSTAMRegister(pDevIns, &p Data->StatMMIOReadHC, STAMTYPE_COUNTER, "/PDM/APIC/MMIOReadHC", STAMUNIT_OCCURENCES, "Number of APIC MMIO reads in HC.");1835 PDMDevHlpSTAMRegister(pDevIns, &p Data->StatMMIOWriteGC, STAMTYPE_COUNTER, "/PDM/APIC/MMIOWriteGC", STAMUNIT_OCCURENCES, "Number of APIC MMIO writes in GC.");1836 PDMDevHlpSTAMRegister(pDevIns, &p Data->StatMMIOWriteHC, STAMTYPE_COUNTER, "/PDM/APIC/MMIOWriteHC", STAMUNIT_OCCURENCES, "Number of APIC MMIO writes in HC.");1837 PDMDevHlpSTAMRegister(pDevIns, &p Data->StatClearedActiveIrq, STAMTYPE_COUNTER, "/PDM/APIC/Masked/ActiveIRQ", STAMUNIT_OCCURENCES, "Number of cleared irqs.");1833 PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMMIOReadGC, STAMTYPE_COUNTER, "/PDM/APIC/MMIOReadGC", STAMUNIT_OCCURENCES, "Number of APIC MMIO reads in GC."); 1834 PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMMIOReadHC, STAMTYPE_COUNTER, "/PDM/APIC/MMIOReadHC", STAMUNIT_OCCURENCES, "Number of APIC MMIO reads in HC."); 1835 PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMMIOWriteGC, STAMTYPE_COUNTER, "/PDM/APIC/MMIOWriteGC", STAMUNIT_OCCURENCES, "Number of APIC MMIO writes in GC."); 1836 PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMMIOWriteHC, STAMTYPE_COUNTER, "/PDM/APIC/MMIOWriteHC", STAMUNIT_OCCURENCES, "Number of APIC MMIO writes in HC."); 1837 PDMDevHlpSTAMRegister(pDevIns, &pThis->StatClearedActiveIrq, STAMTYPE_COUNTER, "/PDM/APIC/Masked/ActiveIRQ", STAMUNIT_OCCURENCES, "Number of cleared irqs."); 1838 1838 #endif 1839 1839
Note:
See TracChangeset
for help on using the changeset viewer.