21 auto gdt() ->
auto& {
return m_gdt; }
22 auto tss() ->
auto& {
return m_tss; }
38 m_local_apic_callback = di::move(callback);
46 uptr m_fallback_kernel_stack {};
47 di::Function<void(IrqContext&)> m_local_apic_callback;
56 auto* result =
static_cast<Processor*
>(
nullptr);
57 asm volatile(
"mov %%gs:0, %0" :
"=r"(result));
Definition function.h:365
Definition optional_forward_declaration.h:5
Definition processor.h:19
Definition processor.h:12
void local_apic_callback(IrqContext &context)
Definition processor.h:40
auto gdt() -> auto &
Definition processor.h:21
auto tss() -> auto &
Definition processor.h:22
void set_local_apic_callback(di::Function< void(IrqContext &)> callback)
Definition processor.h:37
void set_local_apic(x86::amd64::LocalApic local_apic)
Definition processor.h:19
void enable_cpu_features(bool print_info=true)
Enable CPU features for the current processor.
Definition processor.cpp:40
void set_fallback_kernel_stack(uptr stack)
Definition processor.h:24
auto local_apic() -> x86::amd64::LocalApic &
Get the local APIC.
Definition processor.h:18
auto fallback_kernel_stack() const -> uptr
Definition processor.h:25
void setup_fpu_support_for_processor(bool print_info=true)
Setup the processor to allow floating-point / SIMD operations.
Definition processor.cpp:9
Definition local_apic.h:150
uintptr_t uptr
Definition integers.h:36
Definition cxx_init.cpp:12
Definition cxx_init.cpp:12
auto current_processor_unsafe() -> Processor &
Get the current processor.
Definition processor.h:55
Definition span_fixed_size.h:37