Pass the pointer to the selected partition in %si to the next stage

boot code. The bug was introduced in rev.1.13, and went unnoticed
because FreeBSD's boot1 does not use it, but other systems might.

(I have been struggling for almost a full day trying to figure out
why a syslinux'ed partition would not boot when started with the
FreeBSD /boot/boot0, only to realize that the bug was ours!)

The space for the two extra bytes (push %si and pop %si) is reclaimed
by removing an extra CRLF that is printed before booting.

The bug is not a major one but if there is time it might be a good
thing to merge it into the upcoming releases.
This commit is contained in:
luigi 2008-11-26 18:01:21 +00:00
parent ba4574257e
commit 6d7402ae81

View File

@ -319,8 +319,9 @@ main.15: movw $LOAD,%bx # Address for read
jc main.10 # If error
cmpw $MAGIC,0x1fe(%bx) # Bootable?
jne main.10 # No
movw $crlf,%si # Leave some
callw puts # space
pushw %si # Save ptr to selected part.
callw puts # Leave some space
popw %si # Restore, next stage uses it
jmp *%bx # Invoke bootstrap
/*