From 8cc852f79132897a0d371b05780762a0fcd959d8 Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Tue, 28 Feb 2012 17:27:15 +0000 Subject: 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 --- .../ArmTrustedMonitorLibNull.c | 37 +++++++++++++++++++ .../ArmTrustedMonitorLibNull.inf | 37 +++++++++++++++++++ .../ArmTrustedMonitorLibNull/MonitorTable.S | 41 ++++++++++++++++++++++ .../ArmTrustedMonitorLibNull/MonitorTable.asm | 40 +++++++++++++++++++++ 4 files changed, 155 insertions(+) create mode 100644 ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.c create mode 100644 ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.inf create mode 100644 ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/MonitorTable.S create mode 100644 ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/MonitorTable.asm (limited to 'ArmPlatformPkg/Library') 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 +#include +#include + +#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 +#include +#include + +.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 + + 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 -- cgit v1.2.3