svn commit: r185339 - head/sys/boot/i386/boot0

Luigi Rizzo luigi at FreeBSD.org
Wed Nov 26 10:01:22 PST 2008


Author: luigi
Date: Wed Nov 26 18:01:21 2008
New Revision: 185339
URL: http://svn.freebsd.org/changeset/base/185339

Log:
  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.

Modified:
  head/sys/boot/i386/boot0/boot0.S

Modified: head/sys/boot/i386/boot0/boot0.S
==============================================================================
--- head/sys/boot/i386/boot0/boot0.S	Wed Nov 26 17:16:54 2008	(r185338)
+++ head/sys/boot/i386/boot0/boot0.S	Wed Nov 26 18:01:21 2008	(r185339)
@@ -319,8 +319,9 @@ main.15:	movw $LOAD,%bx			# Address for 
 		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
 
 /*


More information about the svn-src-all mailing list