20 #ifndef KERNEL_MACHINE_X86_COMMON_LOCAL_APIC_H 21 #define KERNEL_MACHINE_X86_COMMON_LOCAL_APIC_H 25 #include "pedigree/kernel/compiler.h" 26 #include "pedigree/kernel/machine/SchedulerTimer.h" 27 #include "pedigree/kernel/processor/InterruptHandler.h" 28 #include "pedigree/kernel/processor/MemoryMappedIo.h" 29 #include "pedigree/kernel/processor/Processor.h" 30 #include "pedigree/kernel/processor/ProcessorInformation.h" 31 #include "pedigree/kernel/processor/state_forward.h" 32 #include "pedigree/kernel/processor/types.h" 33 #include "pedigree/kernel/utilities/Tree.h" 34 #include "pedigree/kernel/utilities/new" 38 #define IPI_HALT_VECTOR 0xFB 39 #define ERROR_VECTOR 0xFC 40 #define SPURIOUS_VECTOR 0xFD 41 #define TIMER_VECTOR 0xFE 53 : m_IoSpace(
"Local APIC"), m_Handlers(), m_BusFrequency(0)
57 inline virtual ~LocalApic()
71 bool initialiseProcessor() INITIALISATION_ONLY;
76 deliveryModeFixed = 0,
77 deliveryModeLowestPriority = 1,
81 deliveryModeStartup = 6,
82 deliveryModeExtInt = 7
90 void interProcessorInterrupt(
91 uint8_t destinationApicId, uint8_t vector,
size_t deliveryMode,
92 bool bAssert,
bool bLevelTriggered);
97 void interProcessorInterruptAllExcludingThis(
98 uint8_t vector,
size_t deliveryMode);
119 LocalApic(
const LocalApic &);
133 virtual void interrupt(
size_t nInterruptNumber, InterruptState &state);
142 size_t m_BusFrequency;
#define INITIALISATION_ONLY
uintptr_t physicalAddress(physical_uintptr_t address) PURE
SchedulerTimer & operator=(const SchedulerTimer &)
virtual void interrupt(size_t nInterruptNumber, InterruptState &state)=0
Abstract base class for interrupt-handlers.