From 864ec8c488eb195b73c876be8fe2b879efa470e0 Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Thu, 31 Jul 2014 21:02:57 -0700 Subject: libpayload: Consolidate coreboot table parsing There are three instances of coreboot.c in libpayload. for x86, arm and arm64 architectures. The arm and arm64 instances are exactly the same. The differences with the x86 instance are as follows: - a very slightly different set of coreboot table tags is parsed (one tag added and two removed) - instead of checking a fixed address if it contains the coreboot table, the x86 version iterates over two address ranges. This patch refactors the module, leaving architecture specific processing in arch subdirectories and moving the common code into libc. BUG=none TEST=none yet Change-Id: I1c7ad6f74e3498e93df78086ba0ff708c08e0a5c Signed-off-by: Patrick Georgi Original-Commit-Id: 3df209d58ebd5c5b1cf0168f6466e065d1ef3598 Original-Change-Id: I6dfed73f6ba5939f692d0f98d2774c0e0312a25f Original-Signed-off-by: Vadim Bendebury Original-Reviewed-on: https://chromium-review.googlesource.com/210770 Original-Reviewed-by: Julius Werner Original-Reviewed-by: Aaron Durbin Reviewed-on: http://review.coreboot.org/8750 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi --- payloads/libpayload/include/sysinfo.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'payloads/libpayload/include/sysinfo.h') diff --git a/payloads/libpayload/include/sysinfo.h b/payloads/libpayload/include/sysinfo.h index afcf3d8c38..1753f6f1c6 100644 --- a/payloads/libpayload/include/sysinfo.h +++ b/payloads/libpayload/include/sysinfo.h @@ -113,5 +113,19 @@ struct sysinfo_t { extern struct sysinfo_t lib_sysinfo; +/* + * Check if this is an architecture specific coreboot table record and process + * it, if it is. Return 1 if record type was recognized, 0 otherwise. + */ +int cb_parse_arch_specific(struct cb_record *rec, struct sysinfo_t *info); + +/* + * Check if the region in range addr..addr+len contains a 16 byte aligned + * coreboot table. If it does - process the table filling up the sysinfo + * structure with information from the table. Return 0 on success and -1 on + * failure. + */ +int cb_parse_header(void *addr, int len, struct sysinfo_t *info); + #endif -- cgit v1.2.3