MdePkg: Added ARM Aarch64 architecture support
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Harry Liebel <Harry.Liebel@arm.com> Signed-off-by: Olivier Martin <olivier.martin@arm.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14513 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
committed by
oliviermartin
parent
fed549d7be
commit
b4319afbda
@@ -1,11 +1,13 @@
|
||||
/** @file
|
||||
DebugSupport protocol and supporting definitions as defined in the UEFI2.0
|
||||
DebugSupport protocol and supporting definitions as defined in the UEFI2.4
|
||||
specification.
|
||||
|
||||
The DebugSupport protocol is used by source level debuggers to abstract the
|
||||
processor and handle context save and restore operations.
|
||||
|
||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.<BR>
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
@@ -517,6 +519,97 @@ typedef struct {
|
||||
UINT32 IFAR;
|
||||
} EFI_SYSTEM_CONTEXT_ARM;
|
||||
|
||||
|
||||
///
|
||||
/// AARCH64 processor exception types.
|
||||
///
|
||||
#define EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS 0
|
||||
#define EXCEPT_AARCH64_IRQ 1
|
||||
#define EXCEPT_AARCH64_FIQ 2
|
||||
#define EXCEPT_AARCH64_SERROR 3
|
||||
|
||||
///
|
||||
/// For coding convenience, define the maximum valid ARM exception.
|
||||
///
|
||||
#define MAX_AARCH64_EXCEPTION EXCEPT_AARCH64_SERROR
|
||||
|
||||
typedef struct {
|
||||
// General Purpose Registers
|
||||
UINT64 X0;
|
||||
UINT64 X1;
|
||||
UINT64 X2;
|
||||
UINT64 X3;
|
||||
UINT64 X4;
|
||||
UINT64 X5;
|
||||
UINT64 X6;
|
||||
UINT64 X7;
|
||||
UINT64 X8;
|
||||
UINT64 X9;
|
||||
UINT64 X10;
|
||||
UINT64 X11;
|
||||
UINT64 X12;
|
||||
UINT64 X13;
|
||||
UINT64 X14;
|
||||
UINT64 X15;
|
||||
UINT64 X16;
|
||||
UINT64 X17;
|
||||
UINT64 X18;
|
||||
UINT64 X19;
|
||||
UINT64 X20;
|
||||
UINT64 X21;
|
||||
UINT64 X22;
|
||||
UINT64 X23;
|
||||
UINT64 X24;
|
||||
UINT64 X25;
|
||||
UINT64 X26;
|
||||
UINT64 X27;
|
||||
UINT64 X28;
|
||||
UINT64 FP; // x29 - Frame pointer
|
||||
UINT64 LR; // x30 - Link Register
|
||||
UINT64 SP; // x31 - Stack pointer
|
||||
|
||||
// FP/SIMD Registers
|
||||
UINT64 V0[2];
|
||||
UINT64 V1[2];
|
||||
UINT64 V2[2];
|
||||
UINT64 V3[2];
|
||||
UINT64 V4[2];
|
||||
UINT64 V5[2];
|
||||
UINT64 V6[2];
|
||||
UINT64 V7[2];
|
||||
UINT64 V8[2];
|
||||
UINT64 V9[2];
|
||||
UINT64 V10[2];
|
||||
UINT64 V11[2];
|
||||
UINT64 V12[2];
|
||||
UINT64 V13[2];
|
||||
UINT64 V14[2];
|
||||
UINT64 V15[2];
|
||||
UINT64 V16[2];
|
||||
UINT64 V17[2];
|
||||
UINT64 V18[2];
|
||||
UINT64 V19[2];
|
||||
UINT64 V20[2];
|
||||
UINT64 V21[2];
|
||||
UINT64 V22[2];
|
||||
UINT64 V23[2];
|
||||
UINT64 V24[2];
|
||||
UINT64 V25[2];
|
||||
UINT64 V26[2];
|
||||
UINT64 V27[2];
|
||||
UINT64 V28[2];
|
||||
UINT64 V29[2];
|
||||
UINT64 V30[2];
|
||||
UINT64 V31[2];
|
||||
|
||||
UINT64 ELR; // Exception Link Register
|
||||
UINT64 SPSR; // Saved Processor Status Register
|
||||
UINT64 FPSR; // Floating Point Status Register
|
||||
UINT64 ESR; // Exception syndrome register
|
||||
UINT64 FAR; // Fault Address Register
|
||||
} EFI_SYSTEM_CONTEXT_AARCH64;
|
||||
|
||||
|
||||
///
|
||||
/// Universal EFI_SYSTEM_CONTEXT definition.
|
||||
///
|
||||
@@ -526,6 +619,7 @@ typedef union {
|
||||
EFI_SYSTEM_CONTEXT_X64 *SystemContextX64;
|
||||
EFI_SYSTEM_CONTEXT_IPF *SystemContextIpf;
|
||||
EFI_SYSTEM_CONTEXT_ARM *SystemContextArm;
|
||||
EFI_SYSTEM_CONTEXT_AARCH64 *SystemContextAArch64;
|
||||
} EFI_SYSTEM_CONTEXT;
|
||||
|
||||
//
|
||||
@@ -566,7 +660,8 @@ typedef enum {
|
||||
IsaX64 = IMAGE_FILE_MACHINE_X64, ///< 0x8664
|
||||
IsaIpf = IMAGE_FILE_MACHINE_IA64, ///< 0x0200
|
||||
IsaEbc = IMAGE_FILE_MACHINE_EBC, ///< 0x0EBC
|
||||
IsaArm = IMAGE_FILE_MACHINE_ARMTHUMB_MIXED ///< 0x01c2
|
||||
IsaArm = IMAGE_FILE_MACHINE_ARMTHUMB_MIXED, ///< 0x01c2
|
||||
IsaAArch64 = IMAGE_FILE_MACHINE_ARM64 ///< 0xAA64
|
||||
} EFI_INSTRUCTION_SET_ARCHITECTURE;
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user