david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

Move stack to below 0x7c00; leaving it at the default location

(0x7ef4) tends to really screw up anything that loads at 0x7c00...
This commit is contained in:
Michael Brown 2007-06-28 21:15:47 +01:00
parent dffdc285b3
commit 03ca71c38d
1 changed files with 5 additions and 3 deletions

View File

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