lib/hardwaremain.c: Hide preprocessor guards in header
The `location` member of `struct boot_state_callback` is conditionally guarded depending on `CONFIG(DEBUG_BOOT_STATE)` using preprocessor. It is probably intended to save some space when the `location` strings do not get printed. However, directly using the `location` member without any guards will cause a compile-time error. Plus, preprocessor-guarded code gets nasty really quickly. In order to minimise preprocessor usage, introduce the `bscb_location` inline helper function, which transforms the compile-time error into a link-time error. It is then possible to substitute preprocessor guards with an ordinary C `if` statement. Change-Id: I40b7f29f96ea96a5977b55760f0fcebf3a0df733 Signed-off-by: Angel Pons <th3fanbus@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/55386 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Reviewed-by: Raul Rangel <rrangel@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
parent
444c24a635
commit
83156682d6
|
@ -2,6 +2,7 @@
|
|||
#ifndef BOOTSTATE_H
|
||||
#define BOOTSTATE_H
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <stddef.h>
|
||||
/* Only declare main() when in ramstage. */
|
||||
|
@ -105,6 +106,15 @@ struct boot_state_callback {
|
|||
#endif
|
||||
};
|
||||
|
||||
static inline const char *bscb_location(const struct boot_state_callback *bscb)
|
||||
{
|
||||
#if CONFIG(DEBUG_BOOT_STATE)
|
||||
return bscb->location;
|
||||
#else
|
||||
return dead_code_t(const char *);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if CONFIG(DEBUG_BOOT_STATE)
|
||||
#define BOOT_STATE_CALLBACK_LOC __FILE__ ":" STRINGIFY(__LINE__)
|
||||
#define BOOT_STATE_CALLBACK_INIT_DEBUG .location = BOOT_STATE_CALLBACK_LOC,
|
||||
|
|
|
@ -274,10 +274,10 @@ static void bs_call_callbacks(struct boot_state *state,
|
|||
phase->callbacks = bscb->next;
|
||||
bscb->next = NULL;
|
||||
|
||||
#if CONFIG(DEBUG_BOOT_STATE)
|
||||
printk(BIOS_DEBUG, "BS: callback (%p) @ %s.\n",
|
||||
bscb, bscb->location);
|
||||
#endif
|
||||
if (CONFIG(DEBUG_BOOT_STATE)) {
|
||||
printk(BIOS_DEBUG, "BS: callback (%p) @ %s.\n",
|
||||
bscb, bscb_location(bscb));
|
||||
}
|
||||
bscb->callback(bscb->arg);
|
||||
continue;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue