20 #ifndef KERNEL_MACHINE_X86_COMMON_SMP_H 21 #define KERNEL_MACHINE_X86_COMMON_SMP_H 25 #include "../../core/processor/x86_common/Multiprocessor.h" 26 #include "pedigree/kernel/compiler.h" 27 #include "pedigree/kernel/processor/types.h" 28 #include "pedigree/kernel/utilities/Vector.h" 29 #include "pedigree/kernel/utilities/new" 41 inline static Smp &instance()
50 inline
bool valid()
const 58 inline uint64_t getLocalApicAddress()
const 60 return m_LocalApicAddress;
69 #if defined(MULTIPROCESSOR) 71 getProcessorList()
const 86 Smp &operator=(const Smp &);
94 struct FloatingPointer
106 struct ConfigTableHeader
109 uint16_t baseTableLength;
115 uint16_t oemTableSize;
117 uint32_t localApicAddress;
118 uint16_t extendedTableLength;
119 uint8_t extendedChecksum;
128 uint8_t localApicVersion;
131 uint32_t featureFlags;
154 struct IoInterruptAssignment
165 struct LocalInterruptAssignment
173 uint8_t localApicIntn;
187 bool checksum(const FloatingPointer *pFloatingPointer) INITIALISATION_ONLY;
191 bool checksum(const ConfigTableHeader *pConfigTable) INITIALISATION_ONLY;
196 FloatingPointer *m_pFloatingPointer;
198 ConfigTableHeader *m_pConfigTable;
204 uint64_t m_LocalApicAddress;
208 #if defined(MULTIPROCESSOR) 215 static Smp m_Instance;
#define INITIALISATION_ONLY
A vector / dynamic array.
uintptr_t physicalAddress(physical_uintptr_t address) PURE
The exception was caused by a hardware task switch.