]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/BootSector/bootsect.S
Fix GCC build error.
[mirror_edk2.git] / DuetPkg / BootSector / bootsect.S
index d576adb727e8e0c4f08ecb84888bbfc1a043b39f..5993a1ac99310cb5875e18431598483b3b486881 100644 (file)
@@ -1,7 +1,7 @@
 #------------------------------------------------------------------------------\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
@@ -9,16 +9,28 @@
 #*   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
-        .code\r
+        .code16\r
 \r
 .equ                      FAT_DIRECTORY_ENTRY_SIZE, 0x020\r
 .equ                      FAT_DIRECTORY_ENTRY_SHIFT, 5\r
@@ -30,8 +42,8 @@
 .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
@@ -65,7 +77,7 @@ BootSectorEntryPoint:
 # ****************************************************************************\r
 # Start Print\r
 # ****************************************************************************\r
-  leaw %cs:StartString, %si\r
+  movw $StartString, %si\r
   call PrintString\r
 \r
 # ****************************************************************************\r
@@ -117,7 +129,7 @@ BootSectorEntryPoint:
   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
@@ -261,7 +273,7 @@ NotFoundAll:
   jne  FoundEFILDR\r
 BadBootSector: \r
 DiskError: \r
-  leaw %cs:ErrorString, %si\r
+  movw $ErrorString, %si\r
   call PrintString\r
 Halt: \r
   jmp   Halt\r
@@ -275,7 +287,7 @@ ErrorString:
 # LBA Offset for BootSector, need patched by tool for HD boot.\r
 # ****************************************************************************\r
 \r
-  .org 0x01fa   # Comment it for pass build. Should optimise code size. \r
+  .org 0x01fa   # Comment it for pass build. Should optimise code size. \r
 LBAOffsetForBootSector: \r
   .long     0x0\r
 \r
@@ -283,7 +295,7 @@ LBAOffsetForBootSector:
 # Sector Signature\r
 # ****************************************************************************\r
 \r
-  .org 0x01fe    # Comment it for pass build.\r
+  .org 0x01fe    # Comment it for pass build.\r
 SectorSignature: \r
   .word     0xaa55      # Boot Sector Signature\r
 \r