summaryrefslogtreecommitdiffstats
path: root/ArmPkg/Include/IndustryStandard/ArmMmSvc.h
diff options
context:
space:
mode:
authorSupreeth Venkatesh <supreeth.venkatesh@arm.com>2017-09-27 19:58:59 +0100
committerArd Biesheuvel <ard.biesheuvel@linaro.org>2017-10-06 21:58:58 +0100
commitbbf79aa264b638fd4717cfb1b8fd5a7997861fe7 (patch)
tree575cd33b96fb99d8410bc7dcda8e0e689be56db2 /ArmPkg/Include/IndustryStandard/ArmMmSvc.h
parent542bc11a02c02145bb825de9ffb4f76523ff2ca0 (diff)
downloadedk2-bbf79aa264b638fd4717cfb1b8fd5a7997861fe7.tar.gz
edk2-bbf79aa264b638fd4717cfb1b8fd5a7997861fe7.tar.bz2
edk2-bbf79aa264b638fd4717cfb1b8fd5a7997861fe7.zip
ArmPkg/Include: Add SVC function IDs for Management Mode.
SVCs are in the range 0xC4000060 - 0xC400007f. The functions available to the secure MM partition: 1. Signal completion of MM event handling. 2. Set/Get memory attributes for a memory region at runtime. 3. Get version number of secure partition manager. Also, it defines memory attributes required for set/get operations. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Supreeth Venkatesh <supreeth.venkatesh@arm.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Diffstat (limited to 'ArmPkg/Include/IndustryStandard/ArmMmSvc.h')
-rw-r--r--ArmPkg/Include/IndustryStandard/ArmMmSvc.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/ArmPkg/Include/IndustryStandard/ArmMmSvc.h b/ArmPkg/Include/IndustryStandard/ArmMmSvc.h
new file mode 100644
index 0000000000..4c7b6c3386
--- /dev/null
+++ b/ArmPkg/Include/IndustryStandard/ArmMmSvc.h
@@ -0,0 +1,43 @@
+/** @file
+*
+* Copyright (c) 2012-2017, ARM Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+#ifndef __ARM_MM_SVC_H__
+#define __ARM_MM_SVC_H__
+
+/*
+ * SVC IDs to allow the MM secure partition to initialise itself, handle
+ * delegated events and request the Secure partition manager to perform
+ * privileged operations on its behalf.
+ */
+#define ARM_SVC_ID_SPM_VERSION_AARCH64 0xC4000060
+#define ARM_SVC_ID_SP_EVENT_COMPLETE_AARCH64 0xC4000061
+#define ARM_SVC_ID_SP_GET_MEM_ATTRIBUTES_AARCH64 0xC4000064
+#define ARM_SVC_ID_SP_SET_MEM_ATTRIBUTES_AARCH64 0xC4000065
+
+#define SET_MEM_ATTR_DATA_PERM_MASK 0x3
+#define SET_MEM_ATTR_DATA_PERM_SHIFT 0
+#define SET_MEM_ATTR_DATA_PERM_NO_ACCESS 0
+#define SET_MEM_ATTR_DATA_PERM_RW 1
+#define SET_MEM_ATTR_DATA_PERM_RO 3
+
+#define SET_MEM_ATTR_CODE_PERM_MASK 0x1
+#define SET_MEM_ATTR_CODE_PERM_SHIFT 2
+#define SET_MEM_ATTR_CODE_PERM_X 0
+#define SET_MEM_ATTR_CODE_PERM_XN 1
+
+#define SET_MEM_ATTR_MAKE_PERM_REQUEST(d_perm, c_perm) \
+ ((((c_perm) & SET_MEM_ATTR_CODE_PERM_MASK) << SET_MEM_ATTR_CODE_PERM_SHIFT) | \
+ (( (d_perm) & SET_MEM_ATTR_DATA_PERM_MASK) << SET_MEM_ATTR_DATA_PERM_SHIFT))
+
+#endif