X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fthreads%2Fintr-stubs.pl;h=c333260eef7a812e4262e783e968fa0a342fe99c;hb=a23e3e47eb037b5de510b9661635e3df0a5bfdd0;hp=9725860b24b297b70175cbaac1618a200f153e0b;hpb=d4c9aca807cfbe799e211f574eab051954e7fd8c;p=pintos-anon diff --git a/src/threads/intr-stubs.pl b/src/threads/intr-stubs.pl index 9725860..c333260 100755 --- a/src/threads/intr-stubs.pl +++ b/src/threads/intr-stubs.pl @@ -1,10 +1,10 @@ #! /usr/bin/perl print <<'EOF'; -#include "mmu.h" +#include "threads/loader.h" .data - .globl intr_stubs +.globl intr_stubs intr_stubs: EOF @@ -20,7 +20,7 @@ EOF for $i (0...255) { $x = sprintf ("%02x", $i); - print "\t.globl intr${x}_stub\n"; + print ".globl intr${x}_stub\n"; print "intr${x}_stub:\n"; print "\tpushl \$0\n" if ($i != 8 && $i != 10 && $i != 11 @@ -31,7 +31,6 @@ for $i (0...255) { print <<'EOF'; intr_entry: - # FIXME: build a fake stack frame to improve backtraces. # Save caller's registers. pushl %ds pushl %es @@ -43,19 +42,20 @@ intr_entry: movl %eax, %ds movl %eax, %es - # Call handler. + # Call interrupt handler. pushl %esp - .globl intr_handler +.globl intr_handler call intr_handler addl $4, %esp - .globl intr_exit +.globl intr_exit intr_exit: - # Restore caller's registers. popal popl %es popl %ds addl $8, %esp + + # Return to caller. iret EOF