diff --git a/src/arch/i386/prefix/dskprefix.S b/src/arch/i386/prefix/dskprefix.S index 2df00aed..9b1ebaaf 100644 --- a/src/arch/i386/prefix/dskprefix.S +++ b/src/arch/i386/prefix/dskprefix.S @@ -31,10 +31,6 @@ jmp $BOOTSEG, $go /* reload cs:ip to match relocation addr */ go: - xorw %ax,%ax /* put stack at 0000:7c00 */ - movw %ax,%ss - movw $0x7c00,%sp - movw $0x2000-12, %di /* 0x2000 is arbitrary value >= length */ /* of bootsect + room for stack + 12 for */ /* saved disk parm block */ @@ -42,6 +38,8 @@ go: movw $BOOTSEG, %ax movw %ax,%ds movw %ax,%es + movw %ax,%ss /* put stack at BOOTSEG:0x4000-12. */ + movw %di,%sp /* Many BIOS's default disk parameter tables will not recognize multi-sector * reads beyond the maximum sector number specified in the default diskette @@ -52,7 +50,7 @@ go: * will set the maximum sector count to 36 - the most we will encounter on an * ED 2.88. High doesn't hurt. Low does. * - * Segments are as follows: ds=es=cs - BOOTSEG + * Segments are as follows: ds=es=ss=cs - BOOTSEG */ xorw %cx,%cx