...
This commit is contained in:
@@ -2,17 +2,13 @@ extern interrput_handler
|
|||||||
|
|
||||||
%macro isr_err_stub 1
|
%macro isr_err_stub 1
|
||||||
isr_stub_%+%1:
|
isr_stub_%+%1:
|
||||||
push %1
|
|
||||||
call interrput_handler
|
call interrput_handler
|
||||||
add rsp, 8
|
|
||||||
iretq
|
iretq
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro isr_no_err_stub 1
|
%macro isr_no_err_stub 1
|
||||||
isr_stub_%+%1:
|
isr_stub_%+%1:
|
||||||
push %1
|
|
||||||
call interrput_handler
|
call interrput_handler
|
||||||
add rsp, 8
|
|
||||||
iretq
|
iretq
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
|
|||||||
12
src/idt.c
12
src/idt.c
@@ -53,16 +53,8 @@ void idt_init(void)
|
|||||||
__asm__ volatile("sti");
|
__asm__ volatile("sti");
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct
|
void interrput_handler()
|
||||||
{
|
{
|
||||||
uint64_t vector_number;
|
vga_print("An interrupt happened\n");
|
||||||
uint64_t error_code;
|
|
||||||
} cpu_status_t;
|
|
||||||
|
|
||||||
void interrput_handler(uint64_t vector_number)
|
|
||||||
{
|
|
||||||
vga_print("An exception occurred: ");
|
|
||||||
vga_print_uint(vector_number);
|
|
||||||
vga_print("\n");
|
|
||||||
idt_hang();
|
idt_hang();
|
||||||
}
|
}
|
||||||
@@ -9,4 +9,6 @@ void kernel_main(void)
|
|||||||
vga_print_success("IDT intialzied\n");
|
vga_print_success("IDT intialzied\n");
|
||||||
|
|
||||||
vga_print("Welcome to nub OS\n");
|
vga_print("Welcome to nub OS\n");
|
||||||
|
|
||||||
|
__asm__ volatile("int $255");
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user