9#define APIC_BASE_ADDR 0x1B
10#define X2_APIC_ICR 0x830
12#define ENABLE_APIC_BIT 1 << 11
13#define ENABLE_X2_APIC_BIT 1 << 10
24 apic_base |= (1ULL << 11);
25 apic_base &= ~(1ULL << 10);
32 apic_base |= (1ULL << 10);
64 asm volatile(
"rdmsr" :
"=a"(lo),
"=d"(hi) :
"c"(0x1B));
66 asm volatile(
"wrmsr" : :
"a"(lo),
"d"(hi),
"c"(0x1B));
69 cpuid(1, 0, &eax, &ebx, &ecx, &edx);
93 LOG_DEBUG(
"lapic",
"lapic id %d", lapic_id);
void apic_send_ipi(uint8_t vector, uint8_t dest)
uint8_t x2_apic_supported
void apicSetBaseAddr(uintptr_t addr)
uintptr_t lapic_base_addr
void apic_write(uint32_t reg, uint32_t value)
uint32_t apic_read(uint32_t reg)
static void enable_x2apic()
void update_core_gs(uint8_t id)
void cpuid(uint32_t leaf, uint32_t subleaf, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx)
static void mmio_outl(uintptr_t addr, uint32_t value)
static uint32_t mmio_inl(uintptr_t addr)
void vxWRSR(uint32_t msr, uint64_t value)
uint64_t vxRDMSR(uint32_t msr)
#define LOG_INFO(mod, fmt,...)
#define LOG_DEBUG(mod, fmt,...)