refactor(SMCCC): use a macro to check for the SMCCC version
This is similar to other macros that skip the test if a condition is failed.
Change-Id: If8ff8b29473151edf1872636bce9ee0950851c42
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
diff --git a/include/common/test_helpers.h b/include/common/test_helpers.h
index 6f97bb3..fc557ae 100644
--- a/include/common/test_helpers.h
+++ b/include/common/test_helpers.h
@@ -88,6 +88,20 @@
} \
} while (0)
+#define SKIP_TEST_IF_SMCCC_VERSION_LT(major, minor) \
+ do { \
+ smc_args args = {0}; \
+ smc_ret_values ret; \
+ args.fid = SMCCC_VERSION; \
+ ret = tftf_smc(&args); \
+ if ((int32_t)ret.ret0 < MAKE_SMCCC_VERSION(major, minor)) { \
+ tftf_testcase_printf( \
+ "Unexpected SMCCC version: 0x%x\n", \
+ (int)ret.ret0); \
+ return TEST_RESULT_SKIPPED; \
+ } \
+ } while (0)
+
#define SKIP_TEST_IF_DIT_NOT_SUPPORTED() \
do { \
if (!is_armv8_4_dit_present()) { \
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 93abf15..7babcd1 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
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2024, Arm Limited. All rights reserved.
* Copyright (c) 2020, NVIDIA Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
@@ -13,6 +13,7 @@
#include <psci.h>
#include <smccc.h>
#include <string.h>
+#include <test_helpers.h>
#include <tftf_lib.h>
#ifdef __aarch64__
@@ -69,21 +70,11 @@
{
smc_args args;
smc_ret_values ret;
- int32_t expected_ver;
unsigned int my_midr, midr_mask;
int wa_required;
size_t i;
- /* Check if SMCCC version is at least v1.1 */
- expected_ver = MAKE_SMCCC_VERSION(1, 1);
- memset(&args, 0, sizeof(args));
- args.fid = SMCCC_VERSION;
- ret = tftf_smc(&args);
- if ((int32_t)ret.ret0 < expected_ver) {
- tftf_testcase_printf("Unexpected SMCCC version: 0x%x\n",
- (int)ret.ret0);
- return TEST_RESULT_SKIPPED;
- }
+ SKIP_TEST_IF_SMCCC_VERSION_LT(1, 1);
/* Check if SMCCC_ARCH_WORKAROUND_1 is required or not */
memset(&args, 0, sizeof(args));
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 1557e4f..b5aa636 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
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
+ * Copyright (c) 2019-2024, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -12,6 +12,7 @@
#include <psci.h>
#include <smccc.h>
#include <string.h>
+#include <test_helpers.h>
#include <tftf_lib.h>
#ifdef __aarch64__
@@ -40,20 +41,10 @@
{
smc_args args;
smc_ret_values ret;
- int32_t expected_ver;
unsigned int my_midr, midr_mask;
size_t i;
- /* Check if SMCCC version is at least v1.1 */
- expected_ver = MAKE_SMCCC_VERSION(1, 1);
- memset(&args, 0, sizeof(args));
- args.fid = SMCCC_VERSION;
- ret = tftf_smc(&args);
- if ((int32_t)ret.ret0 < expected_ver) {
- tftf_testcase_printf("Unexpected SMCCC version: 0x%x\n",
- (int)ret.ret0);
- return TEST_RESULT_SKIPPED;
- }
+ SKIP_TEST_IF_SMCCC_VERSION_LT(1, 1);
/* Check if SMCCC_ARCH_WORKAROUND_2 is required or not */
memset(&args, 0, sizeof(args));
diff --git a/tftf/tests/runtime_services/arm_arch_svc/smccc_arch_workaround_3.c b/tftf/tests/runtime_services/arm_arch_svc/smccc_arch_workaround_3.c
index ebf40a5..77c50cc 100644
--- a/tftf/tests/runtime_services/arm_arch_svc/smccc_arch_workaround_3.c
+++ b/tftf/tests/runtime_services/arm_arch_svc/smccc_arch_workaround_3.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022, Arm Limited. All rights reserved.
+ * Copyright (c) 2022-2024, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -12,6 +12,7 @@
#include <psci.h>
#include <smccc.h>
#include <string.h>
+#include <test_helpers.h>
#include <tftf_lib.h>
#ifdef __aarch64__
@@ -65,21 +66,11 @@
{
smc_args args;
smc_ret_values ret;
- int32_t expected_ver;
unsigned int my_midr, midr_mask;
int wa_required;
size_t i;
- /* Check if SMCCC version is at least v1.1 */
- expected_ver = MAKE_SMCCC_VERSION(1, 1);
- memset(&args, 0, sizeof(args));
- args.fid = SMCCC_VERSION;
- ret = tftf_smc(&args);
- if ((int32_t)ret.ret0 < expected_ver) {
- tftf_testcase_printf("Unexpected SMCCC version: 0x%x\n",
- (int)ret.ret0);
- return TEST_RESULT_SKIPPED;
- }
+ SKIP_TEST_IF_SMCCC_VERSION_LT(1, 1);
/* Check if SMCCC_ARCH_WORKAROUND_3 is required or not */
memset(&args, 0, sizeof(args));