blob: 0745acbf167fe19ad04afb8e10857233c1eec90a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
/** @file
*
* Copyright (c) 2012-2024, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-2-Clause-Patent
*
**/
#ifndef ARM_MM_SVC_H_
#define ARM_MM_SVC_H_
/*
* SPM_MM FIDs to allow the secure partition to initialise itself, handle
* delegated events and request the Secure partition manager to perform
* privileged operations on its behalf.
*/
#define ARM_FID_SPM_MM_VERSION_AARCH32 0x84000060
#define ARM_FID_SPM_MM_SP_EVENT_COMPLETE_AARCH32 0x84000061
#define ARM_FID_SPM_MM_SP_GET_MEM_ATTRIBUTES_AARCH32 0x84000064
#define ARM_FID_SPM_MM_SP_SET_MEM_ATTRIBUTES_AARCH32 0x84000065
#define ARM_FID_SPM_MM_SP_EVENT_COMPLETE_AARCH64 0xC4000061
#define ARM_FID_SPM_MM_SP_GET_MEM_ATTRIBUTES_AARCH64 0xC4000064
#define ARM_FID_SPM_MM_SP_SET_MEM_ATTRIBUTES_AARCH64 0xC4000065
/* Generic IDs when using AArch32 or AArch64 execution state */
#ifdef MDE_CPU_AARCH64
#define ARM_FID_SPM_MM_SP_EVENT_COMPLETE ARM_FID_SPM_MM_SP_EVENT_COMPLETE_AARCH64
#define ARM_FID_SPM_MM_SP_GET_MEM_ATTRIBUTES ARM_FID_SPM_MM_SP_GET_MEM_ATTRIBUTES_AARCH64
#define ARM_FID_SPM_MM_SP_SET_MEM_ATTRIBUTES ARM_FID_SPM_MM_SP_SET_MEM_ATTRIBUTES_AARCH64
#endif
#ifdef MDE_CPU_ARM
#define ARM_FID_SPM_MM_SP_EVENT_COMPLETE ARM_FID_SPM_MM_SP_EVENT_COMPLETE_AARCH32
#define ARM_FID_SPM_MM_SP_GET_MEM_ATTRIBUTES ARM_FID_SPM_MM_SP_GET_MEM_ATTRIBUTES_AARCH32
#define ARM_FID_SPM_MM_SP_SET_MEM_ATTRIBUTES ARM_FID_SPM_MM_SP_SET_MEM_ATTRIBUTES_AARCH32
#endif
#define ARM_SPM_MM_SET_MEM_ATTR_DATA_PERM_MASK 0x3
#define ARM_SPM_MM_SET_MEM_ATTR_DATA_PERM_SHIFT 0
#define ARM_SPM_MM_SET_MEM_ATTR_DATA_PERM_NO_ACCESS 0
#define ARM_SPM_MM_SET_MEM_ATTR_DATA_PERM_RW 1
#define ARM_SPM_MM_SET_MEM_ATTR_DATA_PERM_RO 3
#define ARM_SPM_MM_SET_MEM_ATTR_CODE_PERM_MASK 0x1
#define ARM_SPM_MM_SET_MEM_ATTR_CODE_PERM_SHIFT 2
#define ARM_SPM_MM_SET_MEM_ATTR_CODE_PERM_X 0
#define ARM_SPM_MM_SET_MEM_ATTR_CODE_PERM_XN 1
#define ARM_SPM_MM_SET_MEM_ATTR_MAKE_PERM_REQUEST(dataperm, codeperm) \
((((codeperm) & ARM_SPM_MM_SET_MEM_ATTR_CODE_PERM_MASK) << \
ARM_SPM_MM_SET_MEM_ATTR_CODE_PERM_SHIFT) | \
(( (dataperm) & ARM_SPM_MM_SET_MEM_ATTR_DATA_PERM_MASK) << \
ARM_SPM_MM_SET_MEM_ATTR_DATA_PERM_SHIFT))
/* SPM_MM SVC Return error codes */
#define ARM_SPM_MM_RET_SUCCESS 0
#define ARM_SPM_MM_RET_NOT_SUPPORTED -1
#define ARM_SPM_MM_RET_INVALID_PARAMS -2
#define ARM_SPM_MM_RET_DENIED -3
#define ARM_SPM_MM_RET_NO_MEMORY -5
#define ARM_SPM_MM_SUPPORT_MAJOR_VERSION 0
#define ARM_SPM_MM_SUPPORT_MINOR_VERSION 1
#define ARM_SPM_MM_VERSION_MASK 0xFFFF
#define ARM_SPM_MM_MAJOR_VERSION_SHIFT 16
#define ARM_SPM_MM_MINOR_VERSION_SHIFT 0
#define ARM_SPM_MM_MAJOR_VERSION_GET(version) \
(((version) >> ARM_SPM_MM_MAJOR_VERSION_SHIFT) & ARM_SPM_MM_VERSION_MASK)
#define ARM_SPM_MM_MINOR_VERSION_GET(version) \
(((version) >> ARM_SPM_MM_MINOR_VERSION_SHIFT) & ARM_SPM_MM_VERSION_MASK)
#endif // ARM_MM_SVC_H_
|