diff options
Diffstat (limited to 'kernel/src/apic/apic.c')
| -rw-r--r-- | kernel/src/apic/apic.c | 12 |
1 files changed, 7 insertions, 5 deletions
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); } |
