|
@@ -0,0 +1,42 @@
|
|
|
+/** @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_
|