From dd56de974ddc7d0d8d782b50d9260b0596f59a1a Mon Sep 17 00:00:00 2001 From: Andrey Petrov Date: Thu, 25 Feb 2016 17:22:17 -0800 Subject: 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 Signed-off-by: Aaron Durbin Reviewed-on: https://review.coreboot.org/13804 Tested-by: build bot (Jenkins) Reviewed-by: Martin Roth Reviewed-by: Furquan Shaikh --- src/cpu/amd/car/post_cache_as_ram.c | 4 ++-- src/cpu/x86/car.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/cpu') diff --git a/src/cpu/amd/car/post_cache_as_ram.c b/src/cpu/amd/car/post_cache_as_ram.c index 7e33d3219c..0a59696b56 100644 --- a/src/cpu/amd/car/post_cache_as_ram.c +++ b/src/cpu/amd/car/post_cache_as_ram.c @@ -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"); diff --git a/src/cpu/x86/car.c b/src/cpu/x86/car.c index fda3f7d4f4..f9b427a4b0 100644 --- a/src/cpu/x86/car.c +++ b/src/cpu/x86/car.c @@ -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; -- cgit v1.2.3