Kyösti Mälkki has uploaded this change for review.

View Change

arch/x86: Drop _car_relocatable_data symbols

These have become aliases to _car_global_[start|end].

Change-Id: Ibdcaaafdc0e4c6df4a795474903768230d41680d
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
---
M src/arch/x86/car.ld
M src/arch/x86/include/arch/early_variables.h
M src/arch/x86/include/arch/symbols.h
M src/cpu/amd/car/post_cache_as_ram.c
M src/cpu/x86/car.c
M src/drivers/intel/fsp2_0/memory_init.c
M src/soc/intel/quark/romstage/fsp2_0.c
7 files changed, 18 insertions(+), 26 deletions(-)

git pull ssh://review.coreboot.org:29418/coreboot refs/changes/33/35033/1
diff --git a/src/arch/x86/car.ld b/src/arch/x86/car.ld
index 25b667c..822f7fd 100644
--- a/src/arch/x86/car.ld
+++ b/src/arch/x86/car.ld
@@ -68,8 +68,6 @@
. += 80;
_car_ehci_dbg_info_end = .;

- _car_relocatable_data_start = .;
-
/* _car_global_start and _car_global_end provide symbols to per-stage
* variables that are not shared like the timestamp and the pre-ram
* cbmem console. This is useful for clearing this area on a per-stage
@@ -82,18 +80,18 @@
*(.sbss)
*(.sbss.*)
#else
- /* .car.global_data objects only around when
- * CONFIG_CAR_GLOBAL_MIGRATION is employed. */
*(.car.global_data);
#endif
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
_car_global_end = .;
- _car_relocatable_data_end = .;

#if CONFIG(CAR_GLOBAL_MIGRATION)
_car_stack_start = .;
_car_stack_end = _car_region_end;
+#else
+ _car_unallocated_start = .;
#endif
+
_car_region_end = . + CONFIG_DCACHE_RAM_SIZE - (. - _car_region_start);
}

diff --git a/src/arch/x86/include/arch/early_variables.h b/src/arch/x86/include/arch/early_variables.h
index 3910a82..b5db194 100644
--- a/src/arch/x86/include/arch/early_variables.h
+++ b/src/arch/x86/include/arch/early_variables.h
@@ -48,13 +48,13 @@

static inline size_t car_data_size(void)
{
- size_t car_size = _car_relocatable_data_size;
- return ALIGN_UP(car_size, 64);
+ size_t car_size = _car_global_size;
+ return ALIGN(car_size, 64);
}

static inline size_t car_object_offset(void *ptr)
{
- return (char *)ptr - &_car_relocatable_data_start[0];
+ return (char *)ptr - &_car_global_start[0];
}

#else
diff --git a/src/arch/x86/include/arch/symbols.h b/src/arch/x86/include/arch/symbols.h
index 97a07c0..5d65a7b 100644
--- a/src/arch/x86/include/arch/symbols.h
+++ b/src/arch/x86/include/arch/symbols.h
@@ -40,16 +40,10 @@
(_car_ehci_dbg_info_end - _car_ehci_dbg_info_start)

/*
- * The _car_relocatable_data_[start|end] symbols cover CAR data which is
- * relocatable once memory comes online. Variables with CAR_GLOBAL decoration
- * reside within this region. The _car_global_[start|end] is a subset of the
- * relocatable region which excludes the timestamp region because of
- * intricacies in the timestamp code.
+ * The _car_global_[start|end]symbols cover CAR data which is relocatable
+ * once memory comes online. Variables with CAR_GLOBAL decoration
+ * reside within this region.
*/
-extern char _car_relocatable_data_start[];
-extern char _car_relocatable_data_end[];
-#define _car_relocatable_data_size \
- (_car_relocatable_data_end - _car_relocatable_data_start)
extern char _car_global_start[];
extern char _car_global_end[];
#define _car_global_size (_car_global_end - _car_global_start)
diff --git a/src/cpu/amd/car/post_cache_as_ram.c b/src/cpu/amd/car/post_cache_as_ram.c
index dfa4c3d..bf701ff 100644
--- a/src/cpu/amd/car/post_cache_as_ram.c
+++ b/src/cpu/amd/car/post_cache_as_ram.c
@@ -107,11 +107,11 @@
void *migrated_car = (void *)(CONFIG_RAMTOP - car_size);

print_car_debug("Copying data from cache to RAM...");
- memcpy_(migrated_car, _car_relocatable_data_start, car_size);
+ memcpy_(migrated_car, _car_global_start, car_size);
print_car_debug(" Done\n");

print_car_debug("Verifying data integrity in RAM...");
- if (memcmp_(migrated_car, _car_relocatable_data_start, car_size) == 0)
+ if (memcmp_(migrated_car, _car_global_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 6fc6168..62ab83b 100644
--- a/src/cpu/x86/car.c
+++ b/src/cpu/x86/car.c
@@ -46,8 +46,8 @@
{
char *migrated_base = NULL;
int offset;
- void *_car_start = _car_relocatable_data_start;
- void *_car_end = _car_relocatable_data_end;
+ void *_car_start = _car_global_start;
+ void *_car_end = _car_global_end;

/* If the cache-as-ram has not been migrated return the pointer
* passed in. */
@@ -84,8 +84,8 @@
void *car_sync_var_ptr(void *var)
{
void **mig_var = car_get_var_ptr(var);
- void *_car_start = _car_relocatable_data_start;
- void *_car_end = _car_relocatable_data_end;
+ void *_car_start = _car_global_start;
+ void *_car_end = _car_global_end;

/* Not moved or migrated yet. */
if (mig_var == var)
@@ -134,7 +134,7 @@
return;
}

- memcpy(migrated_base, _car_relocatable_data_start, car_size);
+ memcpy(migrated_base, _car_global_start, car_size);

/* Mark that the data has been moved. */
car_migrated = ~0;
diff --git a/src/drivers/intel/fsp2_0/memory_init.c b/src/drivers/intel/fsp2_0/memory_init.c
index 0797c2e..17686c8 100644
--- a/src/drivers/intel/fsp2_0/memory_init.c
+++ b/src/drivers/intel/fsp2_0/memory_init.c
@@ -404,7 +404,7 @@
/* Build up memory map of romstage address space including CAR. */
memranges_init_empty(&memmap, &freeranges[0], ARRAY_SIZE(freeranges));
memranges_insert(&memmap, (uintptr_t)_car_region_start,
- _car_relocatable_data_end - _car_region_start, 0);
+ _car_unallocated_start - _car_region_start, 0);
memranges_insert(&memmap, (uintptr_t)_program, REGION_SIZE(program), 0);

if (!CONFIG(FSP_M_XIP))
diff --git a/src/soc/intel/quark/romstage/fsp2_0.c b/src/soc/intel/quark/romstage/fsp2_0.c
index 0489621..e6da5dd 100644
--- a/src/soc/intel/quark/romstage/fsp2_0.c
+++ b/src/soc/intel/quark/romstage/fsp2_0.c
@@ -142,7 +142,7 @@
aupd->StackBase);
printk(BIOS_SPEW, "| |\n");
printk(BIOS_SPEW, "+-------------------+ 0x%p\n",
- _car_relocatable_data_end);
+ _car_global_end);
printk(BIOS_SPEW, "| coreboot data |\n");
printk(BIOS_SPEW, "+-------------------+ 0x%p\n",
_car_stack_end);

To view, visit change 35033. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Ibdcaaafdc0e4c6df4a795474903768230d41680d
Gerrit-Change-Number: 35033
Gerrit-PatchSet: 1
Gerrit-Owner: Kyösti Mälkki <kyosti.malkki@gmail.com>
Gerrit-MessageType: newchange