diff --git a/src/arch/x86/init/romstage.ld b/src/arch/x86/init/romstage.ld index f44185f24e..5458cfc23d 100644 --- a/src/arch/x86/init/romstage.ld +++ b/src/arch/x86/init/romstage.ld @@ -37,6 +37,7 @@ SECTIONS . = ALIGN(16); _car_migrate_start = .; *(.car.migrate); + LONG(0); _car_migrate_end = .; . = ALIGN(16); _erom = .; diff --git a/src/cpu/x86/car.c b/src/cpu/x86/car.c index 481153d685..a7e38420a8 100644 --- a/src/cpu/x86/car.c +++ b/src/cpu/x86/car.c @@ -26,7 +26,6 @@ typedef void (* const car_migration_func_t)(void); extern car_migration_func_t _car_migrate_start; -extern car_migration_func_t _car_migrate_end; extern char _car_data_start[]; extern char _car_data_end[]; @@ -98,7 +97,7 @@ void car_migrate_variables(void) /* Call all the migration functions. */ migrate_func = &_car_migrate_start; - while (migrate_func != &_car_migrate_end) { + while (*migrate_func != NULL) { (*migrate_func)(); migrate_func++; }