summaryrefslogtreecommitdiff
path: root/kernel/src/apic
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/apic')
-rw-r--r--kernel/src/apic/apic.c14
-rw-r--r--kernel/src/apic/ioapic.c4
-rw-r--r--kernel/src/apic/madt.c3
3 files changed, 7 insertions, 14 deletions
diff --git a/kernel/src/apic/apic.c b/kernel/src/apic/apic.c
index ba9138d..7fa57bf 100644
--- a/kernel/src/apic/apic.c
+++ b/kernel/src/apic/apic.c
@@ -7,7 +7,8 @@
#include <timer.h>
mutex_t cnt_lock;
-uint32_t cnt = 0;
+uint32_t ap_cnt = 0;
+uint32_t bspdone = 0;
uint32_t ioapic_addr = 0;
uint64_t lapic_addr = 0;
uint32_t numcores = 0;
@@ -26,10 +27,6 @@ uint8_t curr_cpu_apic_id()
void init_ap_cpus()
{
uint8_t bspid = curr_cpu_apic_id();
- uint8_t* bspdone = (uint8_t*)0x3000100;
- uint8_t* aprunning = (uint8_t*)0x3000200;
- *bspdone = 0;
- *aprunning = 0;
init_mutex(&cnt_lock);
map_addr(lapic_addr, lapic_addr, FLAG_PRESENT);
@@ -74,8 +71,7 @@ void init_ap_cpus()
}
}
- *bspdone = 1;
- wait(1000);
- printf("aprunning: %d\n", *aprunning);
- printf("cnt: %d\n", cnt);
+ bspdone = 1;
+ wait(10);
+ printf("ap_cnt: %d\n", ap_cnt);
}
diff --git a/kernel/src/apic/ioapic.c b/kernel/src/apic/ioapic.c
index 73c58d0..4c3fd69 100644
--- a/kernel/src/apic/ioapic.c
+++ b/kernel/src/apic/ioapic.c
@@ -58,11 +58,11 @@ void ioapic_set_irq(uint8_t irq, uint64_t apic_id, uint8_t vector)
void apic_remap_interrupts()
{
- uint8_t bspid = curr_cpu_apic_id();
-
map_addr(ioapic_addr, ioapic_addr, FLAG_PRESENT);
map_addr(lapic_addr, lapic_addr, FLAG_PRESENT);
+ uint8_t bspid = curr_cpu_apic_id();
+
// irq is 2 because of gsi remap
ioapic_set_irq(0x2, bspid, 0x20); // timer
ioapic_set_irq(0x1, bspid, 0x21); // keyboard
diff --git a/kernel/src/apic/madt.c b/kernel/src/apic/madt.c
index ad0720e..8a1e51d 100644
--- a/kernel/src/apic/madt.c
+++ b/kernel/src/apic/madt.c
@@ -18,9 +18,6 @@ void parse_madt()
memcpy(madt, madt_addr, sizeof(struct MADT));
lapic_addr = madt->lapic_addr;
- printf("curr_cpu_apic_id: 0x%x\n", curr_cpu_apic_id());
- printf("lapic_addr: 0x%x\n", lapic_addr);
-
for (size_t curr_size = sizeof(struct MADT); curr_size < madt->h.Length;) {
struct MADT_type_header* m = (struct MADT_type_header*)kalloc(sizeof(struct MADT_type_header));
memcpy(m, (uint64_t*)((uint64_t)madt_addr + (uint64_t)curr_size), sizeof(struct MADT_type_header));