x86 setup: don't recalculate ss:esp unless really necessary
authorJens Rottmann <JRottmann@lippert-at.de>
Tue, 27 Nov 2007 11:35:13 +0000 (12:35 +0100)
committerH. Peter Anvin <hpa@zytor.com>
Thu, 29 Nov 2007 02:17:17 +0000 (18:17 -0800)
commit16252da654800461e0e1c32697cb59f4cda15aa9
tree6b9c9f8ef73ac7e4b733faa7735a049b193a2c94
parent09f345da758fca1222b0971b65b2fddbdf78bb83
x86 setup: don't recalculate ss:esp unless really necessary

In order to work around old LILO versions providing an invalid ss
register, the current setup code always sets up a new stack,
immediately following .bss and the heap. But this breaks LOADLIN.

This rewrite of the workaround checks for an invalid stack (ss!=ds)
first, and leaves ss:sp alone otherwise (apart from aligning esp).

[hpa note: LOADLIN has a number of arbitrary hard-coded limits that
are being pushed up against.  Without some major revision of LOADLIN
itself it will not be sustainable keeping it alive.  This gives it
another brief lease on life, however.  This patch also helps the
cmdline truncation problem with old versions of SYSLINUX.]

Signed-off-by: Jens Rottmann <JRottmann at LiPPERT-AT. de>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/boot/header.S