initialise the APs

This commit is contained in:
Matheus
2022-08-06 14:56:31 -03:00
parent fa1b35bf18
commit dee3fe16db
13 changed files with 142 additions and 9 deletions
+22
View File
@@ -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