From 7f308c22c51febc42d9de5567c65894c53ff301a Mon Sep 17 00:00:00 2001 From: Mikhail Krichanov Date: Mon, 2 Sep 2024 19:50:25 +0300 Subject: [PATCH] Ring3: Fixed ArmPkg and ArmVirtPkg compilation. --- .../Drivers/ArmCrashDumpDxe/ArmCrashDumpDxe.c | 2 +- .../Library/ArmLib/AArch64/AArch64Support.S | 10 ++++++ ArmPkg/Library/ArmLib/Arm/ArmLibSupport.S | 10 ++++++ .../AArch64/DefaultExceptionHandler.c | 7 +--- .../DefaultExceptionHandlerLib.inf | 1 + .../Dxe/SysCall/AARCH64/CoreBootServices.S | 22 ------------ .../Core/Dxe/SysCall/AARCH64/InitializeMsr.c | 12 ------- .../Core/Dxe/SysCall/ARM/CoreBootServices.S | 24 ------------- .../Core/Dxe/SysCall/ARM/InitializeMsr.c | 12 ------- MdePkg/Include/Library/ArmLib.h | 34 +++++++++++++------ 10 files changed, 46 insertions(+), 88 deletions(-) diff --git a/ArmPkg/Drivers/ArmCrashDumpDxe/ArmCrashDumpDxe.c b/ArmPkg/Drivers/ArmCrashDumpDxe/ArmCrashDumpDxe.c index 8bb8155590..ef1be216e4 100644 --- a/ArmPkg/Drivers/ArmCrashDumpDxe/ArmCrashDumpDxe.c +++ b/ArmPkg/Drivers/ArmCrashDumpDxe/ArmCrashDumpDxe.c @@ -29,6 +29,6 @@ ArmCrashDumpDxeInitialize ( return mCpu->RegisterInterruptHandler ( mCpu, EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS, - &DefaultExceptionHandler + (EFI_CPU_INTERRUPT_HANDLER)&DefaultExceptionHandler ); } diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S index 66daa27fb4..e4a10c2526 100644 --- a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S +++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S @@ -398,4 +398,14 @@ ASM_FUNC(ArmReadIdAA64Pfr1) mrs x0, ID_AA64PFR1_EL1 ret +.cpu cortex-a76 + +ASM_FUNC(ArmSetPan) + msr pan, #1 + ret + +ASM_FUNC(ArmClearPan) + msr pan, #0 + ret + ASM_FUNCTION_REMOVE_IF_UNREFERENCED diff --git a/ArmPkg/Library/ArmLib/Arm/ArmLibSupport.S b/ArmPkg/Library/ArmLib/Arm/ArmLibSupport.S index 86635cc093..bd2861c444 100644 --- a/ArmPkg/Library/ArmLib/Arm/ArmLibSupport.S +++ b/ArmPkg/Library/ArmLib/Arm/ArmLibSupport.S @@ -150,4 +150,14 @@ ASM_FUNC (ArmGetPhysicalAddressBits) movge r0, #40 // 40 bits if LPAE bx lr +.arch armv8.1-a + +ASM_FUNC(ArmSetPan) + setpan #1 + bx LR + +ASM_FUNC(ArmClearPan) + setpan #0 + bx LR + ASM_FUNCTION_REMOVE_IF_UNREFERENCED diff --git a/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c b/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c index 2c47a5f2f0..c87ef080da 100644 --- a/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c +++ b/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c @@ -11,6 +11,7 @@ #include #include +#include #include #include #include @@ -46,12 +47,6 @@ GetImageName ( OUT UINTN *DebugBase ); -VOID -EFIAPI -ArmClearPan ( - VOID - ); - STATIC VOID DescribeInstructionOrDataAbort ( diff --git a/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLib.inf b/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLib.inf index 40fa5d552e..15f62c6acb 100644 --- a/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLib.inf +++ b/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLib.inf @@ -36,6 +36,7 @@ DebugLib SerialPortLib UefiBootServicesTableLib + ArmLib [Guids] gEfiDebugImageInfoTableGuid diff --git a/MdeModulePkg/Core/Dxe/SysCall/AARCH64/CoreBootServices.S b/MdeModulePkg/Core/Dxe/SysCall/AARCH64/CoreBootServices.S index cf6f098b7b..1192c150de 100644 --- a/MdeModulePkg/Core/Dxe/SysCall/AARCH64/CoreBootServices.S +++ b/MdeModulePkg/Core/Dxe/SysCall/AARCH64/CoreBootServices.S @@ -145,25 +145,3 @@ ASM_FUNC(ReturnToCore) msr daifclr, #0xf isb ret - -//------------------------------------------------------------------------------ -// VOID -// EFIAPI -// ArmSetPan ( -// VOID -// ); -//------------------------------------------------------------------------------ -ASM_FUNC(ArmSetPan) - msr pan, #1 - ret - -//------------------------------------------------------------------------------ -// VOID -// EFIAPI -// ArmClearPan ( -// VOID -// ); -//------------------------------------------------------------------------------ -ASM_FUNC(ArmClearPan) - msr pan, #0 - ret diff --git a/MdeModulePkg/Core/Dxe/SysCall/AARCH64/InitializeMsr.c b/MdeModulePkg/Core/Dxe/SysCall/AARCH64/InitializeMsr.c index f9a8c3c2bd..3ab3bffde7 100644 --- a/MdeModulePkg/Core/Dxe/SysCall/AARCH64/InitializeMsr.c +++ b/MdeModulePkg/Core/Dxe/SysCall/AARCH64/InitializeMsr.c @@ -32,18 +32,6 @@ ReturnToCore ( IN UINTN CoreSp ); -VOID -EFIAPI -ArmSetPan ( - VOID - ); - -VOID -EFIAPI -ArmClearPan ( - VOID - ); - STATIC EFI_STATUS EFIAPI diff --git a/MdeModulePkg/Core/Dxe/SysCall/ARM/CoreBootServices.S b/MdeModulePkg/Core/Dxe/SysCall/ARM/CoreBootServices.S index 4596465672..d710ab8079 100644 --- a/MdeModulePkg/Core/Dxe/SysCall/ARM/CoreBootServices.S +++ b/MdeModulePkg/Core/Dxe/SysCall/ARM/CoreBootServices.S @@ -7,8 +7,6 @@ #include -.arch armv8.1a - //------------------------------------------------------------------------------ // EFI_STATUS // EFIAPI @@ -124,25 +122,3 @@ ASM_FUNC(ReturnToCore) isb bx LR - -//------------------------------------------------------------------------------ -// VOID -// EFIAPI -// ArmSetPan ( -// VOID -// ); -//------------------------------------------------------------------------------ -ASM_FUNC(ArmSetPan) - setpan #1 - bx LR - -//------------------------------------------------------------------------------ -// VOID -// EFIAPI -// ArmClearPan ( -// VOID -// ); -//------------------------------------------------------------------------------ -ASM_FUNC(ArmClearPan) - setpan #0 - bx LR diff --git a/MdeModulePkg/Core/Dxe/SysCall/ARM/InitializeMsr.c b/MdeModulePkg/Core/Dxe/SysCall/ARM/InitializeMsr.c index a3ab2a7484..8ffd808742 100644 --- a/MdeModulePkg/Core/Dxe/SysCall/ARM/InitializeMsr.c +++ b/MdeModulePkg/Core/Dxe/SysCall/ARM/InitializeMsr.c @@ -29,18 +29,6 @@ ReturnToCore ( IN UINTN CoreSp ); -VOID -EFIAPI -ArmSetPan ( - VOID - ); - -VOID -EFIAPI -ArmClearPan ( - VOID - ); - STATIC EFI_STATUS EFIAPI diff --git a/MdePkg/Include/Library/ArmLib.h b/MdePkg/Include/Library/ArmLib.h index a7f89e23b5..aaa3355b7e 100644 --- a/MdePkg/Include/Library/ArmLib.h +++ b/MdePkg/Include/Library/ArmLib.h @@ -710,17 +710,29 @@ ArmHasCcidx ( VOID ); -/** - Checks whether the CPU implements the Privileged Access Never. - - @retval TRUE FEAT_PAN is implemented. - @retval FALSE FEAT_PAN is not mplemented. -**/ -BOOLEAN -EFIAPI -ArmHasPan ( - VOID - ); +/** + Checks whether the CPU implements the Privileged Access Never. + + @retval TRUE FEAT_PAN is implemented. + @retval FALSE FEAT_PAN is not mplemented. +**/ +BOOLEAN +EFIAPI +ArmHasPan ( + VOID + ); + +VOID +EFIAPI +ArmSetPan ( + VOID + ); + +VOID +EFIAPI +ArmClearPan ( + VOID + ); #ifdef MDE_CPU_AARCH64 ///