audk/ArmPkg/Library
Ard Biesheuvel b1bce5e564 ArmPkg/ArmMonitorLib: Implement SMCCC protocol correctly and directly
The SMCCC protocol stipulates the following:
- on AARCH64, 18 arguments can be passed, and 18 values can be returned,
  via registers X0-x17;
- on ARM, 8 arguments can be passed, and 8 values can be returned.

This makes ArmSmcLib and ArmHvcLib as implemented currently unsuitable
for use with SMCCC services in general, although for PSCI in particular,
they work fine.

The dependency on both ArmSmcLib and ArmHvcLib is also impractical
because it requires every platform that consumes ArmMonitorLib to
provide resolutions for each, even though most platforms will only ever
need one of these (and the choice is made at compile time)

So let's drop these dependencies, and re-implement the asm helpers from
scratch. Note that the only difference is the actual instruction used
-HVC vs SMC- and so all other code can be shared.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2024-07-25 14:41:09 +00:00
..
ArmArchTimerLib ArmPkg: delete PcdArmArchTimerFreqInHz 2024-06-26 01:51:15 +00:00
ArmCacheMaintenanceLib
ArmDisassemblerLib
ArmExceptionLib ArmPkg/ArmLib ArmMmuLib: Drop support for EL3/MON execution 2024-06-19 17:25:11 +00:00
ArmGenericTimerPhyCounterLib
ArmGenericTimerVirtCounterLib
ArmGicArchLib
ArmGicArchSecLib
ArmHvcLib ArmPkg: Remove RVCT support 2022-05-13 14:58:54 +00:00
ArmHvcLibNull ArmPkg/ArmHvcLibNull: Add NULL instance of ArmHvcLib 2022-11-06 16:32:28 +00:00
ArmLib ArmPkg/ArmLib ArmMmuLib: Drop support for EL3/MON execution 2024-06-19 17:25:11 +00:00
ArmMmuLib ArmPkg: ArmMmuLib: Add AARCH64 Memory Attribute Update Failure Log 2024-07-23 03:32:41 +00:00
ArmMonitorLib ArmPkg/ArmMonitorLib: Implement SMCCC protocol correctly and directly 2024-07-25 14:41:09 +00:00
ArmMtlNullLib
ArmPsciResetSystemLib ArmPkg: Introduce ResetSystemLib implementation based on ArmMonitorLib 2024-07-24 19:58:01 +00:00
ArmSmcLib ArmPkg: Remove RVCT support 2022-05-13 14:58:54 +00:00
ArmSmcLibNull ArmPkg: Add SMC helper functions 2021-12-14 11:30:26 +00:00
ArmSmcPsciResetSystemLib ArmPkg: Handle warm reboot request correctly 2022-09-05 13:52:51 +00:00
ArmSoftFloatLib
ArmSvcLib ArmPkg: Emit BTI opcodes when BTI codegen is enabled 2023-03-30 11:05:22 +00:00
ArmTrngLib ArmPkg/ArmTrngLib: Remove ASSERTs in ArmTrngLibConstructor() 2022-11-26 14:42:41 +00:00
CompilerIntrinsicsLib ArmPkg/CompilerIntrinsicsLib: provide __ashlti3 2024-06-15 08:53:17 +00:00
DebugAgentSymbolsBaseLib
DebugPeCoffExtraActionLib ArmPkg: Disable AuditOnly mode for uncrustify 2024-07-24 10:21:47 +00:00
DefaultExceptionHandlerLib ArmPkg: DefaultExceptionHandlerLib: Do Not Allocate Memory 2023-08-03 14:43:08 +00:00
LinuxBootBootManagerLib ArmPkg: Update code to be more C11 compliant by using __func__ 2023-04-10 14:19:57 +00:00
OpteeLib ArmPkg/OpteeLib: Map shared communication buffer non-executable 2023-06-27 16:40:07 +00:00
PeiServicesTablePointerLib
PlatformBootManagerLib ArmPkg: Configure PcdEmuVariableNvModeEnable as a dynamic PCD 2023-05-29 15:14:00 +00:00
SemiHostingDebugLib
SemiHostingSerialPortLib
SemihostLib
StandaloneMmMmuLib