mirror of https://github.com/acidanthera/audk.git
ArmPlatformPkg/PrePi: 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@13766 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
9d6b024ded
commit
fb47559347
|
@ -1,101 +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>
|
|
||||||
|
|
||||||
#start of the code section
|
|
||||||
.text
|
|
||||||
.align 5
|
|
||||||
|
|
||||||
# IMPORT
|
|
||||||
GCC_ASM_IMPORT(PrePiCommonExceptionEntry)
|
|
||||||
|
|
||||||
# EXPORT
|
|
||||||
GCC_ASM_EXPORT(PrePiVectorTable)
|
|
||||||
|
|
||||||
//============================================================
|
|
||||||
//Default Exception Handlers
|
|
||||||
//============================================================
|
|
||||||
|
|
||||||
ASM_PFX(PrePiVectorTable):
|
|
||||||
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(PrePiCommonExceptionEntry)
|
|
||||||
|
|
||||||
_DefaultUndefined:
|
|
||||||
sub r1, LR, #4
|
|
||||||
# Switch to SVC for common stack
|
|
||||||
cps #0x13
|
|
||||||
mov r0, #1
|
|
||||||
blx ASM_PFX(PrePiCommonExceptionEntry)
|
|
||||||
|
|
||||||
_DefaultSWI:
|
|
||||||
sub r1, LR, #4
|
|
||||||
# Switch to SVC for common stack
|
|
||||||
cps #0x13
|
|
||||||
mov r0, #2
|
|
||||||
blx ASM_PFX(PrePiCommonExceptionEntry)
|
|
||||||
|
|
||||||
_DefaultPrefetchAbort:
|
|
||||||
sub r1, LR, #4
|
|
||||||
# Switch to SVC for common stack
|
|
||||||
cps #0x13
|
|
||||||
mov r0, #3
|
|
||||||
blx ASM_PFX(PrePiCommonExceptionEntry)
|
|
||||||
|
|
||||||
_DefaultDataAbort:
|
|
||||||
sub r1, LR, #8
|
|
||||||
# Switch to SVC for common stack
|
|
||||||
cps #0x13
|
|
||||||
mov r0, #4
|
|
||||||
blx ASM_PFX(PrePiCommonExceptionEntry)
|
|
||||||
|
|
||||||
_DefaultReserved:
|
|
||||||
mov r1, lr
|
|
||||||
# Switch to SVC for common stack
|
|
||||||
cps #0x13
|
|
||||||
mov r0, #5
|
|
||||||
blx ASM_PFX(PrePiCommonExceptionEntry)
|
|
||||||
|
|
||||||
_DefaultIrq:
|
|
||||||
sub r1, LR, #4
|
|
||||||
# Switch to SVC for common stack
|
|
||||||
cps #0x13
|
|
||||||
mov r0, #6
|
|
||||||
blx ASM_PFX(PrePiCommonExceptionEntry)
|
|
||||||
|
|
||||||
_DefaultFiq:
|
|
||||||
sub r1, LR, #4
|
|
||||||
# Switch to SVC for common stack
|
|
||||||
cps #0x13
|
|
||||||
mov r0, #7
|
|
||||||
blx ASM_PFX(PrePiCommonExceptionEntry)
|
|
||||||
|
|
|
@ -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 PrePiCommonExceptionEntry
|
|
||||||
EXPORT PrePiVectorTable
|
|
||||||
|
|
||||||
PRESERVE8
|
|
||||||
AREA PrePeiCoreException, CODE, READONLY, CODEALIGN, ALIGN=5
|
|
||||||
|
|
||||||
//============================================================
|
|
||||||
//Default Exception Handlers
|
|
||||||
//============================================================
|
|
||||||
//TODO: there should be better way to handle the exceptions during the early stage. At the moment they are spinning in infinite loop
|
|
||||||
|
|
||||||
PrePiVectorTable
|
|
||||||
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 PrePiCommonExceptionEntry
|
|
||||||
|
|
||||||
_DefaultUndefined
|
|
||||||
sub r1, LR, #4
|
|
||||||
cps #0x13 ; Switch to SVC for common stack
|
|
||||||
mov r0, #1
|
|
||||||
blx PrePiCommonExceptionEntry
|
|
||||||
|
|
||||||
_DefaultSWI
|
|
||||||
sub r1, LR, #4
|
|
||||||
cps #0x13 ; Switch to SVC for common stack
|
|
||||||
mov r0, #2
|
|
||||||
blx PrePiCommonExceptionEntry
|
|
||||||
|
|
||||||
_DefaultPrefetchAbort
|
|
||||||
sub r1, LR, #4
|
|
||||||
cps #0x13 ; Switch to SVC for common stack
|
|
||||||
mov r0, #3
|
|
||||||
blx PrePiCommonExceptionEntry
|
|
||||||
|
|
||||||
_DefaultDataAbort
|
|
||||||
sub r1, LR, #8
|
|
||||||
cps #0x13 ; Switch to SVC for common stack
|
|
||||||
mov r0, #4
|
|
||||||
blx PrePiCommonExceptionEntry
|
|
||||||
|
|
||||||
_DefaultReserved
|
|
||||||
mov r1, lr
|
|
||||||
cps #0x13 ; Switch to SVC for common stack
|
|
||||||
mov r0, #5
|
|
||||||
blx PrePiCommonExceptionEntry
|
|
||||||
|
|
||||||
_DefaultIrq
|
|
||||||
sub r1, LR, #4
|
|
||||||
cps #0x13 ; Switch to SVC for common stack
|
|
||||||
mov r0, #6
|
|
||||||
blx PrePiCommonExceptionEntry
|
|
||||||
|
|
||||||
_DefaultFiq
|
|
||||||
sub r1, LR, #4
|
|
||||||
cps #0x13 ; Switch to SVC for common stack
|
|
||||||
mov r0, #7
|
|
||||||
blx PrePiCommonExceptionEntry
|
|
||||||
|
|
||||||
END
|
|
|
@ -23,8 +23,6 @@
|
||||||
PrePi.c
|
PrePi.c
|
||||||
ModuleEntryPoint.S | GCC
|
ModuleEntryPoint.S | GCC
|
||||||
ModuleEntryPoint.asm | RVCT
|
ModuleEntryPoint.asm | RVCT
|
||||||
Exception.S | GCC
|
|
||||||
Exception.asm | RVCT
|
|
||||||
MainMPCore.c
|
MainMPCore.c
|
||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
|
|
|
@ -23,8 +23,6 @@
|
||||||
PrePi.c
|
PrePi.c
|
||||||
ModuleEntryPoint.S | GCC
|
ModuleEntryPoint.S | GCC
|
||||||
ModuleEntryPoint.asm | RVCT
|
ModuleEntryPoint.asm | RVCT
|
||||||
Exception.asm | RVCT
|
|
||||||
Exception.S | GCC
|
|
||||||
MainUniCore.c
|
MainUniCore.c
|
||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
|
|
|
@ -36,12 +36,6 @@
|
||||||
// Not used when PrePi in run in XIP mode
|
// Not used when PrePi in run in XIP mode
|
||||||
UINTN mGlobalVariableBase = 0;
|
UINTN mGlobalVariableBase = 0;
|
||||||
|
|
||||||
VOID
|
|
||||||
PrePiCommonExceptionEntry (
|
|
||||||
IN UINT32 Entry,
|
|
||||||
IN UINT32 LR
|
|
||||||
);
|
|
||||||
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
ExtractGuidedSectionLibConstructor (
|
ExtractGuidedSectionLibConstructor (
|
||||||
|
@ -256,10 +250,6 @@ CEntryPoint (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write VBAR - The Vector table must be 32-byte aligned
|
|
||||||
ASSERT (((UINT32)PrePiVectorTable & ((1 << 5)-1)) == 0);
|
|
||||||
ArmWriteVBar ((UINT32)PrePiVectorTable);
|
|
||||||
|
|
||||||
// If not primary Jump to Secondary Main
|
// If not primary Jump to Secondary Main
|
||||||
if (IS_PRIMARY_CORE(MpId)) {
|
if (IS_PRIMARY_CORE(MpId)) {
|
||||||
// Goto primary Main.
|
// Goto primary Main.
|
||||||
|
@ -272,44 +262,3 @@ CEntryPoint (
|
||||||
ASSERT (FALSE);
|
ASSERT (FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
|
||||||
PrePiCommonExceptionEntry (
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/** @file
|
/** @file
|
||||||
*
|
*
|
||||||
* Copyright (c) 2011, ARM Limited. All rights reserved.
|
* Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
*
|
*
|
||||||
* This program and the accompanying materials
|
* This program and the accompanying materials
|
||||||
* are licensed and made available under the terms and conditions of the BSD License
|
* are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -29,12 +29,6 @@
|
||||||
|
|
||||||
#define SerialPrint(txt) SerialPortWrite (txt, AsciiStrLen(txt)+1);
|
#define SerialPrint(txt) SerialPortWrite (txt, AsciiStrLen(txt)+1);
|
||||||
|
|
||||||
// Vector Table for PrePi Phase
|
|
||||||
VOID
|
|
||||||
PrePiVectorTable (
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
RETURN_STATUS
|
RETURN_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
TimerConstructor (
|
TimerConstructor (
|
||||||
|
|
Loading…
Reference in New Issue