mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-01 23:18:21 +00:00
initialise the APs
This commit is contained in:
@@ -4,6 +4,11 @@
|
||||
#include <kernel/pmm.h>
|
||||
#include <arch/panic.h>
|
||||
#include <stdio.h>
|
||||
#include <arch/cls.h>
|
||||
|
||||
#define APIC_REGISTER_ID 0x20
|
||||
#define APIC_REGISTER_EOI 0xB0
|
||||
#define APIC_REGISTER_SPURIOUS 0xF0
|
||||
|
||||
|
||||
#define TYPE_LAPIC 0
|
||||
@@ -142,6 +147,23 @@ static void ioapic_writeiored(ioapic_descriptor* ioapic, uint8_t irq, uint8_t ve
|
||||
|
||||
}
|
||||
|
||||
static inline uint32_t lapic_readreg(size_t reg){
|
||||
return *(uint32_t* volatile)(lapicaddr + reg);
|
||||
}
|
||||
|
||||
static inline void lapic_writereg(size_t reg, uint32_t data){
|
||||
*(uint32_t* volatile)(lapicaddr + reg) = data;
|
||||
}
|
||||
|
||||
void apic_lapicinit(){
|
||||
|
||||
arch_getcls()->lapicid = (lapic_readreg(APIC_REGISTER_ID));
|
||||
arch_getcls()->lapicid >>= 24;
|
||||
|
||||
lapic_writereg(APIC_REGISTER_SPURIOUS, 0x1FF);
|
||||
|
||||
}
|
||||
|
||||
void apic_init(){
|
||||
|
||||
// first get some cool info about the apic in the system
|
||||
|
||||
Reference in New Issue
Block a user