summaryrefslogtreecommitdiffstats
path: root/src/arch
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/Kconfig12
-rw-r--r--src/arch/x86/cpu_common.c8
2 files changed, 20 insertions, 0 deletions
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig
index 90ece988c037..e149f0864e2a 100644
--- a/src/arch/x86/Kconfig
+++ b/src/arch/x86/Kconfig
@@ -391,4 +391,16 @@ config DUMP_SMBIOS_TYPE17
bool "Dump part of SMBIOS type17 dimm information"
depends on GENERATE_SMBIOS_TABLES
+config SOC_PHYSICAL_ADDRESS_WIDTH
+ int
+ default 0
+ help
+ On some System-on-Chip the physical address size available
+ at the SoC level may be different than at the CPU
+ level. This configuration can be use to set the physical
+ address width (in bits) of the SoC.
+
+ If not set, both CPU and SoC physical address width are
+ assume to be the same.
+
endif
diff --git a/src/arch/x86/cpu_common.c b/src/arch/x86/cpu_common.c
index 0242dcebdd69..c4d30a2c06cd 100644
--- a/src/arch/x86/cpu_common.c
+++ b/src/arch/x86/cpu_common.c
@@ -60,6 +60,14 @@ unsigned int cpu_phys_address_size(void)
return 32;
}
+unsigned int soc_phys_address_size(void)
+{
+ if (CONFIG_SOC_PHYSICAL_ADDRESS_WIDTH)
+ return CONFIG_SOC_PHYSICAL_ADDRESS_WIDTH;
+
+ return cpu_phys_address_size();
+}
+
/*
* Get processor id using cpuid eax=1
* return value in EAX register