+++ /dev/null
-#! /usr/bin/perl
-
-print <<'EOF';
-#include "threads/loader.h"
-
- .data
- .intel_syntax noprefix
-.globl intr_stubs
-intr_stubs:
-EOF
-
-for $i (0...255) {
- $x = sprintf ("%02x", $i);
- print "\t.long intr${x}_stub\n";
-}
-
-print <<'EOF';
-
- .text
-EOF
-
-for $i (0...255) {
- $x = sprintf ("%02x", $i);
- print ".globl intr${x}_stub\n";
- print "intr${x}_stub:\n";
- print "\tpush 0\n"
- if ($i != 8 && $i != 10 && $i != 11
- && $i != 13 && $i != 14 && $i != 17);
- print "\tpush 0x$x\n";
- print "\tjmp intr_entry\n";
-}
-
-print <<'EOF';
-intr_entry:
- # Save caller's registers.
- push ds
- push es
- push fs
- push gs
- pusha
-
- # Set up kernel environment.
- cld
- mov eax, SEL_KDSEG
- mov ds, eax
- mov es, eax
-
- # Call interrupt handler.
- push esp
-.globl intr_handler
- call intr_handler
- add esp, 4
-
-.globl intr_exit
-intr_exit:
- # Restore caller's registers.
- popa
- pop gs
- pop fs
- pop es
- pop ds
- add esp, 8
-
- # Return to caller.
- iret
-EOF