Break GDT, TSS out of init.c, mmu.h.
[pintos-anon] / src / threads / intr-stubs.pl
index ea20e9668ede5de1669138957c5e205079c6e3f4..d9e0dd35508fee62e9d3f8b758525bf4855c82c6 100755 (executable)
@@ -1,9 +1,10 @@
 #! /usr/bin/perl
 
 print <<'EOF';
-#include "mmu.h"
+#include "gdt.h"
 
-       .globl intr_stubs
+       .data
+.globl intr_stubs
 intr_stubs:
 EOF
 
@@ -11,11 +12,15 @@ for $i (0...255) {
     $x = sprintf ("%02x", $i);
     print "\t.long intr${x}_stub\n";
 }
-print "\n";
+
+print <<'EOF';
+
+       .text
+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
@@ -26,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
@@ -40,13 +44,12 @@ intr_entry:
 
        # Call handler.
        pushl %esp
-       .globl intr_handler
+.globl intr_handler
        call intr_handler
-
-       .globl intr_exit
-intr_exit:
        addl $4, %esp
 
+.globl intr_exit
+intr_exit:
        # Restore caller's registers.
        popal
        popl %es