]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Include/Chipset/AArch64.h
MdeMdeModulePkg/Scsi: Enlarge SCSI cmd timeout to a more reasonable experience value...
[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
4 Copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.<BR>\r
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
36\r
37// NSACR - Non-Secure Access Control Register definitions\r
38#define NSACR_CP(cp) ((1 << (cp)) & 0x3FFF)\r
39#define NSACR_NSD32DIS (1 << 14)\r
40#define NSACR_NSASEDIS (1 << 15)\r
41#define NSACR_PLE (1 << 16)\r
42#define NSACR_TL (1 << 17)\r
43#define NSACR_NS_SMP (1 << 18)\r
44#define NSACR_RFR (1 << 19)\r
45\r
46// SCR - Secure Configuration Register definitions\r
47#define SCR_NS (1 << 0)\r
48#define SCR_IRQ (1 << 1)\r
49#define SCR_FIQ (1 << 2)\r
50#define SCR_EA (1 << 3)\r
51#define SCR_FW (1 << 4)\r
52#define SCR_AW (1 << 5)\r
53\r
54// MIDR - Main ID Register definitions\r
55#define ARM_CPU_TYPE_MASK 0xFFF\r
56#define ARM_CPU_TYPE_AEMv8 0xD0F\r
57#define ARM_CPU_TYPE_A15 0xC0F\r
58#define ARM_CPU_TYPE_A9 0xC09\r
59#define ARM_CPU_TYPE_A5 0xC05\r
60\r
61// Hypervisor Configuration Register\r
62#define ARM_HCR_FMO BIT3\r
63#define ARM_HCR_IMO BIT4\r
64#define ARM_HCR_AMO BIT5\r
65#define ARM_HCR_TGE BIT27\r
66\r
67// AArch64 Exception Level\r
68#define AARCH64_EL3 0xC\r
69#define AARCH64_EL2 0x8\r
70#define AARCH64_EL1 0x4\r
71\r
72#define ARM_VECTOR_TABLE_ALIGNMENT ((1 << 11)-1)\r
73\r
74VOID\r
75EFIAPI\r
76ArmEnableSWPInstruction (\r
77 VOID\r
78 );\r
79\r
80UINTN\r
81EFIAPI\r
82ArmReadCbar (\r
83 VOID\r
84 );\r
85\r
86UINTN\r
87EFIAPI\r
88ArmReadTpidrurw (\r
89 VOID\r
90 );\r
91\r
92VOID\r
93EFIAPI\r
94ArmWriteTpidrurw (\r
95 UINTN Value\r
96 );\r
97\r
98UINTN\r
99EFIAPI\r
100ArmIsArchTimerImplemented (\r
101 VOID\r
102 );\r
103\r
104UINTN\r
105EFIAPI\r
106ArmReadIdPfr0 (\r
107 VOID\r
108 );\r
109\r
110UINTN\r
111EFIAPI\r
112ArmReadIdPfr1 (\r
113 VOID\r
114 );\r
115\r
116UINTN\r
117EFIAPI\r
118ArmGetTCR (\r
119 VOID\r
120 );\r
121\r
122VOID\r
123EFIAPI\r
124ArmSetTCR (\r
125 UINTN Value\r
126 );\r
127\r
128UINTN\r
129EFIAPI\r
130ArmGetMAIR (\r
131 VOID\r
132 );\r
133\r
134VOID\r
135EFIAPI\r
136ArmSetMAIR (\r
137 UINTN Value\r
138 );\r
139\r
140VOID\r
141EFIAPI\r
142ArmDisableAlignmentCheck (\r
143 VOID\r
144 );\r
145\r
146\r
147VOID\r
148EFIAPI\r
149ArmEnableAlignmentCheck (\r
150 VOID\r
151 );\r
152\r
153VOID\r
154EFIAPI\r
155ArmDisableAllExceptions (\r
156 VOID\r
157 );\r
158\r
159VOID\r
160ArmWriteHcr (\r
161 IN UINTN Hcr\r
162 );\r
163\r
164UINTN\r
165ArmReadCurrentEL (\r
166 VOID\r
167 );\r
168\r
169UINT64\r
170PageAttributeToGcdAttribute (\r
171 IN UINT64 PageAttributes\r
172 );\r
173\r
174UINT64\r
175GcdAttributeToPageAttribute (\r
176 IN UINT64 GcdAttributes\r
177 );\r
178\r
179#endif // __AARCH64_H__\r