x86/efi: Preserve segment registers in mixed mode
authorMatt Fleming <matt.fleming@intel.com>
Thu, 13 Mar 2014 14:58:42 +0000 (14:58 +0000)
committerMatt Fleming <matt.fleming@intel.com>
Mon, 17 Mar 2014 21:54:17 +0000 (21:54 +0000)
commite10848a26a962e404ac00c897dfe54f14290806d
tree3be0d9d69d2471749b22743f02d3dd98b59a9aed
parent617b3c37da78cb89c63ed880b2405afc7490567b
x86/efi: Preserve segment registers in mixed mode

I was triggering a #GP(0) from userland when running with
CONFIG_EFI_MIXED and CONFIG_IA32_EMULATION, from what looked like
register corruption. Turns out that the mixed mode code was trashing the
contents of %ds, %es and %ss in __efi64_thunk().

Save and restore the contents of these segment registers across the call
to __efi64_thunk() so that we don't corrupt the CPU context.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
arch/x86/platform/efi/efi_stub_64.S