]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Include/Chipset/AArch64.h
ArmPkg/AArch64: Added ARM_HCR_TSC definition
[mirror_edk2.git] / ArmPkg / Include / Chipset / AArch64.h
CommitLineData
25402f5d
HL
1/** @file\r
2\r
3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
b7dd4dbd 4 Copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>\r
25402f5d
HL
5\r
6 This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#ifndef __AARCH64_H__\r
17#define __AARCH64_H__\r
18\r
19#include <Chipset/AArch64Mmu.h>\r
20#include <Chipset/ArmArchTimer.h>\r
21\r
22// ARM Interrupt ID in Exception Table\r
23#define ARM_ARCH_EXCEPTION_IRQ EXCEPT_AARCH64_IRQ\r
24\r
25// CPACR - Coprocessor Access Control Register definitions\r
26#define CPACR_TTA_EN (1UL << 28)\r
27#define CPACR_FPEN_EL1 (1UL << 20)\r
28#define CPACR_FPEN_FULL (3UL << 20)\r
29#define CPACR_CP_FULL_ACCESS 0x300000\r
30\r
31// Coprocessor Trap Register (CPTR)\r
32#define AARCH64_CPTR_TFP (1 << 10)\r
33\r
34// ID_AA64PFR0 - AArch64 Processor Feature Register 0 definitions\r
35#define AARCH64_PFR0_FP (0xF << 16)\r
27331bff 36#define AARCH64_PFR0_GIC (0xF << 24)\r
25402f5d 37\r
25402f5d
HL
38// SCR - Secure Configuration Register definitions\r
39#define SCR_NS (1 << 0)\r
40#define SCR_IRQ (1 << 1)\r
41#define SCR_FIQ (1 << 2)\r
42#define SCR_EA (1 << 3)\r
43#define SCR_FW (1 << 4)\r
44#define SCR_AW (1 << 5)\r
45\r
46// MIDR - Main ID Register definitions\r
47#define ARM_CPU_TYPE_MASK 0xFFF\r
48#define ARM_CPU_TYPE_AEMv8 0xD0F\r
b7dd4dbd
OM
49#define ARM_CPU_TYPE_A53 0xD03\r
50#define ARM_CPU_TYPE_A57 0xD07\r
25402f5d
HL
51#define ARM_CPU_TYPE_A15 0xC0F\r
52#define ARM_CPU_TYPE_A9 0xC09\r
53#define ARM_CPU_TYPE_A5 0xC05\r
54\r
b7dd4dbd
OM
55#define ARM_CPU_REV_MASK ((0xF << 20) | (0xF) )\r
56#define ARM_CPU_REV(rn, pn) ((((rn) & 0xF) << 20) | ((pn) & 0xF))\r
57\r
25402f5d 58// Hypervisor Configuration Register\r
6a44c227
OM
59#define ARM_HCR_FMO BIT3\r
60#define ARM_HCR_IMO BIT4\r
61#define ARM_HCR_AMO BIT5\r
62#define ARM_HCR_TSC BIT19\r
63#define ARM_HCR_TGE BIT27\r
25402f5d
HL
64\r
65// AArch64 Exception Level\r
66#define AARCH64_EL3 0xC\r
67#define AARCH64_EL2 0x8\r
68#define AARCH64_EL1 0x4\r
69\r
7e119c67
OM
70// Saved Program Status Register definitions\r
71#define SPSR_A BIT8\r
72#define SPSR_I BIT7\r
73#define SPSR_F BIT6\r
74\r
75#define SPSR_AARCH32 BIT4\r
76\r
77#define SPSR_AARCH32_MODE_USER 0x0\r
78#define SPSR_AARCH32_MODE_FIQ 0x1\r
79#define SPSR_AARCH32_MODE_IRQ 0x2\r
80#define SPSR_AARCH32_MODE_SVC 0x3\r
81#define SPSR_AARCH32_MODE_ABORT 0x7\r
82#define SPSR_AARCH32_MODE_UNDEF 0xB\r
83#define SPSR_AARCH32_MODE_SYS 0xF\r
84\r
85// Counter-timer Hypervisor Control register definitions\r
86#define CNTHCTL_EL2_EL1PCTEN BIT0\r
87#define CNTHCTL_EL2_EL1PCEN BIT1\r
88\r
25402f5d
HL
89#define ARM_VECTOR_TABLE_ALIGNMENT ((1 << 11)-1)\r
90\r
91VOID\r
92EFIAPI\r
93ArmEnableSWPInstruction (\r
94 VOID\r
95 );\r
96\r
97UINTN\r
98EFIAPI\r
99ArmReadCbar (\r
100 VOID\r
101 );\r
102\r
103UINTN\r
104EFIAPI\r
105ArmReadTpidrurw (\r
106 VOID\r
107 );\r
108\r
109VOID\r
110EFIAPI\r
111ArmWriteTpidrurw (\r
112 UINTN Value\r
113 );\r
114\r
25402f5d
HL
115UINTN\r
116EFIAPI\r
117ArmGetTCR (\r
118 VOID\r
119 );\r
120\r
121VOID\r
122EFIAPI\r
123ArmSetTCR (\r
124 UINTN Value\r
125 );\r
126\r
127UINTN\r
128EFIAPI\r
129ArmGetMAIR (\r
130 VOID\r
131 );\r
132\r
133VOID\r
134EFIAPI\r
135ArmSetMAIR (\r
136 UINTN Value\r
137 );\r
138\r
139VOID\r
140EFIAPI\r
141ArmDisableAlignmentCheck (\r
142 VOID\r
143 );\r
144\r
25402f5d
HL
145VOID\r
146EFIAPI\r
147ArmEnableAlignmentCheck (\r
148 VOID\r
149 );\r
150\r
151VOID\r
152EFIAPI\r
153ArmDisableAllExceptions (\r
154 VOID\r
155 );\r
156\r
157VOID\r
158ArmWriteHcr (\r
159 IN UINTN Hcr\r
160 );\r
161\r
162UINTN\r
163ArmReadCurrentEL (\r
164 VOID\r
165 );\r
166\r
167UINT64\r
168PageAttributeToGcdAttribute (\r
169 IN UINT64 PageAttributes\r
170 );\r
171\r
172UINT64\r
173GcdAttributeToPageAttribute (\r
174 IN UINT64 GcdAttributes\r
175 );\r
176\r
d6dc67ba
OM
177UINTN\r
178ArmWriteCptr (\r
179 IN UINT64 Cptr\r
180 );\r
181\r
25402f5d 182#endif // __AARCH64_H__\r