コード例 #1
0
ファイル: arch_system.c プロジェクト: bdunlay/os-projects
PUBLIC void arch_init(void)
{
#ifdef CONFIG_APIC
    /*
     * this is setting kernel segments to cover most of the phys memory. The
     * value is high enough to reach local APIC nad IOAPICs before paging is
     * turned on.
     */
    prot_set_kern_seg_limit(0xfff00000);
    reload_ds();
#endif

    idt_init();

    tss_init(&tss, &k_boot_stktop, 0);

    acpi_init();

#if defined(CONFIG_APIC) && !defined(CONFIG_SMP)
    if (config_no_apic) {
        BOOT_VERBOSE(printf("APIC disabled, using legacy PIC\n"));
    }
    else if (!apic_single_cpu_init()) {
        BOOT_VERBOSE(printf("APIC not present, using legacy PIC\n"));
    }
#endif

    fpu_init();
}
コード例 #2
0
ファイル: arch_system.c プロジェクト: chanddu/MINIX
PUBLIC void arch_init(void)
{
#ifdef USE_APIC
	/*
	 * this is setting kernel segments to cover most of the phys memory. The
	 * value is high enough to reach local APIC nad IOAPICs before paging is
	 * turned on.
	 */
	prot_set_kern_seg_limit(0xfff00000);
	reload_ds();
#endif

	idt_init();

	/* FIXME stupid a.out
	 * align the stacks in the stack are to the K_STACK_SIZE which is a
	 * power of 2
	 */
	k_stacks = (void*) (((vir_bytes)&k_stacks_start + K_STACK_SIZE - 1) &
							~(K_STACK_SIZE - 1));

#ifndef CONFIG_SMP
	/*
	 * use stack 0 and cpu id 0 on a single processor machine, SMP
	 * configuration does this in smp_init() for all cpus at once
	 */
	tss_init(0, get_k_stack_top(0));
#endif

#if !CONFIG_OXPCIE
	ser_init();
#endif

#ifdef USE_ACPI
	acpi_init();
#endif

#if defined(USE_APIC) && !defined(CONFIG_SMP)
	if (config_no_apic) {
		BOOT_VERBOSE(printf("APIC disabled, using legacy PIC\n"));
	}
	else if (!apic_single_cpu_init()) {
		BOOT_VERBOSE(printf("APIC not present, using legacy PIC\n"));
	}
#endif
}