]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/ArmLib/ArmLib.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[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
178dbd44 4 Copyright (c) 2011 - 2021, 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
429309e0 19 IN UINT32 Bits\r
bd6b9799 20 )\r
21{\r
429309e0 22 ArmWriteAuxCr (ArmReadAuxCr () | Bits);\r
bd6b9799 23}\r
24\r
836c3500 25VOID\r
26EFIAPI\r
27ArmUnsetAuxCrBit (\r
429309e0 28 IN UINT32 Bits\r
836c3500 29 )\r
30{\r
429309e0 31 ArmWriteAuxCr (ArmReadAuxCr () & ~Bits);\r
836c3500 32}\r
52d44f77
OM
33\r
34//\r
35// Helper functions for accessing CPUACTLR\r
36//\r
37\r
38VOID\r
39EFIAPI\r
40ArmSetCpuActlrBit (\r
429309e0 41 IN UINTN Bits\r
52d44f77
OM
42 )\r
43{\r
178dbd44 44 ArmWriteCpuActlr (ArmReadCpuActlr () | Bits);\r
52d44f77
OM
45}\r
46\r
47VOID\r
48EFIAPI\r
49ArmUnsetCpuActlrBit (\r
429309e0 50 IN UINTN Bits\r
52d44f77
OM
51 )\r
52{\r
178dbd44 53 ArmWriteCpuActlr (ArmReadCpuActlr () & ~Bits);\r
52d44f77 54}\r
fbf658eb
AB
55\r
56UINTN\r
57EFIAPI\r
58ArmDataCacheLineLength (\r
59 VOID\r
60 )\r
61{\r
62 return 4 << ((ArmCacheInfo () >> 16) & 0xf); // CTR_EL0.DminLine\r
63}\r
64\r
65UINTN\r
66EFIAPI\r
67ArmInstructionCacheLineLength (\r
68 VOID\r
69 )\r
70{\r
71 return 4 << (ArmCacheInfo () & 0xf); // CTR_EL0.IminLine\r
72}\r
c653fc2a
AB
73\r
74UINTN\r
75EFIAPI\r
76ArmCacheWritebackGranule (\r
77 VOID\r
78 )\r
79{\r
429309e0 80 UINTN CWG;\r
c653fc2a
AB
81\r
82 CWG = (ArmCacheInfo () >> 24) & 0xf; // CTR_EL0.CWG\r
83\r
84 if (CWG == 0) {\r
85 return SIZE_2KB;\r
86 }\r
87\r
88 return 4 << CWG;\r
89}\r