]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/ArmLib/ArmLib.c
ArmPkg/ArmLib: add ArmHasGicSystemRegisters () helper function
[mirror_edk2.git] / ArmPkg / Library / ArmLib / ArmLib.c
CommitLineData
2ef2b01e
A
1/** @file\r
2\r
d6ebcab7 3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
52d44f77 4 Copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>\r
3402aac7 5\r
4059386c 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
2ef2b01e
A
7\r
8**/\r
9\r
10#include <Base.h>\r
11\r
12#include <Library/ArmLib.h>\r
2ef2b01e
A
13\r
14#include "ArmLibPrivate.h"\r
15\r
bd6b9799 16VOID\r
17EFIAPI\r
18ArmSetAuxCrBit (\r
19 IN UINT32 Bits\r
20 )\r
21{\r
22 UINT32 val = ArmReadAuxCr();\r
23 val |= Bits;\r
24 ArmWriteAuxCr(val);\r
25}\r
26\r
836c3500 27VOID\r
28EFIAPI\r
29ArmUnsetAuxCrBit (\r
30 IN UINT32 Bits\r
31 )\r
32{\r
33 UINT32 val = ArmReadAuxCr();\r
34 val &= ~Bits;\r
35 ArmWriteAuxCr(val);\r
36}\r
52d44f77
OM
37\r
38//\r
39// Helper functions for accessing CPUACTLR\r
40//\r
41\r
42VOID\r
43EFIAPI\r
44ArmSetCpuActlrBit (\r
45 IN UINTN Bits\r
46 )\r
47{\r
48 UINTN Value;\r
49 Value = ArmReadCpuActlr ();\r
50 Value |= Bits;\r
51 ArmWriteCpuActlr (Value);\r
52}\r
53\r
54VOID\r
55EFIAPI\r
56ArmUnsetCpuActlrBit (\r
57 IN UINTN Bits\r
58 )\r
59{\r
60 UINTN Value;\r
61 Value = ArmReadCpuActlr ();\r
62 Value &= ~Bits;\r
63 ArmWriteCpuActlr (Value);\r
64}\r
fbf658eb
AB
65\r
66UINTN\r
67EFIAPI\r
68ArmDataCacheLineLength (\r
69 VOID\r
70 )\r
71{\r
72 return 4 << ((ArmCacheInfo () >> 16) & 0xf); // CTR_EL0.DminLine\r
73}\r
74\r
75UINTN\r
76EFIAPI\r
77ArmInstructionCacheLineLength (\r
78 VOID\r
79 )\r
80{\r
81 return 4 << (ArmCacheInfo () & 0xf); // CTR_EL0.IminLine\r
82}\r
c653fc2a
AB
83\r
84UINTN\r
85EFIAPI\r
86ArmCacheWritebackGranule (\r
87 VOID\r
88 )\r
89{\r
90 UINTN CWG;\r
91\r
92 CWG = (ArmCacheInfo () >> 24) & 0xf; // CTR_EL0.CWG\r
93\r
94 if (CWG == 0) {\r
95 return SIZE_2KB;\r
96 }\r
97\r
98 return 4 << CWG;\r
99}\r