diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/cbmem.h | 22 | ||||
-rw-r--r-- | src/include/console/cbmem_console.h | 6 | ||||
-rw-r--r-- | src/include/cpu/x86/gdt.h | 3 | ||||
-rw-r--r-- | src/include/symbols.h | 4 | ||||
-rw-r--r-- | src/include/timestamp.h | 2 |
5 files changed, 26 insertions, 11 deletions
diff --git a/src/include/cbmem.h b/src/include/cbmem.h index 7afe960116..55b04b4106 100644 --- a/src/include/cbmem.h +++ b/src/include/cbmem.h @@ -22,6 +22,7 @@ #define _CBMEM_H_ #include <cbmem_id.h> +#include <rules.h> #if IS_ENABLED(CONFIG_HAVE_ACPI_RESUME) && \ ! IS_ENABLED(CONFIG_RELOCATABLE_RAMSTAGE) @@ -112,6 +113,7 @@ void *cbmem_add(u32 id, u64 size); /* Find a cbmem entry of a given id. These return NULL on failure. */ void *cbmem_find(u32 id); +typedef void (* const cbmem_init_hook_t)(void); void cbmem_run_init_hooks(void); void cbmem_fail_resume(void); @@ -122,6 +124,26 @@ void cbmem_add_bootmem(void); void cbmem_list(void); #endif /* __PRE_RAM__ */ +#if ENV_RAMSTAGE +#define ROMSTAGE_CBMEM_INIT_HOOK(init_fn_) static cbmem_init_hook_t \ + init_fn_ ## _unused_ __attribute__((unused)) = init_fn_; +#define RAMSTAGE_CBMEM_INIT_HOOK(init_fn_) \ + static cbmem_init_hook_t init_fn_ ## _ptr_ __attribute__((used, \ + section(".rodata.cbmem_init_hooks"))) = init_fn_; +#elif ENV_ROMSTAGE +#define ROMSTAGE_CBMEM_INIT_HOOK(init_fn_) \ + static cbmem_init_hook_t init_fn_ ## _ptr_ __attribute__((used, \ + section(".rodata.cbmem_init_hooks"))) = init_fn_; +#define RAMSTAGE_CBMEM_INIT_HOOK(init_fn_) static cbmem_init_hook_t \ + init_fn_ ## _unused_ __attribute__((unused)) = init_fn_; +#else +#define ROMSTAGE_CBMEM_INIT_HOOK(init_fn_) static cbmem_init_hook_t \ + init_fn_ ## _unused_ __attribute__((unused)) = init_fn_; +#define RAMSTAGE_CBMEM_INIT_HOOK(init_fn_) static cbmem_init_hook_t \ + init_fn_ ## _unused2_ __attribute__((unused)) = init_fn_; +#endif /* ENV_RAMSTAGE */ + + /* These are for compatibility with old boards only. Any new chipset and board * must implement cbmem_top() for both romstage and ramstage to support * early features like COLLECT_TIMESTAMPS and CBMEM_CONSOLE. diff --git a/src/include/console/cbmem_console.h b/src/include/console/cbmem_console.h index e9ec66ee9e..06013f2a22 100644 --- a/src/include/console/cbmem_console.h +++ b/src/include/console/cbmem_console.h @@ -25,12 +25,6 @@ void cbmemc_init(void); void cbmemc_tx_byte(unsigned char data); -#if CONFIG_CONSOLE_CBMEM -void cbmemc_reinit(void); -#else -static inline void cbmemc_reinit(void) {} -#endif - #define __CBMEM_CONSOLE_ENABLE__ CONFIG_CONSOLE_CBMEM && \ (ENV_RAMSTAGE || (IS_ENABLED(CONFIG_EARLY_CBMEM_INIT) && \ (ENV_ROMSTAGE || (ENV_BOOTBLOCK && CONFIG_BOOTBLOCK_CONSOLE)))) diff --git a/src/include/cpu/x86/gdt.h b/src/include/cpu/x86/gdt.h index 8525a3cd44..a96b0e4083 100644 --- a/src/include/cpu/x86/gdt.h +++ b/src/include/cpu/x86/gdt.h @@ -28,7 +28,4 @@ extern char _secondary_gdt_addr[]; extern char _secondary_start[]; extern char _secondary_start_end[]; -/* Defined in src/arch/x86/boot/gdt.c */ -void move_gdt(void); - #endif /* CPU_X86_GDT */ diff --git a/src/include/symbols.h b/src/include/symbols.h index 4a47de1f41..9102e82952 100644 --- a/src/include/symbols.h +++ b/src/include/symbols.h @@ -33,6 +33,10 @@ extern u8 _epreram_cbmem_console[]; #define _preram_cbmem_console_size \ (_epreram_cbmem_console - _preram_cbmem_console) +extern u8 _cbmem_init_hooks[]; +extern u8 _ecbmem_init_hooks[]; +#define _cbmem_init_hooks_size (_ecbmem_init_hooks - _cbmem_init_hooks) + extern u8 _stack[]; extern u8 _estack[]; #define _stack_size (_estack - _stack) diff --git a/src/include/timestamp.h b/src/include/timestamp.h index d9afeea0c1..a248ea45cd 100644 --- a/src/include/timestamp.h +++ b/src/include/timestamp.h @@ -92,12 +92,10 @@ enum timestamp_id { void timestamp_init(uint64_t base); void timestamp_add(enum timestamp_id id, uint64_t ts_time); void timestamp_add_now(enum timestamp_id id); -void timestamp_reinit(void); #else #define timestamp_init(base) #define timestamp_add(id, time) #define timestamp_add_now(id) -#define timestamp_reinit() #endif /* Implemented by the architecture code */ |