Re: [GIT PULL] x86 setup: correct booting on 486 (revised)

Eric W. Biederman
2007-11-05T20:23:10Z

Linus Torvalds <torvalds@linux-foundation.org> writes:

> On Mon, 5 Nov 2007, H. Peter Anvin wrote:
>>
>> Well, the 32-bit code needs to set up its own stack, and only it knows where
>> it wants its stack; we don't guarantee that the stack is valid when we enter
>> the 32-bit code and we're entering with both INT and NMI disabled (requiring a
>> stack would probably break all existing users of the 32-bit entrypoint.)
>
> I agree. But it would be nice if some basic instructions still worked: as
> is, you cannot even do things like reloading %eflags, because the only way
> to do that requires a stack.
>
>> However, that being said, doing so is trivial, and it might help some
>> debugging hack; anything that makes debugging easier is a Good Thing[TM].
>
> Yeah. Even if it was just re-using the boot-time stack area temporarily,
> just to give code the choice to use a common set of instructions.

If I had to do it from scratch today I would make the 32-bit entry
point require a stack, segments and use C calling conventions to pass
struct boot_params *.

Besides %esi I'm not really fond of requiring anything in the 32bit
entrypoint. At the same time I totally agree that it is always nice
to provide way more then you need.

Eric