- Timestamp:
- Jul 13, 2017, 12:54:18 PM (7 years ago)
- Location:
- trunk/hal/x86_64/core
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/hal/x86_64/core/hal_apic.c
r154 r199 298 298 size_t i; 299 299 300 ioapic_va = hal_gpt_bootstrap_valloc(1); // XXX: should be shared301 302 hal_gpt_enter(ioapic_va, ioapic_pa, PG_V|PG_KW|PG_NX|PG_N);303 304 300 ver = hal_ioapic_read(IOAPICVER); 305 301 ioapic_pins = ((ver >> 16) & 0xFF) + 1; … … 389 385 static void hal_lapic_init() 390 386 { 391 lapic_va = hal_gpt_bootstrap_valloc(1); // XXX: should be shared392 393 387 if ((rdmsr(MSR_APICBASE) & APICBASE_PHYSADDR) != lapic_pa) { 394 388 x86_panic("APICBASE and ACPI don't match!\n"); 395 389 } 396 390 wrmsr(MSR_APICBASE, lapic_pa | APICBASE_EN); 397 398 hal_gpt_enter(lapic_va, lapic_pa, PG_V|PG_KW|PG_NX|PG_N);399 391 400 392 hal_lapic_write(LAPIC_TPR, 0); -
trunk/hal/x86_64/core/hal_init.c
r195 r199 239 239 /* -------------------------------------------------------------------------- */ 240 240 241 static void apic_map() 242 { 243 extern vaddr_t lapic_va, ioapic_va; 244 extern paddr_t lapic_pa, ioapic_pa; 245 246 lapic_va = hal_gpt_bootstrap_valloc(1); // XXX: should be shared 247 hal_gpt_enter(lapic_va, lapic_pa, PG_V|PG_KW|PG_NX|PG_N); 248 249 ioapic_va = hal_gpt_bootstrap_valloc(1); // XXX: should be shared 250 hal_gpt_enter(ioapic_va, ioapic_pa, PG_V|PG_KW|PG_NX|PG_N); 251 } 252 241 253 void init_x86_64(paddr_t firstpa) 242 254 { … … 272 284 hal_gpt_bootstrap_reset(); 273 285 x86_printf("[+] hal_gpt_bootstrap_reset called\n"); 286 287 apic_map(); 288 x86_printf("[+] apic_map called\n"); 274 289 275 290 hal_apic_init();
Note: See TracChangeset
for help on using the changeset viewer.