Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 297 → Rev 298

/SPARTAN/trunk/src/main/main.c
218,13 → 218,14
* The THE structure is well defined because ctx.sp is used as stack.
*/
the_initialize(THE);
 
arch_pre_mm_init();
frame_init();
page_init();
arch_post_mm_init();
 
cpu_init();
calibrate_delay_loop();
 
l_apic_init();
/SPARTAN/trunk/arch/ia32/src/smp/smp.c
143,21 → 143,19
 
memcpy(gdt_new, gdt, GDT_ITEMS*sizeof(struct descriptor));
memsetb((__address)(&gdt_new[TSS_DES]), sizeof(struct descriptor), 0);
real_bootstrap_gdtr.base = KA2PA((__address) gdt_new);
((struct ptr_16_32 *) PA2KA((__address) &real_bootstrap_gdtr))->base = KA2PA((__address) gdt_new);
gdtr.base = (__address) gdt_new;
 
if (l_apic_send_init_ipi(ops->cpu_apic_id(i))) {
/*
* There may be just one AP being initialized at
* There may be just one AP being initialized at
* the time. After it comes completely up, it is
* supposed to wake us up.
*/
*/
if (waitq_sleep_timeout(&ap_completion_wq, 1000000, SYNCH_BLOCKING) == ESYNCH_TIMEOUT)
printf("%s: waiting for cpu%d (APIC ID = %d) timed out\n", __FUNCTION__, config.cpu_active > i ? config.cpu_active : i, ops->cpu_apic_id(i));
}
else {
} else
printf("INIT IPI for l_apic%d failed\n", ops->cpu_apic_id(i));
}
}
 
/*
/SPARTAN/trunk/arch/ia32/src/smp/ap.S
69,6 → 69,8
 
call map_kernel # map kernel and turn paging on
addl $0x80000000, %esp # PA2KA(ctx.sp)
jmpl $KTEXT, $main_ap
 
#endif /* __SMP__ */
/SPARTAN/trunk/arch/ia32/src/boot/boot.S
217,7 → 217,7
movl $((1<<7)|(1<<0)), %eax
movl %eax, page_directory # mapping 0x00000000 => 0x00000000
 
movl $(page_directory+(4096/2)), %edx
movl $(page_directory+2048), %edx
movl %eax, (%edx) # mapping 0x80000000 => 0x00000000
 
leal page_directory, %eax
/SPARTAN/trunk/arch/ia32/src/mm/page.c
56,10 → 56,8
* Identity mapping for all frames.
* PA2KA(identity) mapping for all frames.
*/
for (i = 0; i < frames; i++) {
map_page_to_frame(i * PAGE_SIZE, i * PAGE_SIZE, PAGE_CACHEABLE, KA2PA(dba));
for (i = 0; i < frames; i++)
map_page_to_frame(PA2KA(i * PAGE_SIZE), i * PAGE_SIZE, PAGE_CACHEABLE, KA2PA(dba));
}
 
trap_register(14, page_fault);
write_cr3(KA2PA(dba));