first commit
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
#include "src/idt.h"
|
||||
#include "src/keyboard.h"
|
||||
#include "src/memory.h"
|
||||
#include "src/pic.h"
|
||||
#include "src/terminal.h"
|
||||
#include "src/util.h"
|
||||
#include "src/vga.h"
|
||||
|
||||
__attribute__((interrupt)) void isr_divide_by_zero(struct interrupt_frame *frame) {
|
||||
vga_set_string(VGA_HEIGHT - 1, 0, "EXCEPTION: divide by zero", 0x4F);
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
|
||||
__attribute__((interrupt)) void isr_page_fault(struct interrupt_frame *frame) {
|
||||
vga_set_string(VGA_HEIGHT - 1, 0, "EXCEPTION: page fault", 0x4F);
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
|
||||
__attribute__((interrupt)) void isr_general_violation(struct interrupt_frame *frame) {
|
||||
vga_set_string(VGA_HEIGHT - 1, 0, "EXCEPTION: general violation", 0x4F);
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
|
||||
__attribute__((interrupt)) void isr_ata_primary(struct interrupt_frame *frame) {
|
||||
outb(0x20, 0x20);
|
||||
outb(0xA0, 0x20);
|
||||
}
|
||||
|
||||
void kernel_main() {
|
||||
pic_init();
|
||||
idt_init();
|
||||
outb(0x21, inb(0x21) | 0x01); // mask out timer interrupt
|
||||
idt_set_entry(0, isr_divide_by_zero, 0x8E);
|
||||
idt_set_entry(0x0E, isr_page_fault, 0x8E);
|
||||
idt_set_entry(0x0D, isr_general_violation, 0x8E);
|
||||
idt_set_entry(46, isr_ata_primary, 0x8E);
|
||||
__asm__ volatile("sti");
|
||||
|
||||
memory_init();
|
||||
keyboard_init();
|
||||
terminal_init();
|
||||
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
Reference in New Issue
Block a user