xref: /rk3399_ARM-atf/plat/st/stm32mp1/stm32mp1_stack_protector.c (revision 4353bb20cc8937a5d540a06c4a8fe7ee880fc3ca)
1*4353bb20SYann Gautier /*
2*4353bb20SYann Gautier  * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
3*4353bb20SYann Gautier  *
4*4353bb20SYann Gautier  * SPDX-License-Identifier: BSD-3-Clause
5*4353bb20SYann Gautier  */
6*4353bb20SYann Gautier 
7*4353bb20SYann Gautier #include <arch_helpers.h>
8*4353bb20SYann Gautier #include <platform.h>
9*4353bb20SYann Gautier #include <stdint.h>
10*4353bb20SYann Gautier 
11*4353bb20SYann Gautier #define RANDOM_CANARY_VALUE	2144346116U
12*4353bb20SYann Gautier 
13*4353bb20SYann Gautier u_register_t plat_get_stack_protector_canary(void)
14*4353bb20SYann Gautier {
15*4353bb20SYann Gautier 	/*
16*4353bb20SYann Gautier 	 * Ideally, a random number should be returned instead of the
17*4353bb20SYann Gautier 	 * combination of a timer's value and a compile-time constant.
18*4353bb20SYann Gautier 	 */
19*4353bb20SYann Gautier 	return RANDOM_CANARY_VALUE ^ (u_register_t)read_cntpct_el0();
20*4353bb20SYann Gautier }
21*4353bb20SYann Gautier 
22