]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuPeiLibConstructor.c
ArmPkg: Change use of EFI_D_* to DEBUG_*
[mirror_edk2.git] / ArmPkg / Library / ArmMmuLib / AArch64 / ArmMmuPeiLibConstructor.c
CommitLineData
e3fe63dd
PG
1/** @file\r
2\r
3 Copyright (c) 2016, Linaro Limited. All rights reserved.\r
4 Copyright (c) 2021, Arm Limited. All rights reserved.<BR>\r
5\r
6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
7*/\r
87bcfe13
AB
8\r
9#include <Base.h>\r
10\r
11#include <Library/ArmLib.h>\r
12#include <Library/ArmMmuLib.h>\r
13#include <Library/CacheMaintenanceLib.h>\r
14#include <Library/DebugLib.h>\r
15\r
16EFI_STATUS\r
17EFIAPI\r
18ArmMmuPeiLibConstructor (\r
19 IN EFI_PEI_FILE_HANDLE FileHandle,\r
20 IN CONST EFI_PEI_SERVICES **PeiServices\r
21 )\r
22{\r
23 extern UINT32 ArmReplaceLiveTranslationEntrySize;\r
24\r
25 EFI_FV_FILE_INFO FileInfo;\r
26 EFI_STATUS Status;\r
27\r
28 ASSERT (FileHandle != NULL);\r
29\r
30 Status = (*PeiServices)->FfsGetFileInfo (FileHandle, &FileInfo);\r
31 ASSERT_EFI_ERROR (Status);\r
32\r
33 //\r
34 // Some platforms do not cope very well with cache maintenance being\r
35 // performed on regions backed by NOR flash. Since the firmware image\r
36 // can be assumed to be clean to the PoC when running XIP, even when PEI\r
37 // is executing from DRAM, we only need to perform the cache maintenance\r
38 // when not executing in place.\r
39 //\r
40 if ((UINTN)FileInfo.Buffer <= (UINTN)ArmReplaceLiveTranslationEntry &&\r
41 ((UINTN)FileInfo.Buffer + FileInfo.BufferSize >=\r
42 (UINTN)ArmReplaceLiveTranslationEntry + ArmReplaceLiveTranslationEntrySize)) {\r
a4a582e1 43 DEBUG ((DEBUG_INFO, "ArmMmuLib: skipping cache maintenance on XIP PEIM\n"));\r
87bcfe13 44 } else {\r
a4a582e1 45 DEBUG ((DEBUG_INFO, "ArmMmuLib: performing cache maintenance on shadowed PEIM\n"));\r
87bcfe13
AB
46 //\r
47 // The ArmReplaceLiveTranslationEntry () helper function may be invoked\r
48 // with the MMU off so we have to ensure that it gets cleaned to the PoC\r
49 //\r
264eccb5 50 WriteBackDataCacheRange ((VOID *)(UINTN)ArmReplaceLiveTranslationEntry,\r
87bcfe13
AB
51 ArmReplaceLiveTranslationEntrySize);\r
52 }\r
53\r
54 return RETURN_SUCCESS;\r
55}\r