summaryrefslogtreecommitdiffstats
path: root/ArmPlatformPkg/Sec
diff options
context:
space:
mode:
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2012-09-28 09:52:11 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2012-09-28 09:52:11 +0000
commit9d6b024ded89621f1a643d0ddea6904375c4cc67 (patch)
tree36a79e9e2a288f6b0a7322e903caaac59c6c6a84 /ArmPlatformPkg/Sec
parent7ea4cf3f595f35373ff57cff997cde0bcea6871f (diff)
downloadedk2-9d6b024ded89621f1a643d0ddea6904375c4cc67.tar.gz
edk2-9d6b024ded89621f1a643d0ddea6904375c4cc67.tar.bz2
edk2-9d6b024ded89621f1a643d0ddea6904375c4cc67.zip
ArmPlatformPkg/Sec: Moved Exception Vector Table to ArmPkg/DebugAgentBaseLib
In case a DebugAgent library is supported for a specific debugger, we would expect the exception be caught by DebugAgentLib. The DebugAgentBaseLib exposes the cause of the exception to the user in the Serial Terminal. Signed-off-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13765 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPlatformPkg/Sec')
-rw-r--r--ArmPlatformPkg/Sec/Exception.S98
-rw-r--r--ArmPlatformPkg/Sec/Exception.asm91
-rw-r--r--ArmPlatformPkg/Sec/Sec.c45
-rw-r--r--ArmPlatformPkg/Sec/Sec.inf2
-rw-r--r--ArmPlatformPkg/Sec/SecEntryPoint.S6
-rw-r--r--ArmPlatformPkg/Sec/SecEntryPoint.asm6
-rw-r--r--ArmPlatformPkg/Sec/SecInternal.h6
7 files changed, 0 insertions, 254 deletions
diff --git a/ArmPlatformPkg/Sec/Exception.S b/ArmPlatformPkg/Sec/Exception.S
deleted file mode 100644
index 14e1fa8c1d..0000000000
--- a/ArmPlatformPkg/Sec/Exception.S
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// 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 "SecInternal.h"
-
-.text
-.align 5
-
-GCC_ASM_IMPORT(SecCommonExceptionEntry)
-GCC_ASM_EXPORT(SecVectorTable)
-
-//============================================================
-// Default Exception Handlers
-//============================================================
-
-
-ASM_PFX(SecVectorTable):
- b _DefaultResetHandler
- b _DefaultUndefined
- b _DefaultSWI
- b _DefaultPrefetchAbort
- b _DefaultDataAbort
- b _DefaultReserved
- b _DefaultIrq
- b _DefaultFiq
-
-//
-// Default Exception handlers: There is no plan to return from any of these exceptions.
-// No context saving at all.
-//
-_DefaultResetHandler:
- mov r1, lr
- # Switch to SVC for common stack
- cps #0x13
- mov r0, #0
- blx ASM_PFX(SecCommonExceptionEntry)
-
-_DefaultUndefined:
- sub r1, LR, #4
- # Switch to SVC for common stack
- cps #0x13
- mov r0, #1
- blx ASM_PFX(SecCommonExceptionEntry)
-
-_DefaultSWI:
- sub r1, LR, #4
- # Switch to SVC for common stack
- cps #0x13
- mov r0, #2
- blx ASM_PFX(SecCommonExceptionEntry)
-
-_DefaultPrefetchAbort:
- sub r1, LR, #4
- # Switch to SVC for common stack
- cps #0x13
- mov r0, #3
- blx ASM_PFX(SecCommonExceptionEntry)
-
-_DefaultDataAbort:
- sub r1, LR, #8
- # Switch to SVC for common stack
- cps #0x13
- mov r0, #4
- blx ASM_PFX(SecCommonExceptionEntry)
-
-_DefaultReserved:
- mov r1, lr
- # Switch to SVC for common stack
- cps #0x13
- mov r0, #5
- blx ASM_PFX(SecCommonExceptionEntry)
-
-_DefaultIrq:
- sub r1, LR, #4
- # Switch to SVC for common stack
- cps #0x13
- mov r0, #6
- blx ASM_PFX(SecCommonExceptionEntry)
-
-_DefaultFiq:
- sub r1, LR, #4
- # Switch to SVC for common stack
- cps #0x13
- mov r0, #7
- blx ASM_PFX(SecCommonExceptionEntry)
-
diff --git a/ArmPlatformPkg/Sec/Exception.asm b/ArmPlatformPkg/Sec/Exception.asm
deleted file mode 100644
index cf3825bc6a..0000000000
--- a/ArmPlatformPkg/Sec/Exception.asm
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// 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 <Base.h>
-#include <AutoGen.h>
-
- IMPORT SecCommonExceptionEntry
- EXPORT SecVectorTable
-
- PRESERVE8
- AREA SecException, CODE, READONLY, CODEALIGN, ALIGN=5
-
-//============================================================
-//Default Exception Handlers
-//============================================================
-
-
-SecVectorTable
- b _DefaultResetHandler
- b _DefaultUndefined
- b _DefaultSWI
- b _DefaultPrefetchAbort
- b _DefaultDataAbort
- b _DefaultReserved
- b _DefaultIrq
- b _DefaultFiq
-
-//
-// Default Exception handlers: There is no plan to return from any of these exceptions.
-// No context saving at all.
-//
-_DefaultResetHandler
- mov r1, lr
- cps #0x13 ; Switch to SVC for common stack
- mov r0, #0
- blx SecCommonExceptionEntry
-
-_DefaultUndefined
- sub r1, LR
- cps #0x13 ; Switch to SVC for common stack
- mov r0, #1
- blx SecCommonExceptionEntry
-
-_DefaultSWI
- sub r1, LR, #4
- cps #0x13 ; Switch to SVC for common stack
- mov r0, #2
- blx SecCommonExceptionEntry
-
-_DefaultPrefetchAbort
- sub r1, LR, #4
- cps #0x13 ; Switch to SVC for common stack
- mov r0, #3
- blx SecCommonExceptionEntry
-
-_DefaultDataAbort
- sub r1, LR, #8
- cps #0x13 ; Switch to SVC for common stack
- mov r0, #4
- blx SecCommonExceptionEntry
-
-_DefaultReserved
- mov r1, lr
- cps #0x13 ; Switch to SVC for common stack
- mov r0, #5
- blx SecCommonExceptionEntry
-
-_DefaultIrq
- sub r1, LR, #4
- cps #0x13 ; Switch to SVC for common stack
- mov r0, #6
- blx SecCommonExceptionEntry
-
-_DefaultFiq
- sub r1, LR, #4
- cps #0x13 ; Switch to SVC for common stack
- mov r0, #7
- blx SecCommonExceptionEntry
-
- END
diff --git a/ArmPlatformPkg/Sec/Sec.c b/ArmPlatformPkg/Sec/Sec.c
index b8cc4973d8..55807ec9d9 100644
--- a/ArmPlatformPkg/Sec/Sec.c
+++ b/ArmPlatformPkg/Sec/Sec.c
@@ -80,10 +80,6 @@ CEntryPoint (
InitializeDebugAgent (DEBUG_AGENT_INIT_PREMEM_SEC, NULL, NULL);
SaveAndSetDebugTimerInterrupt (TRUE);
- // Now we've got UART, make the check:
- // - The Vector table must be 32-byte aligned
- ASSERT(((UINT32)SecVectorTable & ((1 << 5)-1)) == 0);
-
// Enable the GIC distributor and CPU Interface
// - no other Interrupts are enabled, doesn't have to worry about the priority.
// - all the cores are in secure state, use secure SGI's
@@ -197,44 +193,3 @@ NonTrustedWorldTransition (
ASSERT (FALSE);
}
-VOID
-SecCommonExceptionEntry (
- IN UINT32 Entry,
- IN UINT32 LR
- )
-{
- CHAR8 Buffer[100];
- UINTN CharCount;
-
- switch (Entry) {
- case 0:
- CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Reset Exception at 0x%X\n\r",LR);
- break;
- case 1:
- CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Undefined Exception at 0x%X\n\r",LR);
- break;
- case 2:
- CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"SWI Exception at 0x%X\n\r",LR);
- break;
- case 3:
- CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"PrefetchAbort Exception at 0x%X\n\r",LR);
- break;
- case 4:
- CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"DataAbort Exception at 0x%X\n\r",LR);
- break;
- case 5:
- CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Reserved Exception at 0x%X\n\r",LR);
- break;
- case 6:
- CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"IRQ Exception at 0x%X\n\r",LR);
- break;
- case 7:
- CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"FIQ Exception at 0x%X\n\r",LR);
- break;
- default:
- CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Unknown Exception at 0x%X\n\r",LR);
- break;
- }
- SerialPortWrite ((UINT8 *) Buffer, CharCount);
- while(1);
-}
diff --git a/ArmPlatformPkg/Sec/Sec.inf b/ArmPlatformPkg/Sec/Sec.inf
index 0b7a9c04e8..55ad00744c 100644
--- a/ArmPlatformPkg/Sec/Sec.inf
+++ b/ArmPlatformPkg/Sec/Sec.inf
@@ -26,8 +26,6 @@
Sec.c
SecEntryPoint.S | GCC
SecEntryPoint.asm | RVCT
- Exception.asm | RVCT
- Exception.S | GCC
[Packages]
MdePkg/MdePkg.dec
diff --git a/ArmPlatformPkg/Sec/SecEntryPoint.S b/ArmPlatformPkg/Sec/SecEntryPoint.S
index 5095c41697..92035a1ffe 100644
--- a/ArmPlatformPkg/Sec/SecEntryPoint.S
+++ b/ArmPlatformPkg/Sec/SecEntryPoint.S
@@ -23,9 +23,7 @@ GCC_ASM_IMPORT(ArmPlatformSecBootAction)
GCC_ASM_IMPORT(ArmPlatformSecBootMemoryInit)
GCC_ASM_IMPORT(ArmDisableInterrupts)
GCC_ASM_IMPORT(ArmDisableCachesAndMmu)
-GCC_ASM_IMPORT(ArmWriteVBar)
GCC_ASM_IMPORT(ArmReadMpidr)
-GCC_ASM_IMPORT(SecVectorTable)
GCC_ASM_IMPORT(ArmCallWFE)
GCC_ASM_EXPORT(_ModuleEntryPoint)
@@ -44,10 +42,6 @@ ASM_PFX(_ModuleEntryPoint):
// Jump to Platform Specific Boot Action function
blx ASM_PFX(ArmPlatformSecBootAction)
- // Set VBAR to the start of the exception vectors in Secure Mode
- LoadConstantToReg (ASM_PFX(SecVectorTable), r0)
- bl ASM_PFX(ArmWriteVBar)
-
_IdentifyCpu:
// Identify CPU ID
bl ASM_PFX(ArmReadMpidr)
diff --git a/ArmPlatformPkg/Sec/SecEntryPoint.asm b/ArmPlatformPkg/Sec/SecEntryPoint.asm
index e0d5922f15..42d2b0268f 100644
--- a/ArmPlatformPkg/Sec/SecEntryPoint.asm
+++ b/ArmPlatformPkg/Sec/SecEntryPoint.asm
@@ -22,10 +22,8 @@
IMPORT ArmPlatformSecBootMemoryInit
IMPORT ArmDisableInterrupts
IMPORT ArmDisableCachesAndMmu
- IMPORT ArmWriteVBar
IMPORT ArmReadMpidr
IMPORT ArmCallWFE
- IMPORT SecVectorTable
EXPORT _ModuleEntryPoint
PRESERVE8
@@ -46,10 +44,6 @@ _ModuleEntryPoint FUNCTION
// Jump to Platform Specific Boot Action function
blx ArmPlatformSecBootAction
- // Set VBAR to the start of the exception vectors in Secure Mode
- ldr r0, =SecVectorTable
- blx ArmWriteVBar
-
_IdentifyCpu
// Identify CPU ID
bl ArmReadMpidr
diff --git a/ArmPlatformPkg/Sec/SecInternal.h b/ArmPlatformPkg/Sec/SecInternal.h
index 34a6feab1e..8bc21389e7 100644
--- a/ArmPlatformPkg/Sec/SecInternal.h
+++ b/ArmPlatformPkg/Sec/SecInternal.h
@@ -44,12 +44,6 @@ ArmSetupGicNonSecure (
IN INTN GicInterruptInterfaceBase
);
-// Vector Table for Sec Phase
-VOID
-SecVectorTable (
- VOID
- );
-
VOID
enter_monitor_mode (
IN UINTN MonitorEntryPoint,