#------------------------------------------------------------------------------\r
#*\r
-#* Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\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
xorw %ax, %ax # AX = 0x0000\r
movw $0x7c00, %bx # BX = 0x7C00\r
movw $0x600, %bp # BP = 0x0600\r
- movw RelocatedStart, %si # SI = Offset(RelocatedStart)\r
+ movw $RelocatedStart, %si # SI = Offset(RelocatedStart)\r
movw $0x200, %cx # CX = 0x0200\r
subw %si, %cx # CS = 0x0200 - Offset(RelocatedStart)\r
leaw (%bp,%si,), %di # DI = 0x0600 + Offset(RelocatedStart)\r
#------------------------------------------------------------------------------\r
#*\r
-#* Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>\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
movw %ax, %es\r
movw $0x7c0, %ax\r
movw %ax, %ds\r
- movw $7, %cx\r
+ movw $6, %cx\r
movw $160, %di\r
rep\r
movsw\r
jmp Halt\r
\r
StartString: \r
- .byte 'B', 0x0c, 'S', 0x0c, 't', 0x0c, 'a', 0x0c, 'r', 0x0c, 't', 0x0c, '!', 0x0c\r
+ .byte 'B', 0x0c, 'S', 0x0c, 't', 0x0c, 'a', 0x0c, 'r', 0x0c, 't', 0x0c\r
ErrorString: \r
- .byte 'B', 0x0c, 'E', 0x0c, 'r', 0x0c, 'r', 0x0c, 'o', 0x0c, 'r', 0x0c, '!', 0x0c\r
+ .byte 'B', 0x0c, 'E', 0x0c, 'r', 0x0c, 'r', 0x0c, 'o', 0x0c, 'r', 0x0c\r
\r
# ****************************************************************************\r
# LBA Offset for BootSector, need patched by tool for HD boot.\r
# ****************************************************************************\r
\r
- #.org 0x01fa\r
+ .org 0x01fa\r
LBAOffsetForBootSector: \r
.long 0x0\r
\r
# Sector Signature\r
# ****************************************************************************\r
\r
- #.org 0x01fe\r
+ .org 0x01fe\r
SectorSignature: \r
.word 0xaa55 # Boot Sector Signature\r
\r
;------------------------------------------------------------------------------\r
;*\r
-;* Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>\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
; ****************************************************************************\r
; Start Print\r
; ****************************************************************************\r
- lea si, cs:[StartString]\r
+ mov si, offset StartString\r
call PrintString\r
\r
; ****************************************************************************\r
mov es,ax\r
mov ax, 07c0h\r
mov ds, ax\r
- mov cx, 7\r
+ mov cx, 6\r
mov di, 160\r
rep movsw\r
ret\r
jne FoundEFILDR\r
BadBootSector:\r
DiskError:\r
- lea si, cs:[ErrorString]\r
+ mov si, offset ErrorString\r
call PrintString\r
Halt:\r
jmp Halt\r
\r
StartString:\r
- db 'B', 0ch, 'S', 0ch, 't', 0ch, 'a', 0ch, 'r', 0ch, 't', 0ch, '!', 0ch\r
+ db 'B', 0ch, 'S', 0ch, 't', 0ch, 'a', 0ch, 'r', 0ch, 't', 0ch\r
ErrorString:\r
- db 'B', 0ch, 'E', 0ch, 'r', 0ch, 'r', 0ch, 'o', 0ch, 'r', 0ch, '!', 0ch\r
+ db 'B', 0ch, 'E', 0ch, 'r', 0ch, 'r', 0ch, 'o', 0ch, 'r', 0ch\r
\r
; ****************************************************************************\r
; LBA Offset for BootSector, need patched by tool for HD boot.\r
call ClearScreen\r
\r
# Populate IDT with meaningful offsets for exception handlers...\r
- sidt Idtr \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 %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
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
## \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
.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
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
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
#------------------------------------------------------------------------------\r
#*\r
-#* Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\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
ErrorString: \r
.byte 'S', 0x0c, 'E', 0x0c, 'r', 0x0c, 'r', 0x0c, 'o', 0x0c, 'r', 0x0c, '!', 0x0c\r
\r
- # .org 0x01fa # Will cause build break\r
+ .org 0x01fa\r
LBAOffsetForBootSector: \r
.long 0x0\r
\r
- # .org 0x01fe # Will cause build break\r
+ .org 0x01fe\r
.word 0xaa55\r
\r
#******************************************************************************\r
.equ WRITE_DATA_PORT_CMD, 0x0d1 # 8042 command to write the data port\r
.equ ENABLE_A20_CMD, 0x0df # 8042 command to enable A20\r
\r
-# .org 0x200 # Will cause build break\r
+ .org 0x200\r
jmp start\r
Em64String: \r
.byte 'E', 0x0c, 'm', 0x0c, '6', 0x0c, '4', 0x0c, 'T', 0x0c, ' ', 0x0c, 'U', 0x0c, 'n', 0x0c, 's', 0x0c, 'u', 0x0c, 'p', 0x0c, 'p', 0x0c, 'o', 0x0c, 'r', 0x0c, 't', 0x0c, 'e', 0x0c, 'd', 0x0c, '!', 0x0c\r