u-boot/arch/x86/include/asm
Bin Meng 002610f620 x86: fsp: Load GDT before calling FspInitEntry
Currently the FSP execution environment GDT is setup by U-Boot in
arch/x86/cpu/start16.S, which works pretty well. But if we try to
move the FspInitEntry call a little bit later to better fit into
U-Boot's initialization sequence, FSP will fail to bring up the AP
due to #GP fault as AP's GDT is duplicated from BSP whose GDT is
now moved into CAR, and unfortunately FSP calls AP initialization
after it disables the CAR. So basically the BSP's GDT still refers
to the one in the CAR, whose content is no longer available, so
when AP starts up and loads its segment register, it blows up.

To resolve this, we load GDT before calling into FspInitEntry.
The GDT is the same one used in arch/x86/cpu/start16.S, which is
in the ROM and exists forever.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Andrew Bradford <andrew.bradford@kodakalaris.com>
Tested-by: Simon Glass <sjg@chromium.org>
Acked-by: Simon Glass <sjg@chromium.org>
2015-07-14 18:03:15 -06:00
..
arch-baytrail x86: baytrail: fix the GPIOBASE address 2015-04-29 18:51:49 -06:00
arch-coreboot x86: Use ipchecksum from net/ 2015-01-24 06:13:44 -07:00
arch-ivybridge x86: Add a CPU driver for baytrail 2015-04-30 16:13:50 -06:00
arch-qemu x86: qemu: Adjust VGA initialization 2015-06-04 02:39:40 -06:00
arch-quark x86: quark: Implement PIRQ routing 2015-06-04 02:39:39 -06:00
arch-queensbay x86: Refactor PIRQ routing support 2015-06-04 02:39:39 -06:00
fsp x86: Adjust the FSP types slightly 2015-02-05 22:16:43 -07:00
video x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
acpi.h x86: Add a simple header file for ACPI 2014-11-25 06:34:00 -07:00
atomic.h x86: Add atomic operations 2015-04-29 21:02:33 -06:00
bitops.h x86: Add ilog2 to bitops 2012-11-28 11:40:03 -08:00
bootm.h x86: Move kernel boot function to arch/x86/lib/bootm.c 2014-10-28 20:43:58 -06:00
bootparam.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
byteorder.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
cache.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
config.h generic-board: select SYS_GENERIC_BOARD for some architectures 2015-03-28 09:03:08 -04:00
control_regs.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
cpu.h x86: Allow CPUs to be set up after relocation 2015-04-30 16:13:48 -06:00
e820.h x86: Clean up arch/x86/include/asm/e820.h 2015-04-29 18:51:49 -06:00
errno.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
global_data.h x86: Store the GDT pointer in global_data 2015-04-29 21:02:34 -06:00
gpio.h x86: gpio: add pinctrl support from the device tree 2015-06-04 03:32:08 -06:00
i8254.h x86: Add quick TSC calibration via PIT 2014-11-21 07:24:10 +01:00
i8259.h x86: Refactor interrupt_init() 2014-11-25 06:34:02 -07:00
ibmpc.h x86: Set serial port IRQ for SMSC LPC47M 2015-04-29 18:51:48 -06:00
init_helpers.h x86: Remove unnecessary find_fdt(), prepare_fdt() functions 2014-11-21 07:24:12 +01:00
interrupt.h x86: Provide access to the IDT 2015-04-29 21:02:34 -06:00
io.h Replace <compiler.h> with <linux/compiler.h> 2014-12-08 09:35:46 -05:00
ioapic.h x86: Add ioapic.h header 2014-11-25 06:33:59 -07:00
ioctl.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
irq.h x86: Refactor PIRQ routing support 2015-06-04 02:39:39 -06:00
ist.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
lapic_def.h x86: ivybridge: Add LAPIC support 2014-11-21 07:34:15 +01:00
lapic.h x86: Add LAPIC setup code 2014-11-25 06:34:11 -07:00
linkage.h x86: move arch-specific asmlinkage to <asm/linkage.h> 2014-12-15 07:22:53 -07:00
mp.h x86: Add multi-processor init 2015-04-30 16:13:38 -06:00
msr-index.h x86: Add a CPU driver for baytrail 2015-04-30 16:13:50 -06:00
msr.h x86: Add functions to set and clear bits on MSRs 2015-04-30 16:13:46 -06:00
mtrr.h x86: Add multi-processor init 2015-04-30 16:13:38 -06:00
pci.h x86: Add a function to assign IRQ numbers to PCI device 2015-04-29 18:51:49 -06:00
pirq_routing.h x86: Support platform PIRQ routing 2015-04-29 18:51:49 -06:00
pnp_def.h x86: Add a simple superio driver for SMSC LPC47M 2014-12-13 22:32:05 -07:00
posix_types.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
post.h x86: Add post failure codes for bist and car 2014-12-13 22:32:05 -07:00
processor-flags.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
processor.h x86: Add multi-processor init 2015-04-30 16:13:38 -06:00
ptrace.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
relocate.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
sections.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
sfi.h x86: Add support for the Simple Firmware Interface (SFI) 2015-04-29 21:02:33 -06:00
sipi.h x86: Add multi-processor init 2015-04-30 16:13:38 -06:00
speedstep.h x86: Add Intel speedstep and turbo mode code 2014-11-25 06:34:02 -07:00
string.h x86: Import glibc memcpy implementation 2012-01-02 03:58:46 +11:00
tables.h x86: Write configuration tables in last_stage_init() 2015-04-29 18:51:49 -06:00
turbo.h x86: Add a CPU driver for baytrail 2015-04-30 16:13:50 -06:00
types.h Provide option to avoid defining a custom version of uintptr_t. 2014-10-27 11:04:01 -04:00
u-boot-x86.h x86: fsp: Load GDT before calling FspInitEntry 2015-07-14 18:03:15 -06:00
u-boot.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
unaligned.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
zimage.h x86: Move kernel boot function to arch/x86/lib/bootm.c 2014-10-28 20:43:58 -06:00