void hal_arch_init(int step) { switch (step) { case HAL_ARCH_INIT_PHASE_EARLY: x86_serial_init(); early_cpu_init(); hal_irq_early_init(); arch_init_irq(); arch_trap_init(); time_init(); printk("\n%s->%s->%d.",__FILE__,__FUNCTION__,__LINE__); break; case HAL_ARCH_INIT_PHASE_MIDDLE: { unsigned long fb; int w, h, bpp; extern void x86_bootloader_get_video_info(unsigned long *fb, int *w, int *h, int *bpp); /* X86 has fb */ x86_bootloader_get_video_info(&fb, &w, &h, &bpp); hal_fb_register_simple(fb, w, h, bpp, 1); } break; case HAL_ARCH_INIT_PHASE_LATE: /* start smp and run cpu_init on each cpu */ cpu_init(); //x86_prepare_smp(); break; } }
int arch_early_init() { int rc; rc = x86_serial_init(); if (rc) return rc; rc = textmode_init(); if (rc) return rc; rc = gdt_init(); if (rc) return rc; rc = idt_init(); if (rc) return rc; rc = exceptions_init(); if (rc) return rc; rc = irq_init(); if (rc) return rc; rc = pit_init(); if (rc) return rc; return 0; }
int i386_pc_console_init(void) { int ret; ret = x86_vga_text_init(); ret &= x86_serial_init(); return ret; }