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>
diff --git a/src/arch/x86/car.ld b/src/arch/x86/car.ld
index 8665682..2f0ce50 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 1109d80..e21ea46 100644
--- a/src/cpu/intel/car/romstage.c
+++ b/src/cpu/intel/car/romstage.c
@@ -28,15 +28,14 @@
 	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;