summaryrefslogtreecommitdiffstats
path: root/ArmPkg/Include/Library/ArmSmcLib.h
diff options
context:
space:
mode:
Diffstat (limited to 'ArmPkg/Include/Library/ArmSmcLib.h')
-rw-r--r--ArmPkg/Include/Library/ArmSmcLib.h44
1 files changed, 23 insertions, 21 deletions
diff --git a/ArmPkg/Include/Library/ArmSmcLib.h b/ArmPkg/Include/Library/ArmSmcLib.h
index ff946f2dea..168e3bb426 100644
--- a/ArmPkg/Include/Library/ArmSmcLib.h
+++ b/ArmPkg/Include/Library/ArmSmcLib.h
@@ -1,6 +1,6 @@
/** @file
*
-* Copyright (c) 2012, ARM Limited. All rights reserved.
+* Copyright (c) 2012-2014, ARM Limited. All rights reserved.
*
* This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD License
@@ -15,30 +15,32 @@
#ifndef __ARM_SMC_LIB__
#define __ARM_SMC_LIB__
-VOID
-ArmCallSmc (
- IN OUT UINTN *Rx
- );
+/**
+ * The size of the SMC arguments are different between AArch64 and AArch32.
+ * The native size is used for the arguments.
+ */
+typedef struct {
+ UINTN Arg0;
+ UINTN Arg1;
+ UINTN Arg2;
+ UINTN Arg3;
+ UINTN Arg4;
+ UINTN Arg5;
+ UINTN Arg6;
+ UINTN Arg7;
+} ARM_SMC_ARGS;
-VOID
-ArmCallSmcArg1 (
- IN OUT UINTN *Rx,
- IN OUT UINTN *Arg1
- );
+/**
+ Trigger an SMC call
-VOID
-ArmCallSmcArg2 (
- IN OUT UINTN *Rx,
- IN OUT UINTN *Arg1,
- IN OUT UINTN *Arg2
- );
+ SMC calls can take up to 7 arguments and return up to 4 return values.
+ Therefore, the 4 first fields in the ARM_SMC_ARGS structure are used
+ for both input and output values.
+**/
VOID
-ArmCallSmcArg3 (
- IN OUT UINTN *Rx,
- IN OUT UINTN *Arg1,
- IN OUT UINTN *Arg2,
- IN OUT UINTN *Arg3
+ArmCallSmc (
+ IN OUT ARM_SMC_ARGS *Args
);
#endif