Hi!

...is broken. If imagesize is 0xf123, bootsect_second only returns
0xf000 in ax, which is < 0xf123, so it continues loading. Then,
bootsect_second returns 0x10000, but it is 16 bit register, so it is
0x0000, and that's also < 0xf123. So it is looping forever.

It can be fixed like this: (Another possible workaround is to set max
size in tools/misc.c to 0xefff instead of 0xffff. OTOH it would be
nice to be able to boot images up to 2.88MB directly from floppy).
                                                                Pavel
(Okay to commit into x86-64 tree?)

--- linux/arch/i386/boot/setup.S        Tue May  8 12:11:01 2001
+++ linux/arch/x86_64/boot/setup.S      Fri May 25 22:18:57 2001
@@ -771,6 +774,8 @@
        incb    %cs:bootsect_dst_base+2         # to 0x10000
 bootsect_ex:
        movb    %cs:bootsect_dst_base+2, %ah
+       cmpb    $0x20, %ah
+       je      realbig
        shlb    $4, %ah                         # we now have the number of
                                                # moved frames in %ax
        xorb    %al, %al
@@ -779,6 +784,13 @@
        popw    %cx
        lret
 
+realbig:
+       movw    $0xffff,%ax
+       popw    %bx
+       popw    %si
+       popw    %cx
+       lret
+
 bootsect_gdt:
        .word   0, 0, 0, 0
        .word   0, 0, 0, 0

-- 
I'm [EMAIL PROTECTED] "In my country we have almost anarchy and I don't care."
Panos Katsaloulis describing me w.r.t. patents at [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to