From ab1bc5436634e3ac2e0a92f4e2328159ed6aae0e 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 +- ArmPkg/Include/Library/ArmLib.h | 34 +++++++++++++------ .../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 ------- 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/Include/Library/ArmLib.h b/ArmPkg/Include/Library/ArmLib.h index fb9a8646f7..efa88cf81f 100644 --- a/ArmPkg/Include/Library/ArmLib.h +++ b/ArmPkg/Include/Library/ArmLib.h @@ -764,17 +764,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 /// diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S index a7111e5188..d7f9af67be 100644 --- a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S +++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S @@ -524,4 +524,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 0856740e32..ddf775e829 100644 --- a/ArmPkg/Library/ArmLib/Arm/ArmLibSupport.S +++ b/ArmPkg/Library/ArmLib/Arm/ArmLibSupport.S @@ -167,4 +167,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 5527821b22..6f881af12a 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 @@ -47,12 +48,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 3475114302..77e31ef3da 100644 --- a/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLib.inf +++ b/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLib.inf @@ -37,6 +37,7 @@ ArmDisassemblerLib 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