x86, realmode: Replace open-coded ljmpw with a macro
authorH. Peter Anvin <hpa@linux.intel.com>
Tue, 8 May 2012 18:22:37 +0000 (21:22 +0300)
committerH. Peter Anvin <hpa@linux.intel.com>
Tue, 8 May 2012 18:48:03 +0000 (11:48 -0700)
commite5684ec438a094bec0f7d5c52652c0901b48b613
tree8cc3cf787a582977ff08ed578907d6df7dbc7e6e
parent968ff9ee56f1e3ed4ff4a6d10185865dc77d8f7e
x86, realmode: Replace open-coded ljmpw with a macro

We cannot code an ljmpw to the real-mode segment directly, because gas
refuses to assemble an ljmp with a symbolic segment.  Instead of
open-coding it everywhere, define a macro and use it for this case.

This is specifically an ljmpw from a 16-bit segment.  This is okay, as
one should never enter real mode from a 32-bit segment: if one do, the
CPU ends up in a bizarre (and useless) mode sometimes called "unreal
mode" where segments behave like real mode but the default address and
operand sizes is 32 bits.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Link: http://lkml.kernel.org/r/1336501366-28617-15-git-send-email-jarkko.sakkinen@intel.com
arch/x86/realmode/rm/realmode.h [new file with mode: 0644]
arch/x86/realmode/rm/reboot_32.S
arch/x86/realmode/rm/trampoline_32.S
arch/x86/realmode/rm/trampoline_64.S
arch/x86/realmode/rm/wakeup/wakeup_asm.S