summaryrefslogtreecommitdiff
path: root/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull
diff options
context:
space:
mode:
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2012-02-28 17:27:15 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2012-02-28 17:27:15 +0000
commit8cc852f79132897a0d371b05780762a0fcd959d8 (patch)
tree973bae3e6e869340416f3fac828f300f60a423da /ArmPlatformPkg/Library/ArmTrustedMonitorLibNull
parent1377db63ff80bbb28da572c7b276ba56faea5f94 (diff)
downloadedk2-platforms-8cc852f79132897a0d371b05780762a0fcd959d8.tar.xz
ArmPlatformPkg: Move the Secure Monitor initialization into a separate 'ArmTrustedMonitorLib' library
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13059 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPlatformPkg/Library/ArmTrustedMonitorLibNull')
-rw-r--r--ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.c37
-rw-r--r--ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.inf37
-rw-r--r--ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/MonitorTable.S41
-rw-r--r--ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/MonitorTable.asm40
4 files changed, 155 insertions, 0 deletions
diff --git a/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.c b/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.c
new file mode 100644
index 0000000000..b6eff6ee9d
--- /dev/null
+++ b/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.c
@@ -0,0 +1,37 @@
+/** @file
+* Main file supporting the Monitor World on ARM PLatforms
+*
+* Copyright (c) 2011, 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.
+*
+**/
+
+#include <Library/ArmLib.h>
+#include <Library/ArmTrustedMonitorLib.h>
+#include <Library/DebugLib.h>
+
+#define IS_ALIGNED(Address, Align) (((UINTN)Address & (Align-1)) == 0)
+
+VOID
+MonitorVectorTable (
+ VOID
+ );
+
+VOID
+ArmSecureMonitorWorldInitialize (
+ VOID
+ )
+{
+ // Ensure the Monitor Table is 32bit aligned
+ ASSERT (IS_ALIGNED(MonitorVectorTable, BIT5));
+
+ // Write the Monitor Mode Vector Table Address
+ ArmWriteVMBar ((UINT32) &MonitorVectorTable);
+}
diff --git a/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.inf b/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.inf
new file mode 100644
index 0000000000..39bd97c6f5
--- /dev/null
+++ b/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.inf
@@ -0,0 +1,37 @@
+#/* @file
+# Copyright (c) 2011, 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.
+#
+#*/
+
+[Defines]
+ INF_VERSION = 0x00010005
+ BASE_NAME = ArmTrustedMonitorLibNull
+ FILE_GUID = c4b50eb2-ed16-4283-a5b0-a7341c3f997b
+ MODULE_TYPE = BASE
+ VERSION_STRING = 1.0
+ LIBRARY_CLASS = ArmTrustedMonitorLib
+
+[Sources.common]
+ ArmTrustedMonitorLibNull.c
+ MonitorTable.asm | RVCT
+ MonitorTable.S | GCC
+
+[Packages]
+ ArmPkg/ArmPkg.dec
+ ArmPlatformPkg/ArmPlatformPkg.dec
+ MdePkg/MdePkg.dec
+
+[LibraryClasses]
+ ArmLib
+ BaseLib
+ DebugLib
+ PcdLib
+ \ No newline at end of file
diff --git a/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/MonitorTable.S b/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/MonitorTable.S
new file mode 100644
index 0000000000..3e75bee505
--- /dev/null
+++ b/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/MonitorTable.S
@@ -0,0 +1,41 @@
+//
+// Copyright (c) 2011, 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.
+//
+//
+
+#include <AsmMacroIoLib.h>
+#include <AutoGen.h>
+#include <Library/PcdLib.h>
+
+.text
+.align 5
+
+GCC_ASM_EXPORT(MonitorVectorTable)
+
+ASM_PFX(MonitorVectorTable):
+
+_MonitorResetEntry:
+ b _MonitorResetEntry
+_MonitorUndefinedEntry:
+ b _MonitorUndefinedEntry
+_MonitorSmcEntry:
+ b _MonitorSmcEntry
+_MonitorPrefetchEntry:
+ b _MonitorPrefetchEntry
+_MonitorDataAbortEntry:
+ b _MonitorDataAbortEntry
+_MonitorReservedEntry:
+ b _MonitorReservedEntry
+_MonitorIrqEntry:
+ b _MonitorIrqEntry
+_MonitorFiqEntry:
+ b _MonitorFiqEntry
+
diff --git a/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/MonitorTable.asm b/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/MonitorTable.asm
new file mode 100644
index 0000000000..f4f515d05c
--- /dev/null
+++ b/ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/MonitorTable.asm
@@ -0,0 +1,40 @@
+//
+// Copyright (c) 2011, 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.
+//
+//
+
+#include <Library/PcdLib.h>
+
+ EXPORT MonitorVectorTable
+
+ PRESERVE8
+ AREA MonitoVectorTableArea, CODE, READONLY, CODEALIGN, ALIGN=5
+
+MonitorVectorTable
+
+_MonitorResetEntry
+ b _MonitorResetEntry
+_MonitorUndefinedEntry
+ b _MonitorUndefinedEntry
+_MonitorSmcEntry
+ b _MonitorSmcEntry
+_MonitorPrefetchEntry
+ b _MonitorPrefetchEntry
+_MonitorDataAbortEntry
+ b _MonitorDataAbortEntry
+_MonitorReservedEntry
+ b _MonitorReservedEntry
+_MonitorIrqEntry
+ b _MonitorIrqEntry
+_MonitorFiqEntry
+ b _MonitorFiqEntry
+
+ END