#------------------------------------------------------------------------------\r
#*\r
-#* Copyright 2006 - 2007, Intel Corporation \r
-#* All rights reserved. This program and the accompanying materials \r
+#* Copyright (c) 2006 - 2007, 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
#* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
#* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
#* \r
-#* bootsect.asm\r
+#* bootsect.S\r
#* \r
-#* Abstract:\r
+#* bootsect.S is built as 16-bit binary file in 512 bytes and patched to disk/partition's \r
+#* first section - boot sector. \r
+#*\r
+#* The startup sequence for DUET disk boot sector is:\r
+#*\r
+#* 1, LegacyBios check 0xAA55 signature at boot sectore offset 0x1FE to judget \r
+#* whether disk/partition is bootable.\r
+#* 2, LegacyBios will load boot sector to 0x7c00 in real mode, pass BPB data and\r
+#* hand off control to 0x7c00 code.\r
+#* 3, boot sector code simply parse FAT format in boot disk and find EfiLdr binary file \r
+#* and EfiVar.bin if exists. For first boot, EfiVar.bin does not exist.\r
+#* 4, boot sector load the first sector of EfiLdr binary which is start.com to\r
+#* 0x2000:0x0000 address.\r
+#* 5, boot sector handoff control to 0x2000:0x0000 for start.com binary.\r
#*\r
#------------------------------------------------------------------------------\r
\r
- #.MODEL small\r
.stack: \r
.486p: \r
.code16\r
.equ LOADER_FILENAME_PART2, 0x020205244 # "DR__"\r
.equ LOADER_FILENAME_PART3, 0x020202020 # "____"\r
\r
- .org 0x0
-.global _start
+ .org 0x0\r
+.global _start\r
_start:\r
Ia32Jump: \r
jmp BootSectorEntryPoint # JMP inst - 3 bytes\r
xorw %bx, %bx\r
\r
FindEFILDR: \r
- cmpl $LOADER_FILENAME_PART1, (%di) # Compare to "EFIL"\r
+ cmpl $LOADER_FILENAME_PART1, (%di) # Compare to "EFIL"\r
jne FindVARSTORE\r
cmpl $LOADER_FILENAME_PART2, 4(%di) \r
jne FindVARSTORE\r