From 57e6722453c27d35a3b02309ce21263d225a23e3 Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Wed, 22 Feb 2023 17:31:52 +0100 Subject: curr_cpu_apic_id() now works on old amd cpus --- kernel/src/apic/apic.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'kernel/src/apic/apic.c') diff --git a/kernel/src/apic/apic.c b/kernel/src/apic/apic.c index b947317..ba9138d 100644 --- a/kernel/src/apic/apic.c +++ b/kernel/src/apic/apic.c @@ -15,9 +15,12 @@ uint8_t cpu_apic_ids[256]; uint8_t curr_cpu_apic_id() { - uint8_t apic_id = 0; - __asm__ __volatile__ ("movl $1, %%eax; cpuid; shrl $24, %%ebx;": "=b"(apic_id)); - return apic_id; +// Initial APIC ID +// CPUIDinfo info; +// CpuId(1, 0, &info); +// return (uint8_t)(info.EBX >> 24); + + return (uint8_t)(((*((volatile uint32_t*)((uint64_t)lapic_addr + 0x20))) >> 24) & 0xFF); } void init_ap_cpus() @@ -36,7 +39,6 @@ void init_ap_cpus() if(cpu_apic_ids[i] == bspid) continue; - printf("initializing cpu with apic id 0x%x\n", cpu_apic_ids[i]); // send INIT IPI // clear APIC errors @@ -73,7 +75,7 @@ void init_ap_cpus() } *bspdone = 1; - wait(100); + wait(1000); printf("aprunning: %d\n", *aprunning); printf("cnt: %d\n", cnt); } -- cgit v1.2.3