Argh! Fix a brainfart of mine. In the old boot0, we relocated ourself

to 0x600 via a 'rep movsw'.  Once that was done, %cx was zero, so we could
simply use 'movb' to update the lower byte of %cx in preparation for
zeroing out the fake partition entry used to boot to other drives via F5.
Well, in the new boot0, we don't actually relocate ourselves, instead it
is easier to create the fake partition entry first and then just use it to
get the BIOS to load all of boot0 into memory at 0x600.  However, since we
aren't doing the relocate code anymore, we don't know that %cx == 0 when
we hit the 'movb' to setup %cx for clearning the fake partition entry.
Thus, if %ch != 0 when the BIOS started boot0, then it would end up zeroing
a lot more memory than just 8 words.  The solution is to do a word move of
$8 into %cx.

Debugging help from:	David Wolfskill <dhw@whistle.com>
This commit is contained in:
John Baldwin 2000-08-04 22:37:21 +00:00
parent 33f720a511
commit ab9e9f9d2d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=64260

View File

@ -81,7 +81,7 @@ start: cld # String ops inc
#
movw $fake,%bp # Address variables
movw %bp,%di # %di used in stosw
movb $0x8,%cl # Words to clear
movw $0x8,%cx # Words to clear
rep # Zero
stosw # them
incb -0xe(%di) # Sector number 1