blob: a5929d48a3ba17b25b605f68795eb3e8aa84ab4c [file] [log] [blame]
Ken Liu58852502021-08-10 15:48:23 +08001/*
Kevin Peng1de1e7a2022-06-07 17:38:01 +08002 * Copyright (c) 2021-2022, Arm Limited. All rights reserved.
Ken Liu58852502021-08-10 15:48:23 +08003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#ifndef __SECURITY_DEFS_H__
9#define __SECURITY_DEFS_H__
10
11/* Generic security-related definitions */
12
13/*
14 * Stack SEAL is involved since Security Extension exists, it becomes
15 * a generic security defs used by both SPM and Partitions.
16 */
17#define STACK_SEAL_PATTERN 0xFEF5EDA5
18
Ken Liu3a80caf2022-06-17 14:58:01 +080019#if (defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))
20
Kevin Peng1de1e7a2022-06-07 17:38:01 +080021/* Attributes for psa api secure gateway functions */
22#if defined(__GNUC__) && !defined(__ARMCC_VERSION)
23/*
Anton Komlevc88e2ac2024-09-12 16:46:39 +010024 * LLVM offers 'noduplicate' attribute as 'noclone' equivalent in GNUARM
25 */
26#if defined(__clang__)
27#define noclone noduplicate
28#endif /* __clang__ */
29/*
Kevin Peng1de1e7a2022-06-07 17:38:01 +080030 * GNUARM requires noclone attribute to protect gateway function symbol from
31 * being renamed and cloned
32 */
33#define __tz_c_veneer \
chesun017e757b02023-11-07 14:12:40 +080034 __attribute__((cmse_nonsecure_entry, noclone))
Kevin Peng1de1e7a2022-06-07 17:38:01 +080035#define __tz_naked_veneer \
chesun017e757b02023-11-07 14:12:40 +080036 __attribute__((cmse_nonsecure_entry, noclone, naked))
Ken Liu3a80caf2022-06-17 14:58:01 +080037
Kevin Peng1de1e7a2022-06-07 17:38:01 +080038#else /* __GNUC__ && !__ARMCC_VERSION */
Ken Liu3a80caf2022-06-17 14:58:01 +080039
Kevin Peng1de1e7a2022-06-07 17:38:01 +080040#define __tz_c_veneer \
chesun017e757b02023-11-07 14:12:40 +080041 __attribute__((cmse_nonsecure_entry))
Kevin Peng1de1e7a2022-06-07 17:38:01 +080042#define __tz_naked_veneer \
chesun017e757b02023-11-07 14:12:40 +080043 __attribute__((cmse_nonsecure_entry, naked))
Ken Liu3a80caf2022-06-17 14:58:01 +080044
Kevin Peng1de1e7a2022-06-07 17:38:01 +080045#endif /* __GNUC__ && !__ARMCC_VERSION */
46
Ken Liu3a80caf2022-06-17 14:58:01 +080047#endif /* __ARM_FEATURE_CMSE */
48
Ken Liu58852502021-08-10 15:48:23 +080049#endif /* __SECURITY_DEFS_H__ */