]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Include/Chipset/AArch64.h
ArmPkg/ArmLib: add ArmReadHcr to enable read-modify-write of HCR
[mirror_edk2.git] / ArmPkg / Include / Chipset / AArch64.h
index 47993ec9fc3b9fbba1c968b275b983974fb4950d..aa6a7e0a00dc9f89e58bce48e8faf842c50613fe 100644 (file)
 \r
 #define ARM_VECTOR_TABLE_ALIGNMENT ((1 << 11)-1)\r
 \r
+// Vector table offset definitions\r
+#define ARM_VECTOR_CUR_SP0_SYNC 0x000\r
+#define ARM_VECTOR_CUR_SP0_IRQ  0x080\r
+#define ARM_VECTOR_CUR_SP0_FIQ  0x100\r
+#define ARM_VECTOR_CUR_SP0_SERR 0x180\r
+\r
+#define ARM_VECTOR_CUR_SPx_SYNC 0x200\r
+#define ARM_VECTOR_CUR_SPx_IRQ  0x280\r
+#define ARM_VECTOR_CUR_SPx_FIQ  0x300\r
+#define ARM_VECTOR_CUR_SPx_SERR 0x380\r
+\r
+#define ARM_VECTOR_LOW_A64_SYNC 0x400\r
+#define ARM_VECTOR_LOW_A64_IRQ  0x480\r
+#define ARM_VECTOR_LOW_A64_FIQ  0x500\r
+#define ARM_VECTOR_LOW_A64_SERR 0x580\r
+\r
+#define ARM_VECTOR_LOW_A32_SYNC 0x600\r
+#define ARM_VECTOR_LOW_A32_IRQ  0x680\r
+#define ARM_VECTOR_LOW_A32_FIQ  0x700\r
+#define ARM_VECTOR_LOW_A32_SERR 0x780\r
+\r
+#define VECTOR_BASE(tbl)          \\r
+  .section .text.##tbl##,"ax";    \\r
+  .align 11;                      \\r
+  .org 0x0;                       \\r
+  GCC_ASM_EXPORT(tbl);            \\r
+  ASM_PFX(tbl):                   \\r
+\r
+#define VECTOR_ENTRY(tbl, off)    \\r
+  .org off\r
+\r
+#define VECTOR_END(tbl)           \\r
+  .org 0x800;                     \\r
+  .previous\r
+\r
 VOID\r
 EFIAPI\r
 ArmEnableSWPInstruction (\r
@@ -168,6 +203,11 @@ ArmWriteHcr (
   IN UINTN Hcr\r
   );\r
 \r
+UINTN\r
+ArmReadHcr (\r
+  VOID\r
+  );\r
+\r
 UINTN\r
 ArmReadCurrentEL (\r
   VOID\r
@@ -178,11 +218,6 @@ PageAttributeToGcdAttribute (
   IN UINT64 PageAttributes\r
   );\r
 \r
-UINT64\r
-GcdAttributeToPageAttribute (\r
-  IN UINT64 GcdAttributes\r
-  );\r
-\r
 UINTN\r
 ArmWriteCptr (\r
   IN  UINT64 Cptr\r