Cc: Linux Kernel Mailing List <linux-kernel@...>, Thomas Gleixner <tglx@...>, Ingo Molnar <mingo@...>, Mikael Petterson <mikpe@...>, Eric Biederman <ebiederm@...>, Jeremy Fitzhardinge <jeremy@...>
Yeah, there is no point in having two far jumps. One is enough.
The point being that since apparently the new boot standards say that the
32-bit code is entered with segments etc set to specific values, then we
shouldn't do the jump to that 32-bit standard with a far jump: we should
do it as a regular jump, because we'd want to to set up the segments etc
in 32-bit mode anyway.
At least my assembler does the right thing with just the plain "mov" for
segments, but yes, there may be old assemblers that add a useless data
size override. So "movl %ecx,%*s" is probably the right thing to do to
make sure they don't do anything stupid..
Btw, on that same kind of thread: I think we should move the clearing of
the registers into the 32-bit mode too, since that makes the instructions
shorter (no operand size override), and makes more sense anyway (then we
can also clean %edx/%ecx.
Final comment: shouldn't we set up %esp to be correct for the new %ss too?
Linus
-