mirror of https://github.com/ipxe/ipxe.git
Move stack to below 0x7c00; leaving it at the default location
(0x7ef4) tends to really screw up anything that loads at 0x7c00...pull/1/head
parent
dffdc285b3
commit
03ca71c38d
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue