fmaptool: Make base offsets absolute in fmap_config.h
fmaptool generates a header file used to hardcode certain values from the FMAP in coreboot's binaries, to avoid having to find and parse the FMAP manually for every access. For the offset of the FMAP itself this has already been using the absolute offset from the base of the whole ROM, but for individual CBFS sections it only used the offset from the immediate parent FMAP region. Since the code using it intentionally has no knowledge of the whole section tree, this causes problems as soon as the CBFS is a child section of something not at absolute offset 0 (as is the case for most x86 Chromebooks). Change-Id: If0c516083949fe5ac8cdae85e00a4461dcbdf853 Reported-by: Rolf Evers-Fischer <embedded24@evers-fischer.de> Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/15273 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
parent
8200761912
commit
119dcee1dd
|
@ -108,8 +108,9 @@ static bool write_header(const char *out_fname,
|
||||||
const struct flashmap_descriptor *item =
|
const struct flashmap_descriptor *item =
|
||||||
cbfs_sections_iterator_deref(cbfs_it);
|
cbfs_sections_iterator_deref(cbfs_it);
|
||||||
assert(item->offset_known && item->size_known);
|
assert(item->offset_known && item->size_known);
|
||||||
|
unsigned abs_base = fmd_calc_absolute_offset(root, item->name);
|
||||||
fprintf(header, "#define ___FMAP__%s_BASE 0x%x\n",
|
fprintf(header, "#define ___FMAP__%s_BASE 0x%x\n",
|
||||||
item->name, item->offset);
|
item->name, abs_base);
|
||||||
fprintf(header, "#define ___FMAP__%s_SIZE 0x%x\n",
|
fprintf(header, "#define ___FMAP__%s_SIZE 0x%x\n",
|
||||||
item->name, item->size);
|
item->name, item->size);
|
||||||
cbfs_sections_iterator_advance(&cbfs_it);
|
cbfs_sections_iterator_advance(&cbfs_it);
|
||||||
|
|
Loading…
Reference in New Issue