]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[prefix] Call decompressor in flat real mode when DEBUG=libprefix is enabled
authorMichael Brown <mcb30@ipxe.org>
Thu, 26 Feb 2015 12:56:07 +0000 (12:56 +0000)
committerMichael Brown <mcb30@ipxe.org>
Thu, 26 Feb 2015 12:56:07 +0000 (12:56 +0000)
Allow the decompressor the option of generating debugging output via
the BIOS console by calling it in flat real mode (rather than 16-bit
protected mode) when libprefix.S is built with debugging enabled.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/i386/prefix/libprefix.S

index 0be96798be89e8a1ee1f521577bdc071f80d8af3..5a2dff57f0040e348f8136333b756a8c7c28aaac 100644 (file)
@@ -394,8 +394,10 @@ process_bytes:
        movw    %ax, %fs
        movw    %ax, %gs
 
+#ifdef NDEBUG
        /* Call memcpy()-like function */
        call    *%bx
+#endif
 
        /* Return to (flat) real mode */
        movl    %cr0, %eax
@@ -409,6 +411,20 @@ process_bytes:
        popw    %fs
        popw    %gs
 
+#ifndef NDEBUG
+       /* Call memcpy()-like function in flat real mode (to allow for
+        * debug output via INT 10).
+        */
+       pushw   %ds
+       pushw   %es
+       xorw    %ax, %ax
+       movw    %ax, %ds
+       movw    %ax, %es
+       call    *%bx
+       popw    %es
+       popw    %ds
+#endif
+
        /* Restore GDT */
        data32 lgdt -8(%bp)
        addw    $( 8 /* saved GDT */ + ( PM_DS + 8 ) /* GDT on stack */ ), %sp