summaryrefslogtreecommitdiffstats
path: root/arch/x86/cpu/i386
diff options
context:
space:
mode:
authorBin Meng <bmeng.cn@gmail.com>2019-01-31 08:22:12 -0800
committerBin Meng <bmeng.cn@gmail.com>2019-02-12 14:37:16 +0800
commitdbb0696ba05b6e201341805e0df0f5095bc43a78 (patch)
tree39202f3d3ef2374fec1132adc31e7e12d6e24f75 /arch/x86/cpu/i386
parentca7db866fead1d01ecf018343a99e3cd0d095d51 (diff)
downloadu-boot-dbb0696ba05b6e201341805e0df0f5095bc43a78.tar.gz
u-boot-dbb0696ba05b6e201341805e0df0f5095bc43a78.tar.xz
u-boot-dbb0696ba05b6e201341805e0df0f5095bc43a78.zip
x86: Change 4-level page table base address to low memory
At present the 4-level page table base address for 64-bit U-Boot proper is assigned an address that conflicts with CONFIG_LOADADDR. Change it to an address within the low memory range instead. Fixes crashes seen when 'dhcp' on QEMU x86_64 with "-net nic -net user,tftp=.,bootfile=u-boot". Reported-by: Alexander Graf <agraf@suse.de> Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'arch/x86/cpu/i386')
-rw-r--r--arch/x86/cpu/i386/cpu.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/x86/cpu/i386/cpu.c b/arch/x86/cpu/i386/cpu.c
index 208ef08562..af42431f45 100644
--- a/arch/x86/cpu/i386/cpu.c
+++ b/arch/x86/cpu/i386/cpu.c
@@ -462,6 +462,7 @@ int cpu_has_64bit(void)
has_long_mode();
}
+#define PAGETABLE_BASE 0x80000
#define PAGETABLE_SIZE (6 * 4096)
/**
@@ -523,10 +524,7 @@ int cpu_jump_to_64bit_uboot(ulong target)
uint32_t *pgtable;
func_t func;
- /* TODO(sjg@chromium.org): Find a better place for this */
- pgtable = (uint32_t *)0x1000000;
- if (!pgtable)
- return -ENOMEM;
+ pgtable = (uint32_t *)PAGETABLE_BASE;
build_pagetable(pgtable);