]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* kern/i386/loader.S (grub_multiboot_backward_relocator): Improve
authorrobertmh <robertmh@localhost>
Sat, 22 Nov 2008 15:00:39 +0000 (15:00 +0000)
committerrobertmh <robertmh@localhost>
Sat, 22 Nov 2008 15:00:39 +0000 (15:00 +0000)
        comments.  Avoid copiing one more byte than necessary (just in case).

ChangeLog
kern/i386/loader.S

index 75511246064a70deb91048d2b75923e19f8cb4fb..5a6d71773534b33da1906f3bfceba45211ec2c4b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,9 @@
        (grub_vga_text_term): Use grub_vga_text_init_fini() instead of
        grub_vga_text_cls().
 
+       * kern/i386/loader.S (grub_multiboot_backward_relocator): Improve
+       comments.  Avoid copiing one more byte than necessary (just in case).
+
 2008-11-20  Robert Millan  <rmh@aybabtu.com>
 
        * kern/i386/coreboot/init.c (grub_time_tics): Remove variable.
index 8f146d92e8f89e4d0934aefdaf7f90f52427520e..cacbbea7337a092ccd0cfc7caff9bb13d295d29d 100644 (file)
@@ -141,24 +141,32 @@ VARIABLE(grub_multiboot_payload_entry_offset)
  * edx:        Offset of the entry point (relative to the beginning of the block).
  */
 VARIABLE(grub_multiboot_forward_relocator)
-       cld
+       /* Add entry offset.  */
        addl    %edi, %edx
+
+       /* Forward copy.  */
+       cld
        rep
        movsb
+
        jmp     *%edx
 VARIABLE(grub_multiboot_forward_relocator_end)
 
 VARIABLE(grub_multiboot_backward_relocator)
+       /* Add entry offset (before %edi is mangled).  */
+       addl    %edi, %edx
+
+       /* Backward movsb is implicitly off-by-one.  compensate that.  */
+       decl    %esi
+       decl    %edi
+
+       /* Backward copy.  */
        std
        addl    %ecx, %esi
        addl    %ecx, %edi
-       /* backward movsb is implicitly off-by-one.  compensate that. */
-       incl    %ecx
        rep
        movsb
-       /* same problem again. */
-       incl    %edi
-       addl    %edi, %edx
+
        jmp     *%edx
 VARIABLE(grub_multiboot_backward_relocator_end)