#------------------------------------------------------------------------------\r
#*\r
-#* Copyright 2006, Intel Corporation \r
-#* All rights reserved. This program and the accompanying materials \r
+#* Copyright (c) 2006 - 2012, 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
.code: \r
.org 0x21000\r
\r
+.global _start\r
+_start:\r
+\r
.equ DEFAULT_HANDLER_SIZE, INT1 - INT0\r
\r
.macro jmpCommonIdtEntry \r
# within 255 bytes of the common entry. This must\r
# be done to maintain the consistency of the size\r
# of entry points...\r
- .byte 0xe9 # jmp 16 bit relative\r
- .long commonIdtEntry - . - 4 # offset to jump to\r
+ .byte 0xe9 # jmp 16 bit relative\r
+ .long commonIdtEntry - . - 4 # offset to jump to\r
.endm\r
\r
\r
call ClearScreen\r
\r
# Populate IDT with meaningful offsets for exception handlers...\r
- sidt Idtr \r
- \r
+ movl $Idtr, %eax\r
+ sidt (%eax) # get fword address of IDT\r
+ \r
\r
- movl Halt, %eax\r
+ movl $Halt, %eax\r
movl %eax,%ebx # use bx to copy 15..0 to descriptors\r
shrl $16,%eax # use ax to copy 31..16 to descriptors \r
# 63..32 of descriptors is 0\r
movl $0x78,%ecx # 78h IDT entries to initialize with unique entry points (exceptions)\r
- movl (Idtr + 2), %esi\r
+ movl $(Idtr + 2), %esi\r
movl (%esi),%edi\r
\r
LOOP_1: # loop through all IDT entries exception handlers and initialize to default handler\r
movw %bx, (%edi) # write bits 15..0 of offset\r
movw $0x38, 2(%edi) # SYS_CODE_SEL64 from GDT\r
- movw $(0x0e00 | 0x8000), 4(%edi) # type = 386 interrupt gate, present\r
+ movw $(0x0e00 | 0x8000), 4(%edi) # type = 386 interrupt gate, present\r
movw %ax, 6(%edi) # write bits 31..16 of offset\r
movl $0, 8(%edi) # write bits 31..16 of offset \r
addl $16, %edi # move up to next descriptor\r
- addw DEFAULT_HANDLER_SIZE, %bx # move to next entry point\r
+ addw $DEFAULT_HANDLER_SIZE, %bx # move to next entry point\r
loopl LOOP_1 # loop back through again until all descriptors are initialized\r
\r
## at this point edi contains the offset of the descriptor for INT 20\r
movl 0x30(%ebp),%edi # edi = [[22000 + [22014] + 3c] + 2c] = ImageBase (63..32 is zero, ignore)\r
movl 0x28(%ebp),%eax # eax = [[22000 + [22014] + 3c] + 24] = EntryPoint\r
addl %edi,%eax # eax = ImageBase + EntryPoint\r
- movl %ebx, EfiLdrOffset \r
+ movl $EfiLdrOffset, %ebx\r
movl %eax, (%ebx) # Modify far jump instruction for correct entry point\r
\r
- movw 6(%ebp), %bx # bx = Number of sections\r
+ movw 6(%ebp), %bx # bx = Number of sections\r
xorl %eax,%eax\r
- movw 0x14(%ebp), %ax # ax = Optional Header Size\r
+ movw 0x14(%ebp), %ax # ax = Optional Header Size\r
addl %eax,%ebp\r
addl $0x18,%ebp # ebp = Start of 1st Section\r
\r
cmpw $0,%bx\r
jne SectionLoop\r
\r
- movl (Idtr), %eax # get size of IDT\r
- movzx (%edx), %eax\r
+ movl $Idtr, %edx # get size of IDT\r
+ movzxw (%edx), %eax\r
.byte 0xff\r
.byte 0xc0\r
# inc eax\r
- addl 2(%edx), %eax # add to base of IDT to get location of memory map...\r
+ addl 2(%edx), %eax # add to base of IDT to get location of memory map...\r
xorl %ecx,%ecx\r
movl %eax,%ecx # put argument to RCX\r
\r
.byte 0xc3\r
\r
# db "**** DEFAULT IDT ENTRY ***",0\r
- .align 0x2\r
+ .p2align 1\r
Halt: \r
INT0: \r
pushl $0x0 # push error code place holder on the stack\r
jmpCommonIdtEntry \r
\r
INTUnknown: \r
-.rept (0x78 - 20)\r
+# The following segment repeats (0x78 - 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
+# 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
+# No. 13\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. 14\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. 15\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. 16\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. 17\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. 18\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. 19\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. 20\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. 21\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. 22\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. 23\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. 24\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. 25\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. 26\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. 27\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. 28\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. 29\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. 30\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. 31\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. 32\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. 33\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. 34\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. 35\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. 36\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. 37\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. 38\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. 39\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. 40\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. 41\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. 42\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. 43\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. 44\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. 45\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. 46\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. 47\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. 48\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. 49\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. 50\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. 51\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. 52\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. 53\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. 54\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. 55\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. 56\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. 57\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. 58\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. 59\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. 60\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. 61\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. 62\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. 63\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. 64\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. 65\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. 66\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. 67\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. 68\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. 69\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. 70\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. 71\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. 72\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. 73\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. 74\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. 75\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. 76\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. 77\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. 78\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. 79\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. 80\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. 81\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. 82\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. 83\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. 84\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. 85\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. 86\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. 87\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. 88\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. 89\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. 90\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. 91\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. 92\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. 93\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. 94\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. 95\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. 96\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. 97\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. 98\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. 99\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. 100\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
+\r
\r
commonIdtEntry: \r
pushl %eax\r
## \r
\r
call ClearScreen\r
- mov String1, %esi \r
+ movl $String1, %esi \r
call PrintString\r
.byte 0x48\r
movl 16*8(%ebp),%eax ## move Int number into RAX \r
ja PrintDefaultString\r
PrintExceptionString: \r
shll $3,%eax ## multiply by 8 to get offset from StringTable to actual string address\r
- addl StringTable, %eax\r
+ addl $StringTable, %eax\r
movl (%eax),%esi\r
jmp PrintTheString\r
PrintDefaultString: \r
- movl IntUnknownString, %esi\r
+ movl $IntUnknownString, %esi\r
# patch Int number\r
movl %eax,%edx\r
call A2C\r
movb %al,(%esi)\r
PrintTheString: \r
call PrintString\r
- movl String2, %esi\r
+ movl $String2, %esi\r
call PrintString\r
.byte 0x48\r
movl 19*8(%ebp),%eax # CS\r
call PrintQword\r
movb $':', %al\r
- movb %al, (%edi)\r
+ movb %al, (%edi)\r
addl $2,%edi\r
.byte 0x48\r
movl 18*8(%ebp),%eax # RIP\r
call PrintQword\r
- movl String3, %esi\r
+ movl $String3, %esi\r
call PrintString\r
\r
movl $0xb8140,%edi\r
\r
- movl StringRax, %esi\r
+ movl $StringRax, %esi\r
call PrintString\r
.byte 0x48\r
movl 15*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringRcx, %esi\r
+ movl $StringRcx, %esi\r
call PrintString\r
.byte 0x48\r
movl 14*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringRdx, %esi\r
+ movl $StringRdx, %esi\r
call PrintString\r
.byte 0x48\r
movl 13*8(%ebp),%eax\r
\r
movl $0xb81e0,%edi\r
\r
- movl StringRbx, %esi\r
+ movl $StringRbx, %esi\r
call PrintString\r
.byte 0x48\r
movl 12*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringRsp, %esi\r
+ movl $StringRsp, %esi\r
call PrintString\r
.byte 0x48\r
movl 21*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringRbp, %esi\r
+ movl $StringRbp, %esi\r
call PrintString\r
.byte 0x48\r
movl 10*8(%ebp),%eax\r
\r
movl $0xb8280,%edi\r
\r
- movl StringRsi, %esi\r
+ movl $StringRsi, %esi\r
call PrintString\r
.byte 0x48\r
movl 9*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringRdi, %esi\r
+ movl $StringRdi, %esi\r
call PrintString\r
.byte 0x48\r
movl 8*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringEcode, %esi\r
+ movl $StringEcode, %esi\r
call PrintString\r
.byte 0x48\r
movl 17*8(%ebp),%eax\r
\r
movl $0xb8320,%edi\r
\r
- movl StringR8, %esi\r
+ movl $StringR8, %esi\r
call PrintString\r
.byte 0x48\r
movl 7*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringR9, %esi\r
+ movl $StringR9, %esi\r
call PrintString\r
.byte 0x48\r
movl 6*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringR10, %esi\r
+ movl $StringR10, %esi\r
call PrintString\r
.byte 0x48\r
movl 5*8(%ebp),%eax\r
\r
movl $0xb83c0,%edi\r
\r
- movl StringR11, %esi\r
+ movl $StringR11, %esi\r
call PrintString\r
.byte 0x48\r
movl 4*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringR12, %esi\r
+ movl $StringR12, %esi\r
call PrintString\r
.byte 0x48\r
movl 3*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringR13, %esi\r
+ movl $StringR13, %esi\r
call PrintString\r
.byte 0x48\r
movl 2*8(%ebp),%eax\r
\r
movl $0xb8460,%edi\r
\r
- movl StringR14, %esi\r
+ movl $StringR14, %esi\r
call PrintString\r
.byte 0x48\r
movl 1*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringR15, %esi\r
+ movl $StringR15, %esi\r
call PrintString\r
.byte 0x48\r
movl 0*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringSs, %esi\r
+ movl $StringSs, %esi\r
call PrintString\r
.byte 0x48\r
movl 22*8(%ebp),%eax\r
\r
movl $0xb8500,%edi\r
\r
- movl StringRflags, %esi\r
+ movl $StringRflags, %esi\r
call PrintString\r
.byte 0x48\r
movl 20*8(%ebp),%eax\r
movl (%esi),%eax\r
call PrintQword\r
addl $8,%esi\r
- mov $0x00, %al \r
+ movb $0x20, %al # blank character\r
movb %al,(%edi)\r
addl $2,%edi\r
loop InnerLoop\r
movl (%esi),%eax\r
call PrintQword\r
addl $8,%esi\r
- movb $0x00, %al\r
+ movb $0x20, %al # blank character\r
movb %al,(%edi)\r
addl $2,%edi\r
loop InnerLoop1\r
PrintString: \r
pushl %eax\r
LN_C2: \r
- movb (%esi), %al\r
+ movb (%esi), %al\r
cmpb $0,%al\r
je LN_C3\r
- movb %al, (%edi)\r
+ movb %al, (%edi)\r
.byte 0xff\r
.byte 0xc6\r
# inc esi\r
andb $0xf,%bl\r
addb $'0', %bl\r
cmpb $'9', %bl\r
- jle @f\r
+ jle LN_C4\r
addb $7,%bl\r
-@@: \r
- movb %bl, (%edi)\r
+LN_C4: \r
+ movb %bl, (%edi)\r
addl $2,%edi\r
loop looptop\r
#wbinvd\r
pushl %eax\r
pushl %ecx\r
\r
- movb $0x00, %al\r
+ movb $0x20, %al # blank character\r
movb $0xc,%ah\r
movl $0xb8000,%edi\r
movl $80*24,%ecx\r
-LN_C4: \r
- movw %ax, (%edi)\r
+LN_C5: \r
+ movw %ax, (%edi)\r
addl $2,%edi\r
- loop LN_C4\r
+ loop LN_C5\r
movl $0xb8000,%edi\r
\r
popl %ecx\r
andb $0xf,%al\r
addb $'0', %al\r
cmpb $'9', %al\r
- jle @f\r
+ jle LN_C6\r
addb $7,%al\r
-LN_C5: \r
+LN_C6: \r
ret\r
\r
String1: .asciz "*** INT "\r
Int19String: .asciz "13h SIMD Floating-Point Exception -"\r
IntUnknownString: .asciz "??h Unknown interrupt -"\r
\r
-StringTable: .long Int0String, Int1String, Int2String, Int3String, \\r
- Int4String, Int5String, Int6String, Int7String, \\r
- Int8String, Int9String, Int10String, Int11String, \\r
- Int12String, Int13String, Int14String, Int15String,\\r
- Int16String, Int17String, Int18String, Int19String\r
+StringTable: .long Int0String, 0, Int1String, 0, Int2String, 0, Int3String, 0, \\r
+ Int4String, 0, Int5String, 0, Int6String, 0, Int7String, 0, \\r
+ Int8String, 0, Int9String, 0, Int10String, 0, Int11String, 0, \\r
+ Int12String, 0, Int13String, 0, Int14String, 0, Int15String, 0, \\r
+ Int16String, 0, Int17String, 0, Int18String, 0, Int19String, 0\r
\r
String2: .asciz " HALT!! *** ("\r
String3: .asciz ")"\r