mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-27 07:34:06 +02:00
ArmPkg|EmbeddedPkg: make PcdCpuVectorBaseAddress 64 bits wide
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Leo Duran <leo.duran@amd.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
This commit is contained in:
parent
91673dfdfe
commit
f0bbcdf80d
@ -60,7 +60,7 @@
|
|||||||
# On ARM Architecture with the Security Extension, the address for the
|
# On ARM Architecture with the Security Extension, the address for the
|
||||||
# Vector Table can be mapped anywhere in the memory map. It means we can
|
# Vector Table can be mapped anywhere in the memory map. It means we can
|
||||||
# point the Exception Vector Table to its location in CpuDxe.
|
# point the Exception Vector Table to its location in CpuDxe.
|
||||||
# By default we copy the Vector Table at PcdGet32(PcdCpuVectorBaseAddress)
|
# By default we copy the Vector Table at PcdGet64(PcdCpuVectorBaseAddress)
|
||||||
gArmTokenSpaceGuid.PcdRelocateVectorTable|TRUE|BOOLEAN|0x00000022
|
gArmTokenSpaceGuid.PcdRelocateVectorTable|TRUE|BOOLEAN|0x00000022
|
||||||
# Set this PCD to TRUE if the Exception Vector is changed to add debugger support before
|
# Set this PCD to TRUE if the Exception Vector is changed to add debugger support before
|
||||||
# it has been configured by the CPU DXE
|
# it has been configured by the CPU DXE
|
||||||
@ -90,7 +90,7 @@
|
|||||||
# This PCD will free the unallocated buffers if their size reach this threshold.
|
# This PCD will free the unallocated buffers if their size reach this threshold.
|
||||||
# We set the default value to 512MB.
|
# We set the default value to 512MB.
|
||||||
gArmTokenSpaceGuid.PcdArmFreeUncachedMemorySizeThreshold|0x20000000|UINT64|0x00000003
|
gArmTokenSpaceGuid.PcdArmFreeUncachedMemorySizeThreshold|0x20000000|UINT64|0x00000003
|
||||||
gArmTokenSpaceGuid.PcdCpuVectorBaseAddress|0xffff0000|UINT32|0x00000004
|
gArmTokenSpaceGuid.PcdCpuVectorBaseAddress|0xffff0000|UINT64|0x00000004
|
||||||
gArmTokenSpaceGuid.PcdCpuResetAddress|0x00000000|UINT32|0x00000005
|
gArmTokenSpaceGuid.PcdCpuResetAddress|0x00000000|UINT32|0x00000005
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -103,7 +103,7 @@ InitializeCpuExceptionHandlers(
|
|||||||
// if we are requested to copy exceptin handlers to another location
|
// if we are requested to copy exceptin handlers to another location
|
||||||
if (gArmRelocateVectorTable) {
|
if (gArmRelocateVectorTable) {
|
||||||
|
|
||||||
VectorBase = PcdGet32(PcdCpuVectorBaseAddress);
|
VectorBase = PcdGet64(PcdCpuVectorBaseAddress);
|
||||||
Status = CopyExceptionHandlers(VectorBase);
|
Status = CopyExceptionHandlers(VectorBase);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -118,7 +118,7 @@ InitializeCpuExceptionHandlers(
|
|||||||
// for encapsulated FVs.
|
// for encapsulated FVs.
|
||||||
ASSERT(((UINTN)ExceptionHandlersStart & gExceptionVectorAlignmentMask) == 0);
|
ASSERT(((UINTN)ExceptionHandlersStart & gExceptionVectorAlignmentMask) == 0);
|
||||||
|
|
||||||
// We do not copy the Exception Table at PcdGet32(PcdCpuVectorBaseAddress). We just set Vector
|
// We do not copy the Exception Table at PcdGet64(PcdCpuVectorBaseAddress). We just set Vector
|
||||||
// Base Address to point into CpuDxe code.
|
// Base Address to point into CpuDxe code.
|
||||||
VectorBase = (UINTN)ExceptionHandlersStart;
|
VectorBase = (UINTN)ExceptionHandlersStart;
|
||||||
|
|
||||||
|
@ -481,7 +481,7 @@ InFiqCrack (
|
|||||||
IN UINT32 PC
|
IN UINT32 PC
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UINT32 VectorBase = PcdGet32 (PcdCpuVectorBaseAddress);
|
UINT64 VectorBase = PcdGet64 (PcdCpuVectorBaseAddress);
|
||||||
UINT32 Length = (UINTN)ExceptionHandlersEnd - (UINTN)ExceptionHandlersStart;
|
UINT32 Length = (UINTN)ExceptionHandlersEnd - (UINTN)ExceptionHandlersStart;
|
||||||
|
|
||||||
if ((PC >= VectorBase) && (PC <= (VectorBase + Length))) {
|
if ((PC >= VectorBase) && (PC <= (VectorBase + Length))) {
|
||||||
@ -626,7 +626,7 @@ InitializeDebugAgent (
|
|||||||
UINTN Offset;
|
UINTN Offset;
|
||||||
UINTN Length;
|
UINTN Length;
|
||||||
BOOLEAN IrqEnabled;
|
BOOLEAN IrqEnabled;
|
||||||
UINT32 *VectorBase;
|
UINT64 *VectorBase;
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -644,7 +644,7 @@ InitializeDebugAgent (
|
|||||||
//
|
//
|
||||||
// Reserve space for the exception handlers
|
// Reserve space for the exception handlers
|
||||||
//
|
//
|
||||||
VectorBase = (UINT32 *)(UINTN)PcdGet32 (PcdCpuVectorBaseAddress);
|
VectorBase = (UINT64 *)(UINTN)PcdGet64 (PcdCpuVectorBaseAddress);
|
||||||
|
|
||||||
|
|
||||||
// Copy our assembly code into the page that contains the exception vectors.
|
// Copy our assembly code into the page that contains the exception vectors.
|
||||||
@ -657,7 +657,7 @@ InitializeDebugAgent (
|
|||||||
*(UINTN *) (((UINT8 *)VectorBase) + Offset) = (UINTN)AsmCommonExceptionEntry;
|
*(UINTN *) (((UINT8 *)VectorBase) + Offset) = (UINTN)AsmCommonExceptionEntry;
|
||||||
|
|
||||||
// Flush Caches since we updated executable stuff
|
// Flush Caches since we updated executable stuff
|
||||||
InvalidateInstructionCacheRange ((VOID *)PcdGet32(PcdCpuVectorBaseAddress), Length);
|
InvalidateInstructionCacheRange ((VOID *)PcdGet64(PcdCpuVectorBaseAddress), Length);
|
||||||
|
|
||||||
// setup a timer so gdb can break in via ctrl-c
|
// setup a timer so gdb can break in via ctrl-c
|
||||||
DebugAgentTimerIntialize ();
|
DebugAgentTimerIntialize ();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user