arch/x86: document CAR symbols and expose them in symbols.h
Attempt to better document the symbol usage in car.ld for cache-as-ram usage. Additionally, add _car_region_[start|end] that completely covers the entire cache-as-ram region. The _car_data_[start|end] symbols were renamed to _car_relocatable_data_[start|end] in the hopes of making it clearer that objects within there move. Lastly, all these symbols were added to arch/symbols.h. Change-Id: I1f1af4983804dc8521d0427f43381bde6d23a060 Signed-off-by: Andrey Petrov <andrey.petrov@intel.com> Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/13804 Tested-by: build bot (Jenkins) Reviewed-by: Martin Roth <martinroth@google.com> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
committed by
Patrick Georgi
parent
b1bca88a04
commit
dd56de974d
@@ -150,11 +150,11 @@ void post_cache_as_ram(void)
|
||||
void *migrated_car = (void *)(CONFIG_RAMTOP - car_size);
|
||||
|
||||
print_car_debug("Copying data from cache to RAM...");
|
||||
memcpy_(migrated_car, &_car_data_start[0], car_size);
|
||||
memcpy_(migrated_car, _car_relocatable_data_start, car_size);
|
||||
print_car_debug(" Done\n");
|
||||
|
||||
print_car_debug("Verifying data integrity in RAM...");
|
||||
if (memcmp_(migrated_car, &_car_data_start[0], car_size) == 0)
|
||||
if (memcmp_(migrated_car, _car_relocatable_data_start, car_size) == 0)
|
||||
print_car_debug(" Done\n");
|
||||
else
|
||||
print_car_debug(" FAILED\n");
|
||||
|
@@ -46,8 +46,8 @@ void *car_get_var_ptr(void *var)
|
||||
{
|
||||
char *migrated_base = NULL;
|
||||
int offset;
|
||||
void * _car_start = &_car_data_start;
|
||||
void * _car_end = &_car_data_end;
|
||||
void * _car_start = _car_relocatable_data_start;
|
||||
void * _car_end = _car_relocatable_data_end;
|
||||
|
||||
/* If the cache-as-ram has not been migrated return the pointer
|
||||
* passed in. */
|
||||
@@ -84,8 +84,8 @@ void *car_get_var_ptr(void *var)
|
||||
void *car_sync_var_ptr(void *var)
|
||||
{
|
||||
void ** mig_var = car_get_var_ptr(var);
|
||||
void * _car_start = &_car_data_start;
|
||||
void * _car_end = &_car_data_end;
|
||||
void * _car_start = _car_relocatable_data_start;
|
||||
void * _car_end = _car_relocatable_data_end;
|
||||
|
||||
/* Not moved or migrated yet. */
|
||||
if (mig_var == var)
|
||||
@@ -129,7 +129,7 @@ static void do_car_migrate_variables(void)
|
||||
return;
|
||||
}
|
||||
|
||||
memcpy(migrated_base, &_car_data_start[0], car_size);
|
||||
memcpy(migrated_base, _car_relocatable_data_start, car_size);
|
||||
|
||||
/* Mark that the data has been moved. */
|
||||
car_migrated = ~0;
|
||||
|
Reference in New Issue
Block a user