diff --git a/src/arch/arm64/include/arch/memlayout.h b/src/arch/arm64/include/arch/memlayout.h index 5c648b36f0..d84e7714fc 100644 --- a/src/arch/arm64/include/arch/memlayout.h +++ b/src/arch/arm64/include/arch/memlayout.h @@ -17,7 +17,25 @@ /* ARM64 stacks need 16-byte alignment. */ #define STACK(addr, size) \ REGION(stack, addr, size, 16) \ - _ = ASSERT(size >= 2K, "stack should be >= 2K, see toolchain.mk"); + _ = ASSERT(size >= 2K, "stack should be >= 2K, see toolchain.mk"); \ + ALIAS_REGION(stack, preram_stack) \ + ALIAS_REGION(stack, postram_stack) + +#if ENV_ROMSTAGE_OR_BEFORE + #define PRERAM_STACK(addr, size) \ + REGION(preram_stack, addr, size, 16) \ + _ = ASSERT(size >= 2K, "preram_stack should be >= 2K, see toolchain.mk"); \ + ALIAS_REGION(preram_stack, stack) + #define POSTRAM_STACK(addr, size) \ + REGION(postram_stack, addr, size, 16) +#else + #define PRERAM_STACK(addr, size) \ + REGION(preram_stack, addr, size, 16) + #define POSTRAM_STACK(addr, size) \ + REGION(postram_stack, addr, size, 16) \ + _ = ASSERT(size >= 2K, "postram_stack should be >= 2K, see toolchain.mk"); \ + ALIAS_REGION(postram_stack, stack) +#endif #define BL31(addr, size) \ REGION(bl31, addr, size, 4K) \ diff --git a/src/include/symbols.h b/src/include/symbols.h index c46b6ff9ef..53dbfb94a3 100644 --- a/src/include/symbols.h +++ b/src/include/symbols.h @@ -31,6 +31,8 @@ DECLARE_OPTIONAL_REGION(timestamp) DECLARE_REGION(preram_cbmem_console) DECLARE_REGION(cbmem_init_hooks) DECLARE_REGION(stack) +DECLARE_REGION(preram_stack) +DECLARE_REGION(postram_stack) DECLARE_OPTIONAL_REGION(preram_cbfs_cache) DECLARE_OPTIONAL_REGION(postram_cbfs_cache) DECLARE_OPTIONAL_REGION(cbfs_cache)