void main(struct multiboot *mboot) { int rc; /* init the kmsg buffer and printk */ console_sys_init(); kmsg_init(); console_register(&kmsg_con); /* arch might want to setup stuff */ arch_early_init(); printk("kmsg: buffer setup!\n"); printk("sys: kernel relocation: 0x%x -> 0x%x size 0x%x\n", &kernel_base, &kernel_end, (uintptr_t)&kernel_end - (uintptr_t)&kernel_base); parse_multiboot(mboot); paging_fini(); heap_install(); /* arch should finish init now */ arch_late_init(); printk("sys: init done!\n"); drivers_init(); do_mount(); do_test(); syscall_init(); /* wait forever */ asm volatile("mov $0x1337, %eax"); asm volatile("mov $0x1337, %ebx"); asm volatile("mov $0x1337, %ecx"); asm volatile("mov $0x1337, %edx"); start_sched(); panic("finished with main, but no idle task was started\n"); }
extern "C" void boot2(){ dln printd("memset\r\n"); delay_cpu(10); for (int i = (int) _bss_start; i < (int)_bss_end; i++) { *((char*) i)=0; } dln printd("boot2\r\n"); delay_cpu(10); debug_serial_printhex_int((int)&__preinit_array_start);dln debug_serial_printhex_int((int)&__preinit_array_end);dln debug_serial_printhex_int((int)&__init_array_start);dln debug_serial_printhex_int((int)&__init_array_end);dln debug_serial_printhex_int((int)&_ctor_start);dln debug_serial_printhex_int((int)&_ctor_end);dln // BEGIN C++ support (2/2) //Call C++ global constructors call_constructors(&__preinit_array_start, &__preinit_array_end); call_constructors(&__init_array_start, &__init_array_end); call_constructors(&_ctor_start, &_ctor_end); // END C++ support (2/2) dln printd("callconstrend\r\n"); delay_cpu(10); second_init(); drivers_init(); hmain(); systemError("MAIN FUNCTION END. Kernel bewilderment :)"); }