From d451bba399687b4102459db5a447fc9abb8fdee1 Mon Sep 17 00:00:00 2001 From: Michael Kubacki Date: Mon, 27 Nov 2023 18:57:43 -0500 Subject: ArmPkg/ArmMmuLib: Use function pointer type mReplaceLiveEntryFunc is a function pointer but assigned as a VOID* pointer: mReplaceLiveEntryFunc = *(VOID **)GET_GUID_HOB_DATA (Hob); This leads to the Visual Studio warning: nonstandard extension, function/data pointer conversion in expression This change updates the assignment to avoid using a data pointer and defines a type for the function pointer to succinctly and accurately refer to the type when it is used in the library code. Signed-off-by: Michael Kubacki Reviewed-by: Ard Biesheuvel --- ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c | 13 +++--------- .../ArmMmuLib/AArch64/ArmMmuPeiLibConstructor.c | 7 ++++--- ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf | 2 ++ ArmPkg/Library/ArmMmuLib/ArmMmuLibInternal.h | 23 ++++++++++++++++++++++ ArmPkg/Library/ArmMmuLib/ArmMmuPeiLib.inf | 1 + 5 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuLibInternal.h diff --git a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c index 1e57e58997..9d9c623581 100644 --- a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c +++ b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c @@ -20,16 +20,9 @@ #include #include #include +#include "ArmMmuLibInternal.h" -STATIC -VOID ( - EFIAPI *mReplaceLiveEntryFunc - )( - IN UINT64 *Entry, - IN UINT64 Value, - IN UINT64 RegionStart, - IN BOOLEAN DisableMmu - ) = ArmReplaceLiveTranslationEntry; +STATIC ARM_REPLACE_LIVE_TRANSLATION_ENTRY mReplaceLiveEntryFunc = ArmReplaceLiveTranslationEntry; STATIC UINT64 @@ -742,7 +735,7 @@ ArmMmuBaseLibConstructor ( Hob = GetFirstGuidHob (&gArmMmuReplaceLiveTranslationEntryFuncGuid); if (Hob != NULL) { - mReplaceLiveEntryFunc = *(VOID **)GET_GUID_HOB_DATA (Hob); + mReplaceLiveEntryFunc = *(ARM_REPLACE_LIVE_TRANSLATION_ENTRY *)GET_GUID_HOB_DATA (Hob); } else { // // The ArmReplaceLiveTranslationEntry () helper function may be invoked diff --git a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuPeiLibConstructor.c b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuPeiLibConstructor.c index 5f50a605a3..a0c9facdea 100644 --- a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuPeiLibConstructor.c +++ b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuPeiLibConstructor.c @@ -13,6 +13,7 @@ #include #include #include +#include "ArmMmuLibInternal.h" EFI_STATUS EFIAPI @@ -21,9 +22,9 @@ ArmMmuPeiLibConstructor ( IN CONST EFI_PEI_SERVICES **PeiServices ) { - extern UINT32 ArmReplaceLiveTranslationEntrySize; - VOID *ArmReplaceLiveTranslationEntryFunc; - VOID *Hob; + extern UINT32 ArmReplaceLiveTranslationEntrySize; + ARM_REPLACE_LIVE_TRANSLATION_ENTRY ArmReplaceLiveTranslationEntryFunc; + VOID *Hob; EFI_FV_FILE_INFO FileInfo; EFI_STATUS Status; diff --git a/ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf b/ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf index 57cb71f90e..510511bd41 100644 --- a/ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf +++ b/ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf @@ -19,10 +19,12 @@ CONSTRUCTOR = ArmMmuBaseLibConstructor [Sources.AARCH64] + ArmMmuLibInternal.h AArch64/ArmMmuLibCore.c AArch64/ArmMmuLibReplaceEntry.S [Sources.ARM] + ArmMmuLibInternal.h Arm/ArmMmuLibConvert.c Arm/ArmMmuLibCore.c Arm/ArmMmuLibUpdate.c diff --git a/ArmPkg/Library/ArmMmuLib/ArmMmuLibInternal.h b/ArmPkg/Library/ArmMmuLib/ArmMmuLibInternal.h new file mode 100644 index 0000000000..8d3bec525d --- /dev/null +++ b/ArmPkg/Library/ArmMmuLib/ArmMmuLibInternal.h @@ -0,0 +1,23 @@ +/** @file + Arm MMU library instance internal header file. + + Copyright (C) Microsoft Corporation. All rights reserved. + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef ARM_MMU_LIB_INTERNAL_H_ +#define ARM_MMU_LIB_INTERNAL_H_ + +typedef +VOID( + EFIAPI *ARM_REPLACE_LIVE_TRANSLATION_ENTRY + )( + IN UINT64 *Entry, + IN UINT64 Value, + IN UINT64 RegionStart, + IN BOOLEAN DisableMmu + ); + +#endif diff --git a/ArmPkg/Library/ArmMmuLib/ArmMmuPeiLib.inf b/ArmPkg/Library/ArmMmuLib/ArmMmuPeiLib.inf index 02f874a1a9..37424628aa 100644 --- a/ArmPkg/Library/ArmMmuLib/ArmMmuPeiLib.inf +++ b/ArmPkg/Library/ArmMmuLib/ArmMmuPeiLib.inf @@ -17,6 +17,7 @@ CONSTRUCTOR = ArmMmuPeiLibConstructor [Sources.AARCH64] + ArmMmuLibInternal.h AArch64/ArmMmuLibCore.c AArch64/ArmMmuPeiLibConstructor.c AArch64/ArmMmuLibReplaceEntry.S -- cgit v1.2.3