Fix TSS descriptor.
[pintos-anon] / src / threads / intr-stubs.pl
index 45f4fa320de011addd823ec6c354b45d95530ec6..ea20e9668ede5de1669138957c5e205079c6e3f4 100755 (executable)
@@ -17,13 +17,16 @@ for $i (0...255) {
     $x = sprintf ("%02x", $i);
     print "\t.globl intr${x}_stub\n";
     print "intr${x}_stub:\n";
-    print "\tpushl \$0\n" if $i != 8 && $i != 10 && $i != 11 && $i != 13 && $i != 14 && $i != 17;
+    print "\tpushl \$0\n"
+       if ($i != 8 && $i != 10 && $i != 11
+           && $i != 13 && $i != 14 && $i != 17);
     print "\tpushl \$0x$x\n";
     print "\tjmp intr_entry\n";
 }
 
 print <<'EOF';
 intr_entry:
+       # FIXME: build a fake stack frame to improve backtraces.
        # Save caller's registers.
        pushl %ds
        pushl %es
@@ -39,6 +42,9 @@ intr_entry:
        pushl %esp
        .globl intr_handler
        call intr_handler
+
+       .globl intr_exit
+intr_exit:
        addl $4, %esp
 
        # Restore caller's registers.