aboutsummaryrefslogtreecommitdiff
path: root/src/arch/x86
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86')
-rw-r--r--src/arch/x86/boot/cbmem.c22
-rw-r--r--src/arch/x86/boot/gdt.c3
-rw-r--r--src/arch/x86/include/arch/early_variables.h12
-rw-r--r--src/arch/x86/init/romstage.ld9
4 files changed, 6 insertions, 40 deletions
diff --git a/src/arch/x86/boot/cbmem.c b/src/arch/x86/boot/cbmem.c
index a9127d7c07..e279db960c 100644
--- a/src/arch/x86/boot/cbmem.c
+++ b/src/arch/x86/boot/cbmem.c
@@ -20,12 +20,6 @@
#include <cbmem.h>
#include <arch/acpi.h>
-/* FIXME: Remove after CBMEM_INIT_HOOKS. */
-#include <arch/early_variables.h>
-#include <cpu/x86/gdt.h>
-#include <console/cbmem_console.h>
-#include <timestamp.h>
-
#if IS_ENABLED(CONFIG_LATE_CBMEM_INIT)
#if !defined(__PRE_RAM__)
@@ -71,22 +65,6 @@ void *cbmem_top(void)
#endif /* LATE_CBMEM_INIT */
-void cbmem_run_init_hooks(void)
-{
- /* Migrate car.global_data. */
- car_migrate_variables();
-
-#if !defined(__PRE_RAM__)
- /* Relocate CBMEM console. */
- cbmemc_reinit();
-
- /* Relocate timestamps stash. */
- timestamp_reinit();
-
- move_gdt();
-#endif
-}
-
/* Something went wrong, our high memory area got wiped */
void cbmem_fail_resume(void)
{
diff --git a/src/arch/x86/boot/gdt.c b/src/arch/x86/boot/gdt.c
index 9d9517afb8..e13d3bc4da 100644
--- a/src/arch/x86/boot/gdt.c
+++ b/src/arch/x86/boot/gdt.c
@@ -32,7 +32,7 @@ struct gdtarg {
/* Copy GDT to new location and reload it.
* FIXME: We only do this for BSP CPU.
*/
-void move_gdt(void)
+static void move_gdt(void)
{
void *newgdt;
u16 num_gdt_bytes = (u32)&gdt_end - (u32)&gdt;
@@ -55,3 +55,4 @@ void move_gdt(void)
__asm__ __volatile__ ("lgdt %0\n\t" : : "m" (gdtarg));
printk(BIOS_DEBUG, "ok\n");
}
+RAMSTAGE_CBMEM_INIT_HOOK(move_gdt)
diff --git a/src/arch/x86/include/arch/early_variables.h b/src/arch/x86/include/arch/early_variables.h
index bfb12014e8..d9f1cd76e6 100644
--- a/src/arch/x86/include/arch/early_variables.h
+++ b/src/arch/x86/include/arch/early_variables.h
@@ -29,13 +29,6 @@ asm(".previous");
#define CAR_GLOBAL __attribute__((used,section(".car.global_data#")))
#endif /* __clang__ */
-#define CAR_MIGRATE_ATTR __attribute__ ((used,section (".car.migrate")))
-
-/* Call migrate_fn_() when CAR globals are migrated. */
-#define CAR_MIGRATE(migrate_fn_) \
- static void (* const migrate_fn_ ## _ptr)(void) CAR_MIGRATE_ATTR = \
- migrate_fn_;
-
/* Get the correct pointer for the CAR global variable. */
void *car_get_var_ptr(void *var);
@@ -50,17 +43,12 @@ void *car_sync_var_ptr(void *var);
#define car_set_var(var, val) \
do { car_get_var(var) = (val); } while(0)
-/* Migrate the CAR variables to memory. */
-void car_migrate_variables(void);
-
#else
#define CAR_GLOBAL
-#define CAR_MIGRATE(migrate_fn_)
static inline void *car_get_var_ptr(void *var) { return var; }
#define car_get_var(var) (var)
#define car_sync_var(var) (var)
#define car_set_var(var, val) do { (var) = (val); } while (0)
-static inline void car_migrate_variables(void) { }
#endif
#endif
diff --git a/src/arch/x86/init/romstage.ld b/src/arch/x86/init/romstage.ld
index ae7049b423..74e665f4af 100644
--- a/src/arch/x86/init/romstage.ld
+++ b/src/arch/x86/init/romstage.ld
@@ -34,15 +34,14 @@ SECTIONS
*(.text);
*(.text.*);
*(.rom.data);
+ . = ALIGN(4);
+ _cbmem_init_hooks = .;
+ KEEP(*(.rodata.cbmem_init_hooks));
+ _ecbmem_init_hooks = .;
*(.rodata);
*(.rodata.*);
*(.rom.data.*);
. = ALIGN(16);
- _car_migrate_start = .;
- KEEP(*(.car.migrate));
- LONG(0);
- _car_migrate_end = .;
- . = ALIGN(16);
_erom = .;
}