diff options
author | Tom Rini <trini@konsulko.com> | 2020-05-04 11:06:14 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-05-04 11:06:14 -0400 |
commit | 425fefa9a36ca729b5088ca5381f63f8d95a2f8e (patch) | |
tree | bd28f2e66bb63fc8a17b65670457a9c958de205c /arch/x86/cpu/cpu.c | |
parent | a1f5f4ac20c0947afda93f9b906facfbee2708fe (diff) | |
parent | 538437ed39e01b7ecfa79669982fe7db51fb2e1b (diff) |
Merge https://gitlab.denx.de/u-boot/custodians/u-boot-x86
- Support 64-bit U-Boot as the payload for coreboot x86
Diffstat (limited to 'arch/x86/cpu/cpu.c')
-rw-r--r-- | arch/x86/cpu/cpu.c | 25 |
1 files changed, 25 insertions, 0 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; +} |