mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-26 05:34:30 +08:00
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>
This commit is contained in:
parent
c693f212c5
commit
7ec0e7b635
@ -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;
|
||||
}
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user