summaryrefslogtreecommitdiffstats
path: root/src/cpu/x86/32bit/entry32.inc
diff options
context:
space:
mode:
authorHannah Williams <hannah.williams@intel.com>2018-04-27 09:09:04 -0700
committerAaron Durbin <adurbin@chromium.org>2018-05-03 04:40:58 +0000
commitd3c0c0c318d2e2b5a3d6276bb0fdd732170756d3 (patch)
treebed0302a3bb8c7223cf41c9cf538c27aaeb83098 /src/cpu/x86/32bit/entry32.inc
parent0f9af5500e7bc524debe3affd1a9cb406102ab9a (diff)
downloadcoreboot-d3c0c0c318d2e2b5a3d6276bb0fdd732170756d3.tar.gz
coreboot-d3c0c0c318d2e2b5a3d6276bb0fdd732170756d3.tar.bz2
coreboot-d3c0c0c318d2e2b5a3d6276bb0fdd732170756d3.zip
arch/x86: Relocate GDT in verstage, romstage, and postcar
In each stage keep GDT in the code region. This accommodates platforms, such as glk, that are executing out of CAR. The gdt is small and loading it is trivial so just do it unconditionally instead of introducing another Kconfig. BUG=b:78656686 Change-Id: I01ded6e9b358b23e04d92bef5263bfe8c2a5ec5a Signed-off-by: Hannah Williams <hannah.williams@intel.com> Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/25895 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Justin TerAvest <teravest@chromium.org>
Diffstat (limited to 'src/cpu/x86/32bit/entry32.inc')
-rw-r--r--src/cpu/x86/32bit/entry32.inc31
1 files changed, 1 insertions, 30 deletions
diff --git a/src/cpu/x86/32bit/entry32.inc b/src/cpu/x86/32bit/entry32.inc
index 2caeb40c3f2a..ae7cc019d937 100644
--- a/src/cpu/x86/32bit/entry32.inc
+++ b/src/cpu/x86/32bit/entry32.inc
@@ -16,38 +16,9 @@
#include <arch/rom_segs.h>
#include <cpu/x86/post_code.h>
#include <rules.h>
+#include <arch/x86/gdt_init.S>
.code32
-
-
- /* This is the GDT for the ROM stage part of coreboot. It
- * is different from the RAM stage GDT which is defined in
- * c_start.S
- */
-
- .align 4
-.globl gdtptr
-gdt:
-gdtptr:
- .word gdt_end - gdt -1 /* compute the table limit */
- .long gdt /* we know the offset */
- .word 0
-
- /* selgdt 0x08, flat code segment */
- .word 0xffff, 0x0000
- .byte 0x00, 0x9b, 0xcf, 0x00 /* G=1 and 0x0f, So we get 4Gbytes for limit */
-
- /* selgdt 0x10,flat data segment */
- .word 0xffff, 0x0000
- .byte 0x00, 0x93, 0xcf, 0x00
-
- /* selgdt 0x18, flat code segment (64-bit) */
- .word 0xffff, 0x0000
- .byte 0x00, 0x9b, 0xaf, 0x00
-
-gdt_end:
-
-
/*
* When we come here we are in protected mode. We expand
* the stack and copies the data segment from ROM to the