49 lines
765 B
C
49 lines
765 B
C
#include "isr.h"
|
|
#include "stdio.h"
|
|
#include "apic.h"
|
|
|
|
__attribute__ ((interrupt))
|
|
void isr_division_by_zero(void* frame)
|
|
{
|
|
printf("Exception: Division by zero\n");
|
|
}
|
|
|
|
__attribute__ ((interrupt))
|
|
void isr_gp_fault(void* frame, unsigned int error)
|
|
{
|
|
|
|
}
|
|
|
|
__attribute__ ((interrupt))
|
|
void isr_page_fault(void* frame, unsigned int error)
|
|
{
|
|
|
|
}
|
|
|
|
__attribute__ ((interrupt))
|
|
void isr_double_fault(void* frame, unsigned int error)
|
|
{
|
|
asm("hlt");
|
|
}
|
|
|
|
__attribute__ ((interrupt))
|
|
void isr_timer(void* frame)
|
|
{
|
|
printf("Timer tick.\n");
|
|
apic_eoi();
|
|
}
|
|
|
|
__attribute__ ((naked))
|
|
void isr_ap_start(void* frame)
|
|
{
|
|
asm(".code16");
|
|
//...
|
|
asm(".code32");
|
|
// do something useful
|
|
}
|
|
|
|
__attribute__ ((interrupt))
|
|
void isr_syscall(void* frame)
|
|
{
|
|
|
|
} |