Messages in this thread | | | Date | Sun, 14 Nov 1999 00:44:11 +0100 (MET) | From | Mikael Pettersson <> | Subject | Re: [FIX] 2.3.28 broke `make bzdisk' |
| |
On Sat Nov 13 1999, Chris Noe wrote:
>Take a look at it and you'll see that we call bootsect_kludge at an >offset of 0x20, as you mentioned but we now call it as an offset from the >$SETUPSEG segment, which already takes into account the 0x200 bytes of the >bootsect code. > >Please apply if using bzImages + 2.3.28. > >Chris Noe >(stiker@northlink.com) > >diff -u --recursive --new-file linux-2.3.26/arch/i386/boot/bootsect.S linux/arch/i386/boot/bootsect.S >--- linux-2.3.26/arch/i386/boot/bootsect.S Wed Nov 10 19:28:49 1999 >+++ linux/arch/i386/boot/bootsect.S Wed Nov 10 18:21:07 1999 >@@ -247,7 +247,9 @@ > xorw %bx, %bx # bx is starting address within segment > rp_read: > #ifdef __BIG_KERNEL__ >- lcall bootsect_kludge # in setup.S >+ pushw $SETUPSEG >+ popw %gs >+ lcall %gs:bootsect_kludge # in setup.S > #else > movw %es, %ax > subw $SYSSEG, %ax
I've tested this. Unfortunately, it adds 6 bytes of code to the boot sector code. With my binutils (2.9.1.0.24, which is Ok according to Documentation/Changes), the boot sector code becomes 498 bytes, which is exactly one byte too many (due to the `.org 497' near the end of bootsect.S).
There are several workarounds. One is to remove the redundant `pushw %dx'/`popw %dx' instructions from kill_motor. Another is to use my patch which shifts the burden to the Makefile.
/Mikael
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |