x86: Make sure boot device is mapped below 4G

On x86-64 the current way of calculating the base address
of the boot device (SPI flash) gets an unwanted sign extension,
making it live somewhere at the end of 64bit address space.

Enforce rom_base to be at the upper end of the 4G address space.

Change-Id: Ia81e82094d3c51f6c10e02b4b0df2f3e1519d39e
Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-on: http://review.coreboot.org/11121
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins)
This commit is contained in:
Stefan Reinauer 2015-08-04 11:14:17 -07:00 committed by Stefan Reinauer
parent 5d5fcdd82b
commit fb82ebe906
1 changed files with 1 additions and 1 deletions

View File

@ -24,7 +24,7 @@
#include <stdlib.h> #include <stdlib.h>
/* The ROM is memory mapped just below 4GiB. Form a pointer for the base. */ /* The ROM is memory mapped just below 4GiB. Form a pointer for the base. */
#define rom_base ((void *)(uintptr_t)(-(int32_t)CONFIG_ROM_SIZE)) #define rom_base ((void *)(uintptr_t)(0x100000000ULL-CONFIG_ROM_SIZE))
static const struct mem_region_device boot_dev = static const struct mem_region_device boot_dev =
MEM_REGION_DEV_INIT(rom_base, CONFIG_ROM_SIZE); MEM_REGION_DEV_INIT(rom_base, CONFIG_ROM_SIZE);