X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fthreads%2Finterrupt.c;h=6250f817fec9010e9e23dae3ed5849d5f4ac587a;hb=0bf068e3843cbefe0a4d0a66d1734fde41e8dadd;hp=3ae505033d02bda812985a703c05573e8bd66ac9;hpb=3fc16f6e9abc98a3bd5427eb210669860609a224;p=pintos-anon diff --git a/src/threads/interrupt.c b/src/threads/interrupt.c index 3ae5050..6250f81 100644 --- a/src/threads/interrupt.c +++ b/src/threads/interrupt.c @@ -1,5 +1,6 @@ #include "interrupt.h" #include +#include "intr-stubs.h" #include "debug.h" #include "io.h" #include "lib.h" @@ -94,17 +95,15 @@ pic_eoi (void) uint64_t idt[256]; -extern void (*intr_stubs[256]) (void); - intr_handler_func *intr_handlers[256]; -void intr_handler (struct intr_args *args); +void intr_handler (struct intr_frame *args); bool intr_in_progress; bool yield_on_return; void -intr_handler (struct intr_args *args) +intr_handler (struct intr_frame *args) { bool external; @@ -256,10 +255,10 @@ intr_init (void) } void -intr_unexpected (struct intr_args *regs) +intr_unexpected (struct intr_frame *regs) { uint32_t cr2; asm ("movl %%cr2, %0" : "=r" (cr2)); - panic ("Unexpected interrupt 0x%02x, error code %08x, cr2=%08x, eip=%08x", - regs->vec_no, regs->error_code, cr2, regs->eip); + panic ("Unexpected interrupt 0x%02x, error code %08x, cr2=%08x, eip=%p", + regs->vec_no, regs->error_code, cr2, (void *) regs->eip); }