Exemple #1
0
Fichier : fault.c Projet : en0/rpos
void fault_handler(regs_t *r) {

#ifdef PROFILE_DEBUG
    dbg_printf("\n\n!!! FAULT %i(%i) - %s !!!\n\n", r->int_no, r->err_code, exception_messages[r->int_no]);
    dbg_printf("--- CORE DUMP -----------------------------------------------------\n");
    dbg_printf("eax: %p, ebx: %p, ecx: %p, edx: %p\n", r->eax, r->ebx, r->ecx, r->edx);
    dbg_printf("esp: %p, ebp: %p, esi: %p, edi: %p\n", r->esp, r->ebp, r->esi, r->edi);
    dbg_printf("cs: %p, ss: %p, ds: %p, es: %p\n", r->cs, r->ss, r->ds, r->es);
    dbg_printf("fs: %p, gs: %p, eip: %p, eflags: %b\n", r->fs, r->gs, r->eip, r->eflags);
#endif

    kclear();
    kprintf("\n\n!!! FAULT %i(%i) - %s !!!\n\n", r->int_no, r->err_code, exception_messages[r->int_no]);
    kprintf("--- CORE DUMP -----------------------------------------------------\n");
    kprintf("eax: %p, ebx: %p, ecx: %p, edx: %p\n", r->eax, r->ebx, r->ecx, r->edx);
    kprintf("esp: %p, ebp: %p, esi: %p, edi: %p\n", r->esp, r->ebp, r->esi, r->edi);
    kprintf("cs: %p, ss: %p, ds: %p, es: %p\n", r->cs, r->ss, r->ds, r->es);
    kprintf("fs: %p, gs: %p, eip: %p, eflags: %b\n", r->fs, r->gs, r->eip, r->eflags);

    // The stubs do an iRet because i am sure i will have
    // some fault hanlders return back. I might even do a vector map
    // so that things like the PMEM code can assert there own fault_handler
    // for specific interrupts.

    halt();
}
Exemple #2
0
// Kernel entry point
void _main(struct multiboot *mboot_ptr, uint32_t initial_stack) {
    // Clear screen to get rid of boot messages.
    kclear();

    // Initialise all the ISRs and segmentation.
    init_dt();

    // Some print tests.
    kprintf("Boot successfull\n");
    int num = 36;
    printf("Integer \"num\" = %i.\n", num);
    printf("Initial kernel stack is: %i\n", initial_stack);

    // Test the interrupts.
    printf("Testing interrupts\n");
    test_interrupts();

    // Initialize interrupts.
    printf("Initializing Interrupts\n");
    init_interrupts();

    printf("The kernel has booted\n");

    // Start the timer.
    init_timer(50);

    for(;;) { }
}
Exemple #3
0
void eqraos_screen() {
	kclear(0x13);
	kgoto_xy(0,0);
	kset_color(0x3F);
	kputs("                                  eqraOS v0.1                                   ");
	//kgoto_xy(0,1);
	//kputs("                          Ahmad Essam [[email protected]]                    ");
	
	kgoto_xy(0,24);
	kset_color(0x3F);
	kputs("                                                                                ");
	
	kgoto_xy(0,3);
}
Exemple #4
0
void kmain(uint32_t magic) {
    if ( magic != 0x2BADB002 )
    {
    	print("Something went not according to specs.");
		exit();
    }

	kclear();
        char printbuf[256];
        snprintf(printbuf, 256, "kernel loaded at %p, ends at %p\n", kernel_start, kernel_end);
        print(printbuf);
        print("initializing GDT...\n");
        init_gdt();
        print("initializing IDT...\n");
        init_idt();
        print("initializing physical memory manager...\n");
        init_pmm();
        if (pmm_is_free((paddr_t)kernel_start) || pmm_is_free((paddr_t)kernel_end)) panic("kernel memory is not reserved");
        if (pmm_is_free((paddr_t)0xb8000)) panic("video ram is not reserved");
        print("initializing virtual memory manager...\n");
        init_vmm();
	print("initializing PICs...\n");
	init_pics(0x20, 0x28);
        print("initializing keyboard...\n");
        init_keyboard();
        print("enabling keyboard interrupts...\n");
        enable_irq(1);
        send_eoi(0);
        __asm__ __volatile__ ("sti");
        print("initializing symbol table...\n");
        init_stacktrace();
        print("initializing timer...\n");
        init_timer(10);
		enable_irq(0);
		print("initializing speaker...\n");
        print("initializing ACPI...\n");
        init_acpi();
        print("reclaiming ACPI memory...\n");
        acpi_reclaim_memory();
        print("initializing shell...\n");
        init_shell_builtins();
	beep(100, 100);
	cprint("Hello OS\n", 2);
	update_cursor();
        shell();
}
Exemple #5
0
void _cdecl kernel_panic(const char* msg,...) {
	
	disable_irq();
	
	va_list args;
	va_start(args,msg);
	/* missing	*/
	va_end(args);
	
	char* panic = "\nSorry, eqraOS has encountered a problem and has been shutdown.\n\n";
	
	kclear(0x1f);
	kgoto_xy(0,0);
	kset_color(0x1f);
	kputs(panic);
	kprintf("*** STOP: %s",msg);
	
	/* hang	*/
	for (;;) ;
}
Exemple #6
0
/*!
 * \brief Clear screen
 *
 * This function clears the console
 */
void clear() {
    kclear();
}