# 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
+ sidt Idtr \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
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 %ebx, EfiLdrOffset \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), %eax # get size of IDT\r
+ movzx (%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
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
+ mov $0x00, %al \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 $0x00, %al\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
jle @f\r
addb $7,%bl\r
@@: \r
- movb %bl, (%edi)\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 $0x00, %al\r
movb $0xc,%ah\r
movl $0xb8000,%edi\r
movl $80*24,%ecx\r
LN_C4: \r
- movw %ax, (%edi)\r
+ movw %ax, (%edi)\r
addl $2,%edi\r
loop LN_C4\r
movl $0xb8000,%edi\r