]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/BootSector/start.S
EFI driver should base 0x0
[mirror_edk2.git] / DuetPkg / BootSector / start.S
index d558652a9ad9d7ff0608525acc0e9d1fb7ec8279..58ac46d43f270688fb2ccc924cff1eb966fff58d 100644 (file)
 #*\r
 #------------------------------------------------------------------------------\r
 \r
-\r
-\r
-\r
-\r
+        .stack: \r
+        .486p: \r
+        .code16\r
                \r
 .equ                        FAT_DIRECTORY_ENTRY_SIZE, 0x020\r
 .equ                        FAT_DIRECTORY_ENTRY_SHIFT, 5\r
@@ -74,7 +73,7 @@ BootSectorEntryPoint:
 NoVarStore: \r
         pushw   %es\r
 # Set the 5th byte start @ 0:19000 to non-zero indicating we should init var store header in DxeIpl\r
-        movb    %al, %es:($4)\r
+        movb    %al, %es:(4)\r
         jmp     SaveVolumeId\r
 \r
 CheckVarStoreSize: \r
@@ -85,7 +84,7 @@ CheckVarStoreSize:
 \r
 LoadVarStore: \r
         movb    $0, %al\r
-        movb    %al, %es:($4)\r
+        movb    %al, %es:(4)\r
         movw    (%di), %cx\r
 #       ES:DI = 1500:0\r
         xorw    %di, %di\r
@@ -96,9 +95,9 @@ LoadVarStore:
 SaveVolumeId: \r
         popw    %es\r
         movw    VolId(%bp), %ax\r
-        movw    %ax, %es:($0)                       # Save Volume Id to 0:19000. we will find the correct volume according to this VolumeId\r
+        movw    %ax, %es:(0)                    # Save Volume Id to 0:19000. we will find the correct volume according to this VolumeId\r
         movw    VolId+2(%bp), %ax\r
-        movw    %ax, %es:($2)\r
+        movw    %ax, %es:(2)\r
 \r
 # Read Efildr\r
         popw    %cx\r
@@ -240,7 +239,7 @@ ReadCylinderLoop:
 LimitTransfer: \r
         pushw   %ax                                 # save ax\r
         movw    %es, %ax                            # ax = es\r
-        shrw    %ax                                 # ax = Number of blocks into mem system\r
+        shrw    $(BLOCK_SHIFT-4), %ax               # ax = Number of blocks into mem system\r
         andw    $0x7f, %ax                          # ax = Number of blocks into current seg\r
         addw    %bx, %ax                            # ax = End Block number of transfer\r
         cmpw    $0x80, %ax                          # See if it crosses a 64K boundry\r
@@ -272,7 +271,7 @@ NotCrossing64KBoundry:
         addl    %ebx, %esi                          # StartLBA = StartLBA + NumberOfBlocks\r
         subw    %bx, %cx                            # Blocks = Blocks - NumberOfBlocks\r
         movw    %es, %ax\r
-        shlw    %bx\r
+        shlw    $(BLOCK_SHIFT-4), %bx\r
         addw    %bx, %ax\r
         movw    %ax, %es                            # es:di = es:di + NumberOfBlocks*BLOCK_SIZE\r
         cmpw    $0, %cx\r
@@ -299,11 +298,11 @@ Halt:
 ErrorString: \r
         .byte 'S', 0x0c, 'E', 0x0c, 'r', 0x0c, 'r', 0x0c, 'o', 0x0c, 'r', 0x0c, '!',0x0c\r
 \r
-        .org     0x0241 # For Code size overflow, Modified this just for pass build\r
+        .org     0x01fa\r
 LBAOffsetForBootSector: \r
         .long   0x0\r
 \r
-        #.org    0x0227  # For Code size overflow, Modified this just for pass build\r
+        .org    0x01fe\r
         .word   0xaa55\r
 \r
 #******************************************************************************\r