| /** @file | |
| Copyright (c) 2022, Arm Limited. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef ARM_MONITOR_LIB_H_ | |
| #define ARM_MONITOR_LIB_H_ | |
| /** The size of the SMC arguments is different between AArch64 and AArch32. | |
| The native size is used for the arguments. | |
| It will be casted to either HVC or SMC args. | |
| */ | |
| typedef struct { | |
| UINTN Arg0; | |
| UINTN Arg1; | |
| UINTN Arg2; | |
| UINTN Arg3; | |
| UINTN Arg4; | |
| UINTN Arg5; | |
| UINTN Arg6; | |
| UINTN Arg7; | |
| } ARM_MONITOR_ARGS; | |
| /** Monitor call. | |
| An HyperVisor Call (HVC) or System Monitor Call (SMC) will be issued | |
| depending on the default conduit. PcdMonitorConduitHvc determines the type | |
| of the call: if true, do an HVC. | |
| @param [in,out] Args Arguments for the HVC/SMC. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ArmMonitorCall ( | |
| IN OUT ARM_MONITOR_ARGS *Args | |
| ); | |
| #endif // ARM_MONITOR_LIB_H_ |