Пример #1
0
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");
}
Пример #2
0
void __init __start_xen_ppc(
    ulong r3, ulong r4, ulong r5, ulong r6, ulong r7, ulong orig_msr)
{
    /* clear bss */
    memset(__bss_start, 0, (ulong)_end - (ulong)__bss_start);

    if (r5) {
        /* We came from Open Firmware. */
        boot_of_init(r5, orig_msr);
        oftree = (ulong)boot_of_devtree(); /* Copy the device tree. */
        /* Use the device tree to find the Xen console. */
        boot_of_serial((void *)oftree);
        boot_of_finish(); /* End firmware. */
    } else {
        /* XXX handle flat device tree here */
        __builtin_trap();
    }

    ofd_bootargs();

    if (r3 == MB2_BOOTLOADER_MAGIC) {
        /* Get dom0 info from multiboot structures. */
        parse_multiboot(r4);
    }

    if ((dom0_len == 0) && r3 && r4) {
        /* Maybe dom0's location handed to us in registers. */
        dom0_addr = r3;
        dom0_len = r4;
    }

    if (dom0_len == 0) {
        /* Dom0 had better be built in. */
        dom0_addr = (ulong)dom0_start;
        dom0_len = (ulong)dom0_size;
    }

    __start_xen();
}