summaryrefslogtreecommitdiff
path: root/arch/x86/cpu
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2020-05-01 06:21:39 +0300
committerBin Meng <bmeng.cn@gmail.com>2020-05-04 10:28:28 +0300
commit7ec0e7b6356b12f495b780ecdb25b14204b62a9f (patch)
tree97a1b4bba2042d437938cf1ffbe7607fac3e4f7b /arch/x86/cpu
parentc693f212c5b0433b3a49a89d87cbff28bf78eb87 (diff)
downloadu-boot-7ec0e7b6356b12f495b780ecdb25b14204b62a9f.tar.xz
x86: Move coreboot-table detection to common 32/64-bit code
At present this function is only available in 32-bit code. Move it to the common cpu file so it can be used by 64-bit U-Boot too. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'arch/x86/cpu')
-rw-r--r--arch/x86/cpu/cpu.c25
-rw-r--r--arch/x86/cpu/i386/cpu.c26
2 files changed, 26 insertions, 25 deletions
diff --git a/arch/x86/cpu/cpu.c b/arch/x86/cpu/cpu.c
index 8526e856d7..2e5d0ddd9f 100644
--- a/arch/x86/cpu/cpu.c
+++ b/arch/x86/cpu/cpu.c
@@ -290,3 +290,28 @@ int reserve_arch(void)
return 0;
}
#endif
+
+long detect_coreboot_table_at(ulong start, ulong size)
+{
+ u32 *ptr, *end;
+
+ size /= 4;
+ for (ptr = (void *)start, end = ptr + size; ptr < end; ptr += 4) {
+ if (*ptr == 0x4f49424c) /* "LBIO" */
+ return (long)ptr;
+ }
+
+ return -ENOENT;
+}
+
+long locate_coreboot_table(void)
+{
+ long addr;
+
+ /* We look for LBIO in the first 4K of RAM and again at 960KB */
+ addr = detect_coreboot_table_at(0x0, 0x1000);
+ if (addr < 0)
+ addr = detect_coreboot_table_at(0xf0000, 0x1000);
+
+ return addr;
+}
diff --git a/arch/x86/cpu/i386/cpu.c b/arch/x86/cpu/i386/cpu.c
index 0312a26bbb..facd4f58a6 100644
--- a/arch/x86/cpu/i386/cpu.c
+++ b/arch/x86/cpu/i386/cpu.c
@@ -24,6 +24,7 @@
#include <malloc.h>
#include <spl.h>
#include <asm/control_regs.h>
+#include <asm/coreboot_tables.h>
#include <asm/cpu.h>
#include <asm/mp.h>
#include <asm/msr.h>
@@ -447,31 +448,6 @@ int x86_cpu_init_f(void)
return 0;
}
-long detect_coreboot_table_at(ulong start, ulong size)
-{
- u32 *ptr, *end;
-
- size /= 4;
- for (ptr = (void *)start, end = ptr + size; ptr < end; ptr += 4) {
- if (*ptr == 0x4f49424c) /* "LBIO" */
- return (long)ptr;
- }
-
- return -ENOENT;
-}
-
-long locate_coreboot_table(void)
-{
- long addr;
-
- /* We look for LBIO in the first 4K of RAM and again at 960KB */
- addr = detect_coreboot_table_at(0x0, 0x1000);
- if (addr < 0)
- addr = detect_coreboot_table_at(0xf0000, 0x1000);
-
- return addr;
-}
-
int x86_cpu_reinit_f(void)
{
setup_identity();