Ring3: Fixed ArmPkg and ArmVirtPkg compilation.

This commit is contained in:
Mikhail Krichanov 2024-09-02 19:50:25 +03:00
parent d74b97ed94
commit ab1bc54366
10 changed files with 46 additions and 88 deletions

View File

@ -29,6 +29,6 @@ ArmCrashDumpDxeInitialize (
return mCpu->RegisterInterruptHandler ( return mCpu->RegisterInterruptHandler (
mCpu, mCpu,
EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS, EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS,
&DefaultExceptionHandler (EFI_CPU_INTERRUPT_HANDLER)&DefaultExceptionHandler
); );
} }

View File

@ -764,17 +764,29 @@ ArmHasCcidx (
VOID VOID
); );
/** /**
Checks whether the CPU implements the Privileged Access Never. Checks whether the CPU implements the Privileged Access Never.
@retval TRUE FEAT_PAN is implemented. @retval TRUE FEAT_PAN is implemented.
@retval FALSE FEAT_PAN is not mplemented. @retval FALSE FEAT_PAN is not mplemented.
**/ **/
BOOLEAN BOOLEAN
EFIAPI EFIAPI
ArmHasPan ( ArmHasPan (
VOID VOID
); );
VOID
EFIAPI
ArmSetPan (
VOID
);
VOID
EFIAPI
ArmClearPan (
VOID
);
#ifdef MDE_CPU_AARCH64 #ifdef MDE_CPU_AARCH64
/// ///

View File

@ -524,4 +524,14 @@ ASM_FUNC(ArmReadIdAA64Pfr1)
mrs x0, ID_AA64PFR1_EL1 mrs x0, ID_AA64PFR1_EL1
ret ret
.cpu cortex-a76
ASM_FUNC(ArmSetPan)
msr pan, #1
ret
ASM_FUNC(ArmClearPan)
msr pan, #0
ret
ASM_FUNCTION_REMOVE_IF_UNREFERENCED ASM_FUNCTION_REMOVE_IF_UNREFERENCED

View File

@ -167,4 +167,14 @@ ASM_FUNC (ArmGetPhysicalAddressBits)
movge r0, #40 // 40 bits if LPAE movge r0, #40 // 40 bits if LPAE
bx lr 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 ASM_FUNCTION_REMOVE_IF_UNREFERENCED

View File

@ -11,6 +11,7 @@
#include <Chipset/AArch64.h> #include <Chipset/AArch64.h>
#include <Uefi.h> #include <Uefi.h>
#include <Library/ArmLib.h>
#include <Library/UefiLib.h> #include <Library/UefiLib.h>
#include <Library/BaseLib.h> #include <Library/BaseLib.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
@ -47,12 +48,6 @@ GetImageName (
OUT UINTN *DebugBase OUT UINTN *DebugBase
); );
VOID
EFIAPI
ArmClearPan (
VOID
);
STATIC STATIC
VOID VOID
DescribeInstructionOrDataAbort ( DescribeInstructionOrDataAbort (

View File

@ -37,6 +37,7 @@
ArmDisassemblerLib ArmDisassemblerLib
SerialPortLib SerialPortLib
UefiBootServicesTableLib UefiBootServicesTableLib
ArmLib
[Guids] [Guids]
gEfiDebugImageInfoTableGuid gEfiDebugImageInfoTableGuid

View File

@ -145,25 +145,3 @@ ASM_FUNC(ReturnToCore)
msr daifclr, #0xf msr daifclr, #0xf
isb isb
ret ret
//------------------------------------------------------------------------------
// VOID
// EFIAPI
// ArmSetPan (
// VOID
// );
//------------------------------------------------------------------------------
ASM_FUNC(ArmSetPan)
msr pan, #1
ret
//------------------------------------------------------------------------------
// VOID
// EFIAPI
// ArmClearPan (
// VOID
// );
//------------------------------------------------------------------------------
ASM_FUNC(ArmClearPan)
msr pan, #0
ret

View File

@ -32,18 +32,6 @@ ReturnToCore (
IN UINTN CoreSp IN UINTN CoreSp
); );
VOID
EFIAPI
ArmSetPan (
VOID
);
VOID
EFIAPI
ArmClearPan (
VOID
);
STATIC STATIC
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI

View File

@ -7,8 +7,6 @@
#include <AsmMacroIoLib.h> #include <AsmMacroIoLib.h>
.arch armv8.1a
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// EFI_STATUS // EFI_STATUS
// EFIAPI // EFIAPI
@ -124,25 +122,3 @@ ASM_FUNC(ReturnToCore)
isb isb
bx LR bx LR
//------------------------------------------------------------------------------
// VOID
// EFIAPI
// ArmSetPan (
// VOID
// );
//------------------------------------------------------------------------------
ASM_FUNC(ArmSetPan)
setpan #1
bx LR
//------------------------------------------------------------------------------
// VOID
// EFIAPI
// ArmClearPan (
// VOID
// );
//------------------------------------------------------------------------------
ASM_FUNC(ArmClearPan)
setpan #0
bx LR

View File

@ -29,18 +29,6 @@ ReturnToCore (
IN UINTN CoreSp IN UINTN CoreSp
); );
VOID
EFIAPI
ArmSetPan (
VOID
);
VOID
EFIAPI
ArmClearPan (
VOID
);
STATIC STATIC
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI