]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/boot/i386/pc/lnxboot.S (real_code_2): Ensure that the
authorColin Watson <cjwatson@ubuntu.com>
Fri, 11 Mar 2011 11:51:10 +0000 (11:51 +0000)
committerColin Watson <cjwatson@ubuntu.com>
Fri, 11 Mar 2011 11:51:10 +0000 (11:51 +0000)
initial chunk read from the kernel always includes GRUB's multiboot
header, which is now outside the first sector.

ChangeLog
grub-core/boot/i386/pc/lnxboot.S

index 0406cf91f69ae2d57279d90696b87487e895808b..08b937dcb7e8a52a72dc39b8bc597daad36d37de 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-03-11  Colin Watson  <cjwatson@ubuntu.com>
+
+       * grub-core/boot/i386/pc/lnxboot.S (real_code_2): Ensure that the
+       initial chunk read from the kernel always includes GRUB's multiboot
+       header, which is now outside the first sector.
+
 2011-03-09  Colin Watson  <cjwatson@ubuntu.com>
 
        * grub-core/loader/i386/linux.c (find_efi_mmap_size): Page-align
index 9a599c261b2547c94ba20f4e1306b40f4e88b3bf..2c759602651821824359b21065105d15885ec2f4 100644 (file)
@@ -178,8 +178,13 @@ real_code_2:
        pushw   %es
        popw    %ds
 
+#if GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART + 4 < 0x200
        movl    $0x200, %ecx
        addl    %ecx, %esi
+#else
+       movl    $(GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART + 4), %ecx
+       addl    $0x200, %esi
+#endif
        movl    $DATA_ADDR, %edi
 
        call    LOCAL(move_memory)
@@ -196,7 +201,11 @@ real_code_2:
 1:
 
        movl    %ss:(DATA_ADDR + GRUB_KERNEL_MACHINE_COMPRESSED_SIZE), %ecx
+#if GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART + 4 < 0x200
        addl    $(GRUB_KERNEL_MACHINE_RAW_SIZE - 0x200), %ecx
+#else
+       addl    $(GRUB_KERNEL_MACHINE_RAW_SIZE - (GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART + 4)), %ecx
+#endif
 
 2:
        call    LOCAL(move_memory)