diff --git a/fwu/ns_bl2u/ns_bl2u_main.c b/fwu/ns_bl2u/ns_bl2u_main.c
index babcf93..5b1373f 100644
--- a/fwu/ns_bl2u/ns_bl2u_main.c
+++ b/fwu/ns_bl2u/ns_bl2u_main.c
@@ -52,7 +52,7 @@
 
 	/* Call FWU_SMC_UPDATE_DONE to indicate image update done. */
 	INFO("NS_BL2U: Calling FWU_SMC_UPDATE_DONE\n");
-	fwu_params.arg0 = FWU_SMC_UPDATE_DONE;
+	fwu_params.fid = FWU_SMC_UPDATE_DONE;
 	fwu_result = tftf_smc(&fwu_params);
 	ERROR("NS_BL2U: Unexpected return from FWU process (%d)\n",
 			(int)fwu_result.ret0);
diff --git a/include/lib/tftf_lib.h b/include/lib/tftf_lib.h
index 40955d3..58112b4 100644
--- a/include/lib/tftf_lib.h
+++ b/include/lib/tftf_lib.h
@@ -131,7 +131,7 @@
  */
 typedef struct {
 	/* Function identifier. Identifies which function is being invoked. */
-	uint32_t	arg0;
+	uint32_t	fid;
 
 	u_register_t	arg1;
 	u_register_t	arg2;
diff --git a/lib/sdei/sdei.c b/lib/sdei/sdei.c
index 846b96e..264da28 100644
--- a/lib/sdei/sdei.c
+++ b/lib/sdei/sdei.c
@@ -32,7 +32,7 @@
 	intr_ctx->enabled = arm_gic_intr_enabled(intr);
 	arm_gic_intr_disable(intr);
 
-	args.arg0 = SDEI_INTERRUPT_BIND;
+	args.fid = SDEI_INTERRUPT_BIND;
 	args.arg1 = intr;
 	ret = tftf_smc(&args);
 	if (ret.ret0 < 0) {
@@ -51,7 +51,7 @@
 
 	assert(intr_ctx);
 
-	args.arg0 = SDEI_INTERRUPT_RELEASE;
+	args.fid = SDEI_INTERRUPT_RELEASE;
 	args.arg1 = ev;
 	ret = tftf_smc(&args);
 	if (ret.ret0 == 0) {
@@ -69,7 +69,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_EVENT_REGISTER;
+	args.fid = SDEI_EVENT_REGISTER;
 	args.arg1 = ev;
 	args.arg2 = (u_register_t)ep;
 	args.arg3 = ep_arg;
@@ -84,7 +84,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_EVENT_UNREGISTER;
+	args.fid = SDEI_EVENT_UNREGISTER;
 	args.arg1 = ev;
 	ret = tftf_smc(&args);
 	return ret.ret0;
@@ -95,7 +95,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_EVENT_ENABLE;
+	args.fid = SDEI_EVENT_ENABLE;
 	args.arg1 = ev;
 	ret = tftf_smc(&args);
 	return ret.ret0;
@@ -106,7 +106,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_EVENT_DISABLE;
+	args.fid = SDEI_EVENT_DISABLE;
 	args.arg1 = ev;
 	ret = tftf_smc(&args);
 	return ret.ret0;
@@ -117,7 +117,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_PE_MASK;
+	args.fid = SDEI_PE_MASK;
 	ret = tftf_smc(&args);
 	return ret.ret0;
 }
@@ -127,7 +127,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_PE_UNMASK;
+	args.fid = SDEI_PE_UNMASK;
 	ret = tftf_smc(&args);
 	return ret.ret0;
 }
@@ -137,7 +137,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_PRIVATE_RESET;
+	args.fid = SDEI_PRIVATE_RESET;
 	ret = tftf_smc(&args);
 	return ret.ret0;
 }
@@ -147,7 +147,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_SHARED_RESET;
+	args.fid = SDEI_SHARED_RESET;
 	ret = tftf_smc(&args);
 	return ret.ret0;
 }
@@ -157,7 +157,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_EVENT_SIGNAL;
+	args.fid = SDEI_EVENT_SIGNAL;
 	args.arg1 = 0; /* must be event 0 */
 	args.arg2 = mpidr;
 	ret = tftf_smc(&args);
@@ -169,7 +169,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_EVENT_STATUS;
+	args.fid = SDEI_EVENT_STATUS;
 	args.arg1 = ev;
 	ret = tftf_smc(&args);
 	return ret.ret0;
@@ -180,7 +180,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_EVENT_ROUTING_SET;
+	args.fid = SDEI_EVENT_ROUTING_SET;
 	args.arg1 = ev;
 	args.arg2 = flags;
 	ret = tftf_smc(&args);
@@ -192,7 +192,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_EVENT_CONTEXT;
+	args.fid = SDEI_EVENT_CONTEXT;
 	args.arg1 = param;
 	ret = tftf_smc(&args);
 	return ret.ret0;
@@ -203,7 +203,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_EVENT_COMPLETE;
+	args.fid = SDEI_EVENT_COMPLETE;
 	args.arg1 = flags;
 	ret = tftf_smc(&args);
 	return ret.ret0;
@@ -214,7 +214,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = SDEI_EVENT_COMPLETE_AND_RESUME;
+	args.fid = SDEI_EVENT_COMPLETE_AND_RESUME;
 	args.arg1 = addr;
 	ret = tftf_smc(&args);
 	return ret.ret0;
diff --git a/lib/smc/aarch64/asm_smc.S b/lib/smc/aarch64/asm_smc.S
index 48a80a3..1180f51 100644
--- a/lib/smc/aarch64/asm_smc.S
+++ b/lib/smc/aarch64/asm_smc.S
@@ -12,7 +12,7 @@
 
 
 /* ---------------------------------------------------------------------------
- * smc_ret_values asm_tftf_smc64(uint32_t arg0,
+ * smc_ret_values asm_tftf_smc64(uint32_t fid,
  *				 u_register_t arg1,
  *				 u_register_t arg2,
  *				 u_register_t arg3,
diff --git a/lib/smc/aarch64/smc.c b/lib/smc/aarch64/smc.c
index cbe4bb9..6667ee7 100644
--- a/lib/smc/aarch64/smc.c
+++ b/lib/smc/aarch64/smc.c
@@ -7,7 +7,7 @@
 #include <stdint.h>
 #include <tftf.h>
 
-smc_ret_values asm_tftf_smc64(uint32_t arg0,
+smc_ret_values asm_tftf_smc64(uint32_t fid,
 			      u_register_t arg1,
 			      u_register_t arg2,
 			      u_register_t arg3,
@@ -18,7 +18,7 @@
 
 smc_ret_values tftf_smc(const smc_args *args)
 {
-	return asm_tftf_smc64(args->arg0,
+	return asm_tftf_smc64(args->fid,
 			      args->arg1,
 			      args->arg2,
 			      args->arg3,
diff --git a/spm/common/sp_helpers.h b/spm/common/sp_helpers.h
index fb2d8ac..1bd4425 100644
--- a/spm/common/sp_helpers.h
+++ b/spm/common/sp_helpers.h
@@ -11,7 +11,7 @@
 #include <sys/types.h>
 
 typedef struct {
-	u_register_t arg0;
+	u_register_t fid;
 	u_register_t arg1;
 	u_register_t arg2;
 	u_register_t arg3;
@@ -28,7 +28,7 @@
  * structure. The return values of the SVC call will be stored in the same
  * structure (overriding the input arguments).
  *
- * Return the first return value. It is equivalent to args.arg0 but is also
+ * Return the first return value. It is equivalent to args.fid but is also
  * provided as the return value for convenience.
  */
 u_register_t sp_svc(svc_args *args);
diff --git a/tftf/tests/performance_tests/smc_latencies.c b/tftf/tests/performance_tests/smc_latencies.c
index fe22679..49733cf 100644
--- a/tftf/tests/performance_tests/smc_latencies.c
+++ b/tftf/tests/performance_tests/smc_latencies.c
@@ -143,7 +143,7 @@
 	/* Check if SMCCC version is at least v1.1 */
 	expected_ver = MAKE_SMCCC_VERSION(1, 1);
 	memset(&args, 0, sizeof(args));
-	args.arg0 = SMCCC_VERSION;
+	args.fid = SMCCC_VERSION;
 	ret = tftf_smc(&args);
 	if ((int32_t)ret.ret0 < expected_ver) {
 		printf("Unexpected SMCCC version: 0x%x\n",
@@ -153,7 +153,7 @@
 
 	/* Check if SMCCC_ARCH_WORKAROUND_1 is implemented */
 	memset(&args, 0, sizeof(args));
-	args.arg0 = SMCCC_ARCH_FEATURES;
+	args.fid = SMCCC_ARCH_FEATURES;
 	args.arg1 = SMCCC_ARCH_WORKAROUND_1;
 	ret = tftf_smc(&args);
 	if ((int)ret.ret0 == -1) {
@@ -162,7 +162,7 @@
 	}
 
 	memset(&args, 0, sizeof(args));
-	args.arg0 = SMCCC_ARCH_WORKAROUND_1;
+	args.fid = SMCCC_ARCH_WORKAROUND_1;
 
 	test_measure_smc_latency(&args, &latency);
 	tftf_testcase_printf(
diff --git a/tftf/tests/runtime_services/arm_arch_svc/smccc_arch_workaround_1.c b/tftf/tests/runtime_services/arm_arch_svc/smccc_arch_workaround_1.c
index 4a45ad4..90a43f3 100644
--- a/tftf/tests/runtime_services/arm_arch_svc/smccc_arch_workaround_1.c
+++ b/tftf/tests/runtime_services/arm_arch_svc/smccc_arch_workaround_1.c
@@ -60,7 +60,7 @@
 	/* Check if SMCCC version is at least v1.1 */
 	expected_ver = MAKE_SMCCC_VERSION(1, 1);
 	memset(&args, 0, sizeof(args));
-	args.arg0 = SMCCC_VERSION;
+	args.fid = SMCCC_VERSION;
 	ret = tftf_smc(&args);
 	if ((int32_t)ret.ret0 < expected_ver) {
 		tftf_testcase_printf("Unexpected SMCCC version: 0x%x\n",
@@ -70,7 +70,7 @@
 
 	/* Check if SMCCC_ARCH_WORKAROUND_1 is required or not */
 	memset(&args, 0, sizeof(args));
-	args.arg0 = SMCCC_ARCH_FEATURES;
+	args.fid = SMCCC_ARCH_FEATURES;
 	args.arg1 = SMCCC_ARCH_WORKAROUND_1;
 	ret = tftf_smc(&args);
 	if ((int)ret.ret0 == -1) {
@@ -104,7 +104,7 @@
 
 	/* Invoke the workaround to make sure nothing nasty happens */
 	memset(&args, 0, sizeof(args));
-	args.arg0 = SMCCC_ARCH_WORKAROUND_1;
+	args.fid = SMCCC_ARCH_WORKAROUND_1;
 	tftf_smc(&args);
 	return TEST_RESULT_SUCCESS;
 }
diff --git a/tftf/tests/runtime_services/arm_arch_svc/smccc_arch_workaround_2.c b/tftf/tests/runtime_services/arm_arch_svc/smccc_arch_workaround_2.c
index dd0542c..a090874 100644
--- a/tftf/tests/runtime_services/arm_arch_svc/smccc_arch_workaround_2.c
+++ b/tftf/tests/runtime_services/arm_arch_svc/smccc_arch_workaround_2.c
@@ -43,7 +43,7 @@
 	/* Check if SMCCC version is at least v1.1 */
 	expected_ver = MAKE_SMCCC_VERSION(1, 1);
 	memset(&args, 0, sizeof(args));
-	args.arg0 = SMCCC_VERSION;
+	args.fid = SMCCC_VERSION;
 	ret = tftf_smc(&args);
 	if ((int32_t)ret.ret0 < expected_ver) {
 		tftf_testcase_printf("Unexpected SMCCC version: 0x%x\n",
@@ -53,7 +53,7 @@
 
 	/* Check if SMCCC_ARCH_WORKAROUND_2 is required or not */
 	memset(&args, 0, sizeof(args));
-	args.arg0 = SMCCC_ARCH_FEATURES;
+	args.fid = SMCCC_ARCH_FEATURES;
 	args.arg1 = SMCCC_ARCH_WORKAROUND_2;
 	ret = tftf_smc(&args);
 	if ((int)ret.ret0 == -1) {
@@ -87,7 +87,7 @@
 
 	/* Invoke the workaround to make sure nothing nasty happens */
 	memset(&args, 0, sizeof(args));
-	args.arg0 = SMCCC_ARCH_WORKAROUND_2;
+	args.fid = SMCCC_ARCH_WORKAROUND_2;
 	tftf_smc(&args);
 	return TEST_RESULT_SUCCESS;
 }
diff --git a/tftf/tests/runtime_services/sip_service/test_exec_state_switch.c b/tftf/tests/runtime_services/sip_service/test_exec_state_switch.c
index 120a99e..713c819 100644
--- a/tftf/tests/runtime_services/sip_service/test_exec_state_switch.c
+++ b/tftf/tests/runtime_services/sip_service/test_exec_state_switch.c
@@ -130,7 +130,7 @@
 	int ret;
 
 	smc_args args = {
-		.arg0 = ARM_SIP_SVC_EXE_STATE_SWITCH,
+		.fid = ARM_SIP_SVC_EXE_STATE_SWITCH,
 		.arg1 = (u_register_t) -1,
 		.arg2 = LO32(&state_switch_a32_entry),
 		.arg3 = HI32(&state_switch_cookie),
@@ -163,7 +163,7 @@
 	int ret;
 
 	smc_args args = {
-		.arg0 = ARM_SIP_SVC_EXE_STATE_SWITCH,
+		.fid = ARM_SIP_SVC_EXE_STATE_SWITCH,
 		.arg1 = HI32(&state_switch_a32_entry),
 		.arg2 = LO32(&state_switch_a32_entry),
 		.arg3 = -1,
@@ -195,7 +195,7 @@
 	int ret;
 
 	smc_args args = {
-		.arg0 = ARM_SIP_SVC_EXE_STATE_SWITCH,
+		.fid = ARM_SIP_SVC_EXE_STATE_SWITCH,
 		.arg1 = HI32(&state_switch_a32_entry),
 		.arg2 = LO32(&state_switch_a32_entry),
 		.arg3 = HI32(&state_switch_cookie),
@@ -259,7 +259,7 @@
 	int ret;
 
 	smc_args args = {
-		.arg0 = ARM_SIP_SVC_EXE_STATE_SWITCH,
+		.fid = ARM_SIP_SVC_EXE_STATE_SWITCH,
 		.arg1 = HI32(&state_switch_a32_entry),
 		.arg2 = LO32(&state_switch_a32_entry),
 		.arg3 = HI32(&state_switch_cookie),
diff --git a/tftf/tests/runtime_services/standard_service/pmf/api_tests/runtime_instr/test_pmf_rt_instr.c b/tftf/tests/runtime_services/standard_service/pmf/api_tests/runtime_instr/test_pmf_rt_instr.c
index ac811e2..3a3701e 100644
--- a/tftf/tests/runtime_services/standard_service/pmf/api_tests/runtime_instr/test_pmf_rt_instr.c
+++ b/tftf/tests/runtime_services/standard_service/pmf/api_tests/runtime_instr/test_pmf_rt_instr.c
@@ -55,7 +55,7 @@
 	smc_args args = { 0 };
 	smc_ret_values ret;
 
-	args.arg0 = PMF_SMC_GET_TIMESTAMP;
+	args.fid = PMF_SMC_GET_TIMESTAMP;
 	args.arg1 = tid;
 	args.arg2 = read_mpidr_el1();
 	ret = tftf_smc(&args);
diff --git a/tftf/tests/runtime_services/standard_service/psci/api_tests/migrate_info_type/test_migrate_info_type.c b/tftf/tests/runtime_services/standard_service/psci/api_tests/migrate_info_type/test_migrate_info_type.c
index 73a1048..50462d7 100644
--- a/tftf/tests/runtime_services/standard_service/psci/api_tests/migrate_info_type/test_migrate_info_type.c
+++ b/tftf/tests/runtime_services/standard_service/psci/api_tests/migrate_info_type/test_migrate_info_type.c
@@ -43,7 +43,7 @@
 	int32_t migrate_ret;
 
 	/* Identify the level of multicore support present in the Trusted OS */
-	args.arg0 = SMC_PSCI_MIG_INFO_TYPE;
+	args.fid = SMC_PSCI_MIG_INFO_TYPE;
 	ret = tftf_smc(&args);
 	mp_support = (int32_t) ret.ret0;
 
@@ -84,7 +84,7 @@
 	 * Either there is no Trusted OS or the Trusted OS is the TSP.
 	 * In both cases, the MIGRATE call should not be supported.
 	 */
-	args.arg0 = SMC_PSCI_MIG;
+	args.fid = SMC_PSCI_MIG;
 	/*
 	 * Pass a valid MPID so that the MIGRATE call doesn't fail because of
 	 * invalid parameters
diff --git a/tftf/tests/runtime_services/standard_service/query_std_svc.c b/tftf/tests/runtime_services/standard_service/query_std_svc.c
index e96d4ae..34141d2 100644
--- a/tftf/tests/runtime_services/standard_service/query_std_svc.c
+++ b/tftf/tests/runtime_services/standard_service/query_std_svc.c
@@ -41,7 +41,7 @@
 	test_result_t test_result = TEST_RESULT_SUCCESS;
 
 	/* Standard Service Call UID */
-	std_svc_args.arg0 = SMC_STD_SVC_UID;
+	std_svc_args.fid = SMC_STD_SVC_UID;
 	ret = tftf_smc(&std_svc_args);
 
 	make_uuid_from_4words(&std_svc_uuid,
@@ -55,7 +55,7 @@
 	}
 
 	/* Standard Service Call Count */
-	std_svc_args.arg0 = SMC_STD_SVC_CALL_COUNT;
+	std_svc_args.fid = SMC_STD_SVC_CALL_COUNT;
 	ret = tftf_smc(&std_svc_args);
 
 	if (ret.ret0 == SMC_UNKNOWN) {
@@ -68,7 +68,7 @@
 	}
 
 	/* Standard Service Call Revision details */
-	std_svc_args.arg0 = SMC_STD_SVC_REVISION;
+	std_svc_args.fid = SMC_STD_SVC_REVISION;
 	ret = tftf_smc(&std_svc_args);
 
 	if ((ret.ret0 != STD_SVC_REVISION_MAJOR) ||
diff --git a/tftf/tests/runtime_services/standard_service/unknown_smc.c b/tftf/tests/runtime_services/standard_service/unknown_smc.c
index 70175e3..d2a81ca 100644
--- a/tftf/tests/runtime_services/standard_service/unknown_smc.c
+++ b/tftf/tests/runtime_services/standard_service/unknown_smc.c
@@ -20,7 +20,7 @@
 	smc_args unk_smc;
 	smc_ret_values ret;
 
-	unk_smc.arg0 = INVALID_FID;
+	unk_smc.fid = INVALID_FID;
 	ret = tftf_smc(&unk_smc);
 
 	if (ret.ret0 != SMC_UNKNOWN) {
diff --git a/tftf/tests/runtime_services/trusted_os/tsp/test_irq_preempted_std_smc.c b/tftf/tests/runtime_services/trusted_os/tsp/test_irq_preempted_std_smc.c
index 22e35db..b8bfcfe 100644
--- a/tftf/tests/runtime_services/trusted_os/tsp/test_irq_preempted_std_smc.c
+++ b/tftf/tests/runtime_services/trusted_os/tsp/test_irq_preempted_std_smc.c
@@ -125,7 +125,7 @@
 	 * Invoke an STD SMC. Should be pre-empted because of the SGI
 	 * that is waiting.
 	 */
-	std_smc_args.arg0 = TSP_STD_FID(TSP_ADD);
+	std_smc_args.fid = TSP_STD_FID(TSP_ADD);
 	std_smc_args.arg1 = TEST_VALUE_1;
 	std_smc_args.arg2 = TEST_VALUE_2;
 	smc_ret = tftf_smc(&std_smc_args);
@@ -163,7 +163,7 @@
 	unsigned int core_pos = platform_get_core_pos(core_mpid);
 
 	/* Resume the STD SMC. Verify result. */
-	std_smc_args.arg0 = TSP_FID_RESUME;
+	std_smc_args.fid = TSP_FID_RESUME;
 	smc_ret = tftf_smc(&std_smc_args);
 	if ((smc_ret.ret0 != 0) || (smc_ret.ret1 != TEST_VALUE_1 * 2)
 	    || (smc_ret.ret2 != TEST_VALUE_2 * 2)) {
@@ -191,7 +191,7 @@
 	unsigned int core_pos = platform_get_core_pos(core_mpid);
 
 	/* Resume the STD SMC. Verify result. */
-	std_smc_args.arg0 = TSP_FID_RESUME;
+	std_smc_args.fid = TSP_FID_RESUME;
 	smc_ret = tftf_smc(&std_smc_args);
 	if (smc_ret.ret0 != SMC_UNKNOWN) {
 		tftf_testcase_printf(
@@ -304,7 +304,7 @@
 	 */
 
 	smc_args std_smc_args;
-	std_smc_args.arg0 = TSP_FID_RESUME;
+	std_smc_args.fid = TSP_FID_RESUME;
 	smc_ret_values smc_ret = tftf_smc(&std_smc_args);
 	if (smc_ret.ret0 != SMC_UNKNOWN) {
 		tftf_testcase_printf(
@@ -427,7 +427,7 @@
 	 * waiting. It has to be different than the one invoked from the lead
 	 * CPU.
 	 */
-	std_smc_args.arg0 = TSP_STD_FID(TSP_MUL);
+	std_smc_args.fid = TSP_STD_FID(TSP_MUL);
 	std_smc_args.arg1 = TEST_VALUE_1;
 	std_smc_args.arg2 = TEST_VALUE_2;
 	smc_ret = tftf_smc(&std_smc_args);
@@ -458,7 +458,7 @@
 	}
 
 	/* Resume the STD SMC. Verify result. */
-	std_smc_args.arg0 = TSP_FID_RESUME;
+	std_smc_args.fid = TSP_FID_RESUME;
 	smc_ret = tftf_smc(&std_smc_args);
 	if ((smc_ret.ret0 != 0) || (smc_ret.ret1 != TEST_VALUE_1*TEST_VALUE_1)
 	    || (smc_ret.ret2 != TEST_VALUE_2*TEST_VALUE_2)) {
@@ -474,7 +474,7 @@
 	}
 
 	/* Try to resume the lead CPU STD SMC. Verify result. */
-	std_smc_args.arg0 = TSP_FID_RESUME;
+	std_smc_args.fid = TSP_FID_RESUME;
 	smc_ret = tftf_smc(&std_smc_args);
 	if (smc_ret.ret0 != SMC_UNKNOWN) {
 		tftf_testcase_printf(
@@ -536,7 +536,7 @@
 	 * Invoke an STD SMC. Should be pre-empted because of the SGI that is
 	 * waiting.
 	 */
-	std_smc_args.arg0 = TSP_STD_FID(TSP_ADD);
+	std_smc_args.fid = TSP_STD_FID(TSP_ADD);
 	std_smc_args.arg1 = TEST_VALUE_1;
 	std_smc_args.arg2 = TEST_VALUE_2;
 	smc_ret = tftf_smc(&std_smc_args);
@@ -589,7 +589,7 @@
 	 * Try to resume the STD SMC from the lead CPU. It should be able resume
 	 * the one it generated before and to return the correct result.
 	 */
-	std_smc_args.arg0 = TSP_FID_RESUME;
+	std_smc_args.fid = TSP_FID_RESUME;
 	smc_ret = tftf_smc(&std_smc_args);
 	if ((smc_ret.ret0 != 0) || (smc_ret.ret1 != TEST_VALUE_1 * 2) ||
 	    (smc_ret.ret2 != TEST_VALUE_2 * 2)) {
diff --git a/tftf/tests/runtime_services/trusted_os/tsp/test_irq_spurious_gicv2.c b/tftf/tests/runtime_services/trusted_os/tsp/test_irq_spurious_gicv2.c
index 7674840..6eaf046 100644
--- a/tftf/tests/runtime_services/trusted_os/tsp/test_irq_spurious_gicv2.c
+++ b/tftf/tests/runtime_services/trusted_os/tsp/test_irq_spurious_gicv2.c
@@ -70,7 +70,7 @@
 		smc_ret_values smc_ret;
 
 		/* Invoke an STD SMC. */
-		std_smc_args.arg0 = TSP_STD_FID(TSP_ADD);
+		std_smc_args.fid = TSP_STD_FID(TSP_ADD);
 		std_smc_args.arg1 = TEST_VALUE_1;
 		std_smc_args.arg2 = TEST_VALUE_2;
 		smc_ret = tftf_smc(&std_smc_args);
@@ -93,7 +93,7 @@
 				}
 			} else if (smc_ret.ret0 == TSP_SMC_PREEMPTED) {
 				/* Resume the STD SMC. */
-				std_smc_args.arg0 = TSP_FID_RESUME;
+				std_smc_args.fid = TSP_FID_RESUME;
 				smc_ret = tftf_smc(&std_smc_args);
 				preempted_count[core_pos]++;
 			} else {
diff --git a/tftf/tests/runtime_services/trusted_os/tsp/test_normal_int_switch.c b/tftf/tests/runtime_services/trusted_os/tsp/test_normal_int_switch.c
index c222389..0128ffa 100644
--- a/tftf/tests/runtime_services/trusted_os/tsp/test_normal_int_switch.c
+++ b/tftf/tests/runtime_services/trusted_os/tsp/test_normal_int_switch.c
@@ -129,7 +129,7 @@
 	SKIP_TEST_IF_TSP_NOT_PRESENT();
 
 	/* Standard SMC */
-	tsp_svc_params.arg0 = TSP_STD_FID(TSP_ADD);
+	tsp_svc_params.fid = TSP_STD_FID(TSP_ADD);
 	tsp_svc_params.arg1 = 4;
 	tsp_svc_params.arg2 = 6;
 	res = preempt_tsp_via_SGI(&tsp_svc_params, 0);
@@ -137,7 +137,7 @@
 		return res;
 
 	/* Now that we have ensured preemption, issue RESUME */
-	tsp_svc_params.arg0 = TSP_FID_RESUME;
+	tsp_svc_params.fid = TSP_FID_RESUME;
 	tsp_result = tftf_smc(&tsp_svc_params);
 
 	/* Check the result of the addition */
@@ -153,7 +153,7 @@
 	}
 
 	/* Standard SMC */
-	tsp_svc_params.arg0 = TSP_STD_FID(TSP_SUB);
+	tsp_svc_params.fid = TSP_STD_FID(TSP_SUB);
 	tsp_svc_params.arg1 = 4;
 	tsp_svc_params.arg2 = 6;
 	res = preempt_tsp_via_SGI(&tsp_svc_params, 0);
@@ -161,7 +161,7 @@
 		return res;
 
 	/* Now that we have ensured preemption, issue RESUME */
-	tsp_svc_params.arg0 = TSP_FID_RESUME;
+	tsp_svc_params.fid = TSP_FID_RESUME;
 	tsp_result = tftf_smc(&tsp_svc_params);
 
 	/* Check the result of the substraction */
@@ -176,7 +176,7 @@
 	}
 
 	/* Standard SMC */
-	tsp_svc_params.arg0 = TSP_STD_FID(TSP_MUL);
+	tsp_svc_params.fid = TSP_STD_FID(TSP_MUL);
 	tsp_svc_params.arg1 = 4;
 	tsp_svc_params.arg2 = 6;
 	res = preempt_tsp_via_SGI(&tsp_svc_params, 0);
@@ -184,7 +184,7 @@
 		return res;
 
 	/* Now that we have ensured preemption, issue RESUME */
-	tsp_svc_params.arg0 = TSP_FID_RESUME;
+	tsp_svc_params.fid = TSP_FID_RESUME;
 	tsp_result = tftf_smc(&tsp_svc_params);
 
 	/* Check the result of the multiplication */
@@ -199,7 +199,7 @@
 	}
 
 	/* Standard SMC */
-	tsp_svc_params.arg0 = TSP_STD_FID(TSP_DIV);
+	tsp_svc_params.fid = TSP_STD_FID(TSP_DIV);
 	tsp_svc_params.arg1 = 4;
 	tsp_svc_params.arg2 = 6;
 	res = preempt_tsp_via_SGI(&tsp_svc_params, 0);
@@ -207,7 +207,7 @@
 		return res;
 
 	/* Now that we have ensured preemption, issue RESUME */
-	tsp_svc_params.arg0 = TSP_FID_RESUME;
+	tsp_svc_params.fid = TSP_FID_RESUME;
 	tsp_result = tftf_smc(&tsp_svc_params);
 
 	/* Check the result of the division */
@@ -241,7 +241,7 @@
 	SKIP_TEST_IF_TSP_NOT_PRESENT();
 
 	/* Standard SMC */
-	tsp_svc_params.arg0 = TSP_STD_FID(TSP_ADD);
+	tsp_svc_params.fid = TSP_STD_FID(TSP_ADD);
 	tsp_svc_params.arg1 = 4;
 	tsp_svc_params.arg2 = 6;
 	res = preempt_tsp_via_SGI(&tsp_svc_params, 0);
@@ -249,7 +249,7 @@
 		return res;
 
 	/* Now that we have ensured preemption, issue Fast SMC */
-	tsp_svc_params.arg0 = TSP_FAST_FID(TSP_ADD);
+	tsp_svc_params.fid = TSP_FAST_FID(TSP_ADD);
 	tsp_svc_params.arg1 = 4;
 	tsp_svc_params.arg2 = 6;
 
@@ -262,7 +262,7 @@
 	}
 
 	/* Issue RESUME */
-	tsp_svc_params.arg0 = TSP_FID_RESUME;
+	tsp_svc_params.fid = TSP_FID_RESUME;
 	tsp_result = tftf_smc(&tsp_svc_params);
 
 	/* Check the result of the addition */
@@ -302,7 +302,7 @@
 	SKIP_TEST_IF_TSP_NOT_PRESENT();
 
 	/* Standard SMC */
-	tsp_svc_params.arg0 = TSP_STD_FID(TSP_ADD);
+	tsp_svc_params.fid = TSP_STD_FID(TSP_ADD);
 	tsp_svc_params.arg1 = 4;
 	tsp_svc_params.arg2 = 6;
 	res = preempt_tsp_via_SGI(&tsp_svc_params, 0);
@@ -310,7 +310,7 @@
 		return res;
 
 	/* Now that we have ensured preemption, issue Standard SMC */
-	tsp_svc_params.arg0 = TSP_STD_FID(TSP_ADD);
+	tsp_svc_params.fid = TSP_STD_FID(TSP_ADD);
 	tsp_svc_params.arg1 = 4;
 	tsp_svc_params.arg2 = 6;
 
@@ -322,7 +322,7 @@
 	}
 
 	/* Issue ABORT or RESUME */
-	tsp_svc_params.arg0 = abort_smc ? TSP_FID_ABORT : TSP_FID_RESUME;
+	tsp_svc_params.fid = abort_smc ? TSP_FID_ABORT : TSP_FID_RESUME;
 	tsp_result = tftf_smc(&tsp_svc_params);
 
 	/*
@@ -370,7 +370,7 @@
 	SKIP_TEST_IF_TSP_NOT_PRESENT();
 
 	/* Issue RESUME */
-	tsp_svc_params.arg0 = TSP_FID_RESUME;
+	tsp_svc_params.fid = TSP_FID_RESUME;
 	tsp_result = tftf_smc(&tsp_svc_params);
 
 	if (tsp_result.ret0 != SMC_UNKNOWN) {
@@ -403,7 +403,7 @@
 	while ((count < STRESS_COUNT) &&
 			(res == TEST_RESULT_SUCCESS)) {
 		/* Standard SMC */
-		tsp_svc_params.arg0 = TSP_STD_FID(TSP_ADD);
+		tsp_svc_params.fid = TSP_STD_FID(TSP_ADD);
 		tsp_svc_params.arg1 = 4;
 		tsp_svc_params.arg2 = 6;
 		/* Try to preempt TSP via IRQ */
@@ -412,7 +412,7 @@
 			return res;
 
 		/* Issue RESUME */
-		tsp_svc_params.arg0 = TSP_FID_RESUME;
+		tsp_svc_params.fid = TSP_FID_RESUME;
 		tsp_result = tftf_smc(&tsp_svc_params);
 
 		/* Check the result of the addition */
@@ -454,7 +454,7 @@
 	SKIP_TEST_IF_TSP_NOT_PRESENT();
 
 	/* Standard SMC */
-	tsp_svc_params.arg0 = TSP_STD_FID(TSP_ADD);
+	tsp_svc_params.fid = TSP_STD_FID(TSP_ADD);
 	tsp_svc_params.arg1 = 4;
 	tsp_svc_params.arg2 = 6;
 	res = preempt_tsp_via_SGI(&tsp_svc_params, 1);
@@ -462,7 +462,7 @@
 		return res;
 
 	/* Now that we have ensured preemption, issue RESUME */
-	tsp_svc_params.arg0 = TSP_FID_RESUME;
+	tsp_svc_params.fid = TSP_FID_RESUME;
 	tsp_result = tftf_smc(&tsp_svc_params);
 
 	/* Check the result of the addition */
diff --git a/tftf/tests/runtime_services/trusted_os/tsp/test_smc_tsp_std_fn_call.c b/tftf/tests/runtime_services/trusted_os/tsp/test_smc_tsp_std_fn_call.c
index 8363676..6e99309 100644
--- a/tftf/tests/runtime_services/trusted_os/tsp/test_smc_tsp_std_fn_call.c
+++ b/tftf/tests/runtime_services/trusted_os/tsp/test_smc_tsp_std_fn_call.c
@@ -29,7 +29,7 @@
 	SKIP_TEST_IF_TSP_NOT_PRESENT();
 
 	/* TrustedOS Service Call Count */
-	std_svc_args.arg0 = SMC_TOS_CALL_COUNT;
+	std_svc_args.fid = SMC_TOS_CALL_COUNT;
 	ret = tftf_smc(&std_svc_args);
 	if (ret.ret0 != TSP_NUM_FID) {
 		tftf_testcase_printf("Wrong Call Count: expected %u,\n"
@@ -39,7 +39,7 @@
 	}
 
 	/* TrustedOS Service Call Revision details */
-	std_svc_args.arg0 = SMC_TOS_REVISION;
+	std_svc_args.fid = SMC_TOS_REVISION;
 	ret = tftf_smc(&std_svc_args);
 	if ((ret.ret0 != TSP_REVISION_MAJOR) ||
 		 ret.ret1 != TSP_REVISION_MINOR) {
