arch/x86: Add option to disable default mmap_boot implementation
On certain platforms, the boot media is either not memory-mapped, or not mapped at the top of 4G. This makes the default mmap_boot implementation unsuitable. Add an option to allow such platforms to define their own mapping implementation. Change-Id: I8293126fd9cc1fd3d75072f7811e659765348e4a Signed-off-by: Alexandru Gagniuc <alexandrux.gagniuc@intel.com> Reviewed-on: https://review.coreboot.org/13319 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
0188b1399a
commit
6a622311e4
|
@ -83,6 +83,16 @@ config RAMBASE
|
||||||
hex
|
hex
|
||||||
default 0x100000
|
default 0x100000
|
||||||
|
|
||||||
|
# Traditionally BIOS region on SPI flash boot media was memory mapped right below
|
||||||
|
# 4G and it was the last region in the IFD. This way translation between CPU
|
||||||
|
# address space to flash address was trivial. However some IFDs on newer SoCs
|
||||||
|
# have BIOS region sandwiched between descriptor and other regions. Turning off
|
||||||
|
# this option enables soc code to provide custom mmap_boot.c which can be used to
|
||||||
|
# implement complex translation.
|
||||||
|
config X86_TOP4G_BOOTMEDIA_MAP
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
# This is something you almost certainly don't want to mess with.
|
# This is something you almost certainly don't want to mess with.
|
||||||
# How many SIPIs do we send when starting up APs and cores?
|
# How many SIPIs do we send when starting up APs and cores?
|
||||||
# The answer in 2000 or so was '2'. Nowadays, on many systems,
|
# The answer in 2000 or so was '2'. Nowadays, on many systems,
|
||||||
|
|
|
@ -105,7 +105,7 @@ ifeq ($(CONFIG_ARCH_BOOTBLOCK_X86_32)$(CONFIG_ARCH_BOOTBLOCK_X86_64),y)
|
||||||
bootblock-y += boot.c
|
bootblock-y += boot.c
|
||||||
bootblock-y += memcpy.c
|
bootblock-y += memcpy.c
|
||||||
bootblock-y += memset.c
|
bootblock-y += memset.c
|
||||||
bootblock-y += mmap_boot.c
|
bootblock-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
||||||
|
|
||||||
bootblock-y += id.S
|
bootblock-y += id.S
|
||||||
$(call src-to-obj,bootblock,$(dir)/id.S): $(obj)/build.h
|
$(call src-to-obj,bootblock,$(dir)/id.S): $(obj)/build.h
|
||||||
|
@ -354,7 +354,7 @@ romstage-$(CONFIG_ARCH_RAMSTAGE_X86_32) += cpu_common.c
|
||||||
romstage-y += memset.c
|
romstage-y += memset.c
|
||||||
romstage-y += memcpy.c
|
romstage-y += memcpy.c
|
||||||
romstage-y += memmove.c
|
romstage-y += memmove.c
|
||||||
romstage-y += mmap_boot.c
|
romstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
||||||
|
|
||||||
romstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
|
romstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
|
||||||
|
|
||||||
|
@ -384,7 +384,7 @@ ramstage-y += memset.c
|
||||||
ramstage-y += memcpy.c
|
ramstage-y += memcpy.c
|
||||||
ramstage-y += memmove.c
|
ramstage-y += memmove.c
|
||||||
ramstage-y += ebda.c
|
ramstage-y += ebda.c
|
||||||
ramstage-y += mmap_boot.c
|
ramstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
||||||
ramstage-$(CONFIG_COOP_MULTITASKING) += thread.c
|
ramstage-$(CONFIG_COOP_MULTITASKING) += thread.c
|
||||||
ramstage-$(CONFIG_COOP_MULTITASKING) += thread_switch.S
|
ramstage-$(CONFIG_COOP_MULTITASKING) += thread_switch.S
|
||||||
ramstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
|
ramstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
|
||||||
|
@ -392,7 +392,7 @@ ramstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
|
||||||
smm-y += memset.c
|
smm-y += memset.c
|
||||||
smm-y += memcpy.c
|
smm-y += memcpy.c
|
||||||
smm-y += memmove.c
|
smm-y += memmove.c
|
||||||
smm-y += mmap_boot.c
|
smm-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
||||||
|
|
||||||
ifeq ($(CONFIG_ARCH_RAMSTAGE_X86_32),y)
|
ifeq ($(CONFIG_ARCH_RAMSTAGE_X86_32),y)
|
||||||
rmodules_x86_32-y += memset.c
|
rmodules_x86_32-y += memset.c
|
||||||
|
|
Loading…
Reference in New Issue