diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2018-12-28 19:18:46 +0200 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2018-12-30 12:36:30 +0000 |
commit | d7892bc3913fab68c880d3b7a1206b4c23d5dbe3 (patch) | |
tree | 93a092c0b95592e7a61a04c33ffb1a79c06df2b2 /src | |
parent | 1c105903078f85dd1be805c737b4e4da6dea0618 (diff) |
arch/x86: Add CAR stack location symbols
Add symbols for the non C_ENVIRONMENT_BOOTBLOCK builds
and use them for stack guards.
Change-Id: Ib622eacb161d9a110d35a7d6979d1b601503b6f4
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/30491
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/x86/car.ld | 4 | ||||
-rw-r--r-- | src/cpu/intel/car/romstage.c | 5 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/arch/x86/car.ld b/src/arch/x86/car.ld index 86656829ab..2f0ce50e3c 100644 --- a/src/arch/x86/car.ld +++ b/src/arch/x86/car.ld @@ -86,6 +86,10 @@ _car_global_end = .; _car_relocatable_data_end = .; +#if !IS_ENABLED(CONFIG_C_ENVIRONMENT_BOOTBLOCK) + _car_stack_start = .; + _car_stack_end = _car_region_end; +#endif _car_region_end = . + CONFIG_DCACHE_RAM_SIZE - (. - _car_region_start); } diff --git a/src/cpu/intel/car/romstage.c b/src/cpu/intel/car/romstage.c index 1109d80442..e21ea467c2 100644 --- a/src/cpu/intel/car/romstage.c +++ b/src/cpu/intel/car/romstage.c @@ -28,15 +28,14 @@ asmlinkage void *romstage_main(unsigned long bist) u32 size; /* Size of unallocated CAR. */ - size = _car_region_end - _car_relocatable_data_end; - size = ALIGN_DOWN(size, 16); + size = ALIGN_DOWN(_car_stack_size, 16); size = MIN(size, DCACHE_RAM_ROMSTAGE_STACK_SIZE); if (size < DCACHE_RAM_ROMSTAGE_STACK_SIZE) printk(BIOS_DEBUG, "Romstage stack size limited to 0x%x!\n", size); - stack_base = (u32 *) (_car_region_end - size); + stack_base = (u32 *) (_car_stack_end - size); for (i = 0; i < num_guards; i++) stack_base[i] = stack_guard; |