Change assembly from AT&T to Intel syntax.
[pintos-anon] / src / threads / intr-stubs.pl
1 #! /usr/bin/perl
2
3 print <<'EOF';
4 #include "threads/loader.h"
5
6         .data
7         .intel_syntax noprefix
8 .globl intr_stubs
9 intr_stubs:
10 EOF
11
12 for $i (0...255) {
13     $x = sprintf ("%02x", $i);
14     print "\t.long intr${x}_stub\n";
15 }
16
17 print <<'EOF';
18
19         .text
20 EOF
21
22 for $i (0...255) {
23     $x = sprintf ("%02x", $i);
24     print ".globl intr${x}_stub\n";
25     print "intr${x}_stub:\n";
26     print "\tpush 0\n"
27         if ($i != 8 && $i != 10 && $i != 11
28             && $i != 13 && $i != 14 && $i != 17);
29     print "\tpush 0x$x\n";
30     print "\tjmp intr_entry\n";
31 }
32
33 print <<'EOF';
34 intr_entry:
35         # Save caller's registers.
36         push ds
37         push es
38         pusha
39
40         # Set up kernel environment.
41         cld
42         mov eax, SEL_KDSEG
43         mov ds, eax
44         mov es, eax
45
46         # Call interrupt handler.
47         push esp
48 .globl intr_handler
49         call intr_handler
50         add esp, 4
51
52 .globl intr_exit
53 intr_exit:
54         # Restore caller's registers.
55         popa
56         pop es
57         pop ds
58         add esp, 8
59
60         # Return to caller.
61         iret
62 EOF