From 0c5c4fcd9de8aa21c0c6a424576abe6b7b0ae949 Mon Sep 17 00:00:00 2001 From: AlmuHS Date: Mon, 20 May 2019 20:40:23 +0200 Subject: fix: fix address and registers --- i386/i386/cpuboot.S | 12 +++++------- i386/i386/mp_desc.c | 4 ++-- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/i386/i386/cpuboot.S b/i386/i386/cpuboot.S index 26a249f9..dad5f192 100644 --- a/i386/i386/cpuboot.S +++ b/i386/i386/cpuboot.S @@ -93,7 +93,7 @@ _apboot: #if PAE //set_cr3((unsigned)_kvtophys(kernel_pmap->pdpbase)); movl %cr3, %eax - movl kernel_pmap->pdpbase - KERNELBASE, %eax + movl pdpbase_addr, %eax movl %eax, %cr3 #ifndef MACH_HYP @@ -105,7 +105,7 @@ _apboot: setpae: movl %cr4, %eax - orl CR4_PAE, %eax + orl $CR4_PAE, %eax movl %eax, %cr4 nopae: nop @@ -113,8 +113,7 @@ nopae: #endif /* MACH_HYP */ #else //set_cr3((unsigned)_kvtophys(kernel_page_dir)); - movl %cr3, %eax - movl kernel_page_dir - KERNELBASE, %eax + movl kernel_page_dir_addr, %eax movl %eax, %cr3 #endif /* PAE */ @@ -125,8 +124,7 @@ nopae: */ //set_cr0(get_cr0() | CR0_PG | CR0_WP); movl %cr0, %eax - orl CR0_PG, %eax - orl CR0_WP, %eax + orl $(CR0_PG | CR0_WP), %eax movl %eax, %cr0 //set_cr0(get_cr0() & ~(CR0_CD | CR0_NW)); @@ -148,7 +146,7 @@ nopae: setpge: //set_cr4(get_cr4() | CR4_PGE); movl %cr4, %eax - orl CR4_PGE, %eax + orl $CR4_PGE, %eax mov %eax, %cr4 nopge: nop diff --git a/i386/i386/mp_desc.c b/i386/i386/mp_desc.c index 9f1bb64e..93876da5 100644 --- a/i386/i386/mp_desc.c +++ b/i386/i386/mp_desc.c @@ -300,8 +300,8 @@ cpu_setup() int i = 1; while(i < ncpu && (machine_slot[i].running == TRUE)) i++; - //unsigned apic_id = (((ApicLocalUnit*)phystokv(lapic_addr))->apic_id.r >> 24) & 0xff; - unsigned apic_id = lapic->apic_id.r >> 24; + unsigned apic_id = (((ApicLocalUnit*)phystokv(lapic_addr))->apic_id.r >> 24) & 0xff; + //unsigned apic_id = lapic->apic_id.r >> 24; /* panic? */ if(i >= ncpu) -- cgit v1.2.3