diff options
Diffstat (limited to 'payloads/libpayload/libcbfs/cbfs.c')
-rw-r--r-- | payloads/libpayload/libcbfs/cbfs.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/payloads/libpayload/libcbfs/cbfs.c b/payloads/libpayload/libcbfs/cbfs.c index 35e48dda27..2fb91bf2d2 100644 --- a/payloads/libpayload/libcbfs/cbfs.c +++ b/payloads/libpayload/libcbfs/cbfs.c @@ -65,8 +65,14 @@ #if defined(CONFIG_CBFS_HEADER_ROM_OFFSET) && (CONFIG_CBFS_HEADER_ROM_OFFSET) # define CBFS_HEADER_ROM_ADDRESS (CONFIG_CBFS_HEADER_ROM_OFFSET) #else -// Indirect address: only works on 32bit top-aligned systems. -# define CBFS_HEADER_ROM_ADDRESS (*(uint32_t*)0xfffffffc) +/* ugly hack: this assumes that "media" exists + in the scope where the macro is used. */ +static uint32_t fetch_x86_header(struct cbfs_media *media) +{ + uint32_t *header_ptr = media->map(media, 0xfffffffc, 4); + return *header_ptr; +} +# define CBFS_HEADER_ROM_ADDRESS fetch_x86_header(media) #endif #include "cbfs_core.c" |