198 return di::bit_cast<ApicInterruptCommandRegister>((
u64(high) << 32) | low);
201 auto raw_value = di::bit_cast<u64>(value);
202 auto low =
static_cast<u32>(raw_value);
203 auto high =
static_cast<u32>(raw_value >> 32);
211 u32 volatile* m_base {
nullptr };
Definition bit_struct.h:11
auto timer_divide_configuration() const -> ApicTimerDivideConfiguration
Definition local_apic.h:188
void write_timer_current_count(u32 value)
Definition local_apic.h:186
auto id() const -> u16
Read the Local APIC ID.
Definition local_apic.h:160
auto extended_feature() const -> ApicExtendedFeatureRegister
Definition local_apic.h:166
void direct_write(ApicOffset offset, u32 value)
Definition local_apic.h:155
auto direct_read(ApicOffset offset) const -> u32
Definition local_apic.h:154
void send_eoi()
Definition local_apic.h:208
auto lvt_entry(ApicOffset offset) const -> ApicLvtEntry
Definition local_apic.h:179
auto extended_control() const -> ApicExtendedControlRegister
Definition local_apic.h:170
auto interrupt_command_register() const -> ApicInterruptCommandRegister
Definition local_apic.h:195
auto version() const -> ApicVersionRegister
Definition local_apic.h:162
void write_lvt_entry(ApicOffset offset, ApicLvtEntry value)
Definition local_apic.h:180
void write_timer_divide_configuration(ApicTimerDivideConfiguration value)
Definition local_apic.h:191
void write_interrupt_command_register(ApicInterruptCommandRegister value)
Definition local_apic.h:200
void write_extended_control(ApicExtendedControlRegister value)
Definition local_apic.h:173
auto timer_initial_count() const -> u32
Definition local_apic.h:182
void write_timer_initial_count(u32 value)
Definition local_apic.h:183
LocalApic(mm::PhysicalAddress base)
Definition local_apic.cpp:116
void write_spurious_interrupt_vector(u32 value)
Definition local_apic.h:177
auto timer_current_count() const -> u32
Definition local_apic.h:185
__UINT64_TYPE__ u64
Definition integers.h:12
__UINT8_TYPE__ u8
Definition integers.h:9
__UINT32_TYPE__ u32
Definition integers.h:11
__UINT16_TYPE__ u16
Definition integers.h:10
constexpr auto to_underlying
Definition to_underlying.h:15
di::StrongInt< PhysicalAddressTag > PhysicalAddress
Definition physical_address.h:12
void init_local_apic(bool print_info)
Definition local_apic.cpp:228
di::BitStruct< 8, ApicInterruptCommandVector, ApicInterruptCommandDeliveryMode, ApicInterruptCommandDestinationMode, ApicInterruptCommandDeliveryStatus, ApicInterruptCommandLevel, ApicInterruptCommandTriggerMode, ApicInterruptCommandRemoteReadStatus, ApicInterruptCommandDestinationShorthand, ApicInterruptCommandDestination > ApicInterruptCommandRegister
Local APIC Interrupt Command Register.
Definition local_apic.h:144
di::BitStruct< 4, ApicExtendedFeatureInterruptEnable, ApicExtendedFeatureSpecificEoi, ApicExtendedFeatureExtendedId, ApicExtendedFeatureExtendedLvtCount > ApicExtendedFeatureRegister
Local APIC Extended Feature Register.
Definition local_apic.h:63
void init_alternative_processors()
Definition local_apic.cpp:485
di::BitStruct< 4, ApicVersion, ApicMaxLvtEntry, ApicExtendedRegisterPresent > ApicVersionRegister
Local APIC Version Register.
Definition local_apic.h:53
ApicTimerDivideConfiguration
Local APIC Timer Divide Configuration.
Definition local_apic.h:110
@ DivideBy8
Definition local_apic.h:113
@ DivideBy1
Definition local_apic.h:118
@ DivideBy2
Definition local_apic.h:111
@ DivideBy4
Definition local_apic.h:112
@ DivideBy128
Definition local_apic.h:117
@ DivideBy16
Definition local_apic.h:114
@ DivideBy32
Definition local_apic.h:115
@ DivideBy64
Definition local_apic.h:116
@ Version
Definition io_apic.h:31
@ Id
Definition io_apic.h:30
ApicOffset
Local APIC Register Offsets.
Definition local_apic.h:12
@ EndOfInterrupt
Definition local_apic.h:18
@ PerformanceLvtEntry
Definition local_apic.h:32
@ Lint0Entry
Definition local_apic.h:33
@ TimerCurrentCount
Definition local_apic.h:37
@ Version
Definition local_apic.h:14
@ Id
Definition local_apic.h:13
@ RemoteRead
Definition local_apic.h:19
@ InterruptRequest
Definition local_apic.h:25
@ InterruptEnable
Definition local_apic.h:42
@ SpuriousInterruptVector
Definition local_apic.h:22
@ TimerDivideConfiguration
Definition local_apic.h:38
@ InterruptCommandHigh
Definition local_apic.h:29
@ TimerInitialCount
Definition local_apic.h:36
@ InterruptCommandLow
Definition local_apic.h:28
@ LogicalDestination
Definition local_apic.h:20
@ TaskPriority
Definition local_apic.h:15
@ TimerLvtEntry
Definition local_apic.h:30
@ InService
Definition local_apic.h:23
@ ExtendedFeature
Definition local_apic.h:39
@ DestinationFormat
Definition local_apic.h:21
@ Lint1Entry
Definition local_apic.h:34
@ ErrorEntry
Definition local_apic.h:35
@ ArbitrationPriority
Definition local_apic.h:16
@ TriggerMode
Definition local_apic.h:24
@ ProcessorPriority
Definition local_apic.h:17
@ ExtendedControl
Definition local_apic.h:40
@ LvtTimer
Definition local_apic.h:27
@ ThermalLvtEntry
Definition local_apic.h:31
@ SpecificEndOfInterrupt
Definition local_apic.h:41
@ ExtendedLvtEntries
Definition local_apic.h:43
@ ErrorStatus
Definition local_apic.h:26
di::BitStruct< 4, ApicLvtEntryVector, ApicLvtEntryMessageType, ApicLvtEntryDeliveryStatus, ApicLvtEntryRemoteIrr, ApicLvtEntryTriggerMode, ApicLvtEntryMask, ApicLvtEntryTimerMode > ApicLvtEntry
Local APIC LVT Entry.
Definition local_apic.h:103
di::BitStruct< 4, ApicExtendedControlInterruptEnable, ApicExtendedControlSpecificEoi, ApicExtendedControlExtendId > ApicExtendedControlRegister
Local APIC Extended Control Register.
Definition local_apic.h:73
ApicMessageType
Local APIC Message Type.
Definition local_apic.h:81
@ Startup
Definition local_apic.h:88
@ Fixed
Definition local_apic.h:82
@ LowestPriority
Definition local_apic.h:83
@ Nmi
Definition local_apic.h:86
@ Init
Definition local_apic.h:87
@ External
Definition local_apic.h:89
@ Smi
Definition local_apic.h:84
ApicDestinationShorthand
Local APIC Destination Shorthands.
Definition local_apic.h:124
@ None
Definition local_apic.h:125
@ AllIncludingSelf
Definition local_apic.h:127
@ AllExcludingSelf
Definition local_apic.h:128
@ Self
Definition local_apic.h:126
Definition local_apic.h:68
Definition local_apic.h:66
Definition local_apic.h:67
Definition local_apic.h:57
Definition local_apic.h:58
Definition local_apic.h:55
Definition local_apic.h:56
Definition local_apic.h:48
Definition local_apic.h:132
Definition local_apic.h:134
Definition local_apic.h:133
Definition local_apic.h:138
Definition local_apic.h:139
Definition local_apic.h:135
Definition local_apic.h:137
Definition local_apic.h:136
Definition local_apic.h:131
Definition local_apic.h:94
Definition local_apic.h:97
Definition local_apic.h:93
Definition local_apic.h:95
Definition local_apic.h:98
Definition local_apic.h:96
Definition local_apic.h:92
Definition local_apic.h:47
Definition local_apic.h:46