Changeset 18996 in vbox
- Timestamp:
- Apr 17, 2009 2:46:18 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 46088
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/DevACPI.cpp
r18143 r18996 426 426 AssertCompileSize(ACPITBLIOAPIC, 12); 427 427 428 #ifdef VBOX_WITH_SMP_GUESTS429 428 # ifdef IN_RING3 /**@todo r=bird: Move this down to where it's used. */ 430 429 … … 532 531 }; 533 532 # endif /* IN_RING3 */ 534 535 #else /* !VBOX_WITH_SMP_GUESTS */536 /** Multiple APIC Description Table */537 struct ACPITBLMADT538 {539 ACPITBLHEADER header;540 uint32_t u32LAPIC; /**< local APIC address */541 uint32_t u32Flags; /**< Flags */542 # define PCAT_COMPAT 0x1 /**< system has also a dual-8259 setup */543 ACPITBLLAPIC LApic;544 ACPITBLIOAPIC IOApic;545 };546 AssertCompileSize(ACPITBLMADT, 64);547 #endif /* !VBOX_WITH_SMP_GUESTS */548 533 549 534 #pragma pack() … … 784 769 static void acpiSetupMADT(ACPIState *s, RTGCPHYS32 addr) 785 770 { 786 #ifdef VBOX_WITH_SMP_GUESTS787 771 uint16_t cpus = s->cCpus; 788 772 AcpiTableMADT madt(cpus); … … 815 799 madt.header_addr()->u8Checksum = acpiChecksum(madt.data(), madt.size()); 816 800 acpiPhyscpy(s, addr, madt.data(), madt.size()); 817 818 #else /* !VBOX_WITH_SMP_GUESTS */819 ACPITBLMADT madt;820 821 /* Don't call this function if u8UseIOApic==false! */822 Assert(s->u8UseIOApic);823 824 memset(&madt, 0, sizeof(madt));825 acpiPrepareHeader(&madt.header, "APIC", sizeof(madt), 2);826 827 madt.u32LAPIC = RT_H2LE_U32(0xfee00000);828 madt.u32Flags = RT_H2LE_U32(PCAT_COMPAT);829 830 madt.LApic.u8Type = 0;831 madt.LApic.u8Length = sizeof(ACPITBLLAPIC);832 madt.LApic.u8ProcId = 0;833 madt.LApic.u8ApicId = 0;834 madt.LApic.u32Flags = RT_H2LE_U32(LAPIC_ENABLED);835 836 madt.IOApic.u8Type = 1;837 madt.IOApic.u8Length = sizeof(ACPITBLIOAPIC);838 madt.IOApic.u8IOApicId = 1;839 madt.IOApic.u8Reserved = 0;840 madt.IOApic.u32Address = RT_H2LE_U32(0xfec00000);841 madt.IOApic.u32GSIB = RT_H2LE_U32(0);842 843 madt.header.u8Checksum = acpiChecksum((uint8_t*)&madt, sizeof(madt));844 acpiPhyscpy(s, addr, &madt, sizeof(madt));845 #endif /* !VBOX_WITH_SMP_GUESTS */846 801 } 847 802 … … 1373 1328 case SYSTEM_INFO_INDEX_CPU2_STATUS: 1374 1329 case SYSTEM_INFO_INDEX_CPU3_STATUS: 1375 #ifdef VBOX_WITH_SMP_GUESTS1376 1330 *pu32 = s->fShowCpu 1377 1331 && s->uSystemInfoIndex - SYSTEM_INFO_INDEX_CPU0_STATUS < s->cCpus … … 1381 1335 | STA_DEVICE_FUNCTIONING_PROPERLY_MASK 1382 1336 : 0; 1383 #else1384 *pu32 = 0;1385 #endif1386 1337 break; 1387 1338 … … 1780 1731 { 1781 1732 apic_addr = RT_ALIGN_32(facs_addr + sizeof(ACPITBLFACS), 16); 1782 #ifdef VBOX_WITH_SMP_GUESTS1783 1733 /** 1784 1734 * @todo nike: maybe some refactoring needed to compute tables layout, … … 1786 1736 */ 1787 1737 dsdt_addr = RT_ALIGN_32(apic_addr + AcpiTableMADT::sizeFor(s), 16); 1788 #else1789 dsdt_addr = RT_ALIGN_32(apic_addr + sizeof(ACPITBLMADT), 16);1790 #endif1791 1738 } 1792 1739 else
Note:
See TracChangeset
for help on using the changeset viewer.