Fix type of SMC function ID
The SMC function identifier is always a 32-bit integer, regardless of
the caller's execution state and of the SMC calling convention in use.
Change-Id: I8d4f7b9efcea3f00ac2ff0a397ca0d8ab824eecb
Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
diff --git a/include/lib/tftf_lib.h b/include/lib/tftf_lib.h
index e5900b8..97b6f41 100644
--- a/include/lib/tftf_lib.h
+++ b/include/lib/tftf_lib.h
@@ -132,22 +132,24 @@
* specify it.
*/
typedef struct {
- u_register_t arg0;
- u_register_t arg1;
- u_register_t arg2;
- u_register_t arg3;
- u_register_t arg4;
- u_register_t arg5;
- u_register_t arg6;
- u_register_t arg7;
+ /* Function identifier. Identifies which function is being invoked. */
+ uint32_t arg0;
+
+ u_register_t arg1;
+ u_register_t arg2;
+ u_register_t arg3;
+ u_register_t arg4;
+ u_register_t arg5;
+ u_register_t arg6;
+ u_register_t arg7;
} smc_args;
/* SMC calls can return up to 4 register values */
typedef struct {
- u_register_t ret0;
- u_register_t ret1;
- u_register_t ret2;
- u_register_t ret3;
+ u_register_t ret0;
+ u_register_t ret1;
+ u_register_t ret2;
+ u_register_t ret3;
} smc_ret_values;
/*
diff --git a/lib/smc/aarch64/asm_smc.S b/lib/smc/aarch64/asm_smc.S
index 2b305b9..48a80a3 100644
--- a/lib/smc/aarch64/asm_smc.S
+++ b/lib/smc/aarch64/asm_smc.S
@@ -12,14 +12,14 @@
/* ---------------------------------------------------------------------------
- * smc_ret_values asm_tftf_smc64(uint64_t arg0,
- * uint64_t arg1,
- * uint64_t arg2,
- * uint64_t arg3,
- * uint64_t arg4,
- * uint64_t arg5,
- * uint64_t arg6,
- * uint64_t arg7);
+ * smc_ret_values asm_tftf_smc64(uint32_t arg0,
+ * u_register_t arg1,
+ * u_register_t arg2,
+ * u_register_t arg3,
+ * u_register_t arg4,
+ * u_register_t arg5,
+ * u_register_t arg6,
+ * u_register_t arg7);
* ---------------------------------------------------------------------------
*/
func asm_tftf_smc64
diff --git a/lib/smc/aarch64/smc.c b/lib/smc/aarch64/smc.c
index 06b841c..cbe4bb9 100644
--- a/lib/smc/aarch64/smc.c
+++ b/lib/smc/aarch64/smc.c
@@ -7,14 +7,14 @@
#include <stdint.h>
#include <tftf.h>
-smc_ret_values asm_tftf_smc64(u_register_t arg0,
- u_register_t arg1,
- u_register_t arg2,
- u_register_t arg3,
- u_register_t arg4,
- u_register_t arg5,
- u_register_t arg6,
- u_register_t arg7);
+smc_ret_values asm_tftf_smc64(uint32_t arg0,
+ u_register_t arg1,
+ u_register_t arg2,
+ u_register_t arg3,
+ u_register_t arg4,
+ u_register_t arg5,
+ u_register_t arg6,
+ u_register_t arg7);
smc_ret_values tftf_smc(const smc_args *args)
{