aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorten Borup Petersen <morten.petersen@arm.com>2019-05-15 11:13:31 +0100
committerTushar Khandelwal <tushar.khandelwal@arm.com>2019-05-21 10:09:21 +0100
commit36db7a10e374580ecd0cfe046f52d1909eb9c99d (patch)
tree95e050a3e8ecdf51059c094027e8a03652c76aec
parent78ea2f03ddf87b037eb4254acad67f3c218e6c4f (diff)
add stack protector support for corstone-700 FVP
This commit adds support for generating a semi-random number required for enabling building TF-A with stack protector support. TF-A for corstone-700 may now be built using ENABLE_STACK_PROTECTOR=all Change-Id: Id27150f57e78aab4c38046256ba76eb8272ffa2b Signed-off-by: Morten Borup Petersen <morten.petersen@arm.com>
-rw-r--r--plat/arm/board/corstone700/corstone700_stack_protector.c24
-rw-r--r--plat/arm/board/corstone700/sp_min/sp_min-corstone700.mk1
2 files changed, 25 insertions, 0 deletions
diff --git a/plat/arm/board/corstone700/corstone700_stack_protector.c b/plat/arm/board/corstone700/corstone700_stack_protector.c
new file mode 100644
index 000000000..4023b48b1
--- /dev/null
+++ b/plat/arm/board/corstone700/corstone700_stack_protector.c
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <stdint.h>
+
+#include <arch_helpers.h>
+#include <plat/common/platform.h>
+
+#define RANDOM_CANARY_VALUE ((u_register_t) 3288484550995823360ULL)
+
+u_register_t plat_get_stack_protector_canary(void)
+{
+ /*
+ * Ideally, a random number should be returned instead of the
+ * combination of a timer's value and a compile-time constant. As the
+ * FVP does not have any random number generator, this is better than
+ * nothing but not necessarily really secure.
+ */
+ return RANDOM_CANARY_VALUE ^ read_cntpct_el0();
+}
+
diff --git a/plat/arm/board/corstone700/sp_min/sp_min-corstone700.mk b/plat/arm/board/corstone700/sp_min/sp_min-corstone700.mk
index 35ceb6b70..946a216b5 100644
--- a/plat/arm/board/corstone700/sp_min/sp_min-corstone700.mk
+++ b/plat/arm/board/corstone700/sp_min/sp_min-corstone700.mk
@@ -11,6 +11,7 @@ BL32_SOURCES += drivers/cfi/v2m/v2m_flash.c \
plat/arm/board/corstone700/corstone700_topology.c \
plat/arm/board/corstone700/corstone700_security.c \
plat/arm/board/corstone700/corstone700_plat.c \
+ plat/arm/board/corstone700/corstone700_stack_protector.c \
plat/arm/board/corstone700/corstone700_pm.c \
plat/arm/board/corstone700/sp_min/corstone700_sp_min_setup.c \
${CORSTONE700_CPU_SOURCES} \