30 lines
495 B
C
30 lines
495 B
C
#include <stdio.h>
|
|
|
|
#include <isr.h>
|
|
|
|
|
|
void isr_handler(regs_t *r)
|
|
{
|
|
// Handle faults
|
|
if (r->int_no < 32)
|
|
{
|
|
printf("Received interrupt: %d\n", r->int_no);
|
|
// halt or kill task...
|
|
}
|
|
if (r->int_no == 128)
|
|
{
|
|
syscall_handler(r);
|
|
return;
|
|
}
|
|
}
|
|
|
|
void syscall_handler(regs_t *r)
|
|
{
|
|
switch (r->eax) {
|
|
case 0: printf("Syscall: Hello world\n"); break;
|
|
case 1: printf("Syscall: value = %d\n", r->ebx); break;
|
|
default: printf("Unknown syscall %d\n", r->eax);
|
|
}
|
|
}
|
|
|