]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/CpuDxe/Ia32/CpuInterrupt.S
Update the copyright notice format
[mirror_edk2.git] / DuetPkg / CpuDxe / Ia32 / CpuInterrupt.S
index 64ad89f6e03b2b2f2ab52f8634429daf5c6df6c0..945dcf6665df561c42df10489814ccb717605da7 100644 (file)
@@ -1,7 +1,7 @@
 #------------------------------------------------------------------------------\r
 #*\r
-#*   Copyright 2006, Intel Corporation                                                         \r
-#*   All rights reserved. This program and the accompanying materials                          \r
+#*   Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+#*   This program and the accompanying materials                          \r
 #*   are licensed and made available under the terms and conditions of the BSD License         \r
 #*   which accompanies this distribution.  The full text of the license may be found at        \r
 #*   http://opensource.org/licenses/bsd-license.php                                            \r
 #EXTERN ExceptionHandler: NEAR\r
 #EXTERN mTimerVector: DWORD\r
 \r
-       .data\r
-       .globl ASM_PFX(mExceptionCodeSize)\r
+  .data\r
+  ASM_GLOBAL ASM_PFX(mExceptionCodeSize)\r
 ASM_PFX(mExceptionCodeSize): .long  9\r
 \r
-       .text\r
-       .globl ASM_PFX(InitDescriptor)\r
+  .text\r
+  ASM_GLOBAL ASM_PFX(InitDescriptor)\r
 \r
 ASM_PFX(InitDescriptor):\r
         movl    $GDT_BASE,%eax              # EAX=PHYSICAL address of gdt\r
@@ -44,7 +44,7 @@ ASM_PFX(InitDescriptor):
 #     UINTN Vector,\r
 #     VOID  (*Handler)(VOID)\r
 #     )\r
-       .globl ASM_PFX(InstallInterruptHandler)\r
+  ASM_GLOBAL ASM_PFX(InstallInterruptHandler)\r
 ASM_PFX(InstallInterruptHandler):\r
 #  Vector:DWORD @ 4(%esp)\r
 #  Handler:DWORD @ 8(%esp)\r
@@ -68,7 +68,7 @@ ASM_PFX(InstallInterruptHandler):
         pop     %edi\r
         ret\r
 \r
-       .macro JmpCommonIdtEntry\r
+  .macro JmpCommonIdtEntry\r
     # jmp     commonIdtEntry - this must be hand coded to keep the assembler from\r
     #                          using a 8 bit reletive jump when the entries are\r
     #                          within 255 bytes of the common entry.  This must\r
@@ -76,10 +76,10 @@ ASM_PFX(InstallInterruptHandler):
     #                          of entry points...\r
     .byte     0xe9                        # jmp 16 bit reletive \r
     .long     commonIdtEntry - . - 4      #  offset to jump to\r
-       .endm\r
+  .endm\r
 \r
-    .align 2\r
-       .globl ASM_PFX(SystemExceptionHandler)\r
+    .p2align 1\r
+  ASM_GLOBAL ASM_PFX(SystemExceptionHandler)\r
 ASM_PFX(SystemExceptionHandler):\r
 INT0:\r
     pushl    $0x0      # push error code place holder on the stack\r
@@ -198,18 +198,85 @@ INT19:
     JmpCommonIdtEntry\r
 \r
 INTUnknown:\r
-       .rept (32 - 20)\r
+  # The following segment repeats (32 - 20) times:\r
+  # No. 1\r
     pushl    $0x0      # push error code place holder on the stack\r
 #    push    xxh     # push vector number\r
     .byte    0x6a\r
     .byte    ( . - INTUnknown - 3 ) / 9 + 20 # vector number\r
     JmpCommonIdtEntry\r
-       .endr\r
+  # No. 2\r
+    pushl    $0x0      # push error code place holder on the stack\r
+#    push    xxh     # push vector number\r
+    .byte    0x6a\r
+    .byte    ( . - INTUnknown - 3 ) / 9 + 20 # vector number\r
+    JmpCommonIdtEntry\r
+  # No. 3\r
+    pushl    $0x0      # push error code place holder on the stack\r
+#    push    xxh     # push vector number\r
+    .byte    0x6a\r
+    .byte    ( . - INTUnknown - 3 ) / 9 + 20 # vector number\r
+    JmpCommonIdtEntry\r
+  # No. 4\r
+    pushl    $0x0      # push error code place holder on the stack\r
+#    push    xxh     # push vector number\r
+    .byte    0x6a\r
+    .byte    ( . - INTUnknown - 3 ) / 9 + 20 # vector number\r
+    JmpCommonIdtEntry\r
+  # No. 5\r
+    pushl    $0x0      # push error code place holder on the stack\r
+#    push    xxh     # push vector number\r
+    .byte    0x6a\r
+    .byte    ( . - INTUnknown - 3 ) / 9 + 20 # vector number\r
+    JmpCommonIdtEntry\r
+  # No. 6\r
+    pushl    $0x0      # push error code place holder on the stack\r
+#    push    xxh     # push vector number\r
+    .byte    0x6a\r
+    .byte    ( . - INTUnknown - 3 ) / 9 + 20 # vector number\r
+    JmpCommonIdtEntry\r
+  # No. 7\r
+    pushl    $0x0      # push error code place holder on the stack\r
+#    push    xxh     # push vector number\r
+    .byte    0x6a\r
+    .byte    ( . - INTUnknown - 3 ) / 9 + 20 # vector number\r
+    JmpCommonIdtEntry\r
+  # No. 8\r
+    pushl    $0x0      # push error code place holder on the stack\r
+#    push    xxh     # push vector number\r
+    .byte    0x6a\r
+    .byte    ( . - INTUnknown - 3 ) / 9 + 20 # vector number\r
+    JmpCommonIdtEntry\r
+  # No. 9\r
+    pushl    $0x0      # push error code place holder on the stack\r
+#    push    xxh     # push vector number\r
+    .byte    0x6a\r
+    .byte    ( . - INTUnknown - 3 ) / 9 + 20 # vector number\r
+    JmpCommonIdtEntry\r
+  # No. 10\r
+    pushl    $0x0      # push error code place holder on the stack\r
+#    push    xxh     # push vector number\r
+    .byte    0x6a\r
+    .byte    ( . - INTUnknown - 3 ) / 9 + 20 # vector number\r
+    JmpCommonIdtEntry\r
+  # No. 11\r
+    pushl    $0x0      # push error code place holder on the stack\r
+#    push    xxh     # push vector number\r
+    .byte    0x6a\r
+    .byte    ( . - INTUnknown - 3 ) / 9 + 20 # vector number\r
+    JmpCommonIdtEntry\r
+  # No. 12\r
+    pushl    $0x0      # push error code place holder on the stack\r
+#    push    xxh     # push vector number\r
+    .byte    0x6a\r
+    .byte    ( . - INTUnknown - 3 ) / 9 + 20 # vector number\r
+    JmpCommonIdtEntry\r
+\r
 \r
-       .globl ASM_PFX(SystemTimerHandler)\r
+  ASM_GLOBAL ASM_PFX(SystemTimerHandler)\r
 ASM_PFX(SystemTimerHandler):\r
     pushl    $0\r
-    pushl    $mTimerVector\r
+    pushl    $ASM_PFX(mTimerVector)\r
     JmpCommonIdtEntry\r
 \r
 commonIdtEntry:\r
@@ -333,10 +400,10 @@ commonIdtEntry:
   push    %eax\r
   cmpl    $32,%eax\r
   jb      CallException\r
-  call    TimerHandler\r
+  call    ASM_PFX(TimerHandler)\r
   jmp     ExceptionDone\r
 CallException:\r
-  call    ExceptionHandler\r
+  call    ASM_PFX(ExceptionHandler)\r
 ExceptionDone:\r
   addl    $8,%esp\r
 \r
@@ -417,62 +484,61 @@ ExceptionDone:
 # data\r
 #;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
 \r
-       .data\r
-        .align 4\r
+  .data\r
+        .p2align 2\r
 \r
-gdtr:  .short GDT_END - GDT_BASE - 1   # GDT limit\r
+gdtr: .short GDT_END - GDT_BASE - 1   # GDT limit\r
         .long 0                         # (GDT base gets set above)\r
 #;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
 #   global descriptor table (GDT)\r
 #;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
 \r
-        .align 4\r
+        .p2align 2\r
 \r
-       .globl GDT_BASE\r
 GDT_BASE:\r
 # null descriptor\r
 NULL_SEL            = .-GDT_BASE\r
         .short 0            # limit 15:0\r
         .short 0            # base 15:0\r
-        .byte 0            # base 23:16\r
-        .byte 0            # type\r
-        .byte 0            # limit 19:16, flags\r
-        .byte 0            # base 31:24\r
+        .byte 0             # base 23:16\r
+        .byte 0             # type\r
+        .byte 0             # limit 19:16, flags\r
+        .byte 0             # base 31:24\r
 \r
 # linear data segment descriptor\r
 LINEAR_SEL      = .-GDT_BASE\r
         .short 0x0FFFF       # limit 0xFFFFF\r
-        .short 0            # base 0\r
+        .short 0             # base 0\r
         .byte 0\r
-        .byte 0x092         # present, ring 0, data, expand-up, writable\r
-        .byte 0x0CF                 # page-granular, 32-bit\r
+        .byte 0x092          # present, ring 0, data, expand-up, writable\r
+        .byte 0x0CF          # page-granular, 32-bit\r
         .byte 0\r
 \r
 # linear code segment descriptor\r
 LINEAR_CODE_SEL = .-GDT_BASE\r
         .short 0x0FFFF       # limit 0xFFFFF\r
-        .short 0            # base 0\r
+        .short 0             # base 0\r
         .byte 0\r
-        .byte 0x09A         # present, ring 0, data, expand-up, writable\r
-        .byte 0x0CF                 # page-granular, 32-bit\r
+        .byte 0x09A          # present, ring 0, data, expand-up, writable\r
+        .byte 0x0CF          # page-granular, 32-bit\r
         .byte 0\r
 \r
 # system data segment descriptor\r
 SYS_DATA_SEL    = .-GDT_BASE\r
         .short 0x0FFFF       # limit 0xFFFFF\r
-        .short 0            # base 0\r
+        .short 0             # base 0\r
         .byte 0\r
-        .byte 0x092         # present, ring 0, data, expand-up, writable\r
-        .byte 0x0CF                 # page-granular, 32-bit\r
+        .byte 0x092          # present, ring 0, data, expand-up, writable\r
+        .byte 0x0CF          # page-granular, 32-bit\r
         .byte 0\r
 \r
 # system code segment descriptor\r
 SYS_CODE_SEL    = .-GDT_BASE\r
         .short 0x0FFFF       # limit 0xFFFFF\r
-        .short 0            # base 0\r
+        .short 0             # base 0\r
         .byte 0\r
-        .byte 0x09A         # present, ring 0, data, expand-up, writable\r
-        .byte 0x0CF                 # page-granular, 32-bit\r
+        .byte 0x09A          # present, ring 0, data, expand-up, writable\r
+        .byte 0x0CF          # page-granular, 32-bit\r
         .byte 0\r
 \r
 # spare segment descriptor\r
@@ -480,8 +546,8 @@ SPARE3_SEL  = .-GDT_BASE
         .short 0            # limit 0xFFFFF\r
         .short 0            # base 0\r
         .byte 0\r
-        .byte 0            # present, ring 0, data, expand-up, writable\r
-        .byte 0            # page-granular, 32-bit\r
+        .byte 0             # present, ring 0, data, expand-up, writable\r
+        .byte 0             # page-granular, 32-bit\r
         .byte 0\r
 \r
 # spare segment descriptor\r
@@ -489,8 +555,8 @@ SPARE4_SEL  = .-GDT_BASE
         .short 0            # limit 0xFFFFF\r
         .short 0            # base 0\r
         .byte 0\r
-        .byte 0            # present, ring 0, data, expand-up, writable\r
-        .byte 0            # page-granular, 32-bit\r
+        .byte 0             # present, ring 0, data, expand-up, writable\r
+        .byte 0             # page-granular, 32-bit\r
         .byte 0\r
 \r
 # spare segment descriptor\r
@@ -498,18 +564,18 @@ SPARE5_SEL  = .-GDT_BASE
         .short 0            # limit 0xFFFFF\r
         .short 0            # base 0\r
         .byte 0\r
-        .byte 0            # present, ring 0, data, expand-up, writable\r
-        .byte 0            # page-granular, 32-bit\r
+        .byte 0             # present, ring 0, data, expand-up, writable\r
+        .byte 0             # page-granular, 32-bit\r
         .byte 0\r
 \r
 GDT_END:\r
 \r
-        .align 4\r
+        .p2align 2\r
 \r
 \r
 \r
-idtr:  .short IDT_END - IDT_BASE - 1   # IDT limit\r
-        .long 0                        # (IDT base gets set above)\r
+idtr: .short IDT_END - IDT_BASE - 1   # IDT limit\r
+        .long 0                         # (IDT base gets set above)\r
 #;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
 #   interrupt descriptor table (IDT)\r
 #\r
@@ -520,15 +586,14 @@ idtr:     .short IDT_END - IDT_BASE - 1   # IDT limit
 #;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
 \r
 #idt_tag .byte "IDT",0     \r
-        .align 4\r
+        .p2align 2\r
 \r
-.globl IDT_BASE\r
 IDT_BASE:\r
 # divide by zero (INT 0)\r
 DIV_ZERO_SEL        = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -536,7 +601,7 @@ DIV_ZERO_SEL        = .-IDT_BASE
 DEBUG_EXCEPT_SEL    = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -544,7 +609,7 @@ DEBUG_EXCEPT_SEL    = .-IDT_BASE
 NMI_SEL             = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -552,7 +617,7 @@ NMI_SEL             = .-IDT_BASE
 BREAKPOINT_SEL      = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -560,7 +625,7 @@ BREAKPOINT_SEL      = .-IDT_BASE
 OVERFLOW_SEL        = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -568,7 +633,7 @@ OVERFLOW_SEL        = .-IDT_BASE
 BOUNDS_CHECK_SEL    = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -576,7 +641,7 @@ BOUNDS_CHECK_SEL    = .-IDT_BASE
 INVALID_OPCODE_SEL  = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -584,7 +649,7 @@ INVALID_OPCODE_SEL  = .-IDT_BASE
 DEV_NOT_AVAIL_SEL   = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -592,7 +657,7 @@ DEV_NOT_AVAIL_SEL   = .-IDT_BASE
 DOUBLE_FAULT_SEL    = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -600,7 +665,7 @@ DOUBLE_FAULT_SEL    = .-IDT_BASE
 RSVD_INTR_SEL1      = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -608,7 +673,7 @@ RSVD_INTR_SEL1      = .-IDT_BASE
 INVALID_TSS_SEL     = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -616,7 +681,7 @@ INVALID_TSS_SEL     = .-IDT_BASE
 SEG_NOT_PRESENT_SEL = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -624,7 +689,7 @@ SEG_NOT_PRESENT_SEL = .-IDT_BASE
 STACK_FAULT_SEL     = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -632,7 +697,7 @@ STACK_FAULT_SEL     = .-IDT_BASE
 GP_FAULT_SEL        = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -640,7 +705,7 @@ GP_FAULT_SEL        = .-IDT_BASE
 PAGE_FAULT_SEL      = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -648,7 +713,7 @@ PAGE_FAULT_SEL      = .-IDT_BASE
 RSVD_INTR_SEL2      = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -656,7 +721,7 @@ RSVD_INTR_SEL2      = .-IDT_BASE
 FLT_POINT_ERR_SEL   = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -664,7 +729,7 @@ FLT_POINT_ERR_SEL   = .-IDT_BASE
 ALIGNMENT_CHECK_SEL = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -672,7 +737,7 @@ ALIGNMENT_CHECK_SEL = .-IDT_BASE
 MACHINE_CHECK_SEL   = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -680,28 +745,93 @@ MACHINE_CHECK_SEL   = .-IDT_BASE
 SIMD_EXCEPTION_SEL  = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
-       .rept  (32 - 20)\r
+  # The following segment repeats (32 - 20) times:\r
+  # No. 1\r
+        .short 0            # offset 15:0\r
+        .short SYS_CODE_SEL # selector 15:0\r
+        .byte 0             # 0 for interrupt gate\r
+        .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
+        .short 0            # offset 31:16\r
+  # No. 2\r
+        .short 0            # offset 15:0\r
+        .short SYS_CODE_SEL # selector 15:0\r
+        .byte 0             # 0 for interrupt gate\r
+        .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
+        .short 0            # offset 31:16\r
+  # No. 3\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
+        .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
+        .short 0            # offset 31:16\r
+  # No. 4\r
+        .short 0            # offset 15:0\r
+        .short SYS_CODE_SEL # selector 15:0\r
+        .byte 0             # 0 for interrupt gate\r
+        .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
+        .short 0            # offset 31:16\r
+  # No. 5\r
+        .short 0            # offset 15:0\r
+        .short SYS_CODE_SEL # selector 15:0\r
+        .byte 0             # 0 for interrupt gate\r
+        .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
+        .short 0            # offset 31:16\r
+  # No. 6\r
+        .short 0            # offset 15:0\r
+        .short SYS_CODE_SEL # selector 15:0\r
+        .byte 0             # 0 for interrupt gate\r
+        .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
+        .short 0            # offset 31:16\r
+  # No. 7\r
+        .short 0            # offset 15:0\r
+        .short SYS_CODE_SEL # selector 15:0\r
+        .byte 0             # 0 for interrupt gate\r
+        .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
+        .short 0            # offset 31:16\r
+  # No. 8\r
+        .short 0            # offset 15:0\r
+        .short SYS_CODE_SEL # selector 15:0\r
+        .byte 0             # 0 for interrupt gate\r
+        .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
+        .short 0            # offset 31:16\r
+  # No. 9\r
+        .short 0            # offset 15:0\r
+        .short SYS_CODE_SEL # selector 15:0\r
+        .byte 0             # 0 for interrupt gate\r
+        .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
+        .short 0            # offset 31:16\r
+  # No. 10\r
+        .short 0            # offset 15:0\r
+        .short SYS_CODE_SEL # selector 15:0\r
+        .byte 0             # 0 for interrupt gate\r
+        .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
+        .short 0            # offset 31:16\r
+  # No. 11\r
+        .short 0            # offset 15:0\r
+        .short SYS_CODE_SEL # selector 15:0\r
+        .byte 0             # 0 for interrupt gate\r
+        .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
+        .short 0            # offset 31:16\r
+  # No. 12\r
+        .short 0            # offset 15:0\r
+        .short SYS_CODE_SEL # selector 15:0\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
-       .endr\r
+\r
 \r
 # 72 unspecified descriptors\r
-       .rept 72 * 8\r
-        .byte 0\r
-       .endr\r
+  .fill 72 * 8, 1, 0\r
         \r
 # IRQ 0 (System timer) - (INT 0x68)\r
 IRQ0_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -709,7 +839,7 @@ IRQ0_SEL            = .-IDT_BASE
 IRQ1_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -717,7 +847,7 @@ IRQ1_SEL            = .-IDT_BASE
 IRQ2_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -725,7 +855,7 @@ IRQ2_SEL            = .-IDT_BASE
 IRQ3_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -733,7 +863,7 @@ IRQ3_SEL            = .-IDT_BASE
 IRQ4_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -741,7 +871,7 @@ IRQ4_SEL            = .-IDT_BASE
 IRQ5_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -749,7 +879,7 @@ IRQ5_SEL            = .-IDT_BASE
 IRQ6_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -757,7 +887,7 @@ IRQ6_SEL            = .-IDT_BASE
 IRQ7_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -765,7 +895,7 @@ IRQ7_SEL            = .-IDT_BASE
 IRQ8_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -773,7 +903,7 @@ IRQ8_SEL            = .-IDT_BASE
 IRQ9_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -781,7 +911,7 @@ IRQ9_SEL            = .-IDT_BASE
 IRQ10_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -789,7 +919,7 @@ IRQ10_SEL            = .-IDT_BASE
 IRQ11_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -797,7 +927,7 @@ IRQ11_SEL            = .-IDT_BASE
 IRQ12_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -805,7 +935,7 @@ IRQ12_SEL            = .-IDT_BASE
 IRQ13_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -813,7 +943,7 @@ IRQ13_SEL            = .-IDT_BASE
 IRQ14_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
@@ -821,13 +951,11 @@ IRQ14_SEL            = .-IDT_BASE
 IRQ15_SEL            = .-IDT_BASE\r
         .short 0            # offset 15:0\r
         .short SYS_CODE_SEL # selector 15:0\r
-        .byte 0            # 0 for interrupt gate\r
+        .byte 0             # 0 for interrupt gate\r
         .byte 0x0e | 0x80   # (10001110)type = 386 interrupt gate, present\r
         .short 0            # offset 31:16\r
 \r
-       .rept 1 * 8\r
-        .byte 0\r
-       .endr\r
+  .fill 1 * 8, 1, 0\r
 \r
 IDT_END:\r
 \r