summaryrefslogtreecommitdiff
path: root/meta-arm/meta-arm
diff options
context:
space:
mode:
authorPatrick Williams <patrick@stwcx.xyz>2022-10-16 22:26:09 +0300
committerPatrick Williams <patrick@stwcx.xyz>2022-10-16 22:27:46 +0300
commit2194f503e17619bcd36b4289902d13457aac638e (patch)
treecafb71f7044ec9752543d5696295a7584927d249 /meta-arm/meta-arm
parentbdfb8a9cebc292bab790500a6439e4d83ec57bdf (diff)
downloadopenbmc-2194f503e17619bcd36b4289902d13457aac638e.tar.xz
subtree updates
meta-arm: 0164b4ca7a..13199c55c0: Adam Johnston (1): arm-bsp/linux-yocto: Upgrade kernel to v5.19 for N1SDP Anton Antonov (4): meta-arm/trusted-services: Use GCC toolchain for specific TS recipes only. arm/trusted-services: Remove patches merged upstream arm/trusted-services: Remove remaining patches merged upstream arm/trusted-services: include documentation Davidson K (1): arm-bsp/linux-arm64-ack: make it compatible with gcc-12 for TC Emekcan (2): arm-bsp/linux-yocto: update RPMSG_CTRL config for corstone1000 arm-bsp/kernel: Fix TEE driver bug for corstone1000 Jon Mason (3): CI: trusted services as a feature instead of a machine CI: cleanups for targets and removed tests arm-bsp: zephyr removal Peter Hoyes (1): arm/lib: Do not log FVP return codes < 0 Ross Burton (2): arm/optee-spdevkit: remove CI: restrict compression threading Rui Miguel Silva (1): arm-bsp/corstone1000: bump kernel version to 5.19 Rupinderjit Singh (1): arm: update Android common kernel Satish Kumar (4): arm-bsp/u-boot: corstone1000: esrt support arm-bsp/trusted-firmware-m: corstone1000: bump tfm SHA arm-bsp/trusted-firmware-m: corstone1000: fix sournce dir of libmetal and openamp arm-bsp/trusted-firmware-m: corstone1000: secure debug code checkout from yocto Sumit Garg (2): arm-toolchain: update Arm GCC to 11.3 external-arm-toolchain: Enable 11.3.rel1 support Vishnu Banavath (1): arm-bsp/corstone500: upgrade kernel to v5.19 meta-raspberrypi: 45d56d82b7..fc5f80a47e: Devendra Tewari (3): rpi-cmdline: Leave cma value to kernel default libcamera: Tweak to build for Raspberry Pi rpi-libcamera-apps: add new recipe Martin Jansa (1): lirc: rename bbappend to match 0.10.% Zygmunt Krynicki (2): ci: fix typo: unconditionally ci: fix apparent typo in file patterns meta-openembedded: ce0b93fc12..6529e5f963: Alexander Kanavin (3): python3-cchardet: depend on cython python3-gevent: make compatible with python 3.11 python3-pybluez: add python 3.11 patch Anuj Mittal (1): opencv: fix reproducibility issues Devendra Tewari (2): libcamera: Bump SRCREV and add libyaml to DEPENDS libcamera: Remove boost from DEPENDS Fabio Estevam (1): spice: Include aarch64 to COMPATIBLE_HOST Federico Pellegrin (2): chrony: add pkgconfig class as pkg-config is explicitly searched for chrony: correct parameter to configure to disable readline usage Hao Jiang (1): mctp: install the .target files Jiaqing Zhao (1): openldap: Upgrade 2.5.12 -> 2.5.13 Khem Raj (2): open62541: Disable lto on riscv/clang python3-gevent: Upgrade to 22.8.0 Leon Anavi (10): python3-networkx: Upgrade 2.8.6 -> 2.8.7 python3-coverage: Upgrade 6.4.4 -> 6.5.0 python3-rdflib: Upgrade 6.1.1 -> 6.2.0 python3-tabulate: Upgrade 0.8.10 -> 0.9.0 python3-imageio: Upgrade 2.22.0 -> 2.22.1 python3-astroid: Upgrade 2.12.10 -> 2.12.11 python3-jsonref: Upgrade 0.2 -> 0.3.0 python3-sentry-sdk: Upgrade 1.5.12 -> 1.9.10 python3-greenlet: Upgrade 1.1.3 -> 1.1.3.post0 python3-xmltodict: Upgrade 0.12.0 -> 0.13.0 Markus Volk (2): blueman: upgrade 2.2.4 -> 2.3.2 gtkmm3: upgrade 3.24.5 -> 3.24.7 Martin Jansa (2): re2: fix branch name from master to main jack: fix compatibility with python-3.11 Mathieu Dubois-Briand (3): mbedtls: Fix CVE product name mbedtls: Update to 2.28.1 version mbedtls: Whitelist CVE-2021-43666, CVE-2021-45451 Matthias Klein (1): paho-mqtt-c: upgrade 1.3.10 -> 1.3.11 Michael Opdenacker (1): tio: correct license information Mingli Yu (1): mariadb: not use qemu to run cross-compiled binaries S. Lockwood-Childs (1): x265: support aarch64 Thomas Perrot (1): spitools: remove unused BPV variable Vyacheslav Yurkov (1): opcua: Add new recipe Wang Mingyu (20): ctags: upgrade 5.9.20220925.0 -> 5.9.20221002.0 dnfdragora: upgrade 2.1.2 -> 2.1.3 dool: upgrade 1.0.0 -> 1.1.0 freeglut: upgrade 3.2.1 -> 3.4.0 gspell: upgrade 1.11.1 -> 1.12.0 hwdata: upgrade 0.362 -> 0.363 iperf3: upgrade 3.11 -> 3.12 libnet-dns-perl: upgrade 1.34 -> 1.35 lirc: upgrade 0.10.1 -> 0.10.2 metacity: upgrade 3.44.0 -> 3.46.0 flatbuffers: upgrade 2.0.8 -> 22.9.29 opencl-headers: upgrade 2022.09.23 -> 2022.09.30 php: upgrade 8.1.10 -> 8.1.11 poppler: upgrade 22.09.0 -> 22.10.0 xfstests: upgrade 2022.09.04 -> 2022.09.25 links: upgrade 2.27 -> 2.28 st: upgrade 0.8.5 -> 0.9 python3-requests-toolbelt: upgrade 0.9.1 -> 0.10.0 Add nativesdk-systemd-systemctl as dependency of dnf-plugin-tui dnf-plugin-tui: Add nativesdk Yi Zhao (4): strongswan: upgrade 5.9.7 -> 5.9.8 open-vm-tools: upgrade 11.3.5 -> 12.1.0 dhcp-relay: upgrade 4.4.3 -> 4.4.3-P1 frr: Security fix CVE-2022-37032 zhengrq.fnst (5): python3-protobuf: upgrade 4.21.6 -> 4.21.7 stunnel: upgrade 5.65 -> 5.66 python3-web3: upgrade 5.31.0 -> 5.31.1 wolfssl: upgrade 5.5.0 -> 5.5.1 python3-xmlschema: upgrade 2.1.0 -> 2.1.1 meta-security: 824d2762f6..e8e7318189: Armin Kuster (3): apparmor: update to 3.0.7 libgssglue: update to 0.7 cryptmount: update to 6.0 Michael Haener (1): tpm: update the linux-yocto rule with the one from sanity-meta-tpm class poky: 5200799866..3e5faccfaf: Johan Korsnes (1): migration guides: 3.4: remove spurious space in example Lee Chee Yang (1): migration guides: add release notes for 4.0.4 Michael Opdenacker (35): manuals: improve initramfs details manuals: add references to the "do_fetch" task manuals: add reference to the "do_install" task manuals: add references to the "do_build" task manuals: add reference to "do_configure" task manuals: add reference to the "do_compile" task manuals: add references to the "do_deploy" task manuals: add references to the "do_image" task manuals: add references to the "do_package" task manuals: add references to the "do_package_qa" task overview-manual: concepts.rst: add reference to "do_packagedata" task manuals: add references to the "do_patch" task manuals: add references to "do_package_write_*" tasks ref-manual: variables.rst: add reference to "do_populate_lic" task manuals: add reference to the "do_populate_sdk" task overview-manual: concepts.rst: add reference to "do_populate_sdk_ext" task manuals: add references to "do_populate_sysroot" task manuals: add references to the "do_unpack" task dev-manual: common-tasks.rst: add reference to "do_clean" task manuals: add references to the "do_cleanall" task ref-manual: tasks.rst: add references to the "do_cleansstate" task manuals: add references to the "do_devshell" task dev-manual: common-tasks.rst: add reference to "do_listtasks" task manuals: add references to the "do_bundle_initramfs" task manuals: add references to the "do_rootfs" task ref-manual: tasks.rst: add reference to the "do_kernel_checkout" task manuals: add reference to the "do_kernel_configcheck" task manuals: add references to the "do_kernel_configme" task ref-manual: tasks.rst: add reference to the "do_kernel_metadata" task migration-guides: add reference to the "do_shared_workdir" task ref-manual: tasks.rst: add reference to the "do_validate_branches" task ref-manual: tasks.rst: add reference to the "do_image_complete" task ref-manual: system-requirements: Ubuntu 22.04 now supported overview-manual: concepts.rst: fix formating and add references ref-manual/faq.rst: update references to products built with OE / Yocto Project Signed-off-by: Patrick Williams <patrick@stwcx.xyz> Change-Id: I14d679e25bd1c7545bc2d0f545f876aeb0a333b4
Diffstat (limited to 'meta-arm/meta-arm')
-rw-r--r--meta-arm/meta-arm/lib/fvp/runner.py5
-rw-r--r--meta-arm/meta-arm/recipes-kernel/linux/linux-arm64-ack_5.15.bb (renamed from meta-arm/meta-arm/recipes-kernel/linux/linux-arm64-ack_5.10.bb)8
-rw-r--r--meta-arm/meta-arm/recipes-security/optee/optee-spdevkit_3.10.0.bb305
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0001-Pass-Yocto-build-settings-to-psa-arch-tests-native.patch32
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0004-correctly-find-headers-dir.patch30
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0005-setting-sysroot-for-libgcc-lookup.patch30
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0006-applying-lowercase-project-convention.patch32
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0009-PSA-CRYPTO-API-INCLUDE.patch39
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0010-change-libts-to-export-CMake-package.patch346
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0011-Adapt-deployments-to-libts-changes.patch197
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0012-psa-arch-test-toolchain.patch40
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0017-Move-libsp-mocks-into-separate-component.patch349
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0018-Add-mock-for-libsp-sp_discovery.patch339
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0019-Add-mock-for-libsp-sp_memory_management.patch977
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0020-Add-mock-for-libsp-sp_messaging.patch284
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0021-Add-64-bit-direct-message-handling-to-libsp.patch2552
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0022-Change-MM-communicate-RPC-protocol-of-call-endpoint.patch497
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0023-Change-MM-communicate-RPC-protocol-of-MM-caller.patch100
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/files/0024-Deny-64-bit-FF-A-messages-in-FF-A-RPC-endpoint.patch70
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/libts/0001-QEMU-MM-communication-buffer-address.patch29
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/libts_%.bbappend3
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/libts_git.bb9
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/trusted-services-src.inc18
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/trusted-services.inc6
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/ts-demo_git.bb4
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib/0003-Add-newlib-deployment.patch85
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib/0021-newlib-configure.patch72
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib_4.1.0.bb11
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-api-test-common_git.inc2
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-iat-api-test/0012-PSA-TARGET-QCBOR.patch29
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-iat-api-test_git.bb5
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-common.inc3
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-env-test/0013-env-test-no-std-libs.patch33
-rw-r--r--meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-env-test_git.bb4
34 files changed, 66 insertions, 6479 deletions
diff --git a/meta-arm/meta-arm/lib/fvp/runner.py b/meta-arm/meta-arm/lib/fvp/runner.py
index c5c795dd32..28351a39ed 100644
--- a/meta-arm/meta-arm/lib/fvp/runner.py
+++ b/meta-arm/meta-arm/lib/fvp/runner.py
@@ -108,7 +108,10 @@ class FVPRunner:
console.expect(pexpect.EOF, timeout=5.0)
console.close()
- if self._fvp_process and self._fvp_process.returncode:
+ if self._fvp_process and self._fvp_process.returncode and \
+ self._fvp_process.returncode > 0:
+ # Return codes < 0 indicate that the process was explicitly
+ # terminated above.
self._logger.info(f"FVP quit with code {self._fvp_process.returncode}")
return self._fvp_process.returncode
else:
diff --git a/meta-arm/meta-arm/recipes-kernel/linux/linux-arm64-ack_5.10.bb b/meta-arm/meta-arm/recipes-kernel/linux/linux-arm64-ack_5.15.bb
index 7865b25ae1..c3c9b4dc36 100644
--- a/meta-arm/meta-arm/recipes-kernel/linux/linux-arm64-ack_5.10.bb
+++ b/meta-arm/meta-arm/recipes-kernel/linux/linux-arm64-ack_5.15.bb
@@ -1,14 +1,14 @@
# SPDX-License-Identifier: Apache-2.0
#
-# Copyright (c) 2021 Arm Limited
+# Copyright (c) 2022 Arm Limited
#
require linux-arm64-ack.inc
SRC_URI = " \
- git://android.googlesource.com/kernel/common.git;protocol=https;branch=android12-5.10-lts \
+ git://android.googlesource.com/kernel/common.git;protocol=https;branch=android13-5.15-lts \
file://0001-lib-build_OID_registry-fix-reproducibility-issues.patch \
file://0002-vt-conmakehash-improve-reproducibility.patch \
"
-# tag: ASB-2021-09-05_12-5.10
-SRCREV = "3d371f087c953c0e08a228169d4e5c44aea99416"
+# tag: ASB-2022-05-05_13-5.15-93-ge8b3f31d7a60
+SRCREV = "e8b3f31d7a60648343ecbd45ab58dbcfc425b22c"
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee-spdevkit_3.10.0.bb b/meta-arm/meta-arm/recipes-security/optee/optee-spdevkit_3.10.0.bb
deleted file mode 100644
index 7608cec044..0000000000
--- a/meta-arm/meta-arm/recipes-security/optee/optee-spdevkit_3.10.0.bb
+++ /dev/null
@@ -1,305 +0,0 @@
-SUMMARY = "OP-TEE Secure Partion Development Kit"
-DESCRIPTION = "Open Portable Trusted Execution Environment - Development Kit to run secure partitions"
-HOMEPAGE = "https://www.op-tee.org/"
-
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c1f21c4f72f372ef38a5a4aee55ec173"
-
-inherit deploy python3native
-require optee.inc
-FILESEXTRAPATHS:prepend := "${THISDIR}/optee-os:"
-
-CVE_PRODUCT = "linaro:op-tee op-tee:op-tee_os"
-
-DEPENDS = "python3-pyelftools-native"
-
-DEPENDS:append:toolchain-clang = " compiler-rt"
-
-# spdevkit isn't yet merged to master
-SRC_URI = "git://git.trustedfirmware.org/OP-TEE/optee_os.git;protocol=https;branch=psa-development \
- file://0006-allow-setting-sysroot-for-libgcc-lookup.patch \
- file://0007-allow-setting-sysroot-for-clang.patch \
-"
-SRCREV = "f9de2c9520ed97b89760cc4c99424aae440b63f4"
-PV = "3.10+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-B = "${WORKDIR}/build"
-
-EXTRA_OEMAKE += " \
- PLATFORM=${OPTEEMACHINE} \
- CFG_${OPTEE_CORE}_core=y \
- CROSS_COMPILE_core=${HOST_PREFIX} \
- CROSS_COMPILE_sp_${OPTEE_ARCH}=${HOST_PREFIX} \
- CFG_CORE_FFA=y \
- CFG_WITH_SP=y \
- O=${B} \
-"
-
-CFLAGS[unexport] = "1"
-LDFLAGS[unexport] = "1"
-CPPFLAGS[unexport] = "1"
-AS[unexport] = "1"
-LD[unexport] = "1"
-
-do_configure[noexec] = "1"
-
-do_compile() {
- oe_runmake -C ${S} sp_dev_kit
-}
-do_compile[cleandirs] = "${B}"
-
-do_install() {
- #install SP devkit
- install -d ${D}${includedir}/optee/export-user_sp/
- for f in ${B}/export-sp_${OPTEE_ARCH}/* ; do
- cp -aR $f ${D}${includedir}/optee/export-user_sp/
- done
- cat > ${D}${includedir}/optee/export-user_sp/include/stddef.h <<'EOF'
-#ifndef STDDEF_H
-#define STDDEF_H
-
-#include <stddef_.h>
-
-#ifndef _PTRDIFF_T
-typedef long ptrdiff_t;
-#define _PTRDIFF_T
-#endif
-
-#ifndef NULL
-#define NULL ((void *) 0)
-#endif
-
-#define offsetof(st, m) __builtin_offsetof(st, m)
-
-#endif /* STDDEF_H */
-EOF
- cat > ${D}${includedir}/optee/export-user_sp/include/stddef_.h <<'EOF'
-#ifndef STDDEF__H
-#define STDDEF__H
-
-#ifndef SIZET_
-typedef unsigned long size_t;
-#define SIZET_
-#endif
-
-#endif /* STDDEF__H */
-EOF
- cat > ${D}${includedir}/optee/export-user_sp/include/stdarg.h <<'EOF'
-#ifndef STDARG_H
-#define STDARG_H
-
-#define va_list __builtin_va_list
-#define va_start(ap, last) __builtin_va_start(ap, last)
-#define va_end(ap) __builtin_va_end(ap)
-#define va_copy(to, from) __builtin_va_copy(to, from)
-#define va_arg(to, type) __builtin_va_arg(to, type)
-
-#endif /* STDARG_H */
-EOF
- cat > ${D}${includedir}/optee/export-user_sp/include/stdbool.h <<'EOF'
-#ifndef STDBOOL_H
-#define STDBOOL_H
-
-#define bool _Bool
-
-#define true 1
-#define false 0
-
-#define __bool_true_false_are_defined 1
-
-#endif /* STDBOOL_H */
-EOF
-
-cat > ${D}${includedir}/optee/export-user_sp/include/features.h <<'EOF'
- #ifndef _FEATURES_H
- #define _FEATURES_H
- #if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE)
- #define _GNU_SOURCE 1
-#endif
- #if defined(_DEFAULT_SOURCE) && !defined(_BSD_SOURCE)
- #define _BSD_SOURCE 1
-#endif
- #if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \
- && !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \
- && !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__)
- #define _BSD_SOURCE 1
- #define _XOPEN_SOURCE 700
-#endif
- #if __STDC_VERSION__ >= 199901L
- #define __restrict restrict
- #elif !defined(__GNUC__)
- #define __restrict
-#endif
- #if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
- #define __inline inline
- #elif !defined(__GNUC__)
- #define __inline
-#endif
- #if __STDC_VERSION__ >= 201112L
- #elif defined(__GNUC__)
- #define _Noreturn __attribute__((__noreturn__))
-#else
- #define _Noreturn
-#endif
- #define __REDIR(x,y) __typeof__(x) x __asm__(#y)
-#endif
-EOF
-cat > ${D}${includedir}/optee/export-user_sp/include/errno.h <<'EOF'
- #ifndef _ERRNO_H
- #define _ERRNO_H
- #include <features.h>
- #define EPERM 1
- #define ENOENT 2
- #define ESRCH 3
- #define EINTR 4
- #define EIO 5
- #define ENXIO 6
- #define E2BIG 7
- #define ENOEXEC 8
- #define EBADF 9
- #define ECHILD 10
- #define EAGAIN 11
- #define ENOMEM 12
- #define EACCES 13
- #define EFAULT 14
- #define ENOTBLK 15
- #define EBUSY 16
- #define EEXIST 17
- #define EXDEV 18
- #define ENODEV 19
- #define ENOTDIR 20
- #define EISDIR 21
- #define EINVAL 22
- #define ENFILE 23
- #define EMFILE 24
- #define ENOTTY 25
- #define ETXTBSY 26
- #define EFBIG 27
- #define ENOSPC 28
- #define ESPIPE 29
- #define EROFS 30
- #define EMLINK 31
- #define EPIPE 32
- #define EDOM 33
- #define ERANGE 34
- #define EDEADLK 35
- #define ENAMETOOLONG 36
- #define ENOLCK 37
- #define ENOSYS 38
- #define ENOTEMPTY 39
- #define ELOOP 40
- #define EWOULDBLOCK EAGAIN
- #define ENOMSG 42
- #define EIDRM 43
- #define ECHRNG 44
- #define EL2NSYNC 45
- #define EL3HLT 46
- #define EL3RST 47
- #define ELNRNG 48
- #define EUNATCH 49
- #define ENOCSI 50
- #define EL2HLT 51
- #define EBADE 52
- #define EBADR 53
- #define EXFULL 54
- #define ENOANO 55
- #define EBADRQC 56
- #define EBADSLT 57
- #define EDEADLOCK EDEADLK
- #define EBFONT 59
- #define ENOSTR 60
- #define ENODATA 61
- #define ETIME 62
- #define ENOSR 63
- #define ENONET 64
- #define ENOPKG 65
- #define EREMOTE 66
- #define ENOLINK 67
- #define EADV 68
- #define ESRMNT 69
- #define ECOMM 70
- #define EPROTO 71
- #define EMULTIHOP 72
- #define EDOTDOT 73
- #define EBADMSG 74
- #define EOVERFLOW 75
- #define ENOTUNIQ 76
- #define EBADFD 77
- #define EREMCHG 78
- #define ELIBACC 79
- #define ELIBBAD 80
- #define ELIBSCN 81
- #define ELIBMAX 82
- #define ELIBEXEC 83
- #define EILSEQ 84
- #define ERESTART 85
- #define ESTRPIPE 86
- #define EUSERS 87
- #define ENOTSOCK 88
- #define EDESTADDRREQ 89
- #define EMSGSIZE 90
- #define EPROTOTYPE 91
- #define ENOPROTOOPT 92
- #define EPROTONOSUPPORT 93
- #define ESOCKTNOSUPPORT 94
- #define EOPNOTSUPP 95
- #define ENOTSUP EOPNOTSUPP
- #define EPFNOSUPPORT 96
- #define EAFNOSUPPORT 97
- #define EADDRINUSE 98
- #define EADDRNOTAVAIL 99
- #define ENETDOWN 100
- #define ENETUNREACH 101
- #define ENETRESET 102
- #define ECONNABORTED 103
- #define ECONNRESET 104
- #define ENOBUFS 105
- #define EISCONN 106
- #define ENOTCONN 107
- #define ESHUTDOWN 108
- #define ETOOMANYREFS 109
- #define ETIMEDOUT 110
- #define ECONNREFUSED 111
- #define EHOSTDOWN 112
- #define EHOSTUNREACH 113
- #define EALREADY 114
- #define EINPROGRESS 115
- #define ESTALE 116
- #define EUCLEAN 117
- #define ENOTNAM 118
- #define ENAVAIL 119
- #define EISNAM 120
- #define EREMOTEIO 121
- #define EDQUOT 122
- #define ENOMEDIUM 123
- #define EMEDIUMTYPE 124
- #define ECANCELED 125
- #define ENOKEY 126
- #define EKEYEXPIRED 127
- #define EKEYREVOKED 128
- #define EKEYREJECTED 129
- #define EOWNERDEAD 130
- #define ENOTRECOVERABLE 131
- #define ERFKILL 132
- #define EHWPOISON 133
- #ifdef __GNUC__
- __attribute__((const))
-#endif
- int *__errno_location(void);
- #define errno (*__errno_location())
- #ifdef _GNU_SOURCE
- extern char *program_invocation_short_name, *program_invocation_name;
-#endif
-#endif
-EOF
-}
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-COMPATIBLE_HOST = "aarch64.*-linux"
-
-# optee-spdevkit static library is part of optee-os image. No need to package this library in a staticdev package
-INSANE_SKIP:${PN}-dev = "staticdev"
-# Build paths are currently embedded
-INSANE_SKIP:${PN}-dev += "buildpaths"
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0001-Pass-Yocto-build-settings-to-psa-arch-tests-native.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0001-Pass-Yocto-build-settings-to-psa-arch-tests-native.patch
new file mode 100644
index 0000000000..516aa55f5e
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/files/0001-Pass-Yocto-build-settings-to-psa-arch-tests-native.patch
@@ -0,0 +1,32 @@
+From 3f9b148fe3cad9f1bc6eb08ff8807c54dec5b8d9 Mon Sep 17 00:00:00 2001
+From: Anton Antonov <Anton.Antonov@arm.com>
+Date: Tue, 11 Oct 2022 16:17:15 +0100
+Subject: [PATCH] Pass Yocto build settings to psa-arch-tests native build
+
+PSA-arch-tests need to build a native executable as a part of target build.
+The patch defines correct toolchain settings for native builds.
+
+Upstream-Status: Inappropriate [Yocto build specific change]
+Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
+---
+ api-tests/tools/scripts/target_cfg/CMakeLists.txt | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/api-tests/tools/scripts/target_cfg/CMakeLists.txt b/api-tests/tools/scripts/target_cfg/CMakeLists.txt
+index 259eb9c..fec1fb8 100644
+--- a/api-tests/tools/scripts/target_cfg/CMakeLists.txt
++++ b/api-tests/tools/scripts/target_cfg/CMakeLists.txt
+@@ -26,7 +26,9 @@ include("common/CMakeSettings")
+ include("common/Utils")
+
+ # Causes toolchain to be re-evaluated
+-unset(ENV{CC})
++set(ENV{CC} $ENV{BUILD_CC})
++set(ENV{CFLAGS} $ENV{BUILD_CFLAGS})
++set(ENV{LDFLAGS} $ENV{BUILD_LDFLAGS})
+
+ # Let the CMake look for C compiler
+ project(TargetConfigGen LANGUAGES C)
+--
+2.25.1
+
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0004-correctly-find-headers-dir.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0004-correctly-find-headers-dir.patch
deleted file mode 100644
index b73b5dc350..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0004-correctly-find-headers-dir.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 1b9c8d4a7c9519c6085827da8be6546ce80ee711 Mon Sep 17 00:00:00 2001
-From: Anton Antonov <Anton.Antonov@arm.com>
-Date: Wed, 31 Aug 2022 17:05:14 +0100
-Subject: [PATCH 1/4] Allow to find libgcc headers
-
-Upstream-Status: Pending
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
----
- external/newlib/newlib.cmake | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/external/newlib/newlib.cmake b/external/newlib/newlib.cmake
-index fff5e2a..13eb78c 100644
---- a/external/newlib/newlib.cmake
-+++ b/external/newlib/newlib.cmake
-@@ -82,7 +82,10 @@ message(STATUS "libgcc.a is used from ${LIBGCC_PATH}")
- # Moreover the GCC specific header file include directory is also required.
- # Specify LIBGCC_INCLUDE_DIRS in the command line to manually override the libgcc relative location below.
- if(NOT DEFINED LIBGCC_INCLUDE_DIRS)
-- get_filename_component(_TMP_VAR "${LIBGCC_PATH}" DIRECTORY)
-+
-+ # "libgcc.a" lib location in ${LIBGCC_PATH} might not contain a correct path to headers
-+ # We can get the correct path if we ask for a location without a library name
-+ gcc_get_lib_location(LIBRARY_NAME "" RES _TMP_VAR)
- set(LIBGCC_INCLUDE_DIRS
- "${_TMP_VAR}/include"
- "${_TMP_VAR}/include-fixed" CACHE STRING "GCC specific include PATHs")
---
-2.25.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0005-setting-sysroot-for-libgcc-lookup.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0005-setting-sysroot-for-libgcc-lookup.patch
deleted file mode 100644
index b226bc4156..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0005-setting-sysroot-for-libgcc-lookup.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 0fbf81d10e0f2aabb80105fabe4ffdf87e28e664 Mon Sep 17 00:00:00 2001
-From: Anton Antonov <Anton.Antonov@arm.com>
-Date: Wed, 31 Aug 2022 17:06:07 +0100
-Subject: [PATCH 2/4] Allow setting sysroot for libgcc lookup
-
-Explicitly pass the new variable LIBGCC_LOCATE_CFLAGS variable when searching
-for the compiler libraries.
-
-Upstream-Status: Pending
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
----
- tools/cmake/compiler/GCC.cmake | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tools/cmake/compiler/GCC.cmake b/tools/cmake/compiler/GCC.cmake
-index 5a8fa59..d591c44 100644
---- a/tools/cmake/compiler/GCC.cmake
-+++ b/tools/cmake/compiler/GCC.cmake
-@@ -268,7 +268,7 @@ function(gcc_get_lib_location)
- cmake_parse_arguments(MY "${options}" "${oneValueArgs}"
- "${multiValueArgs}" ${ARGN} )
- execute_process(
-- COMMAND ${CMAKE_C_COMPILER} "--print-file-name=${MY_LIBRARY_NAME}"
-+ COMMAND ${CMAKE_C_COMPILER} ${LIBGCC_LOCATE_CFLAGS} --print-file-name=${MY_LIBRARY_NAME}
- OUTPUT_VARIABLE _RES
- RESULT_VARIABLE _GCC_ERROR_CODE
- OUTPUT_STRIP_TRAILING_WHITESPACE
---
-2.25.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0006-applying-lowercase-project-convention.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0006-applying-lowercase-project-convention.patch
deleted file mode 100644
index 09f38c0049..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0006-applying-lowercase-project-convention.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 37559c70443fe85e246f1f652045f0cd3c78012b Mon Sep 17 00:00:00 2001
-From: Vishnu Banavath <vishnu.banavath@arm.com>
-Date: Sat, 13 Nov 2021 07:47:44 +0000
-Subject: [PATCH] tools/cmake/common: applying lowercase project convention
-
-Lowercase convention should only apply on the paths inside TS
-source-code.
-Host build paths should not be lowercased. Otherwise, builds
-with uppercase paths will break.
-
-Upstream-Status: Pending [In review]
-Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-
-diff --git a/tools/cmake/common/AddPlatform.cmake b/tools/cmake/common/AddPlatform.cmake
-index ae34c6e..31bcd8c 100644
---- a/tools/cmake/common/AddPlatform.cmake
-+++ b/tools/cmake/common/AddPlatform.cmake
-@@ -37,8 +37,8 @@ function(add_platform)
- set(TGT ${MY_PARAMS_TARGET} CACHE STRING "")
-
- # Ensure file path conforms to lowercase project convention
-- string(TOLOWER "${TS_PLATFORM_ROOT}/${TS_PLATFORM}/platform.cmake" _platdef)
-- include(${_platdef})
-+ string(TOLOWER "${TS_PLATFORM}/platform.cmake" _platdef)
-+ include(${TS_PLATFORM_ROOT}/${_platdef})
- set(CMAKE_CONFIGURE_DEPENDS ${_platdef})
-
- unset(TGT CACHE)
---
-2.25.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0009-PSA-CRYPTO-API-INCLUDE.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0009-PSA-CRYPTO-API-INCLUDE.patch
deleted file mode 100644
index 9054f1c8b6..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0009-PSA-CRYPTO-API-INCLUDE.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 7f254bf14a97d14d19e61e2b8f8359bc238f3f1b Mon Sep 17 00:00:00 2001
-From: Anton Antonov <Anton.Antonov@arm.com>
-Date: Wed, 31 Aug 2022 17:07:51 +0100
-Subject: [PATCH 3/4] Always define PSA_CRYPTO_API_INCLUDE
-
-PSA_CRYPTO_API_INCLUDE is not defined when pre-built mbedtls was used.
-
-Upstream-Status: Pending
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
----
- external/MbedTLS/MbedTLS.cmake | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/external/MbedTLS/MbedTLS.cmake b/external/MbedTLS/MbedTLS.cmake
-index 3193a07..f15e25d 100644
---- a/external/MbedTLS/MbedTLS.cmake
-+++ b/external/MbedTLS/MbedTLS.cmake
-@@ -96,8 +96,6 @@ if (NOT MBEDCRYPTO_LIB_FILE)
- #Configure Mbed TLS to build only mbedcrypto lib
- execute_process(COMMAND ${Python3_EXECUTABLE} scripts/config.py crypto WORKING_DIRECTORY ${MBEDTLS_SOURCE_DIR})
-
-- # Advertise Mbed TLS as the provider of the psa crypto API
-- set(PSA_CRYPTO_API_INCLUDE "${MBEDTLS_INSTALL_DIR}/include" CACHE STRING "PSA Crypto API include path")
-
- include(${TS_ROOT}/tools/cmake/common/PropertyCopy.cmake)
-
-@@ -157,6 +155,9 @@ if (NOT MBEDCRYPTO_LIB_FILE)
- set(MBEDCRYPTO_LIB_FILE "${MBEDTLS_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}mbedcrypto${CMAKE_STATIC_LIBRARY_SUFFIX}")
- endif()
-
-+# Advertise Mbed TLS as the provider of the psa crypto API
-+set(PSA_CRYPTO_API_INCLUDE "${MBEDTLS_INSTALL_DIR}/include" CACHE STRING "PSA Crypto API include path")
-+
- #Create an imported target to have clean abstraction in the build-system.
- add_library(mbedcrypto STATIC IMPORTED)
- set_property(DIRECTORY ${CMAKE_SOURCE_DIR} APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${MBEDCRYPTO_LIB_FILE})
---
-2.25.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0010-change-libts-to-export-CMake-package.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0010-change-libts-to-export-CMake-package.patch
deleted file mode 100644
index 169ef59fb3..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0010-change-libts-to-export-CMake-package.patch
+++ /dev/null
@@ -1,346 +0,0 @@
-From 0ff5a6163bd2760bb6a61fd5a185a2b92da5e86b Mon Sep 17 00:00:00 2001
-From: Gyorgy Szing <Gyorgy.Szing@arm.com>
-Date: Wed, 20 Jul 2022 12:36:52 +0000
-Subject: [PATCH] Fix: change libts to export a CMake package
-
-libts install content was not compatible to find_module() which made
-using a pre-built libts binary from CMake less than ideal.
-
-This change adds the missing files and updates export and install
-commands to make libts generate a proper CMake package.
-
-From now on an external project will be able to use find_module() to
-integrate libts into its build.
-
-Signed-off-by: Gyorgy Szing <Gyorgy.Szing@arm.com>
-Change-Id: I9e86e02030f6fb3c86af45252110f939cb82670c
-
-Upstream-Status: Pending [In review]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-
----
-
-diff --git a/components/messaging/ffa/libsp/component.cmake b/components/messaging/ffa/libsp/component.cmake
-index a21c630..ec4cf6c 100644
---- a/components/messaging/ffa/libsp/component.cmake
-+++ b/components/messaging/ffa/libsp/component.cmake
-@@ -1,5 +1,5 @@
- #-------------------------------------------------------------------------------
--# Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
-+# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -21,7 +21,7 @@
- "${CMAKE_CURRENT_LIST_DIR}/sp_rxtx.c"
- )
-
--set_property(TARGET ${TGT} PROPERTY PUBLIC_HEADER
-+set_property(TARGET ${TGT} APPEND PROPERTY PUBLIC_HEADER
- ${CMAKE_CURRENT_LIST_DIR}/include/ffa_api.h
- ${CMAKE_CURRENT_LIST_DIR}/include/ffa_api_defines.h
- ${CMAKE_CURRENT_LIST_DIR}/include/ffa_api_types.h
-@@ -49,5 +49,5 @@
- target_include_directories(${TGT}
- PUBLIC
- "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
-- "$<INSTALL_INTERFACE:include>"
-+ "$<INSTALL_INTERFACE:${TS_ENV}/include">
- )
-diff --git a/components/rpc/common/interface/component.cmake b/components/rpc/common/interface/component.cmake
-index d567602..e4b2477 100644
---- a/components/rpc/common/interface/component.cmake
-+++ b/components/rpc/common/interface/component.cmake
-@@ -1,5 +1,5 @@
- #-------------------------------------------------------------------------------
--# Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
-+# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -8,11 +8,12 @@
- message(FATAL_ERROR "mandatory parameter TGT is not defined.")
- endif()
-
--set_property(TARGET ${TGT} PROPERTY RPC_CALLER_PUBLIC_HEADER_FILES
-+set_property(TARGET ${TGT} APPEND PROPERTY PUBLIC_HEADER
- "${CMAKE_CURRENT_LIST_DIR}/rpc_caller.h"
- "${CMAKE_CURRENT_LIST_DIR}/rpc_status.h"
- )
-
- target_include_directories(${TGT} PUBLIC
-- "${CMAKE_CURRENT_LIST_DIR}"
-+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>"
-+ "$<INSTALL_INTERFACE:${TS_ENV}/include>"
- )
-diff --git a/components/service/locator/interface/component.cmake b/components/service/locator/interface/component.cmake
-index b5aefa3..84a4d75 100644
---- a/components/service/locator/interface/component.cmake
-+++ b/components/service/locator/interface/component.cmake
-@@ -1,5 +1,5 @@
- #-------------------------------------------------------------------------------
--# Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
-+# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -8,10 +8,11 @@
- message(FATAL_ERROR "mandatory parameter TGT is not defined.")
- endif()
-
--set_property(TARGET ${TGT} PROPERTY SERVICE_LOCATOR_PUBLIC_HEADER_FILES
-+set_property(TARGET ${TGT} APPEND PROPERTY PUBLIC_HEADER
- "${CMAKE_CURRENT_LIST_DIR}/service_locator.h"
- )
-
- target_include_directories(${TGT} PUBLIC
-- "${CMAKE_CURRENT_LIST_DIR}"
-+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>"
-+ "$<INSTALL_INTERFACE:${TS_ENV}/include>"
- )
-diff --git a/deployments/libts/libts-import.cmake b/deployments/libts/libts-import.cmake
-index dcabc45..fcfc2ac 100644
---- a/deployments/libts/libts-import.cmake
-+++ b/deployments/libts/libts-import.cmake
-@@ -11,48 +11,18 @@
- # CMake build file allows libts to be built and installed into the binary
- # directory of the dependent.
- #-------------------------------------------------------------------------------
--
--# Determine the number of processes to run while running parallel builds.
--# Pass -DPROCESSOR_COUNT=<n> to cmake to override.
--if(NOT DEFINED PROCESSOR_COUNT)
-- include(ProcessorCount)
-- ProcessorCount(PROCESSOR_COUNT)
-- set(PROCESSOR_COUNT ${PROCESSOR_COUNT} CACHE STRING "Number of cores to use for parallel builds.")
-+option(CFG_FORCE_PREBUILT_LIBTS Off)
-+# Try to find a pre-build package.
-+find_package(libts "1.0.0" QUIET)
-+if(NOT libts_FOUND)
-+ if (CFG_FORCE_PREBUILT_LIBTS)
-+ string(CONCAT _msg "find_package() failed to find the \"libts\" package. Please set libts_DIR or"
-+ " CMAKE_FIND_ROOT_PATH properly.\n"
-+ "If you wish to debug the search process pass -DCMAKE_FIND_DEBUG_MODE=ON to cmake.")
-+ message(FATAL_ERROR ${_msg})
-+ endif()
-+ # If not successful, build libts as a sub-project.
-+ add_subdirectory(${TS_ROOT}/deployments/libts/${TS_ENV} ${CMAKE_BINARY_DIR}/libts)
-+else()
-+ message(STATUS "Using prebuilt libts from ${libts_DIR}")
- endif()
--
--set(LIBTS_INSTALL_PATH "${CMAKE_CURRENT_BINARY_DIR}/libts_install" CACHE PATH "libts installation directory")
--set(LIBTS_PACKAGE_PATH "${LIBTS_INSTALL_PATH}/lib/cmake" CACHE PATH "libts CMake package directory")
--set(LIBTS_SOURCE_DIR "${TS_ROOT}/deployments/libts/${TS_ENV}" CACHE PATH "libts source directory")
--set(LIBTS_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/libts-build" CACHE PATH "libts binary directory")
--
--file(MAKE_DIRECTORY ${LIBTS_BINARY_DIR})
--
--#Configure the library
--execute_process(COMMAND
-- ${CMAKE_COMMAND}
-- -DCMAKE_INSTALL_PREFIX=${LIBTS_INSTALL_PATH}
-- -GUnix\ Makefiles
-- -S ${LIBTS_SOURCE_DIR}
-- -B ${LIBTS_BINARY_DIR}
-- RESULT_VARIABLE _exec_error
--)
--
--if (_exec_error)
-- message(FATAL_ERROR "Configuration step of libts failed with ${_exec_error}.")
--endif()
--
--#Build the library
--execute_process(COMMAND
-- ${CMAKE_COMMAND} --build ${LIBTS_BINARY_DIR} --parallel ${PROCESSOR_COUNT} --target install
-- RESULT_VARIABLE _exec_error
--)
--
--if (_exec_error)
-- message(FATAL_ERROR "Build step of libts failed with ${_exec_error}.")
--endif()
--
--# Import the built library
--include(${LIBTS_INSTALL_PATH}/${TS_ENV}/lib/cmake/libts_targets.cmake)
--add_library(libts SHARED IMPORTED)
--set_property(TARGET libts PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${LIBTS_INSTALL_PATH}/${TS_ENV}/include")
--set_property(TARGET libts PROPERTY IMPORTED_LOCATION "${LIBTS_INSTALL_PATH}/${TS_ENV}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}ts${CMAKE_SHARED_LIBRARY_SUFFIX}")
-diff --git a/deployments/libts/libts.cmake b/deployments/libts/libts.cmake
-index 6463ca1..7f278fd 100644
---- a/deployments/libts/libts.cmake
-+++ b/deployments/libts/libts.cmake
-@@ -1,5 +1,5 @@
- #-------------------------------------------------------------------------------
--# Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
-+# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -18,12 +18,11 @@
- MAJOR _major MINOR _minor PATCH _patch)
- set_target_properties(ts PROPERTIES VERSION "${_major}.${_minor}.${_patch}")
- set_target_properties(ts PROPERTIES SOVERSION "${_major}")
--unset(_major)
--unset(_minor)
--unset(_patch)
-+
-+add_library(libts::ts ALIAS ts)
-
- #-------------------------------------------------------------------------------
--# Components that are common accross all deployments
-+# Components that are common across all deployments
- #
- #-------------------------------------------------------------------------------
- add_components(
-@@ -53,19 +52,13 @@
- #-------------------------------------------------------------------------------
- include(${TS_ROOT}/tools/cmake/common/ExportLibrary.cmake REQUIRED)
-
--# Select public header files to export
--get_property(_rpc_caller_public_header_files TARGET ts
-- PROPERTY RPC_CALLER_PUBLIC_HEADER_FILES
--)
--
--get_property(_service_locator_public_header_files TARGET ts
-- PROPERTY SERVICE_LOCATOR_PUBLIC_HEADER_FILES
--)
-+get_property(_tmp TARGET ts PROPERTY PUBLIC_HEADER)
-
- # Exports library information in preparation for install
- export_library(
- TARGET "ts"
- LIB_NAME "libts"
-+ PKG_CONFIG_FILE "${CMAKE_CURRENT_LIST_DIR}/libtsConfig.cmake.in"
- INTERFACE_FILES
- ${_rpc_caller_public_header_files}
- ${_service_locator_public_header_files}
-diff --git a/deployments/libts/libtsConfig.cmake.in b/deployments/libts/libtsConfig.cmake.in
-new file mode 100644
-index 0000000..4860135
---- /dev/null
-+++ b/deployments/libts/libtsConfig.cmake.in
-@@ -0,0 +1,10 @@
-+#
-+# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
-+#
-+# SPDX-License-Identifier: BSD-3-Clause
-+#
-+
-+@PACKAGE_INIT@
-+
-+include("${CMAKE_CURRENT_LIST_DIR}/libtsTargets.cmake")
-+
-diff --git a/tools/cmake/common/ExportLibrary.cmake b/tools/cmake/common/ExportLibrary.cmake
-index fed4e75..4fcf481 100644
---- a/tools/cmake/common/ExportLibrary.cmake
-+++ b/tools/cmake/common/ExportLibrary.cmake
-@@ -1,5 +1,5 @@
- #-------------------------------------------------------------------------------
--# Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
-+# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -26,17 +26,29 @@
- #]===]
- function(export_library)
- set(options )
-- set(oneValueArgs TARGET LIB_NAME)
-+ set(oneValueArgs TARGET LIB_NAME PKG_CONFIG_FILE)
- set(multiValueArgs INTERFACE_FILES)
- cmake_parse_arguments(MY_PARAMS "${options}" "${oneValueArgs}"
- "${multiValueArgs}" ${ARGN} )
-
-- if(NOT DEFINED MY_PARAMS_TARGET)
-- message(FATAL_ERROR "export_library: mandatory parameter TARGET not defined!")
-+ foreach(_param IN ITEMS MY_PARAMS_TARGET MY_PARAMS_LIB_NAME MY_PARAMS_PKG_CONFIG_FILE)
-+ if(NOT DEFINED ${_param})
-+ list(APPEND _miss_params "${_param}" )
-+ endif()
-+ endforeach()
-+
-+ if (_miss_params)
-+ string(REPLACE ";" ", " _miss_params "${_miss_params}")
-+ message(FATAL_ERROR "export_library: mandatory parameter(s) ${_miss_params} not defined!")
- endif()
-- if(NOT DEFINED MY_PARAMS_LIB_NAME)
-- message(FATAL_ERROR "export_library: mandatory parameter LIB_NAME not defined!")
-- endif()
-+
-+
-+ string(TOUPPER "${MY_PARAMS_LIB_NAME}" UC_LIB_NAME)
-+ string(TOLOWER "${MY_PARAMS_LIB_NAME}" LC_LIB_NAME)
-+ string(SUBSTRING "${UC_LIB_NAME}" 0 1 CAP_LIB_NAME)
-+ string(SUBSTRING "${LC_LIB_NAME}" 1 -1 _tmp)
-+ string(APPEND CAP_LIB_NAME "${_tmp}")
-+
-
- # Set default install location if none specified
- if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
-@@ -55,6 +67,42 @@
- DESTINATION ${TS_ENV}/include
- )
-
-+ # Create a config file package.
-+ include(CMakePackageConfigHelpers)
-+ get_target_property(_ver ${MY_PARAMS_TARGET} VERSION)
-+ write_basic_package_version_file(
-+ "${CMAKE_CURRENT_BINARY_DIR}/${LC_LIB_NAME}ConfigVersion.cmake"
-+ VERSION "${_ver}"
-+ COMPATIBILITY SameMajorVersion
-+ )
-+
-+ # Create targets file.
-+ export(
-+ EXPORT
-+ ${MY_PARAMS_LIB_NAME}_targets
-+ FILE
-+ "${CMAKE_CURRENT_BINARY_DIR}/${MY_PARAMS_LIB_NAME}Targets.cmake"
-+ NAMESPACE
-+ ${MY_PARAMS_LIB_NAME}::
-+ )
-+
-+ # Finalize config file.
-+ # Config package location relative to install root.
-+ set(ConfigPackageLocation ${TS_ENV}/lib/cmake)
-+ # Config package location ??
-+ get_filename_component(ConfigPackageLocationRel ${ConfigPackageLocation} PATH)
-+
-+ get_filename_component(_configured_pkgcfg_name "${MY_PARAMS_PKG_CONFIG_FILE}" NAME_WLE)
-+ set(_configured_pkgcfg_name "${CMAKE_CURRENT_BINARY_DIR}/${_configured_pkgcfg_name}")
-+ configure_package_config_file(
-+ "${MY_PARAMS_PKG_CONFIG_FILE}"
-+ "${_configured_pkgcfg_name}"
-+ PATH_VARS
-+
-+ INSTALL_DESTINATION
-+ ${ConfigPackageLocationRel}
-+ )
-+
- # Install library header files files
- install(
- FILES ${MY_PARAMS_INTERFACE_FILES}
-@@ -64,9 +112,21 @@
- # Install the export details
- install(
- EXPORT ${MY_PARAMS_LIB_NAME}_targets
-- FILE ${MY_PARAMS_LIB_NAME}_targets.cmake
-+ FILE ${MY_PARAMS_LIB_NAME}Targets.cmake
- NAMESPACE ${MY_PARAMS_LIB_NAME}::
-- DESTINATION ${TS_ENV}/lib/cmake
-+ DESTINATION ${ConfigPackageLocation}
- COMPONENT ${MY_PARAMS_LIB_NAME}
- )
-+
-+
-+ # install config and version files
-+ install(
-+ FILES
-+ "${_configured_pkgcfg_name}"
-+ "${CMAKE_CURRENT_BINARY_DIR}/${LC_LIB_NAME}ConfigVersion.cmake"
-+ DESTINATION
-+ ${ConfigPackageLocation}
-+ COMPONENT
-+ ${MY_PARAMS_LIB_NAME}
-+ )
- endfunction()
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0011-Adapt-deployments-to-libts-changes.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0011-Adapt-deployments-to-libts-changes.patch
deleted file mode 100644
index 34b103576c..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0011-Adapt-deployments-to-libts-changes.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From dfadca01ff028f9fc935937cdaf92b0effff2b90 Mon Sep 17 00:00:00 2001
-From: Gyorgy Szing <Gyorgy.Szing@arm.com>
-Date: Wed, 20 Jul 2022 16:49:39 +0000
-Subject: [PATCH] Adapt deployments to libts changes
-
-Update deployments and restore compatibility to libts build-system
-interface changes.
-
-Signed-off-by: Gyorgy Szing <Gyorgy.Szing@arm.com>
-Change-Id: Iffd38f92fe628a2a6aaff60224986f22ec3a8a2a
-
-Upstream-Status: Pending [In review]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-
----
-
-diff --git a/deployments/platform-inspect/platform-inspect.cmake b/deployments/platform-inspect/platform-inspect.cmake
-index ef4ba4b..b1b316d 100644
---- a/deployments/platform-inspect/platform-inspect.cmake
-+++ b/deployments/platform-inspect/platform-inspect.cmake
-@@ -1,5 +1,5 @@
- #-------------------------------------------------------------------------------
--# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -12,14 +12,14 @@
-
- #-------------------------------------------------------------------------------
- # Use libts for locating and accessing trusted services. An appropriate version
--# of libts will be imported for the enviroment in which platform-inspect is
-+# of libts will be imported for the environment in which platform-inspect is
- # built.
- #-------------------------------------------------------------------------------
- include(${TS_ROOT}/deployments/libts/libts-import.cmake)
--target_link_libraries(platform-inspect PRIVATE libts)
-+target_link_libraries(platform-inspect PRIVATE libts::ts)
-
- #-------------------------------------------------------------------------------
--# Components that are common accross all deployments
-+# Components that are common across all deployments
- #
- #-------------------------------------------------------------------------------
- add_components(
-diff --git a/deployments/psa-api-test/psa-api-test.cmake b/deployments/psa-api-test/psa-api-test.cmake
-index d58620f..5c3469c 100644
---- a/deployments/psa-api-test/psa-api-test.cmake
-+++ b/deployments/psa-api-test/psa-api-test.cmake
-@@ -1,5 +1,5 @@
- #-------------------------------------------------------------------------------
--# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -12,14 +12,14 @@
-
- #-------------------------------------------------------------------------------
- # Use libts for locating and accessing services. An appropriate version of
--# libts will be imported for the enviroment in which service tests are
-+# libts will be imported for the environment in which service tests are
- # deployed.
- #-------------------------------------------------------------------------------
- include(${TS_ROOT}/deployments/libts/libts-import.cmake)
--target_link_libraries(${PROJECT_NAME} PRIVATE libts)
-+target_link_libraries(${PROJECT_NAME} PRIVATE libts::ts)
-
- #-------------------------------------------------------------------------------
--# Components that are common accross all deployments
-+# Components that are common across all deployments
- #
- #-------------------------------------------------------------------------------
- add_components(
-diff --git a/deployments/ts-demo/ts-demo.cmake b/deployments/ts-demo/ts-demo.cmake
-index 3e7cca0..9fd8585 100644
---- a/deployments/ts-demo/ts-demo.cmake
-+++ b/deployments/ts-demo/ts-demo.cmake
-@@ -1,5 +1,5 @@
- #-------------------------------------------------------------------------------
--# Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
-+# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -13,11 +13,11 @@
-
- #-------------------------------------------------------------------------------
- # Use libts for locating and accessing services. An appropriate version of
--# libts will be imported for the enviroment in which service tests are
-+# libts will be imported for the environment in which service tests are
- # deployed.
- #-------------------------------------------------------------------------------
- include(${TS_ROOT}/deployments/libts/libts-import.cmake)
--target_link_libraries(ts-demo PRIVATE libts)
-+target_link_libraries(ts-demo PRIVATE libts::ts)
-
- #-------------------------------------------------------------------------------
- # Common main for all deployments
-@@ -28,7 +28,7 @@
- )
-
- #-------------------------------------------------------------------------------
--# Components that are common accross all deployments
-+# Components that are common across all deployments
- #
- #-------------------------------------------------------------------------------
- add_components(
-diff --git a/deployments/ts-remote-test/ts-remote-test.cmake b/deployments/ts-remote-test/ts-remote-test.cmake
-index 0f35bb2..c310445 100644
---- a/deployments/ts-remote-test/ts-remote-test.cmake
-+++ b/deployments/ts-remote-test/ts-remote-test.cmake
-@@ -1,5 +1,5 @@
- #-------------------------------------------------------------------------------
--# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -13,11 +13,11 @@
-
- #-------------------------------------------------------------------------------
- # Use libts for locating and accessing services. An appropriate version of
--# libts will be imported for the enviroment in which tests are
-+# libts will be imported for the environment in which tests are
- # deployed.
- #-------------------------------------------------------------------------------
- include(${TS_ROOT}/deployments/libts/libts-import.cmake)
--target_link_libraries(ts-remote-test PRIVATE libts)
-+target_link_libraries(ts-remote-test PRIVATE libts::ts)
-
- #-------------------------------------------------------------------------------
- # Common main for all deployments
-@@ -28,7 +28,7 @@
- )
-
- #-------------------------------------------------------------------------------
--# Components that are common accross all deployments
-+# Components that are common across all deployments
- #
- #-------------------------------------------------------------------------------
- add_components(
-diff --git a/deployments/ts-service-test/ts-service-test.cmake b/deployments/ts-service-test/ts-service-test.cmake
-index 4a8c59c..3e33757 100644
---- a/deployments/ts-service-test/ts-service-test.cmake
-+++ b/deployments/ts-service-test/ts-service-test.cmake
-@@ -1,5 +1,5 @@
- #-------------------------------------------------------------------------------
--# Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
-+# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -8,19 +8,19 @@
- #-------------------------------------------------------------------------------
- # The base build file shared between deployments of 'ts-service-test' for
- # different environments. Used for running end-to-end service-level tests
--# where test cases excerise trusted service client interfaces.
-+# where test cases exercise trusted service client interfaces.
- #-------------------------------------------------------------------------------
-
- #-------------------------------------------------------------------------------
- # Use libts for locating and accessing services. An appropriate version of
--# libts will be imported for the enviroment in which service tests are
-+# libts will be imported for the environment in which service tests are
- # deployed.
- #-------------------------------------------------------------------------------
- include(${TS_ROOT}/deployments/libts/libts-import.cmake)
--target_link_libraries(ts-service-test PRIVATE libts)
-+target_link_libraries(ts-service-test PRIVATE libts::ts)
-
- #-------------------------------------------------------------------------------
--# Components that are common accross all deployments
-+# Components that are common across all deployments
- #
- #-------------------------------------------------------------------------------
- add_components(
-diff --git a/deployments/uefi-test/uefi-test.cmake b/deployments/uefi-test/uefi-test.cmake
-index ea678d0..2f47891 100644
---- a/deployments/uefi-test/uefi-test.cmake
-+++ b/deployments/uefi-test/uefi-test.cmake
-@@ -1,5 +1,5 @@
- #-------------------------------------------------------------------------------
--# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-+# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -18,7 +18,7 @@
- # deployed.
- #-------------------------------------------------------------------------------
- include(${TS_ROOT}/deployments/libts/libts-import.cmake)
--target_link_libraries(uefi-test PRIVATE libts)
-+target_link_libraries(uefi-test PRIVATE libts::ts)
-
- #-------------------------------------------------------------------------------
- # Components that are common accross all deployments
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0012-psa-arch-test-toolchain.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0012-psa-arch-test-toolchain.patch
deleted file mode 100644
index 7d07fca871..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0012-psa-arch-test-toolchain.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 1ce8fcde17a6d2c5cb2e00901d485c91eda776fd Mon Sep 17 00:00:00 2001
-From: Anton Antonov <Anton.Antonov@arm.com>
-Date: Wed, 31 Aug 2022 17:09:17 +0100
-Subject: [PATCH 4/4] Pass Yocto build settings to psa-arch-tests native build
-
-PSA-arch-tests need to build a native executable as a part of target build.
-The patch defines correct toolchain settings for native builds.
-
-Upstream-Status: Inappropriate [Yocto build specific change]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
----
- .../psa_arch_tests/modify_attest_config.patch | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-diff --git a/external/psa_arch_tests/modify_attest_config.patch b/external/psa_arch_tests/modify_attest_config.patch
-index ebe8c44..b5d5e88 100644
---- a/external/psa_arch_tests/modify_attest_config.patch
-+++ b/external/psa_arch_tests/modify_attest_config.patch
-@@ -11,3 +11,18 @@ index 6112ba7..1cdf581 100755
-
- /*
- * Include of PSA defined Header files
-+diff --git a/api-tests/tools/scripts/target_cfg/CMakeLists.txt b/api-tests/tools/scripts/target_cfg/CMakeLists.txt
-+index 259eb9c..fec1fb8 100644
-+--- a/api-tests/tools/scripts/target_cfg/CMakeLists.txt
-++++ b/api-tests/tools/scripts/target_cfg/CMakeLists.txt
-+@@ -26,7 +26,9 @@ include("common/CMakeSettings")
-+ include("common/Utils")
-+
-+ # Causes toolchain to be re-evaluated
-+-unset(ENV{CC})
-++set(ENV{CC} $ENV{BUILD_CC})
-++set(ENV{CFLAGS} $ENV{BUILD_CFLAGS})
-++set(ENV{LDFLAGS} $ENV{BUILD_LDFLAGS})
-+
-+ # Let the CMake look for C compiler
-+ project(TargetConfigGen LANGUAGES C)
---
-2.25.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0017-Move-libsp-mocks-into-separate-component.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0017-Move-libsp-mocks-into-separate-component.patch
deleted file mode 100644
index d6da370a26..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0017-Move-libsp-mocks-into-separate-component.patch
+++ /dev/null
@@ -1,349 +0,0 @@
-From 2cd802030ab59787a34c0f6684c16848befabafa Mon Sep 17 00:00:00 2001
-From: Imre Kis <imre.kis@arm.com>
-Date: Wed, 15 Jun 2022 12:47:37 +0200
-Subject: [PATCH 17/24] Move libsp mocks into separate component
-
-Enable deployments to include libsp mocks in tests by simply adding
-the newly created libsp mock component.
-
-Signed-off-by: Imre Kis <imre.kis@arm.com>
-Change-Id: I40805fd49362c6cc71b5b34f9ba888d27ce01ed8
-
-Upstream-Status: Pending [In review]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-
----
- .../messaging/ffa/libsp/mock/component.cmake | 27 ++++++++++
- .../ffa/libsp/{test => mock}/mock_assert.cpp | 0
- .../ffa/libsp/{test => mock}/mock_assert.h | 0
- .../ffa/libsp/{test => mock}/mock_ffa_api.cpp | 0
- .../ffa/libsp/{test => mock}/mock_ffa_api.h | 0
- .../{test => mock}/mock_ffa_internal_api.cpp | 0
- .../{test => mock}/mock_ffa_internal_api.h | 0
- .../ffa/libsp/{test => mock}/mock_sp_rxtx.cpp | 0
- .../ffa/libsp/{test => mock}/mock_sp_rxtx.h | 0
- .../{ => mock}/test/test_mock_assert.cpp | 0
- .../{ => mock}/test/test_mock_ffa_api.cpp | 0
- .../test/test_mock_ffa_internal_api.cpp | 0
- .../{ => mock}/test/test_mock_sp_rxtx.cpp | 0
- components/messaging/ffa/libsp/tests.cmake | 51 +++++++++++--------
- .../mm_communicate/endpoint/sp/tests.cmake | 6 +--
- .../frontend/mm_communicate/tests.cmake | 6 +--
- 16 files changed, 64 insertions(+), 26 deletions(-)
- create mode 100644 components/messaging/ffa/libsp/mock/component.cmake
- rename components/messaging/ffa/libsp/{test => mock}/mock_assert.cpp (100%)
- rename components/messaging/ffa/libsp/{test => mock}/mock_assert.h (100%)
- rename components/messaging/ffa/libsp/{test => mock}/mock_ffa_api.cpp (100%)
- rename components/messaging/ffa/libsp/{test => mock}/mock_ffa_api.h (100%)
- rename components/messaging/ffa/libsp/{test => mock}/mock_ffa_internal_api.cpp (100%)
- rename components/messaging/ffa/libsp/{test => mock}/mock_ffa_internal_api.h (100%)
- rename components/messaging/ffa/libsp/{test => mock}/mock_sp_rxtx.cpp (100%)
- rename components/messaging/ffa/libsp/{test => mock}/mock_sp_rxtx.h (100%)
- rename components/messaging/ffa/libsp/{ => mock}/test/test_mock_assert.cpp (100%)
- rename components/messaging/ffa/libsp/{ => mock}/test/test_mock_ffa_api.cpp (100%)
- rename components/messaging/ffa/libsp/{ => mock}/test/test_mock_ffa_internal_api.cpp (100%)
- rename components/messaging/ffa/libsp/{ => mock}/test/test_mock_sp_rxtx.cpp (100%)
-
-diff --git a/components/messaging/ffa/libsp/mock/component.cmake b/components/messaging/ffa/libsp/mock/component.cmake
-new file mode 100644
-index 0000000..03b8006
---- /dev/null
-+++ b/components/messaging/ffa/libsp/mock/component.cmake
-@@ -0,0 +1,27 @@
-+#-------------------------------------------------------------------------------
-+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
-+#
-+# SPDX-License-Identifier: BSD-3-Clause
-+#
-+#-------------------------------------------------------------------------------
-+if (NOT DEFINED TGT)
-+ message(FATAL_ERROR "mandatory parameter TGT is not defined.")
-+endif()
-+
-+target_sources(${TGT} PRIVATE
-+ "${CMAKE_CURRENT_LIST_DIR}/mock_assert.cpp"
-+ "${CMAKE_CURRENT_LIST_DIR}/mock_ffa_api.cpp"
-+ "${CMAKE_CURRENT_LIST_DIR}/mock_ffa_internal_api.cpp"
-+ "${CMAKE_CURRENT_LIST_DIR}/mock_sp_rxtx.cpp"
-+ )
-+
-+target_include_directories(${TGT}
-+ PUBLIC
-+ ${CMAKE_CURRENT_LIST_DIR}
-+ ${CMAKE_CURRENT_LIST_DIR}/../include
-+)
-+
-+target_compile_definitions(${TGT}
-+ PUBLIC
-+ "ARM64=1"
-+)
-\ No newline at end of file
-diff --git a/components/messaging/ffa/libsp/test/mock_assert.cpp b/components/messaging/ffa/libsp/mock/mock_assert.cpp
-similarity index 100%
-rename from components/messaging/ffa/libsp/test/mock_assert.cpp
-rename to components/messaging/ffa/libsp/mock/mock_assert.cpp
-diff --git a/components/messaging/ffa/libsp/test/mock_assert.h b/components/messaging/ffa/libsp/mock/mock_assert.h
-similarity index 100%
-rename from components/messaging/ffa/libsp/test/mock_assert.h
-rename to components/messaging/ffa/libsp/mock/mock_assert.h
-diff --git a/components/messaging/ffa/libsp/test/mock_ffa_api.cpp b/components/messaging/ffa/libsp/mock/mock_ffa_api.cpp
-similarity index 100%
-rename from components/messaging/ffa/libsp/test/mock_ffa_api.cpp
-rename to components/messaging/ffa/libsp/mock/mock_ffa_api.cpp
-diff --git a/components/messaging/ffa/libsp/test/mock_ffa_api.h b/components/messaging/ffa/libsp/mock/mock_ffa_api.h
-similarity index 100%
-rename from components/messaging/ffa/libsp/test/mock_ffa_api.h
-rename to components/messaging/ffa/libsp/mock/mock_ffa_api.h
-diff --git a/components/messaging/ffa/libsp/test/mock_ffa_internal_api.cpp b/components/messaging/ffa/libsp/mock/mock_ffa_internal_api.cpp
-similarity index 100%
-rename from components/messaging/ffa/libsp/test/mock_ffa_internal_api.cpp
-rename to components/messaging/ffa/libsp/mock/mock_ffa_internal_api.cpp
-diff --git a/components/messaging/ffa/libsp/test/mock_ffa_internal_api.h b/components/messaging/ffa/libsp/mock/mock_ffa_internal_api.h
-similarity index 100%
-rename from components/messaging/ffa/libsp/test/mock_ffa_internal_api.h
-rename to components/messaging/ffa/libsp/mock/mock_ffa_internal_api.h
-diff --git a/components/messaging/ffa/libsp/test/mock_sp_rxtx.cpp b/components/messaging/ffa/libsp/mock/mock_sp_rxtx.cpp
-similarity index 100%
-rename from components/messaging/ffa/libsp/test/mock_sp_rxtx.cpp
-rename to components/messaging/ffa/libsp/mock/mock_sp_rxtx.cpp
-diff --git a/components/messaging/ffa/libsp/test/mock_sp_rxtx.h b/components/messaging/ffa/libsp/mock/mock_sp_rxtx.h
-similarity index 100%
-rename from components/messaging/ffa/libsp/test/mock_sp_rxtx.h
-rename to components/messaging/ffa/libsp/mock/mock_sp_rxtx.h
-diff --git a/components/messaging/ffa/libsp/test/test_mock_assert.cpp b/components/messaging/ffa/libsp/mock/test/test_mock_assert.cpp
-similarity index 100%
-rename from components/messaging/ffa/libsp/test/test_mock_assert.cpp
-rename to components/messaging/ffa/libsp/mock/test/test_mock_assert.cpp
-diff --git a/components/messaging/ffa/libsp/test/test_mock_ffa_api.cpp b/components/messaging/ffa/libsp/mock/test/test_mock_ffa_api.cpp
-similarity index 100%
-rename from components/messaging/ffa/libsp/test/test_mock_ffa_api.cpp
-rename to components/messaging/ffa/libsp/mock/test/test_mock_ffa_api.cpp
-diff --git a/components/messaging/ffa/libsp/test/test_mock_ffa_internal_api.cpp b/components/messaging/ffa/libsp/mock/test/test_mock_ffa_internal_api.cpp
-similarity index 100%
-rename from components/messaging/ffa/libsp/test/test_mock_ffa_internal_api.cpp
-rename to components/messaging/ffa/libsp/mock/test/test_mock_ffa_internal_api.cpp
-diff --git a/components/messaging/ffa/libsp/test/test_mock_sp_rxtx.cpp b/components/messaging/ffa/libsp/mock/test/test_mock_sp_rxtx.cpp
-similarity index 100%
-rename from components/messaging/ffa/libsp/test/test_mock_sp_rxtx.cpp
-rename to components/messaging/ffa/libsp/mock/test/test_mock_sp_rxtx.cpp
-diff --git a/components/messaging/ffa/libsp/tests.cmake b/components/messaging/ffa/libsp/tests.cmake
-index d851442..296ae46 100644
---- a/components/messaging/ffa/libsp/tests.cmake
-+++ b/components/messaging/ffa/libsp/tests.cmake
-@@ -1,5 +1,5 @@
- #
--# Copyright (c) 2020-2021, Arm Limited. All rights reserved.
-+# Copyright (c) 2020-2022, Arm Limited. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -9,10 +9,11 @@ include(UnitTest)
- unit_test_add_suite(
- NAME libsp_mock_assert
- SOURCES
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_assert.cpp
-- ${CMAKE_CURRENT_LIST_DIR}/test/test_mock_assert.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_assert.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/test/test_mock_assert.cpp
- INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- COMPILE_DEFINITIONS
- -DARM64
-@@ -21,10 +22,11 @@ unit_test_add_suite(
- unit_test_add_suite(
- NAME libsp_mock_ffa_internal_api
- SOURCES
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_ffa_internal_api.cpp
-- ${CMAKE_CURRENT_LIST_DIR}/test/test_mock_ffa_internal_api.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_ffa_internal_api.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/test/test_mock_ffa_internal_api.cpp
- INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- COMPILE_DEFINITIONS
- -DARM64
-@@ -35,12 +37,13 @@ unit_test_add_suite(
- SOURCES
- ${CMAKE_CURRENT_LIST_DIR}/test/test_ffa_api.cpp
- ${CMAKE_CURRENT_LIST_DIR}/test/test_ffa_memory_descriptors.cpp
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_ffa_internal_api.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_ffa_internal_api.cpp
- ${CMAKE_CURRENT_LIST_DIR}/ffa.c
- ${CMAKE_CURRENT_LIST_DIR}/ffa_memory_descriptors.c
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_assert.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_assert.cpp
- INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- COMPILE_DEFINITIONS
- -DARM64
-@@ -49,10 +52,11 @@ unit_test_add_suite(
- unit_test_add_suite(
- NAME libsp_mock_ffa_api
- SOURCES
-- ${CMAKE_CURRENT_LIST_DIR}/test/test_mock_ffa_api.cpp
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_ffa_api.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/test/test_mock_ffa_api.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_ffa_api.cpp
- INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- COMPILE_DEFINITIONS
- -DARM64
-@@ -62,10 +66,11 @@ unit_test_add_suite(
- NAME libsp_sp_rxtx
- SOURCES
- ${CMAKE_CURRENT_LIST_DIR}/test/test_sp_rxtx.cpp
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_ffa_api.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_ffa_api.cpp
- ${CMAKE_CURRENT_LIST_DIR}/sp_rxtx.c
- INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- COMPILE_DEFINITIONS
- -DARM64
-@@ -74,10 +79,11 @@ unit_test_add_suite(
- unit_test_add_suite(
- NAME libsp_mock_sp_rxtx
- SOURCES
-- ${CMAKE_CURRENT_LIST_DIR}/test/test_mock_sp_rxtx.cpp
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_sp_rxtx.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/test/test_mock_sp_rxtx.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_sp_rxtx.cpp
- INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- COMPILE_DEFINITIONS
- -DARM64
-@@ -88,10 +94,11 @@ unit_test_add_suite(
- SOURCES
- ${CMAKE_CURRENT_LIST_DIR}/test/test_sp_discovery.cpp
- ${CMAKE_CURRENT_LIST_DIR}/sp_discovery.c
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_ffa_api.cpp
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_sp_rxtx.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_ffa_api.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_sp_rxtx.cpp
- INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- COMPILE_DEFINITIONS
- -DARM64
-@@ -103,11 +110,12 @@ unit_test_add_suite(
- ${CMAKE_CURRENT_LIST_DIR}/test/test_sp_memory_management.cpp
- ${CMAKE_CURRENT_LIST_DIR}/sp_memory_management.c
- ${CMAKE_CURRENT_LIST_DIR}/ffa_memory_descriptors.c
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_assert.cpp
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_ffa_api.cpp
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_sp_rxtx.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_assert.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_ffa_api.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_sp_rxtx.cpp
- INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- COMPILE_DEFINITIONS
- -DARM64
-@@ -119,9 +127,10 @@ unit_test_add_suite(
- ${CMAKE_CURRENT_LIST_DIR}/test/test_sp_memory_management_internals.cpp
- ${CMAKE_CURRENT_LIST_DIR}/test/sp_memory_management_internals.yml
- ${CMAKE_CURRENT_LIST_DIR}/ffa_memory_descriptors.c
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_assert.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_assert.cpp
- INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- COMPILE_DEFINITIONS
- -DARM64
-@@ -131,10 +140,11 @@ unit_test_add_suite(
- NAME libsp_sp_messaging
- SOURCES
- ${CMAKE_CURRENT_LIST_DIR}/test/test_sp_messaging.cpp
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_ffa_api.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_ffa_api.cpp
- ${CMAKE_CURRENT_LIST_DIR}/sp_messaging.c
- INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- COMPILE_DEFINITIONS
- -DARM64
-@@ -144,11 +154,12 @@ unit_test_add_suite(
- NAME libsp_sp_messaging_with_routing_extension
- SOURCES
- ${CMAKE_CURRENT_LIST_DIR}/test/test_sp_messaging.cpp
-- ${CMAKE_CURRENT_LIST_DIR}/test/mock_ffa_api.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_ffa_api.cpp
- ${CMAKE_CURRENT_LIST_DIR}/sp_messaging.c
- ${CMAKE_CURRENT_LIST_DIR}/ffa_direct_msg_routing_extension.c
- INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- COMPILE_DEFINITIONS
- -DARM64
-diff --git a/components/rpc/mm_communicate/endpoint/sp/tests.cmake b/components/rpc/mm_communicate/endpoint/sp/tests.cmake
-index 318f14d..c68a0c7 100644
---- a/components/rpc/mm_communicate/endpoint/sp/tests.cmake
-+++ b/components/rpc/mm_communicate/endpoint/sp/tests.cmake
-@@ -1,5 +1,5 @@
- #
--# Copyright (c) 2021, Arm Limited. All rights reserved.
-+# Copyright (c) 2021-2022, Arm Limited. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -13,12 +13,12 @@ unit_test_add_suite(
- ${CMAKE_CURRENT_LIST_DIR}/test/test_mm_communicate_call_ep.cpp
- ${CMAKE_CURRENT_LIST_DIR}/test/mock_mm_service.cpp
- ${CMAKE_CURRENT_LIST_DIR}/test/test_mock_mm_service.cpp
-- ${UNIT_TEST_PROJECT_PATH}/components/messaging/ffa/libsp/test/mock_assert.cpp
-+ ${UNIT_TEST_PROJECT_PATH}/components/messaging/ffa/libsp/mock/mock_assert.cpp
- INCLUDE_DIRECTORIES
- ${UNIT_TEST_PROJECT_PATH}
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- ${UNIT_TEST_PROJECT_PATH}/components/messaging/ffa/libsp/include
-- ${UNIT_TEST_PROJECT_PATH}/components/messaging/ffa/libsp/test
-+ ${UNIT_TEST_PROJECT_PATH}/components/messaging/ffa/libsp/mock
- ${UNIT_TEST_PROJECT_PATH}/components/rpc/common/interface
- COMPILE_DEFINITIONS
- -DARM64
-diff --git a/components/service/smm_variable/frontend/mm_communicate/tests.cmake b/components/service/smm_variable/frontend/mm_communicate/tests.cmake
-index d1f930c..50b0b9a 100644
---- a/components/service/smm_variable/frontend/mm_communicate/tests.cmake
-+++ b/components/service/smm_variable/frontend/mm_communicate/tests.cmake
-@@ -1,5 +1,5 @@
- #
--# Copyright (c) 2021, Arm Limited. All rights reserved.
-+# Copyright (c) 2021-2022, Arm Limited. All rights reserved.
- #
- # SPDX-License-Identifier: BSD-3-Clause
- #
-@@ -12,13 +12,13 @@ unit_test_add_suite(
- ${CMAKE_CURRENT_LIST_DIR}/smm_variable_mm_service.c
- ${CMAKE_CURRENT_LIST_DIR}/test/test_smm_variable_mm_service.cpp
- ${UNIT_TEST_PROJECT_PATH}/components/rpc/common/test/mock_rpc_interface.cpp
-- ${UNIT_TEST_PROJECT_PATH}/components/messaging/ffa/libsp/test/mock_assert.cpp
-+ ${UNIT_TEST_PROJECT_PATH}/components/messaging/ffa/libsp/mock/mock_assert.cpp
- INCLUDE_DIRECTORIES
- ${UNIT_TEST_PROJECT_PATH}
- ${UNIT_TEST_PROJECT_PATH}/components/rpc/mm_communicate/endpoint/sp
- ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
- ${UNIT_TEST_PROJECT_PATH}/components/messaging/ffa/libsp/include
-- ${UNIT_TEST_PROJECT_PATH}/components/messaging/ffa/libsp/test
-+ ${UNIT_TEST_PROJECT_PATH}/components/messaging/ffa/libsp/mock
- ${UNIT_TEST_PROJECT_PATH}/components/rpc/common/interface
- COMPILE_DEFINITIONS
- -DARM64
---
-2.17.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0018-Add-mock-for-libsp-sp_discovery.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0018-Add-mock-for-libsp-sp_discovery.patch
deleted file mode 100644
index b385b7a90d..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0018-Add-mock-for-libsp-sp_discovery.patch
+++ /dev/null
@@ -1,339 +0,0 @@
-From e9ff55c03e06c044eb9c13f2a3315bf7e35f3659 Mon Sep 17 00:00:00 2001
-From: Imre Kis <imre.kis@arm.com>
-Date: Fri, 17 Jun 2022 13:51:21 +0200
-Subject: [PATCH 18/24] Add mock for libsp/sp_discovery
-
-Add mock_sp_discovery for mocking sp_discovery part of libsp.
-
-Signed-off-by: Imre Kis <imre.kis@arm.com>
-Change-Id: I94460dc03dd6dcd27f6865f852cc9a0d85f4b583
-
-Upstream-Status: Pending [In review]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-
----
- .../messaging/ffa/libsp/mock/component.cmake | 1 +
- .../ffa/libsp/mock/mock_sp_discovery.cpp | 109 +++++++++++++++++
- .../ffa/libsp/mock/mock_sp_discovery.h | 37 ++++++
- .../mock/test/test_mock_sp_discovery.cpp | 111 ++++++++++++++++++
- components/messaging/ffa/libsp/tests.cmake | 13 ++
- 5 files changed, 271 insertions(+)
- create mode 100644 components/messaging/ffa/libsp/mock/mock_sp_discovery.cpp
- create mode 100644 components/messaging/ffa/libsp/mock/mock_sp_discovery.h
- create mode 100644 components/messaging/ffa/libsp/mock/test/test_mock_sp_discovery.cpp
-
-diff --git a/components/messaging/ffa/libsp/mock/component.cmake b/components/messaging/ffa/libsp/mock/component.cmake
-index 03b8006..15db85a 100644
---- a/components/messaging/ffa/libsp/mock/component.cmake
-+++ b/components/messaging/ffa/libsp/mock/component.cmake
-@@ -12,6 +12,7 @@ target_sources(${TGT} PRIVATE
- "${CMAKE_CURRENT_LIST_DIR}/mock_assert.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/mock_ffa_api.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/mock_ffa_internal_api.cpp"
-+ "${CMAKE_CURRENT_LIST_DIR}/mock_sp_discovery.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/mock_sp_rxtx.cpp"
- )
-
-diff --git a/components/messaging/ffa/libsp/mock/mock_sp_discovery.cpp b/components/messaging/ffa/libsp/mock/mock_sp_discovery.cpp
-new file mode 100644
-index 0000000..47f4ef7
---- /dev/null
-+++ b/components/messaging/ffa/libsp/mock/mock_sp_discovery.cpp
-@@ -0,0 +1,109 @@
-+// SPDX-License-Identifier: BSD-3-Clause
-+/*
-+ * Copyright (c) 2022, Arm Limited. All rights reserved.
-+ */
-+
-+#include <CppUTestExt/MockSupport.h>
-+#include "mock_sp_discovery.h"
-+
-+void expect_sp_discovery_ffa_version_get(const uint16_t *major,
-+ const uint16_t *minor,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_discovery_ffa_version_get")
-+ .withOutputParameterReturning("major", major, sizeof(*major))
-+ .withOutputParameterReturning("minor", minor, sizeof(*minor))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_discovery_ffa_version_get(uint16_t *major, uint16_t *minor)
-+{
-+ return mock()
-+ .actualCall("sp_discovery_ffa_version_get")
-+ .withOutputParameter("major", major)
-+ .withOutputParameter("minor", minor)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_discovery_own_id_get(const uint16_t *id, sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_discovery_own_id_get")
-+ .withOutputParameterReturning("id", id, sizeof(*id))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_discovery_own_id_get(uint16_t *id)
-+{
-+ return mock()
-+ .actualCall("sp_discovery_own_id_get")
-+ .withOutputParameter("id", id)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_discovery_partition_id_get(const struct sp_uuid *uuid,
-+ const uint16_t *id, sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_discovery_partition_id_get")
-+ .withMemoryBufferParameter("uuid", (const unsigned char *)uuid,
-+ sizeof(*uuid))
-+ .withOutputParameterReturning("id", id, sizeof(*id))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_discovery_partition_id_get(const struct sp_uuid *uuid,
-+ uint16_t *id)
-+{
-+ return mock()
-+ .actualCall("sp_discovery_partition_id_get")
-+ .withMemoryBufferParameter("uuid", (const unsigned char *)uuid,
-+ sizeof(*uuid))
-+ .withOutputParameter("id", id)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_discovery_partition_info_get(const struct sp_uuid *uuid,
-+ const struct sp_partition_info *info,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_discovery_partition_info_get")
-+ .withMemoryBufferParameter("uuid", (const unsigned char *)uuid,
-+ sizeof(*uuid))
-+ .withOutputParameterReturning("info", info, sizeof(*info))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_discovery_partition_info_get(const struct sp_uuid *uuid,
-+ struct sp_partition_info *info)
-+{
-+ return mock()
-+ .actualCall("sp_discovery_partition_info_get")
-+ .withMemoryBufferParameter("uuid", (const unsigned char *)uuid,
-+ sizeof(*uuid))
-+ .withOutputParameter("info", info)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_discovery_partition_info_get_all(const struct sp_partition_info info[],
-+ const uint32_t *count,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_discovery_partition_info_get_all")
-+ .withOutputParameterReturning("info", info, sizeof(*info) * *count)
-+ .withOutputParameterReturning("count", count, sizeof(*count))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_discovery_partition_info_get_all(struct sp_partition_info info[],
-+ uint32_t *count)
-+{
-+ return mock()
-+ .actualCall("sp_discovery_partition_info_get_all")
-+ .withOutputParameter("info", info)
-+ .withOutputParameter("count", count)
-+ .returnIntValue();
-+}
-diff --git a/components/messaging/ffa/libsp/mock/mock_sp_discovery.h b/components/messaging/ffa/libsp/mock/mock_sp_discovery.h
-new file mode 100644
-index 0000000..a71ce18
---- /dev/null
-+++ b/components/messaging/ffa/libsp/mock/mock_sp_discovery.h
-@@ -0,0 +1,37 @@
-+/* SPDX-License-Identifier: BSD-3-Clause */
-+/*
-+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
-+ */
-+
-+#ifndef LIBSP_MOCK_MOCK_SP_DISCOVERY_H_
-+#define LIBSP_MOCK_MOCK_SP_DISCOVERY_H_
-+
-+#include "../include/sp_discovery.h"
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+void expect_sp_discovery_ffa_version_get(const uint16_t *major,
-+ const uint16_t *minor,
-+ sp_result result);
-+
-+void expect_sp_discovery_own_id_get(const uint16_t *id, sp_result result);
-+
-+void expect_sp_discovery_partition_id_get(const struct sp_uuid *uuid,
-+ const uint16_t *id, sp_result result);
-+
-+
-+void expect_sp_discovery_partition_info_get(const struct sp_uuid *uuid,
-+ const struct sp_partition_info *info,
-+ sp_result result);
-+
-+void expect_sp_discovery_partition_info_get_all(const struct sp_partition_info info[],
-+ const uint32_t *count,
-+ sp_result result);
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* LIBSP_MOCK_MOCK_SP_DISCOVERY_H_ */
-diff --git a/components/messaging/ffa/libsp/mock/test/test_mock_sp_discovery.cpp b/components/messaging/ffa/libsp/mock/test/test_mock_sp_discovery.cpp
-new file mode 100644
-index 0000000..bb4bf07
---- /dev/null
-+++ b/components/messaging/ffa/libsp/mock/test/test_mock_sp_discovery.cpp
-@@ -0,0 +1,111 @@
-+// SPDX-License-Identifier: BSD-3-Clause
-+/*
-+ * Copyright (c) 2022, Arm Limited. All rights reserved.
-+ */
-+
-+#include <CppUTestExt/MockSupport.h>
-+#include <CppUTest/TestHarness.h>
-+#include "mock_sp_discovery.h"
-+#include <stdint.h>
-+#include <stdlib.h>
-+
-+
-+
-+
-+TEST_GROUP(mock_sp_discovery) {
-+ TEST_TEARDOWN()
-+ {
-+ mock().checkExpectations();
-+ mock().clear();
-+ }
-+
-+ static const sp_result result = -1;
-+};
-+
-+TEST(mock_sp_discovery, sp_discovery_ffa_version_get)
-+{
-+ const uint16_t expected_major = 0xabcd;
-+ const uint16_t expected_minor = 0xef01;
-+ uint16_t major = 0, minor = 0;
-+
-+ expect_sp_discovery_ffa_version_get(&expected_major, &expected_minor,
-+ result);
-+ LONGS_EQUAL(result, sp_discovery_ffa_version_get(&major, &minor));
-+ UNSIGNED_LONGS_EQUAL(expected_major, major);
-+ UNSIGNED_LONGS_EQUAL(expected_minor, minor);
-+}
-+
-+TEST(mock_sp_discovery, sp_discovery_own_id_get)
-+{
-+ const uint16_t expected_id = 0x8765;
-+ uint16_t id = 0;
-+
-+ expect_sp_discovery_own_id_get(&expected_id, result);
-+ LONGS_EQUAL(result, sp_discovery_own_id_get(&id));
-+ UNSIGNED_LONGS_EQUAL(expected_id, id);
-+}
-+
-+TEST(mock_sp_discovery, sp_discovery_partition_id_get)
-+{
-+ const struct sp_uuid expected_uuid = {
-+ .uuid = {0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
-+ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}};
-+ const uint16_t expected_id = 0xc1ca;
-+
-+ struct sp_uuid uuid = expected_uuid;
-+ uint16_t id = 0;
-+
-+ expect_sp_discovery_partition_id_get(&expected_uuid, &expected_id,
-+ result);
-+ LONGS_EQUAL(result, sp_discovery_partition_id_get(&uuid, &id));
-+ UNSIGNED_LONGS_EQUAL(expected_id, id);
-+}
-+
-+TEST(mock_sp_discovery, sp_discovery_partition_info_get)
-+{
-+ const struct sp_uuid expected_uuid = {
-+ .uuid = {0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
-+ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}};
-+ const struct sp_partition_info expected_info = {
-+ .partition_id = 0x1234,
-+ .execution_context_count = 0xffff,
-+ .supports_direct_requests = true,
-+ .can_send_direct_requests = true,
-+ .supports_indirect_requests = false
-+ };
-+
-+ struct sp_uuid uuid = expected_uuid;
-+ struct sp_partition_info info = {0};
-+
-+ expect_sp_discovery_partition_info_get(&expected_uuid, &expected_info,
-+ result);
-+ LONGS_EQUAL(result, sp_discovery_partition_info_get(&uuid, &info));
-+ MEMCMP_EQUAL(&expected_info, &info, sizeof(&expected_info));
-+}
-+
-+TEST(mock_sp_discovery, sp_discovery_partition_info_get_all)
-+{
-+ const uint32_t expected_count = 2;
-+ const struct sp_partition_info expected_info[expected_count] = {{
-+ .partition_id = 0x5678,
-+ .execution_context_count = 0x1111,
-+ .supports_direct_requests = false,
-+ .can_send_direct_requests = false,
-+ .supports_indirect_requests = true
-+ }, {
-+ .partition_id = 0x1234,
-+ .execution_context_count = 0xffff,
-+ .supports_direct_requests = true,
-+ .can_send_direct_requests = true,
-+ .supports_indirect_requests = false
-+ }};
-+
-+ struct sp_partition_info info[expected_count] = {0};
-+ uint32_t count = 0;
-+
-+ expect_sp_discovery_partition_info_get_all(expected_info,
-+ &expected_count, result);
-+ LONGS_EQUAL(result, sp_discovery_partition_info_get_all(info, &count));
-+ MEMCMP_EQUAL(&expected_info, &info, sizeof(&expected_info));
-+ UNSIGNED_LONGS_EQUAL(expected_count, count);
-+}
-\ No newline at end of file
-diff --git a/components/messaging/ffa/libsp/tests.cmake b/components/messaging/ffa/libsp/tests.cmake
-index 296ae46..7b52248 100644
---- a/components/messaging/ffa/libsp/tests.cmake
-+++ b/components/messaging/ffa/libsp/tests.cmake
-@@ -104,6 +104,19 @@ unit_test_add_suite(
- -DARM64
- )
-
-+unit_test_add_suite(
-+ NAME libsp_mock_sp_discovery
-+ SOURCES
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/test/test_mock_sp_discovery.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_sp_discovery.cpp
-+ INCLUDE_DIRECTORIES
-+ ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
-+ ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
-+ COMPILE_DEFINITIONS
-+ -DARM64
-+)
-+
- unit_test_add_suite(
- NAME libsp_sp_memory_management
- SOURCES
---
-2.17.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0019-Add-mock-for-libsp-sp_memory_management.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0019-Add-mock-for-libsp-sp_memory_management.patch
deleted file mode 100644
index cf50389d53..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0019-Add-mock-for-libsp-sp_memory_management.patch
+++ /dev/null
@@ -1,977 +0,0 @@
-From b592a22dbce521522931f8e3d79d6e16f2d334fa Mon Sep 17 00:00:00 2001
-From: Imre Kis <imre.kis@arm.com>
-Date: Fri, 17 Jun 2022 14:42:04 +0200
-Subject: [PATCH 19/24] Add mock for libsp/sp_memory_management
-
-Add mock_sp_memory_management for mocking sp_memory_management part of
-libsp.
-
-Signed-off-by: Imre Kis <imre.kis@arm.com>
-Change-Id: I9f74142bc3568dfc59f820ec2c2af81deba0d0da
-
-Upstream-Status: Pending [In review]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-
----
- .../ffa/libsp/include/sp_memory_management.h | 2 +-
- .../messaging/ffa/libsp/mock/component.cmake | 1 +
- .../libsp/mock/mock_sp_memory_management.cpp | 523 ++++++++++++++++++
- .../libsp/mock/mock_sp_memory_management.h | 98 ++++
- .../test/test_mock_sp_memory_management.cpp | 260 +++++++++
- components/messaging/ffa/libsp/tests.cmake | 13 +
- 6 files changed, 896 insertions(+), 1 deletion(-)
- create mode 100644 components/messaging/ffa/libsp/mock/mock_sp_memory_management.cpp
- create mode 100644 components/messaging/ffa/libsp/mock/mock_sp_memory_management.h
- create mode 100644 components/messaging/ffa/libsp/test/test_mock_sp_memory_management.cpp
-
-diff --git a/components/messaging/ffa/libsp/include/sp_memory_management.h b/components/messaging/ffa/libsp/include/sp_memory_management.h
-index 58a6cc1..ec76a3d 100644
---- a/components/messaging/ffa/libsp/include/sp_memory_management.h
-+++ b/components/messaging/ffa/libsp/include/sp_memory_management.h
-@@ -381,7 +381,7 @@ sp_result sp_memory_share_dynamic_is_supported(bool *supported);
- *
- * @param[in] descriptor The memory descriptor
- * @param[in,out] acc_desc Access descriptor
-- * @param[in,out regions Memory region array
-+ * @param[in,out] regions Memory region array
- * @param[in] in_region_count Count of the specified regions, can be 0
- * @param[in,out] out_region_count Count of the reserved space of in the
- * regions buffer for retrieved regions. After
-diff --git a/components/messaging/ffa/libsp/mock/component.cmake b/components/messaging/ffa/libsp/mock/component.cmake
-index 15db85a..eb0d28c 100644
---- a/components/messaging/ffa/libsp/mock/component.cmake
-+++ b/components/messaging/ffa/libsp/mock/component.cmake
-@@ -13,6 +13,7 @@ target_sources(${TGT} PRIVATE
- "${CMAKE_CURRENT_LIST_DIR}/mock_ffa_api.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/mock_ffa_internal_api.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/mock_sp_discovery.cpp"
-+ "${CMAKE_CURRENT_LIST_DIR}/mock_sp_memory_management.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/mock_sp_rxtx.cpp"
- )
-
-diff --git a/components/messaging/ffa/libsp/mock/mock_sp_memory_management.cpp b/components/messaging/ffa/libsp/mock/mock_sp_memory_management.cpp
-new file mode 100644
-index 0000000..9eb0aaa
---- /dev/null
-+++ b/components/messaging/ffa/libsp/mock/mock_sp_memory_management.cpp
-@@ -0,0 +1,523 @@
-+// SPDX-License-Identifier: BSD-3-Clause
-+/*
-+ * Copyright (c) 2022, Arm Limited. All rights reserved.
-+ */
-+
-+#include <CppUTestExt/MockSupport.h>
-+#include "mock_sp_memory_management.h"
-+
-+void expect_sp_memory_donate(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor *acc_desc,
-+ const struct sp_memory_region regions[],
-+ uint32_t region_count, const uint64_t *handle,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_donate")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(*descriptor))
-+ .withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc))
-+ .withMemoryBufferParameter("regions", (const unsigned char *)regions,
-+ sizeof(*regions) * region_count)
-+ .withUnsignedIntParameter("region_count", region_count)
-+ .withOutputParameterReturning("handle", handle, sizeof(*handle))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_donate(struct sp_memory_descriptor *descriptor,
-+ struct sp_memory_access_descriptor *acc_desc,
-+ struct sp_memory_region regions[],
-+ uint32_t region_count, uint64_t *handle)
-+{
-+ return mock()
-+ .actualCall("sp_memory_donate")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(*descriptor))
-+ .withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc))
-+ .withMemoryBufferParameter("regions", (const unsigned char *)regions,
-+ sizeof(*regions) * region_count)
-+ .withUnsignedIntParameter("region_count", region_count)
-+ .withOutputParameter("handle", handle)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_donate_dynamic(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor *acc_desc,
-+ const struct sp_memory_region regions[],
-+ uint32_t region_count, const uint64_t *handle,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_donate_dynamic")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(*descriptor))
-+ .withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc))
-+ .withMemoryBufferParameter("regions", (const unsigned char *)regions,
-+ sizeof(*regions) * region_count)
-+ .withUnsignedIntParameter("region_count", region_count)
-+ .withOutputParameterReturning("handle", handle, sizeof(*handle))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_donate_dynamic(struct sp_memory_descriptor *descriptor,
-+ struct sp_memory_access_descriptor *acc_desc,
-+ struct sp_memory_region regions[],
-+ uint32_t region_count, uint64_t *handle,
-+ struct ffa_mem_transaction_buffer *buffer)
-+{
-+ if (buffer == NULL) { // LCOV_EXCL_BR_LINE
-+ FAIL("ffa_mem_transaction_buffer is NULL"); // LCOV_EXCL_LINE
-+ }
-+
-+ return mock()
-+ .actualCall("sp_memory_donate_dynamic")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(*descriptor))
-+ .withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc))
-+ .withMemoryBufferParameter("regions", (const unsigned char *)regions,
-+ sizeof(*regions) * region_count)
-+ .withUnsignedIntParameter("region_count", region_count)
-+ .withOutputParameter("handle", handle)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_donate_dynamic_is_supported(const bool *supported, sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_lend_dynamic_is_supported")
-+ .withOutputParameterReturning("supported", supported, sizeof(*supported))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_donate_dynamic_is_supported(bool *supported)
-+{
-+ return mock()
-+ .actualCall("sp_memory_lend_dynamic_is_supported")
-+ .withOutputParameter("supported", supported)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_lend(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor acc_desc[],
-+ uint32_t acc_desc_count,
-+ const struct sp_memory_region regions[],
-+ uint32_t region_count, const uint64_t *handle,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_lend")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(*descriptor))
-+ .withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc) * acc_desc_count)
-+ .withUnsignedIntParameter("acc_desc_count", acc_desc_count)
-+ .withMemoryBufferParameter("regions", (const unsigned char *)regions,
-+ sizeof(*regions) * region_count)
-+ .withUnsignedIntParameter("region_count", region_count)
-+ .withOutputParameterReturning("handle", handle, sizeof(*handle))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_lend(struct sp_memory_descriptor *descriptor,
-+ struct sp_memory_access_descriptor acc_desc[],
-+ uint32_t acc_desc_count,
-+ struct sp_memory_region regions[],
-+ uint32_t region_count, uint64_t *handle)
-+{
-+ return mock()
-+ .actualCall("sp_memory_lend")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(*descriptor))
-+ .withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc) * acc_desc_count)
-+ .withUnsignedIntParameter("acc_desc_count", acc_desc_count)
-+ .withMemoryBufferParameter("regions", (const unsigned char *)regions,
-+ sizeof(*regions) * region_count)
-+ .withUnsignedIntParameter("region_count", region_count)
-+ .withOutputParameter("handle", handle)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_lend_dynamic(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor acc_desc[],
-+ uint32_t acc_desc_count,
-+ const struct sp_memory_region regions[],
-+ const uint32_t region_count, const uint64_t *handle,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_lend")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(*descriptor))
-+ .withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc) * acc_desc_count)
-+ .withUnsignedIntParameter("acc_desc_count", acc_desc_count)
-+ .withMemoryBufferParameter("regions", (const unsigned char *)regions,
-+ sizeof(*regions) * region_count)
-+ .withUnsignedIntParameter("region_count", region_count)
-+ .withOutputParameterReturning("handle", handle, sizeof(*handle))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_lend_dynamic(struct sp_memory_descriptor *descriptor,
-+ struct sp_memory_access_descriptor acc_desc[],
-+ uint32_t acc_desc_count,
-+ struct sp_memory_region regions[],
-+ uint32_t region_count, uint64_t *handle,
-+ struct ffa_mem_transaction_buffer *buffer)
-+{
-+ if (buffer == NULL) { // LCOV_EXCL_BR_LINE
-+ FAIL("ffa_mem_transaction_buffer is NULL"); // LCOV_EXCL_LINE
-+ }
-+
-+ return mock()
-+ .actualCall("sp_memory_lend")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(*descriptor))
-+ .withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc) * acc_desc_count)
-+ .withUnsignedIntParameter("acc_desc_count", acc_desc_count)
-+ .withMemoryBufferParameter("regions", (const unsigned char *)regions,
-+ sizeof(*regions) * region_count)
-+ .withUnsignedIntParameter("region_count", region_count)
-+ .withOutputParameter("handle", handle)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_lend_dynamic_is_supported(const bool *supported, sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_lend_dynamic_is_supported")
-+ .withOutputParameterReturning("supported", supported, sizeof(*supported))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_lend_dynamic_is_supported(bool *supported)
-+{
-+ return mock()
-+ .actualCall("sp_memory_lend_dynamic_is_supported")
-+ .withOutputParameter("supported", supported)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_share(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor acc_desc[],
-+ uint32_t acc_desc_count,
-+ const struct sp_memory_region regions[],
-+ uint32_t region_count, const uint64_t *handle,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_share")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(*descriptor))
-+ .withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc) * acc_desc_count)
-+ .withUnsignedIntParameter("acc_desc_count", acc_desc_count)
-+ .withMemoryBufferParameter("regions", (const unsigned char *)regions,
-+ sizeof(*regions) * region_count)
-+ .withUnsignedIntParameter("region_count", region_count)
-+ .withOutputParameterReturning("handle", handle, sizeof(*handle))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_share(struct sp_memory_descriptor *descriptor,
-+ struct sp_memory_access_descriptor acc_desc[],
-+ uint32_t acc_desc_count,
-+ struct sp_memory_region regions[],
-+ uint32_t region_count, uint64_t *handle)
-+{
-+ return mock()
-+ .actualCall("sp_memory_share")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(*descriptor))
-+ .withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc) * acc_desc_count)
-+ .withUnsignedIntParameter("acc_desc_count", acc_desc_count)
-+ .withMemoryBufferParameter("regions", (const unsigned char *)regions,
-+ sizeof(*regions) * region_count)
-+ .withUnsignedIntParameter("region_count", region_count)
-+ .withOutputParameter("handle", handle)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_share_dynamic(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor acc_desc[],
-+ uint32_t acc_desc_count,
-+ const struct sp_memory_region regions[],
-+ uint32_t region_count, const uint64_t *handle,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_share_dynamic")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(*descriptor))
-+ .withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc) * acc_desc_count)
-+ .withUnsignedIntParameter("acc_desc_count", acc_desc_count)
-+ .withMemoryBufferParameter("regions", (const unsigned char *)regions,
-+ sizeof(*regions) * region_count)
-+ .withUnsignedIntParameter("region_count", region_count)
-+ .withOutputParameterReturning("handle", handle, sizeof(*handle))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_share_dynamic(struct sp_memory_descriptor *descriptor,
-+ struct sp_memory_access_descriptor acc_desc[],
-+ uint32_t acc_desc_count,
-+ struct sp_memory_region regions[],
-+ uint32_t region_count, uint64_t *handle,
-+ struct ffa_mem_transaction_buffer *buffer)
-+{
-+ if (buffer == NULL) { // LCOV_EXCL_BR_LINE
-+ FAIL("ffa_mem_transaction_buffer is NULL"); // LCOV_EXCL_LINE
-+ }
-+
-+ return mock()
-+ .actualCall("sp_memory_share_dynamic")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(*descriptor))
-+ .withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc) * acc_desc_count)
-+ .withUnsignedIntParameter("acc_desc_count", acc_desc_count)
-+ .withMemoryBufferParameter("regions", (const unsigned char *)regions,
-+ sizeof(*regions) * region_count)
-+ .withUnsignedIntParameter("region_count", region_count)
-+ .withOutputParameter("handle", handle)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_share_dynamic_is_supported(const bool *supported, sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_share_dynamic_is_supported")
-+ .withOutputParameterReturning("supported", supported, sizeof(*supported))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_share_dynamic_is_supported(bool *supported)
-+{
-+ return mock()
-+ .actualCall("sp_memory_share_dynamic_is_supported")
-+ .withOutputParameter("supported", supported)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_retrieve(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor *req_acc_desc,
-+ const struct sp_memory_access_descriptor *resp_acc_desc,
-+ const struct sp_memory_region in_regions[],
-+ const struct sp_memory_region out_regions[],
-+ uint32_t in_region_count,
-+ const uint32_t *out_region_count, uint64_t handle,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_retrieve")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(descriptor))
-+ .withMemoryBufferParameter("req_acc_desc", (const unsigned char *)req_acc_desc,
-+ sizeof(*req_acc_desc))
-+ .withOutputParameterReturning("resp_acc_desc",
-+ (const unsigned char *)resp_acc_desc,
-+ sizeof(*resp_acc_desc))
-+ .withMemoryBufferParameter("in_regions", (const unsigned char *)in_regions,
-+ sizeof(*in_regions) * in_region_count)
-+ .withOutputParameterReturning("out_regions", out_regions,
-+ sizeof(*out_regions) * *out_region_count)
-+ .withUnsignedIntParameter("in_region_count", in_region_count)
-+ .withOutputParameterReturning("out_region_count", out_region_count,
-+ sizeof(*out_region_count))
-+ .withUnsignedLongIntParameter("handle", handle)
-+ .andReturnValue(result);
-+
-+}
-+
-+sp_result sp_memory_retrieve(struct sp_memory_descriptor *descriptor,
-+ struct sp_memory_access_descriptor *acc_desc,
-+ struct sp_memory_region regions[],
-+ uint32_t in_region_count,
-+ uint32_t *out_region_count, uint64_t handle)
-+{
-+ return mock()
-+ .actualCall("sp_memory_retrieve")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(descriptor))
-+ .withMemoryBufferParameter("req_acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc))
-+ .withOutputParameter("resp_acc_desc", acc_desc)
-+ .withMemoryBufferParameter("in_regions", (const unsigned char *)regions,
-+ sizeof(*regions) * in_region_count)
-+ .withOutputParameter("out_regions", regions)
-+ .withUnsignedIntParameter("in_region_count", in_region_count)
-+ .withOutputParameter("out_region_count", out_region_count)
-+ .withUnsignedLongIntParameter("handle", handle)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_retrieve_dynamic(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor *req_acc_desc,
-+ const struct sp_memory_access_descriptor *resp_acc_desc,
-+ const struct sp_memory_region in_regions[],
-+ const struct sp_memory_region out_regions[],
-+ uint32_t in_region_count,
-+ const uint32_t *out_region_count, uint64_t handle,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_retrieve")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(descriptor))
-+ .withMemoryBufferParameter("req_acc_desc", (const unsigned char *)req_acc_desc,
-+ sizeof(*req_acc_desc))
-+ .withOutputParameterReturning("resp_acc_desc",
-+ (const unsigned char *)resp_acc_desc,
-+ sizeof(*resp_acc_desc))
-+ .withMemoryBufferParameter("in_regions", (const unsigned char *)in_regions,
-+ sizeof(*in_regions) * in_region_count)
-+ .withOutputParameterReturning("out_regions", out_regions,
-+ sizeof(*out_regions) * *out_region_count)
-+ .withUnsignedIntParameter("in_region_count", in_region_count)
-+ .withOutputParameterReturning("out_region_count", out_region_count,
-+ sizeof(*out_region_count))
-+ .withUnsignedLongIntParameter("handle", handle)
-+ .andReturnValue(result);
-+}
-+
-+sp_result
-+sp_memory_retrieve_dynamic(struct sp_memory_descriptor *descriptor,
-+ struct sp_memory_access_descriptor *acc_desc,
-+ struct sp_memory_region regions[],
-+ uint32_t in_region_count, uint32_t *out_region_count,
-+ uint64_t handle,
-+ struct ffa_mem_transaction_buffer *buffer)
-+{
-+ if (buffer == NULL) { // LCOV_EXCL_BR_LINE
-+ FAIL("ffa_mem_transaction_buffer is NULL"); // LCOV_EXCL_LINE
-+ }
-+
-+ return mock()
-+ .actualCall("sp_memory_retrieve")
-+ .withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
-+ sizeof(descriptor))
-+ .withMemoryBufferParameter("req_acc_desc", (const unsigned char *)acc_desc,
-+ sizeof(*acc_desc))
-+ .withOutputParameter("resp_acc_desc", acc_desc)
-+ .withMemoryBufferParameter("in_regions", (const unsigned char *)regions,
-+ sizeof(*regions) * in_region_count)
-+ .withOutputParameter("out_regions", regions)
-+ .withUnsignedIntParameter("in_region_count", in_region_count)
-+ .withOutputParameter("out_region_count", out_region_count)
-+ .withUnsignedLongIntParameter("handle", handle)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_retrieve_dynamic_is_supported(const bool *supported, sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_retrieve_dynamic_is_supported")
-+ .withOutputParameterReturning("supported", supported, sizeof(*supported))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_retrieve_dynamic_is_supported(bool *supported)
-+{
-+ return mock()
-+ .actualCall("sp_memory_retrieve_dynamic_is_supported")
-+ .withOutputParameter("supported", supported)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_relinquish(uint64_t handle, const uint16_t endpoints[],
-+ uint32_t endpoint_count,
-+ const struct sp_memory_transaction_flags *flags,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_relinquish")
-+ .withUnsignedLongIntParameter("handle", handle)
-+ .withMemoryBufferParameter("endpoints", (const unsigned char *)endpoints,
-+ sizeof(*endpoints) * endpoint_count)
-+ .withMemoryBufferParameter("flags", (const unsigned char *)flags, sizeof(*flags))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_relinquish(uint64_t handle, const uint16_t endpoints[],
-+ uint32_t endpoint_count,
-+ struct sp_memory_transaction_flags *flags)
-+{
-+ return mock()
-+ .actualCall("sp_memory_relinquish")
-+ .withUnsignedLongIntParameter("handle", handle)
-+ .withMemoryBufferParameter("endpoints", (const unsigned char *)endpoints,
-+ sizeof(*endpoints) * endpoint_count)
-+ .withMemoryBufferParameter("flags", (const unsigned char *)flags, sizeof(*flags))
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_reclaim(uint64_t handle, uint32_t flags, sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_reclaim")
-+ .withUnsignedLongIntParameter("handle", handle)
-+ .withUnsignedIntParameter("flags", flags)
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_reclaim(uint64_t handle, uint32_t flags)
-+{
-+ return mock()
-+ .actualCall("sp_memory_reclaim")
-+ .withUnsignedLongIntParameter("handle", handle)
-+ .withUnsignedIntParameter("flags", flags)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_permission_get(const void *base_address, const struct sp_mem_perm *mem_perm,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_permission_set")
-+ .withConstPointerParameter("base_address", base_address)
-+ .withOutputParameterReturning("mem_perm", mem_perm,
-+ sizeof(*mem_perm))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_permission_get(const void *base_address,
-+ struct sp_mem_perm *mem_perm)
-+{
-+ return mock()
-+ .actualCall("sp_memory_permission_set")
-+ .withConstPointerParameter("base_address", base_address)
-+ .withOutputParameter("mem_perm", mem_perm)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_memory_permission_set(const void *base_address, size_t region_size,
-+ const struct sp_mem_perm *mem_perm, sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_memory_permission_set")
-+ .withConstPointerParameter("base_address", base_address)
-+ .withUnsignedLongIntParameter("region_size", region_size)
-+ .withMemoryBufferParameter("mem_perm", (const unsigned char *)mem_perm,
-+ sizeof(*mem_perm))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_memory_permission_set(const void *base_address, size_t region_size,
-+ const struct sp_mem_perm *mem_perm)
-+{
-+ return mock()
-+ .actualCall("sp_memory_permission_set")
-+ .withConstPointerParameter("base_address", base_address)
-+ .withUnsignedLongIntParameter("region_size", region_size)
-+ .withMemoryBufferParameter("mem_perm", (const unsigned char *)mem_perm,
-+ sizeof(*mem_perm))
-+ .returnIntValue();
-+}
-diff --git a/components/messaging/ffa/libsp/mock/mock_sp_memory_management.h b/components/messaging/ffa/libsp/mock/mock_sp_memory_management.h
-new file mode 100644
-index 0000000..458d2af
---- /dev/null
-+++ b/components/messaging/ffa/libsp/mock/mock_sp_memory_management.h
-@@ -0,0 +1,98 @@
-+/* SPDX-License-Identifier: BSD-3-Clause */
-+/*
-+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
-+ */
-+
-+#ifndef LIBSP_MOCK_MOCK_SP_MEMORY_MANAGEMENT_H_
-+#define LIBSP_MOCK_MOCK_SP_MEMORY_MANAGEMENT_H_
-+
-+#include "../include/sp_memory_management.h"
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+void expect_sp_memory_donate(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor *acc_desc,
-+ const struct sp_memory_region regions[],
-+ uint32_t region_count, const uint64_t *handle,
-+ sp_result result);
-+
-+void expect_sp_memory_donate_dynamic(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor *acc_desc,
-+ const struct sp_memory_region regions[],
-+ uint32_t region_count, const uint64_t *handle,
-+ sp_result result);
-+
-+void expect_sp_memory_donate_dynamic_is_supported(const bool *supported, sp_result result);
-+
-+void expect_sp_memory_lend(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor acc_desc[],
-+ uint32_t acc_desc_count,
-+ const struct sp_memory_region regions[],
-+ uint32_t region_count, const uint64_t *handle,
-+ sp_result result);
-+
-+void expect_sp_memory_lend_dynamic(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor acc_desc[],
-+ uint32_t acc_desc_count,
-+ const struct sp_memory_region regions[],
-+ const uint32_t region_count, const uint64_t *handle,
-+ sp_result result);
-+
-+void expect_sp_memory_lend_dynamic_is_supported(const bool *supported, sp_result result);
-+
-+void expect_sp_memory_share(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor acc_desc[],
-+ uint32_t acc_desc_count,
-+ const struct sp_memory_region regions[],
-+ uint32_t region_count, const uint64_t *handle,
-+ sp_result result);
-+
-+void expect_sp_memory_share_dynamic(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor acc_desc[],
-+ uint32_t acc_desc_count,
-+ const struct sp_memory_region regions[],
-+ uint32_t region_count, const uint64_t *handle,
-+ sp_result result);
-+
-+void expect_sp_memory_share_dynamic_is_supported(const bool *supported, sp_result result);
-+
-+void expect_sp_memory_retrieve(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor *req_acc_desc,
-+ const struct sp_memory_access_descriptor *resp_acc_desc,
-+ const struct sp_memory_region in_regions[],
-+ const struct sp_memory_region out_regions[],
-+ uint32_t in_region_count,
-+ const uint32_t *out_region_count, uint64_t handle,
-+ sp_result result);
-+
-+void expect_sp_memory_retrieve_dynamic(const struct sp_memory_descriptor *descriptor,
-+ const struct sp_memory_access_descriptor *req_acc_desc,
-+ const struct sp_memory_access_descriptor *resp_acc_desc,
-+ const struct sp_memory_region in_regions[],
-+ const struct sp_memory_region out_regions[],
-+ uint32_t in_region_count,
-+ const uint32_t *out_region_count, uint64_t handle,
-+ sp_result result);
-+
-+void expect_sp_memory_retrieve_dynamic_is_supported(const bool *supported, sp_result result);
-+
-+void expect_sp_memory_relinquish(uint64_t handle, const uint16_t endpoints[],
-+ uint32_t endpoint_count,
-+ const struct sp_memory_transaction_flags *flags,
-+ sp_result result);
-+
-+void expect_sp_memory_reclaim(uint64_t handle, uint32_t flags, sp_result result);
-+
-+void expect_sp_memory_permission_get(const void *base_address, const struct sp_mem_perm *mem_perm,
-+ sp_result result);
-+
-+void expect_sp_memory_permission_set(const void *base_address, size_t region_size,
-+ const struct sp_mem_perm *mem_perm, sp_result result);
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* LIBSP_MOCK_MOCK_SP_MEMORY_MANAGEMENT_H_ */
-diff --git a/components/messaging/ffa/libsp/test/test_mock_sp_memory_management.cpp b/components/messaging/ffa/libsp/test/test_mock_sp_memory_management.cpp
-new file mode 100644
-index 0000000..387b50f
---- /dev/null
-+++ b/components/messaging/ffa/libsp/test/test_mock_sp_memory_management.cpp
-@@ -0,0 +1,260 @@
-+// SPDX-License-Identifier: BSD-3-Clause
-+/*
-+ * Copyright (c) 2022, Arm Limited. All rights reserved.
-+ */
-+
-+#include <CppUTestExt/MockSupport.h>
-+#include <CppUTest/TestHarness.h>
-+#include "mock_sp_memory_management.h"
-+#include <stdint.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+static const struct sp_memory_descriptor expected_descriptor = {
-+ .sender_id = 0xfedc,
-+ .memory_type = sp_memory_type_normal_memory,
-+ .mem_region_attr = {.normal_memory = {
-+ .cacheability = sp_cacheability_write_back,
-+ .shareability = sp_shareability_inner_shareable
-+ }},
-+ .flags = {
-+ .zero_memory = true,
-+ .operation_time_slicing = true,
-+ .zero_memory_after_relinquish = true,
-+ .transaction_type = sp_memory_transaction_type_relayer_specified,
-+ .alignment_hint = 0x2000
-+ },
-+ .tag = 0x0123456789abcdefULL
-+};
-+static const struct sp_memory_access_descriptor expected_acc_desc[] = {
-+ {
-+ .receiver_id = 0xfafa,
-+ .instruction_access = sp_instruction_access_executable,
-+ .data_access = sp_data_access_read_only
-+ }, {
-+ .receiver_id = 0xc1ca,
-+ .instruction_access = sp_instruction_access_not_executable,
-+ .data_access = sp_data_access_read_write
-+ }
-+};
-+static const struct sp_memory_region expected_regions[2] = {
-+ {.address = (void *)0x01234567, .page_count = 0x89abcdef},
-+ {.address = (void *)0x12345670, .page_count = 0x9abcdef8},
-+};
-+static const uint64_t expected_handle = 0xabcdef0123456789ULL;
-+static const void *expected_address = (const void *)0x234567879;
-+static const struct sp_mem_perm expected_mem_perm = {
-+ .data_access = sp_mem_perm_data_perm_read_write,
-+ .instruction_access = sp_mem_perm_instruction_perm_non_executable,
-+};
-+
-+TEST_GROUP(mock_sp_memory_management)
-+{
-+ TEST_SETUP()
-+ {
-+ memset(&descriptor, 0x00, sizeof(descriptor));
-+ memset(&acc_desc, 0x00, sizeof(acc_desc));
-+ memset(&regions, 0x00, sizeof(regions));
-+ handle = 0;
-+ supported = false;
-+ }
-+
-+ TEST_TEARDOWN()
-+ {
-+ mock().checkExpectations();
-+ mock().clear();
-+ }
-+
-+ struct sp_memory_descriptor descriptor;
-+ struct sp_memory_access_descriptor acc_desc[2];
-+ struct sp_memory_region regions[2];
-+ uint64_t handle;
-+ bool supported;
-+ struct ffa_mem_transaction_buffer tr_buffer;
-+
-+ static const sp_result result = -1;
-+};
-+
-+TEST(mock_sp_memory_management, sp_memory_donate)
-+{
-+ descriptor = expected_descriptor;
-+ acc_desc[0] = expected_acc_desc[0];
-+ memcpy(regions, expected_regions, sizeof(regions));
-+
-+ expect_sp_memory_donate(&expected_descriptor, expected_acc_desc, expected_regions, 2,
-+ &expected_handle, result);
-+ LONGS_EQUAL(result, sp_memory_donate(&descriptor, acc_desc, regions, 2, &handle));
-+
-+ UNSIGNED_LONGLONGS_EQUAL(expected_handle, handle);
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_donate_dynamic)
-+{
-+ descriptor = expected_descriptor;
-+ acc_desc[0] = expected_acc_desc[0];
-+ memcpy(regions, expected_regions, sizeof(regions));
-+
-+ expect_sp_memory_donate_dynamic(&expected_descriptor, expected_acc_desc, expected_regions,
-+ 2, &expected_handle, result);
-+ LONGS_EQUAL(result, sp_memory_donate_dynamic(&descriptor, acc_desc, regions, 2, &handle,
-+ &tr_buffer));
-+
-+ UNSIGNED_LONGLONGS_EQUAL(expected_handle, handle);
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_donate_dynamic_is_supported)
-+{
-+ const bool expected_supported = true;
-+ expect_sp_memory_donate_dynamic_is_supported(&expected_supported, result);
-+ LONGS_EQUAL(result, sp_memory_donate_dynamic_is_supported(&supported));
-+ CHECK_TRUE(supported);
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_lend)
-+{
-+ descriptor = expected_descriptor;
-+ memcpy(acc_desc, expected_acc_desc, sizeof(acc_desc));
-+ memcpy(regions, expected_regions, sizeof(regions));
-+
-+ expect_sp_memory_lend(&descriptor, acc_desc, 2, regions, 2, &expected_handle, result);
-+ LONGS_EQUAL(result, sp_memory_lend(&descriptor, acc_desc, 2, regions, 2, &handle));
-+ UNSIGNED_LONGLONGS_EQUAL(expected_handle, handle);
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_lend_dynamic)
-+{
-+ descriptor = expected_descriptor;
-+ memcpy(acc_desc, expected_acc_desc, sizeof(acc_desc));
-+ memcpy(regions, expected_regions, sizeof(regions));
-+
-+ expect_sp_memory_lend_dynamic(&descriptor, acc_desc, 2, regions, 2, &expected_handle,
-+ result);
-+ LONGS_EQUAL(result, sp_memory_lend_dynamic(&descriptor, acc_desc, 2, regions, 2, &handle,
-+ &tr_buffer));
-+ UNSIGNED_LONGLONGS_EQUAL(expected_handle, handle);
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_lend_dynamic_is_supported)
-+{
-+ const bool expected_supported = true;
-+ expect_sp_memory_lend_dynamic_is_supported(&expected_supported, result);
-+ LONGS_EQUAL(result, sp_memory_lend_dynamic_is_supported(&supported));
-+ CHECK_TRUE(supported);
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_share)
-+{
-+ descriptor = expected_descriptor;
-+ memcpy(acc_desc, expected_acc_desc, sizeof(acc_desc));
-+ memcpy(regions, expected_regions, sizeof(regions));
-+
-+ expect_sp_memory_share(&descriptor, acc_desc, 2, regions, 2, &expected_handle, result);
-+ LONGS_EQUAL(result, sp_memory_share(&descriptor, acc_desc, 2, regions, 2, &handle));
-+ UNSIGNED_LONGLONGS_EQUAL(expected_handle, handle);
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_share_dynamic)
-+{
-+ descriptor = expected_descriptor;
-+ memcpy(acc_desc, expected_acc_desc, sizeof(acc_desc));
-+ memcpy(regions, expected_regions, sizeof(regions));
-+
-+ expect_sp_memory_share_dynamic(&descriptor, acc_desc, 2, regions, 2, &expected_handle,
-+ result);
-+ LONGS_EQUAL(result, sp_memory_share_dynamic(&descriptor, acc_desc, 2, regions, 2, &handle,
-+ &tr_buffer));
-+ UNSIGNED_LONGLONGS_EQUAL(expected_handle, handle);
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_share_dynamic_is_supported)
-+{
-+ const bool expected_supported = true;
-+ expect_sp_memory_share_dynamic_is_supported(&expected_supported, result);
-+ LONGS_EQUAL(result, sp_memory_share_dynamic_is_supported(&supported));
-+ CHECK_TRUE(supported);
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_retrieve)
-+{
-+ const uint32_t expected_region_count = 1;
-+ struct sp_memory_access_descriptor acc_desc = expected_acc_desc[0];
-+ struct sp_memory_region region = expected_regions[0];
-+ uint32_t out_region_count = 0;
-+
-+ descriptor = expected_descriptor;
-+
-+ expect_sp_memory_retrieve(&expected_descriptor, &expected_acc_desc[0],
-+ &expected_acc_desc[1], &expected_regions[0],
-+ &expected_regions[1], 1, &expected_region_count, expected_handle,
-+ result);
-+ LONGS_EQUAL(result, sp_memory_retrieve(&descriptor, &acc_desc, &region, 1,
-+ &out_region_count, expected_handle));
-+ MEMCMP_EQUAL(&acc_desc, &expected_acc_desc[1], sizeof(acc_desc));
-+ MEMCMP_EQUAL(&region, &expected_regions[1], sizeof(region));
-+ UNSIGNED_LONGS_EQUAL(expected_region_count, out_region_count);
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_retrieve_dynamic)
-+{
-+ const uint32_t expected_region_count = 1;
-+ struct sp_memory_access_descriptor acc_desc = expected_acc_desc[0];
-+ struct sp_memory_region region = expected_regions[0];
-+ uint32_t out_region_count = 0;
-+
-+ descriptor = expected_descriptor;
-+
-+ expect_sp_memory_retrieve_dynamic(&expected_descriptor, &expected_acc_desc[0],
-+ &expected_acc_desc[1], &expected_regions[0],
-+ &expected_regions[1], 1, &expected_region_count,
-+ expected_handle, result);
-+ LONGS_EQUAL(result, sp_memory_retrieve_dynamic(&descriptor, &acc_desc, &region, 1,
-+ &out_region_count, expected_handle,
-+ &tr_buffer));
-+ MEMCMP_EQUAL(&acc_desc, &expected_acc_desc[1], sizeof(acc_desc));
-+ MEMCMP_EQUAL(&region, &expected_regions[1], sizeof(region));
-+ UNSIGNED_LONGS_EQUAL(expected_region_count, out_region_count);
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_retrieve_dynamic_is_supported)
-+{
-+ const bool expected_supported = true;
-+ expect_sp_memory_retrieve_dynamic_is_supported(&expected_supported, result);
-+ LONGS_EQUAL(result, sp_memory_retrieve_dynamic_is_supported(&supported));
-+ CHECK_TRUE(supported);
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_relinquish)
-+{
-+ uint16_t endpoints[3] = {1, 2, 3};
-+ struct sp_memory_transaction_flags flags = {0}; // TODO: flags
-+
-+ expect_sp_memory_relinquish(expected_handle, endpoints, 3, &flags, result);
-+ LONGS_EQUAL(result, sp_memory_relinquish(expected_handle, endpoints, 3, &flags));
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_reclaim)
-+{
-+ uint32_t flags = 0xffffffff;
-+
-+ expect_sp_memory_reclaim(expected_handle, flags, result);
-+ LONGS_EQUAL(result, sp_memory_reclaim(expected_handle, flags));
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_permission_get)
-+{
-+ struct sp_mem_perm mem_perm;
-+
-+ memset(&mem_perm, 0x00, sizeof(mem_perm));
-+
-+ expect_sp_memory_permission_get(expected_address, &expected_mem_perm, result);
-+ LONGS_EQUAL(result, sp_memory_permission_get(expected_address, &mem_perm));
-+ MEMCMP_EQUAL(&expected_mem_perm, &mem_perm, sizeof(expected_mem_perm));
-+}
-+
-+TEST(mock_sp_memory_management, sp_memory_permission_set)
-+{
-+ size_t size = 0x7654;
-+
-+ expect_sp_memory_permission_set(expected_address, size, &expected_mem_perm, result);
-+ LONGS_EQUAL(result, sp_memory_permission_set(expected_address, size, &expected_mem_perm));
-+}
-diff --git a/components/messaging/ffa/libsp/tests.cmake b/components/messaging/ffa/libsp/tests.cmake
-index 7b52248..63abb57 100644
---- a/components/messaging/ffa/libsp/tests.cmake
-+++ b/components/messaging/ffa/libsp/tests.cmake
-@@ -134,6 +134,19 @@ unit_test_add_suite(
- -DARM64
- )
-
-+unit_test_add_suite(
-+ NAME libsp_mock_sp_memory_management
-+ SOURCES
-+ ${CMAKE_CURRENT_LIST_DIR}/test/test_mock_sp_memory_management.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_sp_memory_management.cpp
-+ INCLUDE_DIRECTORIES
-+ ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
-+ ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
-+ COMPILE_DEFINITIONS
-+ -DARM64
-+)
-+
- unit_test_add_suite(
- NAME libsp_sp_memory_management_internals
- SOURCES
---
-2.17.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0020-Add-mock-for-libsp-sp_messaging.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0020-Add-mock-for-libsp-sp_messaging.patch
deleted file mode 100644
index 3057051b6b..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0020-Add-mock-for-libsp-sp_messaging.patch
+++ /dev/null
@@ -1,284 +0,0 @@
-From 1e5ce152214e22a7cd9617a5059e42c370351354 Mon Sep 17 00:00:00 2001
-From: Imre Kis <imre.kis@arm.com>
-Date: Fri, 17 Jun 2022 15:40:18 +0200
-Subject: [PATCH 20/24] Add mock for libsp/sp_messaging
-
-Add mock_sp_messaging for mocking sp_messaging part of libsp.
-
-Signed-off-by: Imre Kis <imre.kis@arm.com>
-Change-Id: I87478027c61b41028682b10e2535a7e14cf6922f
-
-Upstream-Status: Pending [In review]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-
----
- .../messaging/ffa/libsp/mock/component.cmake | 1 +
- .../ffa/libsp/mock/mock_sp_messaging.cpp | 86 +++++++++++++++++++
- .../ffa/libsp/mock/mock_sp_messaging.h | 39 +++++++++
- .../mock/test/test_mock_sp_messaging.cpp | 77 +++++++++++++++++
- components/messaging/ffa/libsp/tests.cmake | 14 +++
- 5 files changed, 217 insertions(+)
- create mode 100644 components/messaging/ffa/libsp/mock/mock_sp_messaging.cpp
- create mode 100644 components/messaging/ffa/libsp/mock/mock_sp_messaging.h
- create mode 100644 components/messaging/ffa/libsp/mock/test/test_mock_sp_messaging.cpp
-
-diff --git a/components/messaging/ffa/libsp/mock/component.cmake b/components/messaging/ffa/libsp/mock/component.cmake
-index eb0d28c..375cb46 100644
---- a/components/messaging/ffa/libsp/mock/component.cmake
-+++ b/components/messaging/ffa/libsp/mock/component.cmake
-@@ -14,6 +14,7 @@ target_sources(${TGT} PRIVATE
- "${CMAKE_CURRENT_LIST_DIR}/mock_ffa_internal_api.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/mock_sp_discovery.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/mock_sp_memory_management.cpp"
-+ "${CMAKE_CURRENT_LIST_DIR}/mock_sp_messaging.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/mock_sp_rxtx.cpp"
- )
-
-diff --git a/components/messaging/ffa/libsp/mock/mock_sp_messaging.cpp b/components/messaging/ffa/libsp/mock/mock_sp_messaging.cpp
-new file mode 100644
-index 0000000..522abb3
---- /dev/null
-+++ b/components/messaging/ffa/libsp/mock/mock_sp_messaging.cpp
-@@ -0,0 +1,86 @@
-+// SPDX-License-Identifier: BSD-3-Clause
-+/*
-+ * Copyright (c) 2022, Arm Limited. All rights reserved.
-+ */
-+
-+#include <CppUTestExt/MockSupport.h>
-+#include "mock_sp_messaging.h"
-+
-+void expect_sp_msg_wait(const struct sp_msg *msg, sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_msg_wait")
-+ .withOutputParameterReturning("msg", msg, sizeof(*msg))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_msg_wait(struct sp_msg *msg)
-+{
-+ return mock()
-+ .actualCall("sp_msg_wait")
-+ .withOutputParameter("msg", msg)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_msg_send_direct_req(const struct sp_msg *req,
-+ const struct sp_msg *resp,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_msg_send_direct_req")
-+ .withMemoryBufferParameter("req", (const unsigned char *)req, sizeof(*req))
-+ .withOutputParameterReturning("resp", resp, sizeof(*resp))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_msg_send_direct_req(const struct sp_msg *req, struct sp_msg *resp)
-+{
-+ return mock()
-+ .actualCall("sp_msg_send_direct_req")
-+ .withMemoryBufferParameter("req", (const unsigned char *)req, sizeof(*req))
-+ .withOutputParameter("resp", resp)
-+ .returnIntValue();
-+}
-+
-+void expect_sp_msg_send_direct_resp(const struct sp_msg *resp,
-+ const struct sp_msg *req,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_msg_send_direct_resp")
-+ .withMemoryBufferParameter("resp", (const unsigned char *)resp, sizeof(*resp))
-+ .withOutputParameterReturning("req", req, sizeof(*req))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_msg_send_direct_resp(const struct sp_msg *resp,
-+ struct sp_msg *req)
-+{
-+ return mock()
-+ .actualCall("sp_msg_send_direct_resp")
-+ .withMemoryBufferParameter("resp", (const unsigned char *)resp, sizeof(*resp))
-+ .withOutputParameter("req", req)
-+ .returnIntValue();
-+}
-+
-+#if FFA_DIRECT_MSG_ROUTING_EXTENSION
-+void expect_sp_msg_send_rc_req(const struct sp_msg *req,
-+ const struct sp_msg *resp,
-+ sp_result result)
-+{
-+ mock()
-+ .expectOneCall("sp_msg_send_rc_req")
-+ .withMemoryBufferParameter("req", (const unsigned char *)req, sizeof(*req))
-+ .withOutputParameterReturning("resp", resp, sizeof(*resp))
-+ .andReturnValue(result);
-+}
-+
-+sp_result sp_msg_send_rc_req(const struct sp_msg *req, struct sp_msg *resp)
-+{
-+ return mock()
-+ .actualCall("sp_msg_send_rc_req")
-+ .withMemoryBufferParameter("req", (const unsigned char *)req, sizeof(*req))
-+ .withOutputParameter("resp", resp)
-+ .returnIntValue();
-+}
-+#endif /* FFA_DIRECT_MSG_ROUTING_EXTENSION */
-diff --git a/components/messaging/ffa/libsp/mock/mock_sp_messaging.h b/components/messaging/ffa/libsp/mock/mock_sp_messaging.h
-new file mode 100644
-index 0000000..8183012
---- /dev/null
-+++ b/components/messaging/ffa/libsp/mock/mock_sp_messaging.h
-@@ -0,0 +1,39 @@
-+/* SPDX-License-Identifier: BSD-3-Clause */
-+/*
-+ * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
-+ */
-+
-+#ifndef LIBSP_MOCK_MOCK_SP_MESSAGING_H_
-+#define LIBSP_MOCK_MOCK_SP_MESSAGING_H_
-+
-+#include "../include/sp_messaging.h"
-+
-+#include <stdint.h>
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+void expect_sp_msg_wait(const struct sp_msg *msg, sp_result result);
-+
-+
-+void expect_sp_msg_send_direct_req(const struct sp_msg *req,
-+ const struct sp_msg *resp,
-+ sp_result result);
-+
-+
-+void expect_sp_msg_send_direct_resp(const struct sp_msg *resp,
-+ const struct sp_msg *req,
-+ sp_result result);
-+
-+#if FFA_DIRECT_MSG_ROUTING_EXTENSION
-+void expect_sp_msg_send_rc_req(const struct sp_msg *req,
-+ const struct sp_msg *resp,
-+ sp_result result);
-+#endif /* FFA_DIRECT_MSG_ROUTING_EXTENSION */
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* LIBSP_MOCK_MOCK_SP_MESSAGING_H_ */
-diff --git a/components/messaging/ffa/libsp/mock/test/test_mock_sp_messaging.cpp b/components/messaging/ffa/libsp/mock/test/test_mock_sp_messaging.cpp
-new file mode 100644
-index 0000000..bfc7959
---- /dev/null
-+++ b/components/messaging/ffa/libsp/mock/test/test_mock_sp_messaging.cpp
-@@ -0,0 +1,77 @@
-+// SPDX-License-Identifier: BSD-3-Clause
-+/*
-+ * Copyright (c) 2022, Arm Limited. All rights reserved.
-+ */
-+
-+#include <CppUTestExt/MockSupport.h>
-+#include <CppUTest/TestHarness.h>
-+#include "mock_sp_messaging.h"
-+#include <stdint.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+static const struct sp_msg expected_req = {
-+ .source_id = 0x0123,
-+ .destination_id = 0x4567,
-+ .args = {0x89abcdef, 0xfedcba98, 0x76543210, 0xabcdef01}
-+};
-+static const struct sp_msg expected_resp = {
-+ .source_id = 0x1234,
-+ .destination_id = 0x5678,
-+ .args = {0x9abcdef8, 0xedcba98f, 0x65432107, 0xbcdef01a}
-+};
-+
-+TEST_GROUP(mock_sp_messaging)
-+{
-+ TEST_SETUP()
-+ {
-+ memset(&req, 0x00, sizeof(req));
-+ memset(&resp, 0x00, sizeof(resp));
-+ }
-+
-+ TEST_TEARDOWN()
-+ {
-+ mock().checkExpectations();
-+ mock().clear();
-+ }
-+
-+ struct sp_msg req;
-+ struct sp_msg resp;
-+ static const sp_result result = -1;
-+};
-+
-+TEST(mock_sp_messaging, sp_msg_wait)
-+{
-+ expect_sp_msg_wait(&expected_req, result);
-+ LONGS_EQUAL(result, sp_msg_wait(&req));
-+ MEMCMP_EQUAL(&expected_req, &req, sizeof(expected_req));
-+}
-+
-+TEST(mock_sp_messaging, sp_msg_send_direct_req)
-+{
-+ req = expected_req;
-+
-+ expect_sp_msg_send_direct_req(&expected_req, &expected_resp, result);
-+ LONGS_EQUAL(result, sp_msg_send_direct_req(&req, &resp));
-+ MEMCMP_EQUAL(&expected_resp, &resp, sizeof(expected_resp));
-+}
-+
-+TEST(mock_sp_messaging, sp_msg_send_direct_resp)
-+{
-+ resp = expected_resp;
-+
-+ expect_sp_msg_send_direct_resp(&expected_resp, &expected_req, result);
-+ LONGS_EQUAL(result, sp_msg_send_direct_resp(&resp, &req));
-+ MEMCMP_EQUAL(&expected_req, &req, sizeof(expected_req));
-+}
-+
-+#if FFA_DIRECT_MSG_ROUTING_EXTENSION
-+TEST(mock_sp_messaging, sp_msg_send_rc_req)
-+{
-+ req = expected_req;
-+
-+ expect_sp_msg_send_rc_req(&expected_req, &expected_resp, result);
-+ LONGS_EQUAL(result, sp_msg_send_rc_req(&req, &resp));
-+ MEMCMP_EQUAL(&expected_resp, &resp, sizeof(expected_resp));
-+}
-+#endif /* FFA_DIRECT_MSG_ROUTING_EXTENSION */
-diff --git a/components/messaging/ffa/libsp/tests.cmake b/components/messaging/ffa/libsp/tests.cmake
-index 63abb57..eb0b41e 100644
---- a/components/messaging/ffa/libsp/tests.cmake
-+++ b/components/messaging/ffa/libsp/tests.cmake
-@@ -176,6 +176,20 @@ unit_test_add_suite(
- -DARM64
- )
-
-+unit_test_add_suite(
-+ NAME libsp_mock_sp_messaging
-+ SOURCES
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/test/test_mock_sp_messaging.cpp
-+ ${CMAKE_CURRENT_LIST_DIR}/mock/mock_sp_messaging.cpp
-+ INCLUDE_DIRECTORIES
-+ ${CMAKE_CURRENT_LIST_DIR}/include/
-+ ${CMAKE_CURRENT_LIST_DIR}/mock
-+ ${UNIT_TEST_PROJECT_PATH}/components/common/utils/include
-+ COMPILE_DEFINITIONS
-+ -DARM64
-+ -DFFA_DIRECT_MSG_ROUTING_EXTENSION=1
-+)
-+
- unit_test_add_suite(
- NAME libsp_sp_messaging_with_routing_extension
- SOURCES
---
-2.17.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0021-Add-64-bit-direct-message-handling-to-libsp.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0021-Add-64-bit-direct-message-handling-to-libsp.patch
deleted file mode 100644
index a037c27cc6..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0021-Add-64-bit-direct-message-handling-to-libsp.patch
+++ /dev/null
@@ -1,2552 +0,0 @@
-From a9edc50077d72cdd7e40ba3f03aee974848cd532 Mon Sep 17 00:00:00 2001
-From: Imre Kis <imre.kis@arm.com>
-Date: Tue, 19 Jul 2022 17:38:00 +0200
-Subject: [PATCH 21/24] Add 64 bit direct message handling to libsp
-
-* Change direct message struct to allow 64 bit arguments
-* Add 64 bit direct message req/resp functions to FF-A layer
-* Distinguish 32/64 bit messages on SP layer by field in sp_msg
-* Update tests and mocks
-
-The FF-A direct message response must match the request's 32/64bit mode
-which is the responsibility of the callee and it should be validated by
-the SPMC.
-
-Signed-off-by: Imre Kis <imre.kis@arm.com>
-Change-Id: Ibbd64ca0291dfe142a23471a649a07ba1a036824
-
-Upstream-Status: Pending [In review]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-
----
- components/messaging/ffa/libsp/ffa.c | 84 ++-
- .../libsp/ffa_direct_msg_routing_extension.c | 28 +-
- .../messaging/ffa/libsp/include/ffa_api.h | 58 +-
- .../ffa/libsp/include/ffa_api_defines.h | 5 +
- .../ffa/libsp/include/ffa_api_types.h | 7 +-
- .../ffa/libsp/include/sp_messaging.h | 9 +-
- .../messaging/ffa/libsp/mock/mock_ffa_api.cpp | 100 +++-
- .../messaging/ffa/libsp/mock/mock_ffa_api.h | 34 +-
- .../ffa/libsp/mock/test/test_mock_ffa_api.cpp | 50 +-
- components/messaging/ffa/libsp/sp_messaging.c | 74 ++-
- .../messaging/ffa/libsp/test/test_ffa_api.cpp | 337 ++++++++++--
- .../ffa/libsp/test/test_sp_messaging.cpp | 498 ++++++++++--------
- .../rpc/ffarpc/caller/sp/ffarpc_caller.c | 31 +-
- .../rpc/ffarpc/endpoint/ffarpc_call_ep.c | 4 +-
- .../endpoint/sp/mm_communicate_call_ep.c | 16 +-
- .../smm-gateway/common/smm_gateway_sp.c | 8 +-
- 16 files changed, 961 insertions(+), 382 deletions(-)
-
-diff --git a/components/messaging/ffa/libsp/ffa.c b/components/messaging/ffa/libsp/ffa.c
-index 374e940..caacc79 100644
---- a/components/messaging/ffa/libsp/ffa.c
-+++ b/components/messaging/ffa/libsp/ffa.c
-@@ -33,11 +33,20 @@ static inline void ffa_unpack_direct_msg(struct ffa_params *svc_result,
- msg->function_id = svc_result->a0;
- msg->source_id = (svc_result->a1 >> 16);
- msg->destination_id = svc_result->a1;
-- msg->args[0] = svc_result->a3;
-- msg->args[1] = svc_result->a4;
-- msg->args[2] = svc_result->a5;
-- msg->args[3] = svc_result->a6;
-- msg->args[4] = svc_result->a7;
-+
-+ if (FFA_IS_32_BIT_FUNC(msg->function_id)) {
-+ msg->args.args32[0] = svc_result->a3;
-+ msg->args.args32[1] = svc_result->a4;
-+ msg->args.args32[2] = svc_result->a5;
-+ msg->args.args32[3] = svc_result->a6;
-+ msg->args.args32[4] = svc_result->a7;
-+ } else {
-+ msg->args.args64[0] = svc_result->a3;
-+ msg->args.args64[1] = svc_result->a4;
-+ msg->args.args64[2] = svc_result->a5;
-+ msg->args.args64[3] = svc_result->a6;
-+ msg->args.args64[4] = svc_result->a7;
-+ }
- }
-
- /*
-@@ -217,7 +226,7 @@ ffa_result ffa_msg_wait(struct ffa_direct_msg *msg)
-
- if (result.a0 == FFA_ERROR) {
- return ffa_get_errorcode(&result);
-- } else if (result.a0 == FFA_MSG_SEND_DIRECT_REQ_32) {
-+ } else if (FFA_TO_32_BIT_FUNC(result.a0) == FFA_MSG_SEND_DIRECT_REQ_32) {
- ffa_unpack_direct_msg(&result, msg);
- } else {
- assert(result.a0 == FFA_SUCCESS_32);
-@@ -227,13 +236,15 @@ ffa_result ffa_msg_wait(struct ffa_direct_msg *msg)
- return FFA_OK;
- }
-
--ffa_result ffa_msg_send_direct_req(uint16_t source, uint16_t dest, uint32_t a0,
-- uint32_t a1, uint32_t a2, uint32_t a3,
-- uint32_t a4, struct ffa_direct_msg *msg)
-+static ffa_result ffa_msg_send_direct_req(uint32_t function_id, uint32_t resp_id,
-+ uint16_t source, uint16_t dest,
-+ uint64_t a0, uint64_t a1, uint64_t a2,
-+ uint64_t a3, uint64_t a4,
-+ struct ffa_direct_msg *msg)
- {
- struct ffa_params result = {0};
-
-- ffa_svc(FFA_MSG_SEND_DIRECT_REQ_32,
-+ ffa_svc(function_id,
- SHIFT_U32(source, FFA_MSG_SEND_DIRECT_REQ_SOURCE_ID_SHIFT) |
- dest, FFA_PARAM_MBZ, a0, a1, a2, a3, a4, &result);
-
-@@ -244,7 +255,7 @@ ffa_result ffa_msg_send_direct_req(uint16_t source, uint16_t dest, uint32_t a0,
-
- if (result.a0 == FFA_ERROR) {
- return ffa_get_errorcode(&result);
-- } else if (result.a0 == FFA_MSG_SEND_DIRECT_RESP_32) {
-+ } else if (result.a0 == resp_id) {
- ffa_unpack_direct_msg(&result, msg);
- } else {
- assert(result.a0 == FFA_SUCCESS_32);
-@@ -254,13 +265,36 @@ ffa_result ffa_msg_send_direct_req(uint16_t source, uint16_t dest, uint32_t a0,
- return FFA_OK;
- }
-
--ffa_result ffa_msg_send_direct_resp(uint16_t source, uint16_t dest, uint32_t a0,
-- uint32_t a1, uint32_t a2, uint32_t a3,
-- uint32_t a4, struct ffa_direct_msg *msg)
-+ffa_result ffa_msg_send_direct_req_32(uint16_t source, uint16_t dest,
-+ uint32_t a0, uint32_t a1, uint32_t a2,
-+ uint32_t a3, uint32_t a4,
-+ struct ffa_direct_msg *msg)
-+{
-+ return ffa_msg_send_direct_req(FFA_MSG_SEND_DIRECT_REQ_32,
-+ FFA_MSG_SEND_DIRECT_RESP_32,
-+ source, dest, a0, a1, a2, a3, a4, msg);
-+}
-+
-+ffa_result ffa_msg_send_direct_req_64(uint16_t source, uint16_t dest,
-+ uint64_t a0, uint64_t a1, uint64_t a2,
-+ uint64_t a3, uint64_t a4,
-+ struct ffa_direct_msg *msg)
-+{
-+ return ffa_msg_send_direct_req(FFA_MSG_SEND_DIRECT_REQ_64,
-+ FFA_MSG_SEND_DIRECT_RESP_64,
-+ source, dest, a0, a1, a2, a3, a4, msg);
-+}
-+
-+static ffa_result ffa_msg_send_direct_resp(uint32_t function_id,
-+ uint16_t source, uint16_t dest,
-+ uint64_t a0, uint64_t a1,
-+ uint64_t a2, uint64_t a3,
-+ uint64_t a4,
-+ struct ffa_direct_msg *msg)
- {
- struct ffa_params result = {0};
-
-- ffa_svc(FFA_MSG_SEND_DIRECT_RESP_32,
-+ ffa_svc(function_id,
- SHIFT_U32(source, FFA_MSG_SEND_DIRECT_RESP_SOURCE_ID_SHIFT) |
- dest, FFA_PARAM_MBZ, a0, a1, a2, a3, a4, &result);
-
-@@ -271,7 +305,7 @@ ffa_result ffa_msg_send_direct_resp(uint16_t source, uint16_t dest, uint32_t a0,
-
- if (result.a0 == FFA_ERROR) {
- return ffa_get_errorcode(&result);
-- } else if (result.a0 == FFA_MSG_SEND_DIRECT_REQ_32) {
-+ } else if (FFA_TO_32_BIT_FUNC(result.a0) == FFA_MSG_SEND_DIRECT_REQ_32) {
- ffa_unpack_direct_msg(&result, msg);
- } else {
- assert(result.a0 == FFA_SUCCESS_32);
-@@ -281,6 +315,24 @@ ffa_result ffa_msg_send_direct_resp(uint16_t source, uint16_t dest, uint32_t a0,
- return FFA_OK;
- }
-
-+ffa_result ffa_msg_send_direct_resp_32(uint16_t source, uint16_t dest,
-+ uint32_t a0, uint32_t a1, uint32_t a2,
-+ uint32_t a3, uint32_t a4,
-+ struct ffa_direct_msg *msg)
-+{
-+ return ffa_msg_send_direct_resp(FFA_MSG_SEND_DIRECT_RESP_32, source,
-+ dest, a0, a1, a2, a3, a4, msg);
-+}
-+
-+ffa_result ffa_msg_send_direct_resp_64(uint16_t source, uint16_t dest,
-+ uint64_t a0, uint64_t a1, uint64_t a2,
-+ uint64_t a3, uint64_t a4,
-+ struct ffa_direct_msg *msg)
-+{
-+ return ffa_msg_send_direct_resp(FFA_MSG_SEND_DIRECT_RESP_64, source,
-+ dest, a0, a1, a2, a3, a4, msg);
-+}
-+
- ffa_result ffa_mem_donate(uint32_t total_length, uint32_t fragment_length,
- void *buffer_address, uint32_t page_count,
- uint64_t *handle)
-diff --git a/components/messaging/ffa/libsp/ffa_direct_msg_routing_extension.c b/components/messaging/ffa/libsp/ffa_direct_msg_routing_extension.c
-index 6813573..03a372f 100644
---- a/components/messaging/ffa/libsp/ffa_direct_msg_routing_extension.c
-+++ b/components/messaging/ffa/libsp/ffa_direct_msg_routing_extension.c
-@@ -1,6 +1,6 @@
- // SPDX-License-Identifier: BSD-3-Clause
- /*
-- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
-+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
- */
-
- #include "ffa_direct_msg_routing_extension.h"
-@@ -20,23 +20,23 @@ static uint16_t callee_id = SP_ID_INVALID;
-
- static bool is_rc_message(const struct ffa_direct_msg *msg)
- {
-- return msg->args[0] & FFA_ROUTING_EXT_RC_BIT;
-+ return msg->args.args32[0] & FFA_ROUTING_EXT_RC_BIT;
- }
-
- static bool is_error_message(const struct ffa_direct_msg *msg)
- {
-- return msg->args[0] & FFA_ROUTING_EXT_ERROR_BIT;
-+ return msg->args.args32[0] & FFA_ROUTING_EXT_ERROR_BIT;
- }
-
- static ffa_result get_error_code_from_message(const struct ffa_direct_msg *msg)
- {
-- return (ffa_result)msg->args[1];
-+ return (ffa_result)msg->args.args32[1];
- }
-
- static ffa_result send_rc_error_message(struct ffa_direct_msg *req,
- ffa_result error_code)
- {
-- return ffa_msg_send_direct_resp(req->destination_id, req->source_id,
-+ return ffa_msg_send_direct_resp_32(req->destination_id, req->source_id,
- (FFA_ROUTING_EXT_ERROR_BIT |
- FFA_ROUTING_EXT_RC_BIT),
- error_code, 0, 0, 0, req);
-@@ -45,7 +45,7 @@ static ffa_result send_rc_error_message(struct ffa_direct_msg *req,
- static ffa_result send_rc_error_message_to_rc_root(struct ffa_direct_msg *resp,
- ffa_result error_code)
- {
-- return ffa_msg_send_direct_req(own_id, callee_id,
-+ return ffa_msg_send_direct_req_32(own_id, callee_id,
- (FFA_ROUTING_EXT_RC_BIT |
- FFA_ROUTING_EXT_ERROR_BIT),
- error_code, 0, 0, 0, resp);
-@@ -128,10 +128,10 @@ ffa_result ffa_direct_msg_routing_ext_req_post_hook(struct ffa_direct_msg *resp)
- /* Forwarding RC request towards the root (normal world) */
- state = forwarding;
-
-- ffa_res = ffa_msg_send_direct_resp(own_id, caller_id,
-- resp->args[0], resp->args[1],
-- resp->args[2], resp->args[3],
-- resp->args[4], &rc_resp);
-+ ffa_res = ffa_msg_send_direct_resp_32(own_id, caller_id,
-+ resp->args.args32[0], resp->args.args32[1],
-+ resp->args.args32[2], resp->args.args32[3],
-+ resp->args.args32[4], &rc_resp);
- if (ffa_res != FFA_OK)
- goto forward_ffa_error_to_rc_root;
-
-@@ -145,9 +145,9 @@ ffa_result ffa_direct_msg_routing_ext_req_post_hook(struct ffa_direct_msg *resp)
-
- /* Forwarding RC response towards the RC root. */
- state = internal;
-- ffa_res = ffa_msg_send_direct_req(
-- own_id, callee_id, rc_resp.args[0], rc_resp.args[1],
-- rc_resp.args[2], rc_resp.args[3], rc_resp.args[4],
-+ ffa_res = ffa_msg_send_direct_req_32(
-+ own_id, callee_id, rc_resp.args.args32[0], rc_resp.args.args32[1],
-+ rc_resp.args.args32[2], rc_resp.args.args32[3], rc_resp.args.args32[4],
- resp);
-
- goto break_on_ffa_error;
-@@ -197,7 +197,7 @@ void ffa_direct_msg_routing_ext_resp_error_hook(void)
-
- void ffa_direct_msg_routing_ext_rc_req_pre_hook(struct ffa_direct_msg *req)
- {
-- req->args[0] = FFA_ROUTING_EXT_RC_BIT;
-+ req->args.args32[0] = FFA_ROUTING_EXT_RC_BIT;
- state = rc_root;
- }
-
-diff --git a/components/messaging/ffa/libsp/include/ffa_api.h b/components/messaging/ffa/libsp/include/ffa_api.h
-index ec5cb04..4b7073b 100644
---- a/components/messaging/ffa/libsp/include/ffa_api.h
-+++ b/components/messaging/ffa/libsp/include/ffa_api.h
-@@ -126,8 +126,8 @@ ffa_result ffa_msg_wait(struct ffa_direct_msg *msg);
- /** Messaging interfaces */
-
- /**
-- * @brief Sends a partition message in parameter registers as a request and
-- * blocks until the response is available.
-+ * @brief Sends a 32 bit partition message in parameter registers as a
-+ * request and blocks until the response is available.
- * @note The ffa_interrupt_handler function can be called during the
- * execution of this function
- *
-@@ -138,13 +138,14 @@ ffa_result ffa_msg_wait(struct ffa_direct_msg *msg);
- *
- * @return The FF-A error status code
- */
--ffa_result ffa_msg_send_direct_req(uint16_t source, uint16_t dest, uint32_t a0,
-- uint32_t a1, uint32_t a2, uint32_t a3,
-- uint32_t a4, struct ffa_direct_msg *msg);
-+ffa_result ffa_msg_send_direct_req_32(uint16_t source, uint16_t dest,
-+ uint32_t a0, uint32_t a1, uint32_t a2,
-+ uint32_t a3, uint32_t a4,
-+ struct ffa_direct_msg *msg);
-
- /**
-- * @brief Sends a partition message in parameter registers as a response
-- * and blocks until the response is available.
-+ * @brief Sends a 64 bit partition message in parameter registers as a
-+ * request and blocks until the response is available.
- * @note The ffa_interrupt_handler function can be called during the
- * execution of this function
- *
-@@ -155,9 +156,46 @@ ffa_result ffa_msg_send_direct_req(uint16_t source, uint16_t dest, uint32_t a0,
- *
- * @return The FF-A error status code
- */
--ffa_result ffa_msg_send_direct_resp(uint16_t source, uint16_t dest, uint32_t a0,
-- uint32_t a1, uint32_t a2, uint32_t a3,
-- uint32_t a4, struct ffa_direct_msg *msg);
-+ffa_result ffa_msg_send_direct_req_64(uint16_t source, uint16_t dest,
-+ uint64_t a0, uint64_t a1, uint64_t a2,
-+ uint64_t a3, uint64_t a4,
-+ struct ffa_direct_msg *msg);
-+
-+/**
-+ * @brief Sends a 32 bit partition message in parameter registers as a
-+ * response and blocks until the response is available.
-+ * @note The ffa_interrupt_handler function can be called during the
-+ * execution of this function
-+ *
-+ * @param[in] source Source endpoint ID
-+ * @param[in] dest Destination endpoint ID
-+ * @param[in] a0,a1,a2,a3,a4 Implementation defined message values
-+ * @param[out] msg The response message
-+ *
-+ * @return The FF-A error status code
-+ */
-+ffa_result ffa_msg_send_direct_resp_32(uint16_t source, uint16_t dest,
-+ uint32_t a0, uint32_t a1, uint32_t a2,
-+ uint32_t a3, uint32_t a4,
-+ struct ffa_direct_msg *msg);
-+
-+/**
-+ * @brief Sends a 64 bit partition message in parameter registers as a
-+ * response and blocks until the response is available.
-+ * @note The ffa_interrupt_handler function can be called during the
-+ * execution of this function
-+ *
-+ * @param[in] source Source endpoint ID
-+ * @param[in] dest Destination endpoint ID
-+ * @param[in] a0,a1,a2,a3,a4 Implementation defined message values
-+ * @param[out] msg The response message
-+ *
-+ * @return The FF-A error status code
-+ */
-+ffa_result ffa_msg_send_direct_resp_64(uint16_t source, uint16_t dest,
-+ uint64_t a0, uint64_t a1, uint64_t a2,
-+ uint64_t a3, uint64_t a4,
-+ struct ffa_direct_msg *msg);
-
- /**
- * Memory management interfaces
-diff --git a/components/messaging/ffa/libsp/include/ffa_api_defines.h b/components/messaging/ffa/libsp/include/ffa_api_defines.h
-index 95bcb0c..163a0cd 100644
---- a/components/messaging/ffa/libsp/include/ffa_api_defines.h
-+++ b/components/messaging/ffa/libsp/include/ffa_api_defines.h
-@@ -58,6 +58,11 @@
- #define FFA_MEM_PERM_GET UINT32_C(0x84000088)
- #define FFA_MEM_PERM_SET UINT32_C(0x84000089)
-
-+/* Utility macros */
-+#define FFA_TO_32_BIT_FUNC(x) ((x) & (~UINT32_C(0x40000000)))
-+#define FFA_IS_32_BIT_FUNC(x) (((x) & UINT32_C(0x40000000)) == 0)
-+#define FFA_IS_64_BIT_FUNC(x) (((x) & UINT32_C(0x40000000)) != 0)
-+
- /* Special value for MBZ parameters */
- #define FFA_PARAM_MBZ UINT32_C(0x0)
-
-diff --git a/components/messaging/ffa/libsp/include/ffa_api_types.h b/components/messaging/ffa/libsp/include/ffa_api_types.h
-index 3686e2e..b1be7ac 100644
---- a/components/messaging/ffa/libsp/include/ffa_api_types.h
-+++ b/components/messaging/ffa/libsp/include/ffa_api_types.h
-@@ -1,6 +1,6 @@
- /* SPDX-License-Identifier: BSD-3-Clause */
- /*
-- * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
-+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
- */
-
- #ifndef LIBSP_INCLUDE_FFA_API_TYPES_H_
-@@ -80,7 +80,10 @@ struct ffa_direct_msg {
- uint32_t function_id;
- uint16_t source_id;
- uint16_t destination_id;
-- uint32_t args[5];
-+ union {
-+ uint32_t args32[5];
-+ uint64_t args64[5];
-+ } args;
- };
-
- /**
-diff --git a/components/messaging/ffa/libsp/include/sp_messaging.h b/components/messaging/ffa/libsp/include/sp_messaging.h
-index 4bb45f7..7173a92 100644
---- a/components/messaging/ffa/libsp/include/sp_messaging.h
-+++ b/components/messaging/ffa/libsp/include/sp_messaging.h
-@@ -1,6 +1,6 @@
- /* SPDX-License-Identifier: BSD-3-Clause */
- /*
-- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
- */
-
- #ifndef LIBSP_INCLUDE_SP_MESSAGING_H_
-@@ -9,6 +9,7 @@
- #include "sp_api_defines.h"
- #include "sp_api_types.h"
-
-+#include <stdbool.h>
- #include <stdint.h>
-
- #ifdef __cplusplus
-@@ -23,7 +24,11 @@ extern "C" {
- struct sp_msg {
- uint16_t source_id;
- uint16_t destination_id;
-- uint32_t args[SP_MSG_ARG_COUNT];
-+ bool is_64bit_message;
-+ union {
-+ uint32_t args32[SP_MSG_ARG_COUNT];
-+ uint64_t args64[SP_MSG_ARG_COUNT];
-+ } args;
- };
-
- /**
-diff --git a/components/messaging/ffa/libsp/mock/mock_ffa_api.cpp b/components/messaging/ffa/libsp/mock/mock_ffa_api.cpp
-index ceebcbf..a01848c 100644
---- a/components/messaging/ffa/libsp/mock/mock_ffa_api.cpp
-+++ b/components/messaging/ffa/libsp/mock/mock_ffa_api.cpp
-@@ -140,13 +140,13 @@ ffa_result ffa_msg_wait(struct ffa_direct_msg *msg)
- .returnIntValue();
- }
-
--void expect_ffa_msg_send_direct_req(uint16_t source, uint16_t dest, uint32_t a0,
-- uint32_t a1, uint32_t a2, uint32_t a3,
-- uint32_t a4,
-- const struct ffa_direct_msg *msg,
-- ffa_result result)
-+void expect_ffa_msg_send_direct_req_32(uint16_t source, uint16_t dest,
-+ uint32_t a0, uint32_t a1, uint32_t a2,
-+ uint32_t a3, uint32_t a4,
-+ const struct ffa_direct_msg *msg,
-+ ffa_result result)
- {
-- mock().expectOneCall("ffa_msg_send_direct_req")
-+ mock().expectOneCall("ffa_msg_send_direct_req_32")
- .withUnsignedIntParameter("source", source)
- .withUnsignedIntParameter("dest", dest)
- .withUnsignedIntParameter("a0", a0)
-@@ -158,12 +158,13 @@ void expect_ffa_msg_send_direct_req(uint16_t source, uint16_t dest, uint32_t a0,
- .andReturnValue(result);
- }
-
--ffa_result ffa_msg_send_direct_req(uint16_t source, uint16_t dest, uint32_t a0,
-- uint32_t a1, uint32_t a2, uint32_t a3,
-- uint32_t a4, struct ffa_direct_msg *msg)
-+ffa_result ffa_msg_send_direct_req_32(uint16_t source, uint16_t dest,
-+ uint32_t a0, uint32_t a1, uint32_t a2,
-+ uint32_t a3,uint32_t a4,
-+ struct ffa_direct_msg *msg)
- {
- return mock()
-- .actualCall("ffa_msg_send_direct_req")
-+ .actualCall("ffa_msg_send_direct_req_32")
- .withUnsignedIntParameter("source", source)
- .withUnsignedIntParameter("dest", dest)
- .withUnsignedIntParameter("a0", a0)
-@@ -175,13 +176,49 @@ ffa_result ffa_msg_send_direct_req(uint16_t source, uint16_t dest, uint32_t a0,
- .returnIntValue();
- }
-
--void expect_ffa_msg_send_direct_resp(uint16_t source, uint16_t dest,
-+void expect_ffa_msg_send_direct_req_64(uint16_t source, uint16_t dest,
-+ uint64_t a0, uint64_t a1, uint64_t a2,
-+ uint64_t a3, uint64_t a4,
-+ const struct ffa_direct_msg *msg,
-+ ffa_result result)
-+{
-+ mock().expectOneCall("ffa_msg_send_direct_req_64")
-+ .withUnsignedIntParameter("source", source)
-+ .withUnsignedIntParameter("dest", dest)
-+ .withUnsignedLongIntParameter("a0", a0)
-+ .withUnsignedLongIntParameter("a1", a1)
-+ .withUnsignedLongIntParameter("a2", a2)
-+ .withUnsignedLongIntParameter("a3", a3)
-+ .withUnsignedLongIntParameter("a4", a4)
-+ .withOutputParameterReturning("msg", msg, sizeof(*msg))
-+ .andReturnValue(result);
-+}
-+
-+ffa_result ffa_msg_send_direct_req_64(uint16_t source, uint16_t dest,
-+ uint64_t a0, uint64_t a1, uint64_t a2,
-+ uint64_t a3, uint64_t a4,
-+ struct ffa_direct_msg *msg)
-+{
-+ return mock()
-+ .actualCall("ffa_msg_send_direct_req_64")
-+ .withUnsignedIntParameter("source", source)
-+ .withUnsignedIntParameter("dest", dest)
-+ .withUnsignedLongIntParameter("a0", a0)
-+ .withUnsignedLongIntParameter("a1", a1)
-+ .withUnsignedLongIntParameter("a2", a2)
-+ .withUnsignedLongIntParameter("a3", a3)
-+ .withUnsignedLongIntParameter("a4", a4)
-+ .withOutputParameter("msg", msg)
-+ .returnIntValue();
-+}
-+
-+void expect_ffa_msg_send_direct_resp_32(uint16_t source, uint16_t dest,
- uint32_t a0, uint32_t a1, uint32_t a2,
- uint32_t a3, uint32_t a4,
- const struct ffa_direct_msg *msg,
- ffa_result result)
- {
-- mock().expectOneCall("ffa_msg_send_direct_resp")
-+ mock().expectOneCall("ffa_msg_send_direct_resp_32")
- .withUnsignedIntParameter("source", source)
- .withUnsignedIntParameter("dest", dest)
- .withUnsignedIntParameter("a0", a0)
-@@ -193,12 +230,12 @@ void expect_ffa_msg_send_direct_resp(uint16_t source, uint16_t dest,
- .andReturnValue(result);
- }
-
--ffa_result ffa_msg_send_direct_resp(uint16_t source, uint16_t dest, uint32_t a0,
-+ffa_result ffa_msg_send_direct_resp_32(uint16_t source, uint16_t dest, uint32_t a0,
- uint32_t a1, uint32_t a2, uint32_t a3,
- uint32_t a4, struct ffa_direct_msg *msg)
- {
- return mock()
-- .actualCall("ffa_msg_send_direct_resp")
-+ .actualCall("ffa_msg_send_direct_resp_32")
- .withUnsignedIntParameter("source", source)
- .withUnsignedIntParameter("dest", dest)
- .withUnsignedIntParameter("a0", a0)
-@@ -210,6 +247,41 @@ ffa_result ffa_msg_send_direct_resp(uint16_t source, uint16_t dest, uint32_t a0,
- .returnIntValue();
- }
-
-+void expect_ffa_msg_send_direct_resp_64(uint16_t source, uint16_t dest,
-+ uint64_t a0, uint64_t a1, uint64_t a2,
-+ uint64_t a3, uint64_t a4,
-+ const struct ffa_direct_msg *msg,
-+ ffa_result result)
-+{
-+ mock().expectOneCall("ffa_msg_send_direct_resp_64")
-+ .withUnsignedIntParameter("source", source)
-+ .withUnsignedIntParameter("dest", dest)
-+ .withUnsignedLongIntParameter("a0", a0)
-+ .withUnsignedLongIntParameter("a1", a1)
-+ .withUnsignedLongIntParameter("a2", a2)
-+ .withUnsignedLongIntParameter("a3", a3)
-+ .withUnsignedLongIntParameter("a4", a4)
-+ .withOutputParameterReturning("msg", msg, sizeof(*msg))
-+ .andReturnValue(result);
-+}
-+
-+ffa_result ffa_msg_send_direct_resp_64(uint16_t source, uint16_t dest, uint64_t a0,
-+ uint64_t a1, uint64_t a2, uint64_t a3,
-+ uint64_t a4, struct ffa_direct_msg *msg)
-+{
-+ return mock()
-+ .actualCall("ffa_msg_send_direct_resp_64")
-+ .withUnsignedIntParameter("source", source)
-+ .withUnsignedIntParameter("dest", dest)
-+ .withUnsignedLongIntParameter("a0", a0)
-+ .withUnsignedLongIntParameter("a1", a1)
-+ .withUnsignedLongIntParameter("a2", a2)
-+ .withUnsignedLongIntParameter("a3", a3)
-+ .withUnsignedLongIntParameter("a4", a4)
-+ .withOutputParameter("msg", msg)
-+ .returnIntValue();
-+}
-+
- void expect_ffa_mem_donate(uint32_t total_length, uint32_t fragment_length,
- void *buffer_address, uint32_t page_count,
- const uint64_t *handle, ffa_result result)
-diff --git a/components/messaging/ffa/libsp/mock/mock_ffa_api.h b/components/messaging/ffa/libsp/mock/mock_ffa_api.h
-index b1c794f..4213ccb 100644
---- a/components/messaging/ffa/libsp/mock/mock_ffa_api.h
-+++ b/components/messaging/ffa/libsp/mock/mock_ffa_api.h
-@@ -30,17 +30,29 @@ void expect_ffa_id_get(const uint16_t *id, ffa_result result);
-
- void expect_ffa_msg_wait(const struct ffa_direct_msg *msg, ffa_result result);
-
--void expect_ffa_msg_send_direct_req(uint16_t source, uint16_t dest, uint32_t a0,
-- uint32_t a1, uint32_t a2, uint32_t a3,
-- uint32_t a4,
-- const struct ffa_direct_msg *msg,
-- ffa_result result);
--
--void expect_ffa_msg_send_direct_resp(uint16_t source, uint16_t dest,
-- uint32_t a0, uint32_t a1, uint32_t a2,
-- uint32_t a3, uint32_t a4,
-- const struct ffa_direct_msg *msg,
-- ffa_result result);
-+void expect_ffa_msg_send_direct_req_32(uint16_t source, uint16_t dest,
-+ uint32_t a0, uint32_t a1, uint32_t a2,
-+ uint32_t a3, uint32_t a4,
-+ const struct ffa_direct_msg *msg,
-+ ffa_result result);
-+
-+void expect_ffa_msg_send_direct_req_64(uint16_t source, uint16_t dest,
-+ uint64_t a0, uint64_t a1, uint64_t a2,
-+ uint64_t a3, uint64_t a4,
-+ const struct ffa_direct_msg *msg,
-+ ffa_result result);
-+
-+void expect_ffa_msg_send_direct_resp_32(uint16_t source, uint16_t dest,
-+ uint32_t a0, uint32_t a1, uint32_t a2,
-+ uint32_t a3, uint32_t a4,
-+ const struct ffa_direct_msg *msg,
-+ ffa_result result);
-+
-+void expect_ffa_msg_send_direct_resp_64(uint16_t source, uint16_t dest,
-+ uint64_t a0, uint64_t a1, uint64_t a2,
-+ uint64_t a3, uint64_t a4,
-+ const struct ffa_direct_msg *msg,
-+ ffa_result result);
-
- void expect_ffa_mem_donate(uint32_t total_length, uint32_t fragment_length,
- void *buffer_address, uint32_t page_count,
-diff --git a/components/messaging/ffa/libsp/mock/test/test_mock_ffa_api.cpp b/components/messaging/ffa/libsp/mock/test/test_mock_ffa_api.cpp
-index ab33649..c1cbdd6 100644
---- a/components/messaging/ffa/libsp/mock/test/test_mock_ffa_api.cpp
-+++ b/components/messaging/ffa/libsp/mock/test/test_mock_ffa_api.cpp
-@@ -105,7 +105,7 @@ TEST(mock_ffa_api, ffa_msg_wait)
- MEMCMP_EQUAL(&expected_msg, &msg, sizeof(expected_msg));
- }
-
--TEST(mock_ffa_api, ffa_msg_send_direct_req)
-+TEST(mock_ffa_api, ffa_msg_send_direct_req_32)
- {
- const uint16_t source = 0x1122;
- const uint16_t dest = 0x2233;
-@@ -116,13 +116,30 @@ TEST(mock_ffa_api, ffa_msg_send_direct_req)
- const uint32_t a4 = 0x89124567;
- struct ffa_direct_msg msg = { 0 };
-
-- expect_ffa_msg_send_direct_req(source, dest, a0, a1, a2, a3, a4,
-+ expect_ffa_msg_send_direct_req_32(source, dest, a0, a1, a2, a3, a4,
-+ &expected_msg, result);
-+ LONGS_EQUAL(result, ffa_msg_send_direct_req_32(source, dest, a0, a1, a2,
-+ a3, a4, &msg));
-+}
-+
-+TEST(mock_ffa_api, ffa_msg_send_direct_req_64)
-+{
-+ const uint16_t source = 0x1122;
-+ const uint16_t dest = 0x2233;
-+ const uint64_t a0 = 0x4567891221987654;
-+ const uint64_t a1 = 0x5678912442198765;
-+ const uint64_t a2 = 0x6789124554219876;
-+ const uint64_t a3 = 0x7891245665421987;
-+ const uint64_t a4 = 0x8912456776542198;
-+ struct ffa_direct_msg msg = { 0 };
-+
-+ expect_ffa_msg_send_direct_req_64(source, dest, a0, a1, a2, a3, a4,
- &expected_msg, result);
-- LONGS_EQUAL(result, ffa_msg_send_direct_req(source, dest, a0, a1, a2,
-- a3, a4, &msg));
-+ LONGS_EQUAL(result, ffa_msg_send_direct_req_64(source, dest, a0, a1, a2,
-+ a3, a4, &msg));
- }
-
--TEST(mock_ffa_api, ffa_msg_send_direct_resp)
-+TEST(mock_ffa_api, ffa_msg_send_direct_resp_32)
- {
- const uint16_t source = 0x1122;
- const uint16_t dest = 0x2233;
-@@ -133,10 +150,27 @@ TEST(mock_ffa_api, ffa_msg_send_direct_resp)
- const uint32_t a4 = 0x89124567;
- struct ffa_direct_msg msg = { 0 };
-
-- expect_ffa_msg_send_direct_resp(source, dest, a0, a1, a2, a3, a4,
-+ expect_ffa_msg_send_direct_resp_32(source, dest, a0, a1, a2, a3, a4,
- &expected_msg, result);
-- LONGS_EQUAL(result, ffa_msg_send_direct_resp(source, dest, a0, a1, a2,
-- a3, a4, &msg));
-+ LONGS_EQUAL(result, ffa_msg_send_direct_resp_32(source, dest, a0, a1,
-+ a2, a3, a4, &msg));
-+}
-+
-+TEST(mock_ffa_api, ffa_msg_send_direct_resp_64)
-+{
-+ const uint16_t source = 0x1122;
-+ const uint16_t dest = 0x2233;
-+ const uint64_t a0 = 0x4567891221987654;
-+ const uint64_t a1 = 0x5678912442198765;
-+ const uint64_t a2 = 0x6789124554219876;
-+ const uint64_t a3 = 0x7891245665421987;
-+ const uint64_t a4 = 0x8912456776542198;
-+ struct ffa_direct_msg msg = { 0 };
-+
-+ expect_ffa_msg_send_direct_resp_64(source, dest, a0, a1, a2, a3, a4,
-+ &expected_msg, result);
-+ LONGS_EQUAL(result, ffa_msg_send_direct_resp_64(source, dest, a0, a1,
-+ a2, a3, a4, &msg));
- }
-
- TEST(mock_ffa_api, ffa_mem_donate)
-diff --git a/components/messaging/ffa/libsp/sp_messaging.c b/components/messaging/ffa/libsp/sp_messaging.c
-index f7223aa..392006b 100644
---- a/components/messaging/ffa/libsp/sp_messaging.c
-+++ b/components/messaging/ffa/libsp/sp_messaging.c
-@@ -1,6 +1,6 @@
- // SPDX-License-Identifier: BSD-3-Clause
- /*
-- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
- */
-
- #include "ffa_api.h"
-@@ -20,22 +20,40 @@ static void pack_ffa_direct_msg(const struct sp_msg *msg,
- ffa_msg->source_id = msg->source_id;
- ffa_msg->destination_id = msg->destination_id;
-
-- ffa_msg->args[0] = 0;
-- memcpy(&ffa_msg->args[SP_MSG_ARG_OFFSET], msg->args, sizeof(msg->args));
-+ ffa_msg->args.args64[0] = 0;
-+ if (msg->is_64bit_message)
-+ memcpy(&ffa_msg->args.args64[SP_MSG_ARG_OFFSET],
-+ msg->args.args64, sizeof(msg->args.args64));
-+ else
-+ memcpy(&ffa_msg->args.args32[SP_MSG_ARG_OFFSET],
-+ msg->args.args32, sizeof(msg->args.args32));
- }
-
- static void unpack_ffa_direct_msg(const struct ffa_direct_msg *ffa_msg,
- struct sp_msg *msg)
- {
-- if (ffa_msg->function_id != FFA_SUCCESS_32) {
-+ if (ffa_msg->function_id == FFA_MSG_SEND_DIRECT_REQ_32 ||
-+ ffa_msg->function_id == FFA_MSG_SEND_DIRECT_RESP_32) {
- /*
-- * Handling request or response (error is handled before call)
-+ * Handling 32 bit request or response
- */
- msg->source_id = ffa_msg->source_id;
- msg->destination_id = ffa_msg->destination_id;
-+ msg->is_64bit_message = FFA_IS_64_BIT_FUNC(ffa_msg->function_id);
-
-- memcpy(msg->args, &ffa_msg->args[SP_MSG_ARG_OFFSET],
-- sizeof(msg->args));
-+ memcpy(msg->args.args32, &ffa_msg->args.args32[SP_MSG_ARG_OFFSET],
-+ sizeof(msg->args.args32));
-+ } else if (ffa_msg->function_id == FFA_MSG_SEND_DIRECT_REQ_64 ||
-+ ffa_msg->function_id == FFA_MSG_SEND_DIRECT_RESP_64) {
-+ /*
-+ * Handling 64 bit request or response
-+ */
-+ msg->source_id = ffa_msg->source_id;
-+ msg->destination_id = ffa_msg->destination_id;
-+ msg->is_64bit_message = FFA_IS_64_BIT_FUNC(ffa_msg->function_id);
-+
-+ memcpy(msg->args.args64, &ffa_msg->args.args64[SP_MSG_ARG_OFFSET],
-+ sizeof(msg->args.args64));
- } else {
- /* Success has no message parameters */
- *msg = (struct sp_msg){ 0 };
-@@ -89,11 +107,18 @@ sp_result sp_msg_send_direct_req(const struct sp_msg *req, struct sp_msg *resp)
- ffa_direct_msg_routing_ext_req_pre_hook(&ffa_req);
- #endif
-
-- ffa_res = ffa_msg_send_direct_req(ffa_req.source_id,
-- ffa_req.destination_id,
-- ffa_req.args[0], ffa_req.args[1],
-- ffa_req.args[2], ffa_req.args[3],
-- ffa_req.args[4], &ffa_resp);
-+ if (req->is_64bit_message)
-+ ffa_res = ffa_msg_send_direct_req_64(
-+ ffa_req.source_id, ffa_req.destination_id,
-+ ffa_req.args.args64[0], ffa_req.args.args64[1],
-+ ffa_req.args.args64[2], ffa_req.args.args64[3],
-+ ffa_req.args.args64[4], &ffa_resp);
-+ else
-+ ffa_res = ffa_msg_send_direct_req_32(
-+ ffa_req.source_id, ffa_req.destination_id,
-+ ffa_req.args.args32[0], ffa_req.args.args32[1],
-+ ffa_req.args.args32[2], ffa_req.args.args32[3],
-+ ffa_req.args.args32[4], &ffa_resp);
-
- if (ffa_res != FFA_OK) {
- #if FFA_DIRECT_MSG_ROUTING_EXTENSION
-@@ -136,11 +161,18 @@ sp_result sp_msg_send_direct_resp(const struct sp_msg *resp, struct sp_msg *req)
- ffa_direct_msg_routing_ext_resp_pre_hook(&ffa_resp);
- #endif
-
-- ffa_res = ffa_msg_send_direct_resp(ffa_resp.source_id,
-- ffa_resp.destination_id,
-- ffa_resp.args[0], ffa_resp.args[1],
-- ffa_resp.args[2], ffa_resp.args[3],
-- ffa_resp.args[4], &ffa_req);
-+ if (resp->is_64bit_message)
-+ ffa_res = ffa_msg_send_direct_resp_64(
-+ ffa_resp.source_id, ffa_resp.destination_id,
-+ ffa_resp.args.args64[0], ffa_resp.args.args64[1],
-+ ffa_resp.args.args64[2], ffa_resp.args.args64[3],
-+ ffa_resp.args.args64[4], &ffa_req);
-+ else
-+ ffa_res = ffa_msg_send_direct_resp_32(
-+ ffa_resp.source_id, ffa_resp.destination_id,
-+ ffa_resp.args.args32[0], ffa_resp.args.args32[1],
-+ ffa_resp.args.args32[2], ffa_resp.args.args32[3],
-+ ffa_resp.args.args32[4], &ffa_req);
-
- if (ffa_res != FFA_OK) {
- #if FFA_DIRECT_MSG_ROUTING_EXTENSION
-@@ -182,11 +214,11 @@ sp_result sp_msg_send_rc_req(const struct sp_msg *req, struct sp_msg *resp)
-
- ffa_direct_msg_routing_ext_rc_req_pre_hook(&ffa_req);
-
-- ffa_res = ffa_msg_send_direct_resp(ffa_req.source_id,
-+ ffa_res = ffa_msg_send_direct_resp_32(ffa_req.source_id,
- ffa_req.destination_id,
-- ffa_req.args[0], ffa_req.args[1],
-- ffa_req.args[2], ffa_req.args[3],
-- ffa_req.args[4], &ffa_resp);
-+ ffa_req.args.args32[0], ffa_req.args.args32[1],
-+ ffa_req.args.args32[2], ffa_req.args.args32[3],
-+ ffa_req.args.args32[4], &ffa_resp);
-
- if (ffa_res != FFA_OK) {
- ffa_direct_msg_routing_ext_rc_req_error_hook();
-diff --git a/components/messaging/ffa/libsp/test/test_ffa_api.cpp b/components/messaging/ffa/libsp/test/test_ffa_api.cpp
-index 8fa261e..6cca085 100644
---- a/components/messaging/ffa/libsp/test/test_ffa_api.cpp
-+++ b/components/messaging/ffa/libsp/test/test_ffa_api.cpp
-@@ -43,20 +43,35 @@ TEST_GROUP(ffa_api)
- svc_result.a2 = (uint32_t)error_code;
- }
-
-- void msg_equal(uint32_t func_id, uint16_t source_id, uint16_t dest_id,
-- uint32_t arg0, uint32_t arg1, uint32_t arg2,
-- uint32_t arg3, uint32_t arg4)
-+ void msg_equal_32(uint32_t func_id, uint16_t source_id, uint16_t dest_id,
-+ uint32_t arg0, uint32_t arg1, uint32_t arg2,
-+ uint32_t arg3, uint32_t arg4)
- {
- UNSIGNED_LONGS_EQUAL(func_id, msg.function_id);
- UNSIGNED_LONGS_EQUAL(source_id, msg.source_id);
- UNSIGNED_LONGS_EQUAL(dest_id, msg.destination_id);
-- UNSIGNED_LONGS_EQUAL(arg0, msg.args[0]);
-- UNSIGNED_LONGS_EQUAL(arg1, msg.args[1]);
-- UNSIGNED_LONGS_EQUAL(arg2, msg.args[2]);
-- UNSIGNED_LONGS_EQUAL(arg3, msg.args[3]);
-- UNSIGNED_LONGS_EQUAL(arg4, msg.args[4]);
-+ UNSIGNED_LONGS_EQUAL(arg0, msg.args.args32[0]);
-+ UNSIGNED_LONGS_EQUAL(arg1, msg.args.args32[1]);
-+ UNSIGNED_LONGS_EQUAL(arg2, msg.args.args32[2]);
-+ UNSIGNED_LONGS_EQUAL(arg3, msg.args.args32[3]);
-+ UNSIGNED_LONGS_EQUAL(arg4, msg.args.args32[4]);
- }
-
-+ void msg_equal_64(uint32_t func_id, uint16_t source_id, uint16_t dest_id,
-+ uint64_t arg0, uint64_t arg1, uint64_t arg2,
-+ uint64_t arg3, uint64_t arg4)
-+ {
-+ UNSIGNED_LONGS_EQUAL(func_id, msg.function_id);
-+ UNSIGNED_LONGS_EQUAL(source_id, msg.source_id);
-+ UNSIGNED_LONGS_EQUAL(dest_id, msg.destination_id);
-+ UNSIGNED_LONGLONGS_EQUAL(arg0, msg.args.args64[0]);
-+ UNSIGNED_LONGLONGS_EQUAL(arg1, msg.args.args64[1]);
-+ UNSIGNED_LONGLONGS_EQUAL(arg2, msg.args.args64[2]);
-+ UNSIGNED_LONGLONGS_EQUAL(arg3, msg.args.args64[3]);
-+ UNSIGNED_LONGLONGS_EQUAL(arg4, msg.args.args64[4]);
-+ }
-+
-+
- struct ffa_params svc_result;
- struct ffa_direct_msg msg;
- };
-@@ -360,7 +375,7 @@ TEST(ffa_api, ffa_msg_wait_success)
- expect_ffa_svc(0x8400006B, 0, 0, 0, 0, 0, 0, 0, &svc_result);
- ffa_result result = ffa_msg_wait(&msg);
- LONGS_EQUAL(0, result);
-- msg_equal(0x84000061, 0, 0, 0, 0, 0, 0, 0);
-+ msg_equal_32(0x84000061, 0, 0, 0, 0, 0, 0, 0);
- }
-
- TEST(ffa_api, ffa_msg_wait_error)
-@@ -369,10 +384,10 @@ TEST(ffa_api, ffa_msg_wait_error)
- expect_ffa_svc(0x8400006B, 0, 0, 0, 0, 0, 0, 0, &svc_result);
- ffa_result result = ffa_msg_wait(&msg);
- LONGS_EQUAL(-1, result);
-- msg_equal(0, 0, 0, 0, 0, 0, 0, 0);
-+ msg_equal_32(0, 0, 0, 0, 0, 0, 0, 0);
- }
-
--TEST(ffa_api, ffa_msg_wait_direct_req)
-+TEST(ffa_api, ffa_msg_wait_direct_req_32)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -392,7 +407,31 @@ TEST(ffa_api, ffa_msg_wait_direct_req)
- expect_ffa_svc(0x8400006B, 0, 0, 0, 0, 0, 0, 0, &svc_result);
- ffa_result result = ffa_msg_wait(&msg);
- LONGS_EQUAL(0, result);
-- msg_equal(0x8400006F, source_id, dest_id, arg0, arg1, arg2, arg3,
-+ msg_equal_32(0x8400006F, source_id, dest_id, arg0, arg1, arg2, arg3,
-+ arg4);
-+}
-+
-+TEST(ffa_api, ffa_msg_wait_direct_req_64)
-+{
-+ const uint16_t source_id = 0x1122;
-+ const uint16_t dest_id = 0x3344;
-+ const uint64_t arg0 = 0x0123456776543210ULL;
-+ const uint64_t arg1 = 0x1234567887654321ULL;
-+ const uint64_t arg2 = 0x2345678998765432ULL;
-+ const uint64_t arg3 = 0x3456789aa9876543ULL;
-+ const uint64_t arg4 = 0x456789abba987654ULL;
-+
-+ svc_result.a0 = 0xC400006F;
-+ svc_result.a1 = ((uint32_t)source_id) << 16 | dest_id;
-+ svc_result.a3 = arg0;
-+ svc_result.a4 = arg1;
-+ svc_result.a5 = arg2;
-+ svc_result.a6 = arg3;
-+ svc_result.a7 = arg4;
-+ expect_ffa_svc(0x8400006B, 0, 0, 0, 0, 0, 0, 0, &svc_result);
-+ ffa_result result = ffa_msg_wait(&msg);
-+ LONGS_EQUAL(0, result);
-+ msg_equal_64(0xC400006F, source_id, dest_id, arg0, arg1, arg2, arg3,
- arg4);
- }
-
-@@ -410,7 +449,7 @@ TEST(ffa_api, ffa_msg_wait_one_interrupt_success)
- expect_ffa_svc(0x8400006B, 0, 0, 0, 0, 0, 0, 0, &svc_result);
- ffa_result result = ffa_msg_wait(&msg);
- LONGS_EQUAL(0, result);
-- msg_equal(0x84000061, 0, 0, 0, 0, 0, 0, 0);
-+ msg_equal_32(0x84000061, 0, 0, 0, 0, 0, 0, 0);
- }
-
- TEST(ffa_api, ffa_msg_wait_two_interrupt_success)
-@@ -434,7 +473,7 @@ TEST(ffa_api, ffa_msg_wait_two_interrupt_success)
- expect_ffa_svc(0x8400006B, 0, 0, 0, 0, 0, 0, 0, &svc_result);
- ffa_result result = ffa_msg_wait(&msg);
- LONGS_EQUAL(0, result);
-- msg_equal(0x84000061, 0, 0, 0, 0, 0, 0, 0);
-+ msg_equal_32(0x84000061, 0, 0, 0, 0, 0, 0, 0);
- }
-
- TEST(ffa_api, ffa_msg_wait_unknown_response)
-@@ -448,7 +487,7 @@ TEST(ffa_api, ffa_msg_wait_unknown_response)
- }
- }
-
--TEST(ffa_api, ffa_msg_send_direct_req_success)
-+TEST(ffa_api, ffa_msg_send_direct_req_32_success)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -461,13 +500,13 @@ TEST(ffa_api, ffa_msg_send_direct_req_success)
- svc_result.a0 = 0x84000061;
- expect_ffa_svc(0x8400006F, ((uint32_t)source_id << 16) | dest_id, 0,
- arg0, arg1, arg2, arg3, arg4, &svc_result);
-- ffa_result result = ffa_msg_send_direct_req(
-+ ffa_result result = ffa_msg_send_direct_req_32(
- source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
- LONGS_EQUAL(0, result);
-- msg_equal(0x84000061, 0, 0, 0, 0, 0, 0, 0);
-+ msg_equal_32(0x84000061, 0, 0, 0, 0, 0, 0, 0);
- }
-
--TEST(ffa_api, ffa_msg_send_direct_req_error)
-+TEST(ffa_api, ffa_msg_send_direct_req_32_error)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -480,13 +519,48 @@ TEST(ffa_api, ffa_msg_send_direct_req_error)
- setup_error_response(-1);
- expect_ffa_svc(0x8400006F, ((uint32_t)source_id << 16) | dest_id, 0,
- arg0, arg1, arg2, arg3, arg4, &svc_result);
-- ffa_result result = ffa_msg_send_direct_req(
-+ ffa_result result = ffa_msg_send_direct_req_32(
- source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
- LONGS_EQUAL(-1, result);
-- msg_equal(0, 0, 0, 0, 0, 0, 0, 0);
-+ msg_equal_32(0, 0, 0, 0, 0, 0, 0, 0);
-+}
-+
-+TEST(ffa_api, ffa_msg_send_direct_req_32_get_resp_64)
-+{
-+ const uint16_t source_id = 0x1122;
-+ const uint16_t dest_id = 0x3344;
-+ const uint32_t arg0 = 0x01234567ULL;
-+ const uint32_t arg1 = 0x12345678ULL;
-+ const uint32_t arg2 = 0x23456789ULL;
-+ const uint32_t arg3 = 0x3456789aULL;
-+ const uint32_t arg4 = 0x456789abULL;
-+ const uint16_t resp_source_id = 0x1221;
-+ const uint16_t resp_dest_id = 0x3443;
-+ const uint64_t resp_arg0 = 0x9012345665432109ULL;
-+ const uint64_t resp_arg1 = 0xa12345677654321aULL;
-+ const uint64_t resp_arg2 = 0xb23456788765432bULL;
-+ const uint64_t resp_arg3 = 0xc34567899876543cULL;
-+ const uint64_t resp_arg4 = 0xd456789aa987654dULL;
-+ assert_environment_t assert_env;
-+
-+ svc_result.a0 = 0xC4000070;
-+ svc_result.a1 = ((uint32_t)resp_source_id) << 16 | resp_dest_id;
-+ svc_result.a3 = resp_arg0;
-+ svc_result.a4 = resp_arg1;
-+ svc_result.a5 = resp_arg2;
-+ svc_result.a6 = resp_arg3;
-+ svc_result.a7 = resp_arg4;
-+
-+ expect_ffa_svc(0x8400006F, ((uint32_t)source_id << 16) | dest_id, 0,
-+ arg0, arg1, arg2, arg3, arg4, &svc_result);
-+
-+ if (SETUP_ASSERT_ENVIRONMENT(assert_env)) {
-+ ffa_msg_send_direct_req_32(source_id, dest_id, arg0, arg1, arg2,
-+ arg3, arg4, &msg);
-+ }
- }
-
--TEST(ffa_api, ffa_msg_send_direct_req_direct_resp)
-+TEST(ffa_api, ffa_msg_send_direct_req_32_direct_resp)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -512,14 +586,82 @@ TEST(ffa_api, ffa_msg_send_direct_req_direct_resp)
- svc_result.a7 = resp_arg4;
- expect_ffa_svc(0x8400006F, ((uint32_t)source_id << 16) | dest_id, 0,
- arg0, arg1, arg2, arg3, arg4, &svc_result);
-- ffa_result result = ffa_msg_send_direct_req(
-+ ffa_result result = ffa_msg_send_direct_req_32(
-+ source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
-+ LONGS_EQUAL(0, result);
-+ msg_equal_32(0x84000070, resp_source_id, resp_dest_id, resp_arg0,
-+ resp_arg1, resp_arg2, resp_arg3, resp_arg4);
-+}
-+
-+TEST(ffa_api, ffa_msg_send_direct_req_64_success)
-+{
-+ const uint16_t source_id = 0x1122;
-+ const uint16_t dest_id = 0x3344;
-+ const uint64_t arg0 = 0x0123456776543210ULL;
-+ const uint64_t arg1 = 0x1234567887654321ULL;
-+ const uint64_t arg2 = 0x2345678998765432ULL;
-+ const uint64_t arg3 = 0x3456789aa9876543ULL;
-+ const uint64_t arg4 = 0x456789abba987654ULL;
-+ const uint16_t resp_source_id = 0x1221;
-+ const uint16_t resp_dest_id = 0x3443;
-+ const uint64_t resp_arg0 = 0x9012345665432109ULL;
-+ const uint64_t resp_arg1 = 0xa12345677654321aULL;
-+ const uint64_t resp_arg2 = 0xb23456788765432bULL;
-+ const uint64_t resp_arg3 = 0xc34567899876543cULL;
-+ const uint64_t resp_arg4 = 0xd456789aa987654dULL;
-+
-+ svc_result.a0 = 0xC4000070;
-+ svc_result.a1 = ((uint32_t)resp_source_id) << 16 | resp_dest_id;
-+ svc_result.a3 = resp_arg0;
-+ svc_result.a4 = resp_arg1;
-+ svc_result.a5 = resp_arg2;
-+ svc_result.a6 = resp_arg3;
-+ svc_result.a7 = resp_arg4;
-+ expect_ffa_svc(0xC400006F, ((uint32_t)source_id << 16) | dest_id, 0,
-+ arg0, arg1, arg2, arg3, arg4, &svc_result);
-+ ffa_result result = ffa_msg_send_direct_req_64(
- source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
- LONGS_EQUAL(0, result);
-- msg_equal(0x84000070, resp_source_id, resp_dest_id, resp_arg0,
-+ msg_equal_64(0xC4000070, resp_source_id, resp_dest_id, resp_arg0,
- resp_arg1, resp_arg2, resp_arg3, resp_arg4);
- }
-
--TEST(ffa_api, ffa_msg_send_direct_req_one_interrupt_success)
-+TEST(ffa_api, ffa_msg_send_direct_req_64_get_resp_32)
-+{
-+ const uint16_t source_id = 0x1122;
-+ const uint16_t dest_id = 0x3344;
-+ const uint64_t arg0 = 0x9012345665432109ULL;
-+ const uint64_t arg1 = 0xa12345677654321aULL;
-+ const uint64_t arg2 = 0xb23456788765432bULL;
-+ const uint64_t arg3 = 0xc34567899876543cULL;
-+ const uint64_t arg4 = 0xd456789aa987654dULL;
-+ const uint16_t resp_source_id = 0x1221;
-+ const uint16_t resp_dest_id = 0x3443;
-+ const uint32_t resp_arg0 = 0x01234567ULL;
-+ const uint32_t resp_arg1 = 0x12345678ULL;
-+ const uint32_t resp_arg2 = 0x23456789ULL;
-+ const uint32_t resp_arg3 = 0x3456789aULL;
-+ const uint32_t resp_arg4 = 0x456789abULL;
-+ assert_environment_t assert_env;
-+
-+ svc_result.a0 = 0x84000070;
-+ svc_result.a1 = ((uint32_t)resp_source_id) << 16 | resp_dest_id;
-+ svc_result.a3 = resp_arg0;
-+ svc_result.a4 = resp_arg1;
-+ svc_result.a5 = resp_arg2;
-+ svc_result.a6 = resp_arg3;
-+ svc_result.a7 = resp_arg4;
-+
-+ expect_ffa_svc(0xC400006F, ((uint32_t)source_id << 16) | dest_id, 0,
-+ arg0, arg1, arg2, arg3, arg4, &svc_result);
-+
-+ if (SETUP_ASSERT_ENVIRONMENT(assert_env)) {
-+ ffa_msg_send_direct_req_64(source_id, dest_id, arg0, arg1, arg2,
-+ arg3, arg4, &msg);
-+ }
-+}
-+
-+TEST(ffa_api, ffa_msg_send_direct_req_32_one_interrupt_success)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -539,13 +681,13 @@ TEST(ffa_api, ffa_msg_send_direct_req_one_interrupt_success)
-
- svc_result.a0 = 0x84000061;
- expect_ffa_svc(0x8400006B, 0, 0, 0, 0, 0, 0, 0, &svc_result);
-- ffa_result result = ffa_msg_send_direct_req(
-+ ffa_result result = ffa_msg_send_direct_req_32(
- source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
- LONGS_EQUAL(0, result);
-- msg_equal(0x84000061, 0, 0, 0, 0, 0, 0, 0);
-+ msg_equal_32(0x84000061, 0, 0, 0, 0, 0, 0, 0);
- }
-
--TEST(ffa_api, ffa_msg_send_direct_req_two_interrupt_success)
-+TEST(ffa_api, ffa_msg_send_direct_req_32_two_interrupt_success)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -573,13 +715,13 @@ TEST(ffa_api, ffa_msg_send_direct_req_two_interrupt_success)
-
- svc_result.a0 = 0x84000061;
- expect_ffa_svc(0x8400006B, 0, 0, 0, 0, 0, 0, 0, &svc_result);
-- ffa_result result = ffa_msg_send_direct_req(
-+ ffa_result result = ffa_msg_send_direct_req_32(
- source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
- LONGS_EQUAL(0, result);
-- msg_equal(0x84000061, 0, 0, 0, 0, 0, 0, 0);
-+ msg_equal_32(0x84000061, 0, 0, 0, 0, 0, 0, 0);
- }
-
--TEST(ffa_api, ffa_msg_send_direct_req_unknown_response)
-+TEST(ffa_api, ffa_msg_send_direct_req_32_unknown_response)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -594,12 +736,12 @@ TEST(ffa_api, ffa_msg_send_direct_req_unknown_response)
- expect_ffa_svc(0x8400006F, ((uint32_t)source_id << 16) | dest_id, 0,
- arg0, arg1, arg2, arg3, arg4, &svc_result);
- if (SETUP_ASSERT_ENVIRONMENT(assert_env)) {
-- ffa_msg_send_direct_req(source_id, dest_id, arg0, arg1, arg2,
-+ ffa_msg_send_direct_req_32(source_id, dest_id, arg0, arg1, arg2,
- arg3, arg4, &msg);
- }
- }
-
--TEST(ffa_api, ffa_msg_send_direct_resp_success)
-+TEST(ffa_api, ffa_msg_send_direct_resp_32_success)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -612,13 +754,13 @@ TEST(ffa_api, ffa_msg_send_direct_resp_success)
- svc_result.a0 = 0x84000061;
- expect_ffa_svc(0x84000070, ((uint32_t)source_id << 16) | dest_id, 0,
- arg0, arg1, arg2, arg3, arg4, &svc_result);
-- ffa_result result = ffa_msg_send_direct_resp(
-+ ffa_result result = ffa_msg_send_direct_resp_32(
- source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
- LONGS_EQUAL(0, result);
-- msg_equal(0x84000061, 0, 0, 0, 0, 0, 0, 0);
-+ msg_equal_32(0x84000061, 0, 0, 0, 0, 0, 0, 0);
- }
-
--TEST(ffa_api, ffa_msg_send_direct_resp_error)
-+TEST(ffa_api, ffa_msg_send_direct_resp_32_error)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -631,13 +773,13 @@ TEST(ffa_api, ffa_msg_send_direct_resp_error)
- setup_error_response(-1);
- expect_ffa_svc(0x84000070, ((uint32_t)source_id << 16) | dest_id, 0,
- arg0, arg1, arg2, arg3, arg4, &svc_result);
-- ffa_result result = ffa_msg_send_direct_resp(
-+ ffa_result result = ffa_msg_send_direct_resp_32(
- source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
- LONGS_EQUAL(-1, result);
-- msg_equal(0, 0, 0, 0, 0, 0, 0, 0);
-+ msg_equal_32(0, 0, 0, 0, 0, 0, 0, 0);
- }
-
--TEST(ffa_api, ffa_msg_send_direct_resp_then_get_direct_req_as_response)
-+TEST(ffa_api, ffa_msg_send_direct_resp_32_then_get_direct_req_32_as_response)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -663,14 +805,113 @@ TEST(ffa_api, ffa_msg_send_direct_resp_then_get_direct_req_as_response)
- svc_result.a7 = resp_arg4;
- expect_ffa_svc(0x84000070, ((uint32_t)source_id << 16) | dest_id, 0,
- arg0, arg1, arg2, arg3, arg4, &svc_result);
-- ffa_result result = ffa_msg_send_direct_resp(
-+ ffa_result result = ffa_msg_send_direct_resp_32(
-+ source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
-+ LONGS_EQUAL(0, result);
-+ msg_equal_32(0x8400006F, resp_source_id, resp_dest_id, resp_arg0,
-+ resp_arg1, resp_arg2, resp_arg3, resp_arg4);
-+}
-+
-+TEST(ffa_api, ffa_msg_send_direct_resp_32_then_get_direct_req_64_as_response)
-+{
-+ const uint16_t source_id = 0x1122;
-+ const uint16_t dest_id = 0x3344;
-+ const uint32_t arg0 = 0x01234567ULL;
-+ const uint32_t arg1 = 0x12345678ULL;
-+ const uint32_t arg2 = 0x23456789ULL;
-+ const uint32_t arg3 = 0x3456789aULL;
-+ const uint32_t arg4 = 0x456789abULL;
-+ const uint16_t resp_source_id = 0x1221;
-+ const uint16_t resp_dest_id = 0x3443;
-+ const uint64_t resp_arg0 = 0x9012345665432109ULL;
-+ const uint64_t resp_arg1 = 0xa12345677654321aULL;
-+ const uint64_t resp_arg2 = 0xb23456788765432bULL;
-+ const uint64_t resp_arg3 = 0xc34567899876543cULL;
-+ const uint64_t resp_arg4 = 0xd456789aa987654dULL;
-+
-+ svc_result.a0 = 0xC400006F;
-+ svc_result.a1 = ((uint32_t)resp_source_id) << 16 | resp_dest_id;
-+ svc_result.a3 = resp_arg0;
-+ svc_result.a4 = resp_arg1;
-+ svc_result.a5 = resp_arg2;
-+ svc_result.a6 = resp_arg3;
-+ svc_result.a7 = resp_arg4;
-+ expect_ffa_svc(0x84000070, ((uint32_t)source_id << 16) | dest_id, 0,
-+ arg0, arg1, arg2, arg3, arg4, &svc_result);
-+ ffa_result result = ffa_msg_send_direct_resp_32(
-+ source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
-+ LONGS_EQUAL(0, result);
-+ msg_equal_64(0xC400006F, resp_source_id, resp_dest_id, resp_arg0,
-+ resp_arg1, resp_arg2, resp_arg3, resp_arg4);
-+}
-+
-+TEST(ffa_api, ffa_msg_send_direct_resp_64_then_get_direct_req_32_as_response)
-+{
-+ const uint16_t source_id = 0x1122;
-+ const uint16_t dest_id = 0x3344;
-+ const uint64_t arg0 = 0x9012345665432109ULL;
-+ const uint64_t arg1 = 0xa12345677654321aULL;
-+ const uint64_t arg2 = 0xb23456788765432bULL;
-+ const uint64_t arg3 = 0xc34567899876543cULL;
-+ const uint64_t arg4 = 0xd456789aa987654dULL;
-+ const uint16_t resp_source_id = 0x1221;
-+ const uint16_t resp_dest_id = 0x3443;
-+ const uint32_t resp_arg0 = 0x01234567ULL;
-+ const uint32_t resp_arg1 = 0x12345678ULL;
-+ const uint32_t resp_arg2 = 0x23456789ULL;
-+ const uint32_t resp_arg3 = 0x3456789aULL;
-+ const uint32_t resp_arg4 = 0x456789abULL;
-+
-+ svc_result.a0 = 0x8400006F;
-+ svc_result.a1 = ((uint32_t)resp_source_id) << 16 | resp_dest_id;
-+ svc_result.a3 = resp_arg0;
-+ svc_result.a4 = resp_arg1;
-+ svc_result.a5 = resp_arg2;
-+ svc_result.a6 = resp_arg3;
-+ svc_result.a7 = resp_arg4;
-+ expect_ffa_svc(0xC4000070, ((uint32_t)source_id << 16) | dest_id, 0,
-+ arg0, arg1, arg2, arg3, arg4, &svc_result);
-+ ffa_result result = ffa_msg_send_direct_resp_64(
-+ source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
-+ LONGS_EQUAL(0, result);
-+ msg_equal_32(0x8400006F, resp_source_id, resp_dest_id, resp_arg0,
-+ resp_arg1, resp_arg2, resp_arg3, resp_arg4);
-+}
-+
-+TEST(ffa_api, ffa_msg_send_direct_resp_64_then_get_direct_req_64_as_response)
-+{
-+ const uint16_t source_id = 0x1122;
-+ const uint16_t dest_id = 0x3344;
-+ const uint64_t arg0 = 0x0123456776543210ULL;
-+ const uint64_t arg1 = 0x1234567887654321ULL;
-+ const uint64_t arg2 = 0x2345678998765432ULL;
-+ const uint64_t arg3 = 0x3456789aa9876543ULL;
-+ const uint64_t arg4 = 0x456789abba987654ULL;
-+ const uint16_t resp_source_id = 0x1221;
-+ const uint16_t resp_dest_id = 0x3443;
-+ const uint64_t resp_arg0 = 0x9012345665432109ULL;
-+ const uint64_t resp_arg1 = 0xa12345677654321aULL;
-+ const uint64_t resp_arg2 = 0xb23456788765432bULL;
-+ const uint64_t resp_arg3 = 0xc34567899876543cULL;
-+ const uint64_t resp_arg4 = 0xd456789aa987654dULL;
-+
-+ svc_result.a0 = 0xC400006F;
-+ svc_result.a1 = ((uint32_t)resp_source_id) << 16 | resp_dest_id;
-+ svc_result.a3 = resp_arg0;
-+ svc_result.a4 = resp_arg1;
-+ svc_result.a5 = resp_arg2;
-+ svc_result.a6 = resp_arg3;
-+ svc_result.a7 = resp_arg4;
-+ expect_ffa_svc(0xC4000070, ((uint32_t)source_id << 16) | dest_id, 0,
-+ arg0, arg1, arg2, arg3, arg4, &svc_result);
-+ ffa_result result = ffa_msg_send_direct_resp_64(
- source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
- LONGS_EQUAL(0, result);
-- msg_equal(0x8400006F, resp_source_id, resp_dest_id, resp_arg0,
-+ msg_equal_64(0xC400006F, resp_source_id, resp_dest_id, resp_arg0,
- resp_arg1, resp_arg2, resp_arg3, resp_arg4);
- }
-
--TEST(ffa_api, ffa_msg_send_direct_resp_one_interrupt_success)
-+TEST(ffa_api, ffa_msg_send_direct_resp_32_one_interrupt_success)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -690,13 +931,13 @@ TEST(ffa_api, ffa_msg_send_direct_resp_one_interrupt_success)
-
- svc_result.a0 = 0x84000061;
- expect_ffa_svc(0x8400006B, 0, 0, 0, 0, 0, 0, 0, &svc_result);
-- ffa_result result = ffa_msg_send_direct_resp(
-+ ffa_result result = ffa_msg_send_direct_resp_32(
- source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
- LONGS_EQUAL(0, result);
-- msg_equal(0x84000061, 0, 0, 0, 0, 0, 0, 0);
-+ msg_equal_32(0x84000061, 0, 0, 0, 0, 0, 0, 0);
- }
-
--TEST(ffa_api, ffa_msg_send_direct_resp_two_interrupt_success)
-+TEST(ffa_api, ffa_msg_send_direct_resp_32_two_interrupt_success)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -724,13 +965,13 @@ TEST(ffa_api, ffa_msg_send_direct_resp_two_interrupt_success)
-
- svc_result.a0 = 0x84000061;
- expect_ffa_svc(0x8400006B, 0, 0, 0, 0, 0, 0, 0, &svc_result);
-- ffa_result result = ffa_msg_send_direct_resp(
-+ ffa_result result = ffa_msg_send_direct_resp_32(
- source_id, dest_id, arg0, arg1, arg2, arg3, arg4, &msg);
- LONGS_EQUAL(0, result);
-- msg_equal(0x84000061, 0, 0, 0, 0, 0, 0, 0);
-+ msg_equal_32(0x84000061, 0, 0, 0, 0, 0, 0, 0);
- }
-
--TEST(ffa_api, ffa_msg_send_direct_resp_unknown_response)
-+TEST(ffa_api, ffa_msg_send_direct_resp_32_unknown_response)
- {
- const uint16_t source_id = 0x1122;
- const uint16_t dest_id = 0x3344;
-@@ -745,7 +986,7 @@ TEST(ffa_api, ffa_msg_send_direct_resp_unknown_response)
- expect_ffa_svc(0x84000070, ((uint32_t)source_id << 16) | dest_id, 0,
- arg0, arg1, arg2, arg3, arg4, &svc_result);
- if (SETUP_ASSERT_ENVIRONMENT(assert_env)) {
-- ffa_msg_send_direct_resp(source_id, dest_id, arg0, arg1, arg2,
-+ ffa_msg_send_direct_resp_32(source_id, dest_id, arg0, arg1, arg2,
- arg3, arg4, &msg);
- }
- }
-diff --git a/components/messaging/ffa/libsp/test/test_sp_messaging.cpp b/components/messaging/ffa/libsp/test/test_sp_messaging.cpp
-index 78bf8bf..786f66e 100644
---- a/components/messaging/ffa/libsp/test/test_sp_messaging.cpp
-+++ b/components/messaging/ffa/libsp/test/test_sp_messaging.cpp
-@@ -1,6 +1,6 @@
- // SPDX-License-Identifier: BSD-3-Clause
- /*
-- * Copyright (c) 2021, Arm Limited. All rights reserved.
-+ * Copyright (c) 2021-2022, Arm Limited. All rights reserved.
- */
-
- #include <CppUTest/TestHarness.h>
-@@ -32,7 +32,7 @@ TEST_GROUP(sp_messaging)
- mock().clear();
- }
-
-- void copy_sp_to_ffa_args(const uint32_t sp_args[], uint32_t ffa_args[])
-+ void copy_sp_to_ffa_args_32(const uint32_t sp_args[], uint32_t ffa_args[])
- {
- int i = 0;
-
-@@ -41,7 +41,16 @@ TEST_GROUP(sp_messaging)
- }
- }
-
-- void fill_ffa_msg(struct ffa_direct_msg * msg)
-+ void copy_sp_to_ffa_args_64(const uint64_t sp_args[], uint64_t ffa_args[])
-+ {
-+ int i = 0;
-+
-+ for (i = 0; i < SP_MSG_ARG_COUNT; i++) {
-+ ffa_args[i + SP_MSG_ARG_OFFSET] = sp_args[i];
-+ }
-+ }
-+
-+ void fill_ffa_msg_32(struct ffa_direct_msg * msg)
- {
- int i = 0;
-
-@@ -49,20 +58,47 @@ TEST_GROUP(sp_messaging)
- msg->source_id = source_id;
- msg->destination_id = dest_id;
-
-- msg->args[0] = 0;
-+ msg->args.args32[0] = 0;
- for (i = 0; i < SP_MSG_ARG_COUNT; i++) {
-- msg->args[i + SP_MSG_ARG_OFFSET] = args[i];
-+ msg->args.args32[i + SP_MSG_ARG_OFFSET] = args32[i];
- }
- }
-
-- void fill_sp_msg(struct sp_msg * msg)
-+ void fill_ffa_msg_64(struct ffa_direct_msg * msg)
- {
- int i = 0;
-
-+ msg->function_id = FFA_MSG_SEND_DIRECT_REQ_64;
- msg->source_id = source_id;
- msg->destination_id = dest_id;
-+
-+ msg->args.args64[0] = 0;
- for (i = 0; i < SP_MSG_ARG_COUNT; i++) {
-- msg->args[i] = args[i + SP_MSG_ARG_OFFSET];
-+ msg->args.args64[i + SP_MSG_ARG_OFFSET] = args64[i];
-+ }
-+ }
-+
-+ void fill_sp_msg_32(struct sp_msg * msg)
-+ {
-+ int i = 0;
-+
-+ msg->source_id = source_id;
-+ msg->destination_id = dest_id;
-+ msg->is_64bit_message = false;
-+ for (i = 0; i < SP_MSG_ARG_COUNT; i++) {
-+ msg->args.args32[i] = args32[i + SP_MSG_ARG_OFFSET];
-+ }
-+ }
-+
-+ void fill_sp_msg_64(struct sp_msg * msg)
-+ {
-+ int i = 0;
-+
-+ msg->source_id = source_id;
-+ msg->destination_id = dest_id;
-+ msg->is_64bit_message = true;
-+ for (i = 0; i < SP_MSG_ARG_COUNT; i++) {
-+ msg->args.args64[i] = args64[i + SP_MSG_ARG_OFFSET];
- }
- }
-
-@@ -74,10 +110,19 @@ TEST_GROUP(sp_messaging)
- UNSIGNED_LONGS_EQUAL(ffa_msg->source_id, sp_msg->source_id);
- UNSIGNED_LONGS_EQUAL(ffa_msg->destination_id,
- sp_msg->destination_id);
-- for (i = 0; i < SP_MSG_ARG_COUNT; i++) {
-- UNSIGNED_LONGS_EQUAL(
-- ffa_msg->args[i + SP_MSG_ARG_OFFSET],
-- sp_msg->args[i]);
-+ CHECK_EQUAL(FFA_IS_64_BIT_FUNC(ffa_msg->function_id), sp_msg->is_64bit_message);
-+ if (sp_msg->is_64bit_message) {
-+ for (i = 0; i < SP_MSG_ARG_COUNT; i++) {
-+ UNSIGNED_LONGS_EQUAL(
-+ ffa_msg->args.args64[i + SP_MSG_ARG_OFFSET],
-+ sp_msg->args.args64[i]);
-+ }
-+ } else {
-+ for (i = 0; i < SP_MSG_ARG_COUNT; i++) {
-+ UNSIGNED_LONGS_EQUAL(
-+ ffa_msg->args.args32[i + SP_MSG_ARG_OFFSET],
-+ sp_msg->args.args32[i]);
-+ }
- }
- }
-
-@@ -87,7 +132,7 @@ TEST_GROUP(sp_messaging)
- struct ffa_direct_msg expected_ffa_req = { 0 };
- struct sp_msg req = { 0 };
-
-- fill_ffa_msg(&expected_ffa_req);
-+ fill_ffa_msg_32(&expected_ffa_req);
- expected_ffa_req.source_id = source_id;
- expected_ffa_req.destination_id = dest_id;
- expect_ffa_msg_wait(&expected_ffa_req, FFA_OK);
-@@ -103,8 +148,10 @@ TEST_GROUP(sp_messaging)
-
- const uint16_t source_id = 0x1234;
- const uint16_t dest_id = 0x5678;
-- const uint32_t args[SP_MSG_ARG_COUNT] = { 0x01234567, 0x12345678,
-- 0x23456789, 0x3456789a };
-+ const uint32_t args32[SP_MSG_ARG_COUNT] = { 0x01234567, 0x12345678,
-+ 0x23456789, 0x3456789a };
-+ const uint64_t args64[SP_MSG_ARG_COUNT] = { 0x0123456776543210, 0x1234567887654321,
-+ 0x2345678998765432, 0x3456789aa9876543 };
- const sp_result result = -1;
- const sp_msg empty_sp_msg = (const sp_msg){ 0 };
- };
-@@ -126,7 +173,7 @@ TEST(sp_messaging, sp_msg_wait_ffa_error)
-
- TEST(sp_messaging, sp_msg_wait)
- {
-- fill_ffa_msg(&ffa_msg);
-+ fill_ffa_msg_32(&ffa_msg);
- expect_ffa_msg_wait(&ffa_msg, FFA_OK);
-
- LONGS_EQUAL(SP_RESULT_OK, sp_msg_wait(&req));
-@@ -139,12 +186,12 @@ TEST(sp_messaging, sp_msg_wait_deny_rc_failure)
- struct ffa_direct_msg rc_msg = { 0 };
- ffa_result result = FFA_ABORTED;
-
-- fill_ffa_msg(&rc_msg);
-- rc_msg.args[0] = ROUTING_EXT_RC_BIT;
-+ fill_ffa_msg_32(&rc_msg);
-+ rc_msg.args.args32[0] = ROUTING_EXT_RC_BIT;
- expect_ffa_msg_wait(&rc_msg, FFA_OK);
-
-- fill_ffa_msg(&ffa_msg);
-- expect_ffa_msg_send_direct_resp(
-+ fill_ffa_msg_32(&ffa_msg);
-+ expect_ffa_msg_send_direct_resp_32(
- rc_msg.destination_id, rc_msg.source_id,
- ROUTING_EXT_RC_BIT | ROUTING_EXT_ERR_BIT,
- SP_RESULT_FFA(FFA_DENIED), 0, 0, 0, &ffa_msg, result);
-@@ -157,12 +204,12 @@ TEST(sp_messaging, sp_msg_wait_deny_rc)
- {
- struct ffa_direct_msg rc_msg = { 0 };
-
-- fill_ffa_msg(&rc_msg);
-- rc_msg.args[0] = ROUTING_EXT_RC_BIT;
-+ fill_ffa_msg_32(&rc_msg);
-+ rc_msg.args.args32[0] = ROUTING_EXT_RC_BIT;
- expect_ffa_msg_wait(&rc_msg, FFA_OK);
-
-- fill_ffa_msg(&ffa_msg);
-- expect_ffa_msg_send_direct_resp(
-+ fill_ffa_msg_32(&ffa_msg);
-+ expect_ffa_msg_send_direct_resp_32(
- rc_msg.destination_id, rc_msg.source_id,
- ROUTING_EXT_RC_BIT | ROUTING_EXT_ERR_BIT,
- SP_RESULT_FFA(FFA_DENIED), 0, 0, 0, &ffa_msg, FFA_OK);
-@@ -191,10 +238,10 @@ TEST(sp_messaging, sp_msg_send_direct_req_ffa_error)
- ffa_result result = FFA_ABORTED;
- uint32_t expected_ffa_args[5] = { 0 };
-
-- fill_sp_msg(&req);
-+ fill_sp_msg_32(&req);
- memset(&resp, 0x5a, sizeof(resp));
-- copy_sp_to_ffa_args(req.args, expected_ffa_args);
-- expect_ffa_msg_send_direct_req(
-+ copy_sp_to_ffa_args_32(req.args.args32, expected_ffa_args);
-+ expect_ffa_msg_send_direct_req_32(
- req.source_id, req.destination_id, expected_ffa_args[0],
- expected_ffa_args[1], expected_ffa_args[2],
- expected_ffa_args[3], expected_ffa_args[4], &ffa_msg, result);
-@@ -203,14 +250,30 @@ TEST(sp_messaging, sp_msg_send_direct_req_ffa_error)
- MEMCMP_EQUAL(&empty_sp_msg, &resp, sizeof(empty_sp_msg));
- }
-
--TEST(sp_messaging, sp_msg_send_direct_req_msg)
-+TEST(sp_messaging, sp_msg_send_direct_req_msg_32)
- {
- uint32_t expected_ffa_args[5] = { 0 };
-
-- fill_sp_msg(&req);
-- fill_ffa_msg(&ffa_msg);
-- copy_sp_to_ffa_args(req.args, expected_ffa_args);
-- expect_ffa_msg_send_direct_req(
-+ fill_sp_msg_32(&req);
-+ fill_ffa_msg_32(&ffa_msg);
-+ copy_sp_to_ffa_args_32(req.args.args32, expected_ffa_args);
-+ expect_ffa_msg_send_direct_req_32(
-+ req.source_id, req.destination_id, expected_ffa_args[0],
-+ expected_ffa_args[1], expected_ffa_args[2],
-+ expected_ffa_args[3], expected_ffa_args[4], &ffa_msg, FFA_OK);
-+
-+ LONGS_EQUAL(SP_RESULT_OK, sp_msg_send_direct_req(&req, &resp));
-+ ffa_and_sp_msg_equal(&ffa_msg, &resp);
-+}
-+
-+TEST(sp_messaging, sp_msg_send_direct_req_msg_64)
-+{
-+ uint64_t expected_ffa_args[5] = { 0 };
-+
-+ fill_sp_msg_64(&req);
-+ fill_ffa_msg_64(&ffa_msg);
-+ copy_sp_to_ffa_args_64(req.args.args64, expected_ffa_args);
-+ expect_ffa_msg_send_direct_req_64(
- req.source_id, req.destination_id, expected_ffa_args[0],
- expected_ffa_args[1], expected_ffa_args[2],
- expected_ffa_args[3], expected_ffa_args[4], &ffa_msg, FFA_OK);
-@@ -223,10 +286,10 @@ TEST(sp_messaging, sp_msg_send_direct_req_success)
- {
- uint32_t expected_ffa_args[5] = { 0 };
-
-- fill_sp_msg(&req);
-+ fill_sp_msg_32(&req);
- ffa_msg.function_id = FFA_SUCCESS_32;
-- copy_sp_to_ffa_args(req.args, expected_ffa_args);
-- expect_ffa_msg_send_direct_req(
-+ copy_sp_to_ffa_args_32(req.args.args32, expected_ffa_args);
-+ expect_ffa_msg_send_direct_req_32(
- req.source_id, req.destination_id, expected_ffa_args[0],
- expected_ffa_args[1], expected_ffa_args[2],
- expected_ffa_args[3], expected_ffa_args[4], &ffa_msg, FFA_OK);
-@@ -248,54 +311,54 @@ TEST(sp_messaging, sp_msg_send_direct_req_rc_forwarding_success)
- sp_msg sp_req = { 0 };
- sp_msg sp_resp = { 0 };
-
-- fill_sp_msg(&sp_req);
-+ fill_sp_msg_32(&sp_req);
- sp_req.source_id = own_id;
- sp_req.destination_id = rc_root_id;
-
- req.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- req.source_id = own_id;
- req.destination_id = rc_root_id;
-- copy_sp_to_ffa_args(sp_req.args, req.args);
-+ copy_sp_to_ffa_args_32(sp_req.args.args32, req.args.args32);
-
-- fill_ffa_msg(&rc_req);
-+ fill_ffa_msg_32(&rc_req);
- rc_req.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- rc_req.source_id = rc_root_id;
- rc_req.destination_id = own_id;
-- rc_req.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_req.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_ffa_msg(&rc_resp);
-+ fill_ffa_msg_32(&rc_resp);
- rc_resp.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- rc_resp.source_id = root_id;
- rc_resp.destination_id = own_id;
-- rc_resp.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_resp.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_sp_msg(&sp_resp);
-+ fill_sp_msg_32(&sp_resp);
- sp_resp.source_id = rc_root_id;
- sp_resp.destination_id = own_id;
-
- resp.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- resp.source_id = rc_root_id;
- resp.destination_id = own_id;
-- copy_sp_to_ffa_args(sp_resp.args, resp.args);
-+ copy_sp_to_ffa_args_32(sp_resp.args.args32, resp.args.args32);
-
- /* Initial request to current SP to set own_id */
- wait_and_receive_request(root_id, own_id);
-
- /* Sending request and receiving RC request from RC root */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, 0, req.args[1],
-- req.args[2], req.args[3], req.args[4],
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, 0, req.args.args32[1],
-+ req.args.args32[2], req.args.args32[3], req.args.args32[4],
- &rc_req, FFA_OK);
-
- /* Forwarding RC request to root and receiving RC response */
-- expect_ffa_msg_send_direct_resp(own_id, root_id, rc_req.args[0],
-- rc_req.args[1], rc_req.args[2],
-- rc_req.args[3], rc_req.args[4],
-+ expect_ffa_msg_send_direct_resp_32(own_id, root_id, rc_req.args.args32[0],
-+ rc_req.args.args32[1], rc_req.args.args32[2],
-+ rc_req.args.args32[3], rc_req.args.args32[4],
- &rc_resp, FFA_OK);
-
- /* Fowarding RC response to RC root and receiving response */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, rc_resp.args[0],
-- rc_resp.args[1], rc_resp.args[2],
-- rc_resp.args[3], rc_resp.args[4], &resp,
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, rc_resp.args.args32[0],
-+ rc_resp.args.args32[1], rc_resp.args.args32[2],
-+ rc_resp.args.args32[3], rc_resp.args.args32[4], &resp,
- FFA_OK);
-
- LONGS_EQUAL(SP_RESULT_OK, sp_msg_send_direct_req(&sp_req, &sp_resp));
-@@ -312,28 +375,28 @@ TEST(sp_messaging, sp_msg_send_direct_req_rc_error)
- sp_msg sp_req = { 0 };
- sp_msg sp_resp = { 0 };
-
-- fill_sp_msg(&sp_req);
-+ fill_sp_msg_32(&sp_req);
- sp_req.source_id = own_id;
- sp_req.destination_id = rc_root_id;
-
- req.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- req.source_id = own_id;
- req.destination_id = rc_root_id;
-- copy_sp_to_ffa_args(sp_req.args, req.args);
-+ copy_sp_to_ffa_args_32(sp_req.args.args32, req.args.args32);
-
-- fill_ffa_msg(&rc_err);
-+ fill_ffa_msg_32(&rc_err);
- rc_err.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- rc_err.source_id = rc_root_id;
- rc_err.destination_id = own_id;
-- rc_err.args[0] = ROUTING_EXT_RC_BIT | ROUTING_EXT_ERR_BIT;
-- rc_err.args[1] = result;
-+ rc_err.args.args32[0] = ROUTING_EXT_RC_BIT | ROUTING_EXT_ERR_BIT;
-+ rc_err.args.args32[1] = result;
-
- /* Initial request to current SP to set own_id */
- wait_and_receive_request(root_id, own_id);
-
- /* Sending request and receiving RC request from RC root */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, 0, req.args[1],
-- req.args[2], req.args[3], req.args[4],
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, 0, req.args.args32[1],
-+ req.args.args32[2], req.args.args32[3], req.args.args32[4],
- &rc_err, FFA_OK);
-
- LONGS_EQUAL(SP_RESULT_FFA(result),
-@@ -354,64 +417,64 @@ TEST(sp_messaging, sp_msg_send_direct_req_rc_forwarding_success_deny_request)
- sp_msg sp_req = { 0 };
- sp_msg sp_resp = { 0 };
-
-- fill_sp_msg(&sp_req);
-+ fill_sp_msg_32(&sp_req);
- sp_req.source_id = own_id;
- sp_req.destination_id = rc_root_id;
-
- req.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- req.source_id = own_id;
- req.destination_id = rc_root_id;
-- copy_sp_to_ffa_args(sp_req.args, req.args);
-+ copy_sp_to_ffa_args_32(sp_req.args.args32, req.args.args32);
-
-- fill_ffa_msg(&rc_req);
-+ fill_ffa_msg_32(&rc_req);
- rc_req.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- rc_req.source_id = rc_root_id;
- rc_req.destination_id = own_id;
-- rc_req.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_req.args.args32[0] = ROUTING_EXT_RC_BIT;
-
- request_to_deny.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- request_to_deny.source_id = root_id;
- request_to_deny.destination_id = own_id;
-- request_to_deny.args[0] = 0;
-+ request_to_deny.args.args32[0] = 0;
-
-- fill_ffa_msg(&rc_resp);
-+ fill_ffa_msg_32(&rc_resp);
- rc_resp.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- rc_resp.source_id = root_id;
- rc_resp.destination_id = own_id;
-- rc_resp.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_resp.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_sp_msg(&sp_resp);
-+ fill_sp_msg_32(&sp_resp);
- sp_resp.source_id = rc_root_id;
- sp_resp.destination_id = own_id;
-
- resp.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- resp.source_id = rc_root_id;
- resp.destination_id = own_id;
-- copy_sp_to_ffa_args(sp_resp.args, resp.args);
-+ copy_sp_to_ffa_args_32(sp_resp.args.args32, resp.args.args32);
-
- /* Initial request to current SP to set own_id */
- wait_and_receive_request(root_id, own_id);
-
- /* Sending request and receiving RC request from RC root */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, 0, req.args[1],
-- req.args[2], req.args[3], req.args[4],
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, 0, req.args.args32[1],
-+ req.args.args32[2], req.args.args32[3], req.args.args32[4],
- &rc_req, FFA_OK);
-
- /* Forwarding RC request to root and receiving a request to deny */
-- expect_ffa_msg_send_direct_resp(own_id, root_id, rc_req.args[0],
-- rc_req.args[1], rc_req.args[2],
-- rc_req.args[3], rc_req.args[4],
-+ expect_ffa_msg_send_direct_resp_32(own_id, root_id, rc_req.args.args32[0],
-+ rc_req.args.args32[1], rc_req.args.args32[2],
-+ rc_req.args.args32[3], rc_req.args.args32[4],
- &request_to_deny, FFA_OK);
-
- /* Sending error to root and receiving RC response */
-- expect_ffa_msg_send_direct_resp(
-+ expect_ffa_msg_send_direct_resp_32(
- own_id, root_id, ROUTING_EXT_RC_BIT | ROUTING_EXT_ERR_BIT,
- SP_RESULT_FFA(FFA_BUSY), 0, 0, 0, &rc_resp, FFA_OK);
-
- /* Fowarding RC response to RC root and receiving response */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, rc_resp.args[0],
-- rc_resp.args[1], rc_resp.args[2],
-- rc_resp.args[3], rc_resp.args[4], &resp,
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, rc_resp.args.args32[0],
-+ rc_resp.args.args32[1], rc_resp.args.args32[2],
-+ rc_resp.args.args32[3], rc_resp.args.args32[4], &resp,
- FFA_OK);
-
- LONGS_EQUAL(SP_RESULT_OK, sp_msg_send_direct_req(&sp_req, &sp_resp));
-@@ -431,65 +494,65 @@ TEST(sp_messaging, sp_msg_send_direct_req_rc_forwarding_success_invalid_req_src)
- sp_msg sp_req = { 0 };
- sp_msg sp_resp = { 0 };
-
-- fill_sp_msg(&sp_req);
-+ fill_sp_msg_32(&sp_req);
- sp_req.source_id = own_id;
- sp_req.destination_id = rc_root_id;
-
- req.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- req.source_id = own_id;
- req.destination_id = rc_root_id;
-- copy_sp_to_ffa_args(sp_req.args, req.args);
-+ copy_sp_to_ffa_args_32(sp_req.args.args32, req.args.args32);
-
-- fill_ffa_msg(&rc_req);
-+ fill_ffa_msg_32(&rc_req);
- rc_req.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- rc_req.source_id = rc_root_id;
- rc_req.destination_id = own_id;
-- rc_req.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_req.args.args32[0] = ROUTING_EXT_RC_BIT;
-
- request_to_deny.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- /* This source ID should be denied in the current state. */
- request_to_deny.source_id = rc_root_id;
- request_to_deny.destination_id = own_id;
-- request_to_deny.args[0] = ROUTING_EXT_RC_BIT;
-+ request_to_deny.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_ffa_msg(&rc_resp);
-+ fill_ffa_msg_32(&rc_resp);
- rc_resp.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- rc_resp.source_id = root_id;
- rc_resp.destination_id = own_id;
-- rc_resp.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_resp.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_sp_msg(&sp_resp);
-+ fill_sp_msg_32(&sp_resp);
- sp_resp.source_id = rc_root_id;
- sp_resp.destination_id = own_id;
-
- resp.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- resp.source_id = rc_root_id;
- resp.destination_id = own_id;
-- copy_sp_to_ffa_args(sp_resp.args, resp.args);
-+ copy_sp_to_ffa_args_32(sp_resp.args.args32, resp.args.args32);
-
- /* Initial request to current SP to set own_id */
- wait_and_receive_request(root_id, own_id);
-
- /* Sending request and receiving RC request from RC root */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, 0, req.args[1],
-- req.args[2], req.args[3], req.args[4],
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, 0, req.args.args32[1],
-+ req.args.args32[2], req.args.args32[3], req.args.args32[4],
- &rc_req, FFA_OK);
-
- /* Forwarding RC request to root and receiving RC response */
-- expect_ffa_msg_send_direct_resp(own_id, root_id, rc_req.args[0],
-- rc_req.args[1], rc_req.args[2],
-- rc_req.args[3], rc_req.args[4],
-+ expect_ffa_msg_send_direct_resp_32(own_id, root_id, rc_req.args.args32[0],
-+ rc_req.args.args32[1], rc_req.args.args32[2],
-+ rc_req.args.args32[3], rc_req.args.args32[4],
- &request_to_deny, FFA_OK);
-
- /* Sending error to root and receiving RC response */
-- expect_ffa_msg_send_direct_resp(
-+ expect_ffa_msg_send_direct_resp_32(
- own_id, rc_root_id, ROUTING_EXT_ERR_BIT | ROUTING_EXT_RC_BIT,
- SP_RESULT_FFA(FFA_BUSY), 0, 0, 0, &rc_resp, FFA_OK);
-
- /* Fowarding RC response to RC root and receiving response */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, rc_resp.args[0],
-- rc_resp.args[1], rc_resp.args[2],
-- rc_resp.args[3], rc_resp.args[4], &resp,
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, rc_resp.args.args32[0],
-+ rc_resp.args.args32[1], rc_resp.args.args32[2],
-+ rc_resp.args.args32[3], rc_resp.args.args32[4], &resp,
- FFA_OK);
-
- LONGS_EQUAL(SP_RESULT_OK, sp_msg_send_direct_req(&sp_req, &sp_resp));
-@@ -509,58 +572,58 @@ TEST(sp_messaging, sp_msg_send_direct_req_deny_fail_wait_success)
- sp_msg sp_req = { 0 };
- sp_msg sp_resp = { 0 };
-
-- fill_sp_msg(&sp_req);
-+ fill_sp_msg_32(&sp_req);
- sp_req.source_id = own_id;
- sp_req.destination_id = rc_root_id;
-
- req.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- req.source_id = own_id;
- req.destination_id = rc_root_id;
-- copy_sp_to_ffa_args(sp_req.args, req.args);
-+ copy_sp_to_ffa_args_32(sp_req.args.args32, req.args.args32);
-
-- fill_ffa_msg(&rc_req);
-+ fill_ffa_msg_32(&rc_req);
- rc_req.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- rc_req.source_id = rc_root_id;
- rc_req.destination_id = own_id;
-- rc_req.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_req.args.args32[0] = ROUTING_EXT_RC_BIT;
-
- request_to_deny.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- /* This source ID should be denied in the current state. */
- request_to_deny.source_id = rc_root_id;
- request_to_deny.destination_id = own_id;
-- request_to_deny.args[0] = ROUTING_EXT_RC_BIT;
-+ request_to_deny.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_ffa_msg(&rc_resp);
-+ fill_ffa_msg_32(&rc_resp);
- rc_resp.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- rc_resp.source_id = root_id;
- rc_resp.destination_id = own_id;
-- rc_resp.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_resp.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_sp_msg(&sp_resp);
-+ fill_sp_msg_32(&sp_resp);
- sp_resp.source_id = rc_root_id;
- sp_resp.destination_id = own_id;
-
- resp.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- resp.source_id = rc_root_id;
- resp.destination_id = own_id;
-- copy_sp_to_ffa_args(sp_resp.args, resp.args);
-+ copy_sp_to_ffa_args_32(sp_resp.args.args32, resp.args.args32);
-
- /* Initial request to current SP to set own_id */
- wait_and_receive_request(root_id, own_id);
-
- /* Sending request and receiving RC request from RC root */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, 0, req.args[1],
-- req.args[2], req.args[3], req.args[4],
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, 0, req.args.args32[1],
-+ req.args.args32[2], req.args.args32[3], req.args.args32[4],
- &rc_req, FFA_OK);
-
- /* Forwarding RC request to root and receiving RC response */
-- expect_ffa_msg_send_direct_resp(own_id, root_id, rc_req.args[0],
-- rc_req.args[1], rc_req.args[2],
-- rc_req.args[3], rc_req.args[4],
-+ expect_ffa_msg_send_direct_resp_32(own_id, root_id, rc_req.args.args32[0],
-+ rc_req.args.args32[1], rc_req.args.args32[2],
-+ rc_req.args.args32[3], rc_req.args.args32[4],
- &request_to_deny, FFA_OK);
-
- /* Sending error to root which fails */
-- expect_ffa_msg_send_direct_resp(
-+ expect_ffa_msg_send_direct_resp_32(
- own_id, rc_root_id, (ROUTING_EXT_ERR_BIT | ROUTING_EXT_RC_BIT),
- SP_RESULT_FFA(FFA_BUSY), 0, 0, 0, &rc_resp, FFA_DENIED);
-
-@@ -568,9 +631,9 @@ TEST(sp_messaging, sp_msg_send_direct_req_deny_fail_wait_success)
- expect_ffa_msg_wait(&rc_resp, FFA_OK);
-
- /* Fowarding RC response to RC root and receiving response */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, rc_resp.args[0],
-- rc_resp.args[1], rc_resp.args[2],
-- rc_resp.args[3], rc_resp.args[4], &resp,
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, rc_resp.args.args32[0],
-+ rc_resp.args.args32[1], rc_resp.args.args32[2],
-+ rc_resp.args.args32[3], rc_resp.args.args32[4], &resp,
- FFA_OK);
-
- LONGS_EQUAL(SP_RESULT_OK, sp_msg_send_direct_req(&sp_req, &sp_resp));
-@@ -590,58 +653,58 @@ TEST(sp_messaging, sp_msg_send_direct_req_deny_fail_wait_fail_forwarding)
- sp_msg sp_req = { 0 };
- sp_msg sp_resp = { 0 };
-
-- fill_sp_msg(&sp_req);
-+ fill_sp_msg_32(&sp_req);
- sp_req.source_id = own_id;
- sp_req.destination_id = rc_root_id;
-
- req.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- req.source_id = own_id;
- req.destination_id = rc_root_id;
-- copy_sp_to_ffa_args(sp_req.args, req.args);
-+ copy_sp_to_ffa_args_32(sp_req.args.args32, req.args.args32);
-
-- fill_ffa_msg(&rc_req);
-+ fill_ffa_msg_32(&rc_req);
- rc_req.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- rc_req.source_id = rc_root_id;
- rc_req.destination_id = own_id;
-- rc_req.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_req.args.args32[0] = ROUTING_EXT_RC_BIT;
-
- request_to_deny.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- /* This source ID should be denied in the current state. */
- request_to_deny.source_id = rc_root_id;
- request_to_deny.destination_id = own_id;
-- request_to_deny.args[0] = ROUTING_EXT_RC_BIT;
-+ request_to_deny.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_ffa_msg(&rc_resp);
-+ fill_ffa_msg_32(&rc_resp);
- rc_resp.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- rc_resp.source_id = root_id;
- rc_resp.destination_id = own_id;
-- rc_resp.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_resp.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_sp_msg(&sp_resp);
-+ fill_sp_msg_32(&sp_resp);
- sp_resp.source_id = rc_root_id;
- sp_resp.destination_id = own_id;
-
- resp.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- resp.source_id = rc_root_id;
- resp.destination_id = own_id;
-- copy_sp_to_ffa_args(sp_resp.args, resp.args);
-+ copy_sp_to_ffa_args_32(sp_resp.args.args32, resp.args.args32);
-
- /* Initial request to current SP to set own_id */
- wait_and_receive_request(root_id, own_id);
-
- /* Sending request and receiving RC request from RC root */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, 0, req.args[1],
-- req.args[2], req.args[3], req.args[4],
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, 0, req.args.args32[1],
-+ req.args.args32[2], req.args.args32[3], req.args.args32[4],
- &rc_req, FFA_OK);
-
- /* Forwarding RC request to root and receiving RC response */
-- expect_ffa_msg_send_direct_resp(own_id, root_id, rc_req.args[0],
-- rc_req.args[1], rc_req.args[2],
-- rc_req.args[3], rc_req.args[4],
-+ expect_ffa_msg_send_direct_resp_32(own_id, root_id, rc_req.args.args32[0],
-+ rc_req.args.args32[1], rc_req.args.args32[2],
-+ rc_req.args.args32[3], rc_req.args.args32[4],
- &request_to_deny, FFA_OK);
-
- /* Sending error to root which fails */
-- expect_ffa_msg_send_direct_resp(
-+ expect_ffa_msg_send_direct_resp_32(
- own_id, rc_root_id, ROUTING_EXT_ERR_BIT | ROUTING_EXT_RC_BIT,
- SP_RESULT_FFA(FFA_BUSY), 0, 0, 0, &rc_resp, FFA_DENIED);
-
-@@ -649,7 +712,7 @@ TEST(sp_messaging, sp_msg_send_direct_req_deny_fail_wait_fail_forwarding)
- expect_ffa_msg_wait(&rc_resp, result);
-
- /* Fowarding RC error as FFA_MSG_WAIT failed */
-- expect_ffa_msg_send_direct_req(
-+ expect_ffa_msg_send_direct_req_32(
- own_id, rc_root_id, (ROUTING_EXT_RC_BIT | ROUTING_EXT_ERR_BIT),
- result, 0, 0, 0, &resp, FFA_OK);
-
-@@ -670,52 +733,52 @@ TEST(sp_messaging, sp_msg_send_direct_req_rc_return_rc_error_msg)
- sp_msg sp_resp = { 0 };
- ffa_result result = FFA_ABORTED;
-
-- fill_sp_msg(&sp_req);
-+ fill_sp_msg_32(&sp_req);
- sp_req.source_id = own_id;
- sp_req.destination_id = rc_root_id;
-
- req.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- req.source_id = own_id;
- req.destination_id = rc_root_id;
-- copy_sp_to_ffa_args(sp_req.args, req.args);
-+ copy_sp_to_ffa_args_32(sp_req.args.args32, req.args.args32);
-
-- fill_ffa_msg(&rc_req);
-+ fill_ffa_msg_32(&rc_req);
- rc_req.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- rc_req.source_id = rc_root_id;
- rc_req.destination_id = own_id;
-- rc_req.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_req.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_ffa_msg(&rc_resp);
-+ fill_ffa_msg_32(&rc_resp);
- rc_resp.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- rc_resp.source_id = root_id;
- rc_resp.destination_id = own_id;
-- rc_resp.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_resp.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_sp_msg(&sp_resp);
-+ fill_sp_msg_32(&sp_resp);
- sp_resp.source_id = rc_root_id;
- sp_resp.destination_id = own_id;
-
- resp.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- resp.source_id = rc_root_id;
- resp.destination_id = own_id;
-- copy_sp_to_ffa_args(sp_resp.args, resp.args);
-+ copy_sp_to_ffa_args_32(sp_resp.args.args32, resp.args.args32);
-
- /* Initial request to current SP to set own_id */
- wait_and_receive_request(root_id, own_id);
-
- /* Sending request and receiving RC request from RC root */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, 0, req.args[1],
-- req.args[2], req.args[3], req.args[4],
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, 0, req.args.args32[1],
-+ req.args.args32[2], req.args.args32[3], req.args.args32[4],
- &rc_req, FFA_OK);
-
- /* Forwarding RC request to root and receiving RC response */
-- expect_ffa_msg_send_direct_resp(own_id, root_id, rc_req.args[0],
-- rc_req.args[1], rc_req.args[2],
-- rc_req.args[3], rc_req.args[4],
-+ expect_ffa_msg_send_direct_resp_32(own_id, root_id, rc_req.args.args32[0],
-+ rc_req.args.args32[1], rc_req.args.args32[2],
-+ rc_req.args.args32[3], rc_req.args.args32[4],
- &rc_resp, result);
-
- /* Fowarding RC error to RC root and receiving response */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id,
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id,
- ROUTING_EXT_RC_BIT | ROUTING_EXT_ERR_BIT,
- SP_RESULT_FFA(result), 0, 0, 0, &resp,
- FFA_OK);
-@@ -737,54 +800,54 @@ TEST(sp_messaging, sp_msg_send_direct_req_rc_return_resp_fail)
- sp_msg sp_resp = { 0 };
- ffa_result result = FFA_ABORTED;
-
-- fill_sp_msg(&sp_req);
-+ fill_sp_msg_32(&sp_req);
- sp_req.source_id = own_id;
- sp_req.destination_id = rc_root_id;
-
- req.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- req.source_id = own_id;
- req.destination_id = rc_root_id;
-- copy_sp_to_ffa_args(sp_req.args, req.args);
-+ copy_sp_to_ffa_args_32(sp_req.args.args32, req.args.args32);
-
-- fill_ffa_msg(&rc_req);
-+ fill_ffa_msg_32(&rc_req);
- rc_req.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- rc_req.source_id = rc_root_id;
- rc_req.destination_id = own_id;
-- rc_req.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_req.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_ffa_msg(&rc_resp);
-+ fill_ffa_msg_32(&rc_resp);
- rc_resp.function_id = FFA_MSG_SEND_DIRECT_REQ_32;
- rc_resp.source_id = root_id;
- rc_resp.destination_id = own_id;
-- rc_resp.args[0] = ROUTING_EXT_RC_BIT;
-+ rc_resp.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_sp_msg(&sp_resp);
-+ fill_sp_msg_32(&sp_resp);
- sp_resp.source_id = rc_root_id;
- sp_resp.destination_id = own_id;
-
- resp.function_id = FFA_MSG_SEND_DIRECT_RESP_32;
- resp.source_id = rc_root_id;
- resp.destination_id = own_id;
-- copy_sp_to_ffa_args(sp_resp.args, resp.args);
-+ copy_sp_to_ffa_args_32(sp_resp.args.args32, resp.args.args32);
-
- /* Initial request to current SP to set own_id */
- wait_and_receive_request(root_id, own_id);
-
- /* Sending request and receiving RC request from RC root */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, 0, req.args[1],
-- req.args[2], req.args[3], req.args[4],
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, 0, req.args.args32[1],
-+ req.args.args32[2], req.args.args32[3], req.args.args32[4],
- &rc_req, FFA_OK);
-
- /* Forwarding RC request to root and receiving RC response */
-- expect_ffa_msg_send_direct_resp(own_id, root_id, rc_req.args[0],
-- rc_req.args[1], rc_req.args[2],
-- rc_req.args[3], rc_req.args[4],
-+ expect_ffa_msg_send_direct_resp_32(own_id, root_id, rc_req.args.args32[0],
-+ rc_req.args.args32[1], rc_req.args.args32[2],
-+ rc_req.args.args32[3], rc_req.args.args32[4],
- &rc_resp, FFA_OK);
-
- /* Fowarding RC response to RC root and receiving response */
-- expect_ffa_msg_send_direct_req(own_id, rc_root_id, rc_resp.args[0],
-- rc_resp.args[1], rc_resp.args[2],
-- rc_resp.args[3], rc_resp.args[4], &resp,
-+ expect_ffa_msg_send_direct_req_32(own_id, rc_root_id, rc_resp.args.args32[0],
-+ rc_resp.args.args32[1], rc_resp.args.args32[2],
-+ rc_resp.args.args32[3], rc_resp.args.args32[4], &resp,
- result);
-
- LONGS_EQUAL(SP_RESULT_FFA(result),
-@@ -812,10 +875,11 @@ TEST(sp_messaging, sp_msg_send_direct_resp_ffa_error)
- ffa_result result = FFA_ABORTED;
- uint32_t expected_ffa_args[5] = { 0 };
-
-- fill_sp_msg(&resp);
-+ fill_sp_msg_32(&resp);
- memset(&req, 0x5a, sizeof(req));
-- copy_sp_to_ffa_args(resp.args, expected_ffa_args);
-- expect_ffa_msg_send_direct_resp(
-+ req.is_64bit_message = false;
-+ copy_sp_to_ffa_args_32(resp.args.args32, expected_ffa_args);
-+ expect_ffa_msg_send_direct_resp_32(
- resp.source_id, resp.destination_id, expected_ffa_args[0],
- expected_ffa_args[1], expected_ffa_args[2],
- expected_ffa_args[3], expected_ffa_args[4], &ffa_msg, result);
-@@ -825,14 +889,30 @@ TEST(sp_messaging, sp_msg_send_direct_resp_ffa_error)
- MEMCMP_EQUAL(&empty_sp_msg, &req, sizeof(empty_sp_msg));
- }
-
--TEST(sp_messaging, sp_msg_send_direct_resp_msg)
-+TEST(sp_messaging, sp_msg_send_direct_resp_msg_32)
- {
- uint32_t expected_ffa_args[5] = { 0 };
-
-- fill_sp_msg(&resp);
-- fill_ffa_msg(&ffa_msg);
-- copy_sp_to_ffa_args(resp.args, expected_ffa_args);
-- expect_ffa_msg_send_direct_resp(
-+ fill_sp_msg_32(&resp);
-+ fill_ffa_msg_32(&ffa_msg);
-+ copy_sp_to_ffa_args_32(resp.args.args32, expected_ffa_args);
-+ expect_ffa_msg_send_direct_resp_32(
-+ resp.source_id, resp.destination_id, expected_ffa_args[0],
-+ expected_ffa_args[1], expected_ffa_args[2],
-+ expected_ffa_args[3], expected_ffa_args[4], &ffa_msg, FFA_OK);
-+
-+ LONGS_EQUAL(SP_RESULT_OK, sp_msg_send_direct_resp(&resp, &req));
-+ ffa_and_sp_msg_equal(&ffa_msg, &req);
-+}
-+
-+TEST(sp_messaging, sp_msg_send_direct_resp_msg_64)
-+{
-+ uint64_t expected_ffa_args[5] = { 0 };
-+
-+ fill_sp_msg_64(&resp);
-+ fill_ffa_msg_64(&ffa_msg);
-+ copy_sp_to_ffa_args_64(resp.args.args64, expected_ffa_args);
-+ expect_ffa_msg_send_direct_resp_64(
- resp.source_id, resp.destination_id, expected_ffa_args[0],
- expected_ffa_args[1], expected_ffa_args[2],
- expected_ffa_args[3], expected_ffa_args[4], &ffa_msg, FFA_OK);
-@@ -841,15 +921,16 @@ TEST(sp_messaging, sp_msg_send_direct_resp_msg)
- ffa_and_sp_msg_equal(&ffa_msg, &req);
- }
-
-+
- TEST(sp_messaging, sp_msg_send_direct_resp_success)
- {
- uint32_t expected_ffa_args[5] = { 0 };
-
-- fill_sp_msg(&req);
-- fill_sp_msg(&resp);
-+ fill_sp_msg_32(&req);
-+ fill_sp_msg_32(&resp);
- ffa_msg.function_id = FFA_SUCCESS_32;
-- copy_sp_to_ffa_args(resp.args, expected_ffa_args);
-- expect_ffa_msg_send_direct_resp(
-+ copy_sp_to_ffa_args_32(resp.args.args32, expected_ffa_args);
-+ expect_ffa_msg_send_direct_resp_32(
- resp.source_id, resp.destination_id, expected_ffa_args[0],
- expected_ffa_args[1], expected_ffa_args[2],
- expected_ffa_args[3], expected_ffa_args[4], &ffa_msg, FFA_OK);
-@@ -864,20 +945,20 @@ TEST(sp_messaging, sp_msg_send_direct_resp_deny_rc_failure)
- uint32_t expected_ffa_args[5] = { 0 };
- struct ffa_direct_msg rc_msg = { 0 };
-
-- fill_sp_msg(&resp);
-+ fill_sp_msg_32(&resp);
-
-- fill_ffa_msg(&rc_msg);
-- rc_msg.args[0] = ROUTING_EXT_RC_BIT;
-+ fill_ffa_msg_32(&rc_msg);
-+ rc_msg.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_ffa_msg(&ffa_msg);
-- copy_sp_to_ffa_args(resp.args, expected_ffa_args);
-+ fill_ffa_msg_32(&ffa_msg);
-+ copy_sp_to_ffa_args_32(resp.args.args32, expected_ffa_args);
-
-- expect_ffa_msg_send_direct_resp(
-+ expect_ffa_msg_send_direct_resp_32(
- resp.source_id, resp.destination_id, expected_ffa_args[0],
- expected_ffa_args[1], expected_ffa_args[2],
- expected_ffa_args[3], expected_ffa_args[4], &rc_msg, FFA_OK);
-
-- expect_ffa_msg_send_direct_resp(
-+ expect_ffa_msg_send_direct_resp_32(
- rc_msg.destination_id, rc_msg.source_id,
- ROUTING_EXT_RC_BIT | ROUTING_EXT_ERR_BIT,
- SP_RESULT_FFA(FFA_DENIED), 0, 0, 0, &ffa_msg, result);
-@@ -892,21 +973,21 @@ TEST(sp_messaging, sp_msg_send_direct_resp_deny_rc)
- uint32_t expected_ffa_args[5] = { 0 };
- struct ffa_direct_msg rc_msg = { 0 };
-
-- fill_sp_msg(&resp);
-+ fill_sp_msg_32(&resp);
-
-- fill_ffa_msg(&rc_msg);
-- rc_msg.args[0] = ROUTING_EXT_RC_BIT;
-+ fill_ffa_msg_32(&rc_msg);
-+ rc_msg.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- fill_ffa_msg(&ffa_msg);
-- copy_sp_to_ffa_args(resp.args, expected_ffa_args);
-+ fill_ffa_msg_32(&ffa_msg);
-+ copy_sp_to_ffa_args_32(resp.args.args32, expected_ffa_args);
-
-- expect_ffa_msg_send_direct_resp(resp.source_id, resp.destination_id, 0,
-+ expect_ffa_msg_send_direct_resp_32(resp.source_id, resp.destination_id, 0,
- expected_ffa_args[1],
- expected_ffa_args[2],
- expected_ffa_args[3],
- expected_ffa_args[4], &rc_msg, FFA_OK);
-
-- expect_ffa_msg_send_direct_resp(
-+ expect_ffa_msg_send_direct_resp_32(
- rc_msg.destination_id, rc_msg.source_id,
- ROUTING_EXT_RC_BIT | ROUTING_EXT_ERR_BIT,
- SP_RESULT_FFA(FFA_DENIED), 0, 0, 0, &ffa_msg, FFA_OK);
-@@ -933,13 +1014,14 @@ TEST(sp_messaging, sp_msg_send_rc_req_ffa_error)
- {
- ffa_result result = FFA_ABORTED;
-
-- fill_sp_msg(&resp);
-+ fill_sp_msg_32(&resp);
- memset(&req, 0x5a, sizeof(req));
-- fill_ffa_msg(&ffa_msg);
-+ req.is_64bit_message = false;
-+ fill_ffa_msg_32(&ffa_msg);
-
-- expect_ffa_msg_send_direct_resp(req.source_id, req.destination_id,
-- ROUTING_EXT_RC_BIT, req.args[0],
-- req.args[1], req.args[2], req.args[3],
-+ expect_ffa_msg_send_direct_resp_32(req.source_id, req.destination_id,
-+ ROUTING_EXT_RC_BIT, req.args.args32[0],
-+ req.args.args32[1], req.args.args32[2], req.args.args32[3],
- &ffa_msg, result);
-
- LONGS_EQUAL(SP_RESULT_FFA(result), sp_msg_send_rc_req(&req, &resp));
-@@ -953,22 +1035,22 @@ TEST(sp_messaging, sp_msg_send_rc_req_deny_fail_wait_fail)
-
- wait_and_receive_request(root_id, own_id);
-
-- fill_sp_msg(&req);
-+ fill_sp_msg_32(&req);
- req.source_id = own_id;
- req.destination_id = root_id;
-
-- fill_ffa_msg(&ffa_msg);
-+ fill_ffa_msg_32(&ffa_msg);
- ffa_msg.source_id = root_id;
- ffa_msg.destination_id = own_id;
- /* Should be RC message so it will be denied */
-- ffa_msg.args[0] = 0;
-+ ffa_msg.args.args32[0] = 0;
-
-- expect_ffa_msg_send_direct_resp(req.source_id, req.destination_id,
-- ROUTING_EXT_RC_BIT, req.args[0],
-- req.args[1], req.args[2], req.args[3],
-+ expect_ffa_msg_send_direct_resp_32(req.source_id, req.destination_id,
-+ ROUTING_EXT_RC_BIT, req.args.args32[0],
-+ req.args.args32[1], req.args.args32[2], req.args.args32[3],
- &ffa_msg, FFA_OK);
-
-- expect_ffa_msg_send_direct_resp(
-+ expect_ffa_msg_send_direct_resp_32(
- req.source_id, req.destination_id,
- ROUTING_EXT_RC_BIT | ROUTING_EXT_ERR_BIT,
- SP_RESULT_FFA(FFA_BUSY), 0, 0, 0, &ffa_msg, result);
-@@ -987,19 +1069,19 @@ TEST(sp_messaging, sp_msg_send_rc_req_rc_error)
-
- wait_and_receive_request(root_id, own_id);
-
-- fill_sp_msg(&req);
-+ fill_sp_msg_32(&req);
- req.source_id = own_id;
- req.destination_id = root_id;
-
-- fill_ffa_msg(&ffa_msg);
-+ fill_ffa_msg_32(&ffa_msg);
- ffa_msg.source_id = root_id;
- ffa_msg.destination_id = own_id;
-- ffa_msg.args[0] = ROUTING_EXT_RC_BIT | ROUTING_EXT_ERR_BIT;
-- ffa_msg.args[1] = sp_err;
-+ ffa_msg.args.args32[0] = ROUTING_EXT_RC_BIT | ROUTING_EXT_ERR_BIT;
-+ ffa_msg.args.args32[1] = sp_err;
-
-- expect_ffa_msg_send_direct_resp(req.source_id, req.destination_id,
-- ROUTING_EXT_RC_BIT, req.args[0],
-- req.args[1], req.args[2], req.args[3],
-+ expect_ffa_msg_send_direct_resp_32(req.source_id, req.destination_id,
-+ ROUTING_EXT_RC_BIT, req.args.args32[0],
-+ req.args.args32[1], req.args.args32[2], req.args.args32[3],
- &ffa_msg, FFA_OK);
-
- LONGS_EQUAL(sp_err, sp_msg_send_rc_req(&req, &resp));
-@@ -1013,18 +1095,18 @@ TEST(sp_messaging, sp_msg_send_rc_req_success)
-
- wait_and_receive_request(root_id, own_id);
-
-- fill_sp_msg(&req);
-+ fill_sp_msg_32(&req);
- req.source_id = own_id;
- req.destination_id = root_id;
-
-- fill_ffa_msg(&ffa_msg);
-+ fill_ffa_msg_32(&ffa_msg);
- ffa_msg.source_id = root_id;
- ffa_msg.destination_id = own_id;
-- ffa_msg.args[0] = ROUTING_EXT_RC_BIT;
-+ ffa_msg.args.args32[0] = ROUTING_EXT_RC_BIT;
-
-- expect_ffa_msg_send_direct_resp(req.source_id, req.destination_id,
-- ROUTING_EXT_RC_BIT, req.args[0],
-- req.args[1], req.args[2], req.args[3],
-+ expect_ffa_msg_send_direct_resp_32(req.source_id, req.destination_id,
-+ ROUTING_EXT_RC_BIT, req.args.args32[0],
-+ req.args.args32[1], req.args.args32[2], req.args.args32[3],
- &ffa_msg, FFA_OK);
-
- LONGS_EQUAL(SP_RESULT_OK, sp_msg_send_rc_req(&req, &resp));
-diff --git a/components/rpc/ffarpc/caller/sp/ffarpc_caller.c b/components/rpc/ffarpc/caller/sp/ffarpc_caller.c
-index 4ad98fb..ca3d318 100644
---- a/components/rpc/ffarpc/caller/sp/ffarpc_caller.c
-+++ b/components/rpc/ffarpc/caller/sp/ffarpc_caller.c
-@@ -81,16 +81,17 @@ static rpc_status_t call_invoke(void *context, rpc_call_handle handle, uint32_t
-
- req.destination_id = this_context->dest_partition_id;
- req.source_id = own_id;
-- req.args[SP_CALL_ARGS_IFACE_ID_OPCODE] =
-+ req.is_64bit_message = false;
-+ req.args.args32[SP_CALL_ARGS_IFACE_ID_OPCODE] =
- FFA_CALL_ARGS_COMBINE_IFACE_ID_OPCODE(this_context->dest_iface_id, opcode);
-- req.args[SP_CALL_ARGS_REQ_DATA_LEN] = (uint32_t)this_context->req_len;
-- req.args[SP_CALL_ARGS_ENCODING] = this_context->rpc_caller.encoding;
-+ req.args.args32[SP_CALL_ARGS_REQ_DATA_LEN] = (uint32_t)this_context->req_len;
-+ req.args.args32[SP_CALL_ARGS_ENCODING] = this_context->rpc_caller.encoding;
-
- /* Initialise the caller ID. Depending on the call path, this may
- * be overridden by a higher privilege execution level, based on its
- * perspective of the caller identity.
- */
-- req.args[SP_CALL_ARGS_CALLER_ID] = 0;
-+ req.args.args32[SP_CALL_ARGS_CALLER_ID] = 0;
-
- sp_res = sp_msg_send_direct_req(&req, &resp);
- if (sp_res != SP_RESULT_OK) {
-@@ -98,9 +99,9 @@ static rpc_status_t call_invoke(void *context, rpc_call_handle handle, uint32_t
- goto out;
- }
-
-- this_context->resp_len = (size_t)resp.args[SP_CALL_ARGS_RESP_DATA_LEN];
-- status = resp.args[SP_CALL_ARGS_RESP_RPC_STATUS];
-- *opstatus = (rpc_status_t)((int32_t)resp.args[SP_CALL_ARGS_RESP_OP_STATUS]);
-+ this_context->resp_len = (size_t)resp.args.args32[SP_CALL_ARGS_RESP_DATA_LEN];
-+ status = resp.args.args32[SP_CALL_ARGS_RESP_RPC_STATUS];
-+ *opstatus = (rpc_status_t)((int32_t)resp.args.args32[SP_CALL_ARGS_RESP_OP_STATUS]);
-
- if (this_context->resp_len > this_context->shared_mem_required_size) {
- EMSG("invalid response length");
-@@ -242,11 +243,12 @@ int ffarpc_caller_open(struct ffarpc_caller *caller, uint16_t dest_partition_id,
-
- req.source_id = own_id;
- req.destination_id = dest_partition_id;
-- req.args[SP_CALL_ARGS_IFACE_ID_OPCODE] =
-+ req.is_64bit_message = false;
-+ req.args.args32[SP_CALL_ARGS_IFACE_ID_OPCODE] =
- FFA_CALL_ARGS_COMBINE_IFACE_ID_OPCODE(FFA_CALL_MGMT_IFACE_ID, FFA_CALL_OPCODE_SHARE_BUF);
-- req.args[SP_CALL_ARGS_SHARE_MEM_HANDLE_LSW] = (uint32_t)(handle & UINT32_MAX);
-- req.args[SP_CALL_ARGS_SHARE_MEM_HANDLE_MSW] = (uint32_t)(handle >> 32);
-- req.args[SP_CALL_ARGS_SHARE_MEM_SIZE] = (uint32_t)(caller->shared_mem_required_size);
-+ req.args.args32[SP_CALL_ARGS_SHARE_MEM_HANDLE_LSW] = (uint32_t)(handle & UINT32_MAX);
-+ req.args.args32[SP_CALL_ARGS_SHARE_MEM_HANDLE_MSW] = (uint32_t)(handle >> 32);
-+ req.args.args32[SP_CALL_ARGS_SHARE_MEM_SIZE] = (uint32_t)(caller->shared_mem_required_size);
-
- sp_res = sp_msg_send_direct_req(&req, &resp);
- if (sp_res != SP_RESULT_OK) {
-@@ -273,10 +275,11 @@ int ffarpc_caller_close(struct ffarpc_caller *caller)
-
- req.source_id = own_id;
- req.destination_id = caller->dest_partition_id;
-- req.args[SP_CALL_ARGS_IFACE_ID_OPCODE] =
-+ req.is_64bit_message = false;
-+ req.args.args32[SP_CALL_ARGS_IFACE_ID_OPCODE] =
- FFA_CALL_ARGS_COMBINE_IFACE_ID_OPCODE(FFA_CALL_MGMT_IFACE_ID, FFA_CALL_OPCODE_UNSHARE_BUF);
-- req.args[SP_CALL_ARGS_SHARE_MEM_HANDLE_LSW] = handle_lo;
-- req.args[SP_CALL_ARGS_SHARE_MEM_HANDLE_MSW] = handle_hi;
-+ req.args.args32[SP_CALL_ARGS_SHARE_MEM_HANDLE_LSW] = handle_lo;
-+ req.args.args32[SP_CALL_ARGS_SHARE_MEM_HANDLE_MSW] = handle_hi;
-
- sp_res = sp_msg_send_direct_req(&req, &resp);
- if (sp_res != SP_RESULT_OK) {
-diff --git a/components/rpc/ffarpc/endpoint/ffarpc_call_ep.c b/components/rpc/ffarpc/endpoint/ffarpc_call_ep.c
-index 6a8cef0..c024196 100644
---- a/components/rpc/ffarpc/endpoint/ffarpc_call_ep.c
-+++ b/components/rpc/ffarpc/endpoint/ffarpc_call_ep.c
-@@ -260,8 +260,8 @@ void ffa_call_ep_receive(struct ffa_call_ep *call_ep,
- const struct sp_msg *req_msg,
- struct sp_msg *resp_msg)
- {
-- const uint32_t *req_args = req_msg->args;
-- uint32_t *resp_args = resp_msg->args;
-+ const uint32_t *req_args = req_msg->args.args32;
-+ uint32_t *resp_args = resp_msg->args.args32;
-
- uint16_t source_id = req_msg->source_id;
- uint32_t ifaceid_opcode = req_args[SP_CALL_ARGS_IFACE_ID_OPCODE];
-diff --git a/components/rpc/mm_communicate/endpoint/sp/mm_communicate_call_ep.c b/components/rpc/mm_communicate/endpoint/sp/mm_communicate_call_ep.c
-index 09f1e2c..dc49e64 100644
---- a/components/rpc/mm_communicate/endpoint/sp/mm_communicate_call_ep.c
-+++ b/components/rpc/mm_communicate/endpoint/sp/mm_communicate_call_ep.c
-@@ -1,6 +1,6 @@
- // SPDX-License-Identifier: BSD-3-Clause
- /*
-- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
- */
-
- #include "components/rpc/mm_communicate/common/mm_communicate_call_args.h"
-@@ -127,15 +127,15 @@ void mm_communicate_call_ep_receive(struct mm_communicate_ep *mm_communicate_cal
- uintptr_t buffer_address = 0;
- size_t buffer_size = 0;
-
-- buffer_address = req_msg->args[MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_ADDRESS];
-- buffer_size = req_msg->args[MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_SIZE];
-+ buffer_address = req_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_ADDRESS];
-+ buffer_size = req_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_SIZE];
-
- return_value = handle_mm_communicate(mm_communicate_call_ep, req_msg->source_id,
- buffer_address, buffer_size);
-
-- resp_msg->args[MM_COMMUNICATE_CALL_ARGS_RETURN_ID] = ARM_SVC_ID_SP_EVENT_COMPLETE;
-- resp_msg->args[MM_COMMUNICATE_CALL_ARGS_RETURN_CODE] = return_value;
-- resp_msg->args[MM_COMMUNICATE_CALL_ARGS_MBZ0] = 0;
-- resp_msg->args[MM_COMMUNICATE_CALL_ARGS_MBZ1] = 0;
-- resp_msg->args[MM_COMMUNICATE_CALL_ARGS_MBZ2] = 0;
-+ resp_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_RETURN_ID] = ARM_SVC_ID_SP_EVENT_COMPLETE;
-+ resp_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_RETURN_CODE] = return_value;
-+ resp_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_MBZ0] = 0;
-+ resp_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_MBZ1] = 0;
-+ resp_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_MBZ2] = 0;
- }
-diff --git a/deployments/smm-gateway/common/smm_gateway_sp.c b/deployments/smm-gateway/common/smm_gateway_sp.c
-index 2187fea..3697b7f 100644
---- a/deployments/smm-gateway/common/smm_gateway_sp.c
-+++ b/deployments/smm-gateway/common/smm_gateway_sp.c
-@@ -70,10 +70,10 @@ void __noreturn sp_main(struct ffa_init_info *init_info)
- while (1) {
- mm_communicate_call_ep_receive(&mm_communicate_call_ep, &req_msg, &resp_msg);
-
-- ffa_msg_send_direct_resp(req_msg.destination_id,
-- req_msg.source_id, resp_msg.args[0],
-- resp_msg.args[1], resp_msg.args[2],
-- resp_msg.args[3], resp_msg.args[4],
-+ ffa_msg_send_direct_resp_32(req_msg.destination_id,
-+ req_msg.source_id, resp_msg.args.args32[0],
-+ resp_msg.args.args32[1], resp_msg.args.args32[2],
-+ resp_msg.args.args32[3], resp_msg.args.args32[4],
- &req_msg);
- }
-
---
-2.17.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0022-Change-MM-communicate-RPC-protocol-of-call-endpoint.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0022-Change-MM-communicate-RPC-protocol-of-call-endpoint.patch
deleted file mode 100644
index 4090397415..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0022-Change-MM-communicate-RPC-protocol-of-call-endpoint.patch
+++ /dev/null
@@ -1,497 +0,0 @@
-From 0f02f04c7f0a7130874dc4bc1a500604d580c4dc Mon Sep 17 00:00:00 2001
-From: Imre Kis <imre.kis@arm.com>
-Date: Wed, 20 Jul 2022 15:19:17 +0200
-Subject: [PATCH 22/24] Change MM communicate RPC protocol of call endpoint
-
-Replace buffer address and size parameter by offset in buffer parameter
-and move to 64 bit FF-A direct message call. Deny all 32 bit direct
-messages in SMM gateway.
-
-Signed-off-by: Imre Kis <imre.kis@arm.com>
-Change-Id: I7a69b440ff9842960229b2bfdd1b5ae5318d9c26
-
-Upstream-Status: Pending [In review]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-
----
- .../common/mm_communicate_call_args.h | 15 ++-
- .../endpoint/sp/mm_communicate_call_ep.c | 58 ++++-----
- .../endpoint/sp/test/mock_mm_service.cpp | 6 +-
- .../endpoint/sp/test/mock_mm_service.h | 4 +-
- .../sp/test/test_mm_communicate_call_ep.cpp | 110 +++++++++++-------
- .../endpoint/sp/test/test_mock_mm_service.cpp | 4 +-
- .../smm-gateway/common/smm_gateway_sp.c | 17 ++-
- 7 files changed, 123 insertions(+), 91 deletions(-)
-
-diff --git a/components/rpc/mm_communicate/common/mm_communicate_call_args.h b/components/rpc/mm_communicate/common/mm_communicate_call_args.h
-index 7d7311d..280c04d 100644
---- a/components/rpc/mm_communicate/common/mm_communicate_call_args.h
-+++ b/components/rpc/mm_communicate/common/mm_communicate_call_args.h
-@@ -1,6 +1,6 @@
- /* SPDX-License-Identifier: BSD-3-Clause */
- /*
-- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
- */
-
- #ifndef MM_COMMUNICATE_CALL_ARGS_H_
-@@ -12,13 +12,12 @@
- */
-
- /* SP message arg indexes */
--#define MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_ADDRESS 0
--#define MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_SIZE 1
-+#define MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_OFFSET 0
-
--#define MM_COMMUNICATE_CALL_ARGS_RETURN_ID 0
--#define MM_COMMUNICATE_CALL_ARGS_RETURN_CODE 1
--#define MM_COMMUNICATE_CALL_ARGS_MBZ0 2
--#define MM_COMMUNICATE_CALL_ARGS_MBZ1 3
--#define MM_COMMUNICATE_CALL_ARGS_MBZ2 4
-+#define MM_COMMUNICATE_CALL_ARGS_RETURN_CODE 0
-+#define MM_COMMUNICATE_CALL_ARGS_MBZ0 1
-+#define MM_COMMUNICATE_CALL_ARGS_MBZ1 2
-+#define MM_COMMUNICATE_CALL_ARGS_MBZ2 3
-+#define MM_COMMUNICATE_CALL_ARGS_MBZ3 4
-
- #endif /* MM_COMMUNICATE_CALL_ARGS_H_ */
-diff --git a/components/rpc/mm_communicate/endpoint/sp/mm_communicate_call_ep.c b/components/rpc/mm_communicate/endpoint/sp/mm_communicate_call_ep.c
-index dc49e64..93aa0f4 100644
---- a/components/rpc/mm_communicate/endpoint/sp/mm_communicate_call_ep.c
-+++ b/components/rpc/mm_communicate/endpoint/sp/mm_communicate_call_ep.c
-@@ -35,7 +35,8 @@ bool mm_communicate_call_ep_init(struct mm_communicate_ep *call_ep, uint8_t *com
-
- static int32_t invoke_mm_service(struct mm_communicate_ep *call_ep, uint16_t source_id,
- struct mm_service_interface *iface,
-- EFI_MM_COMMUNICATE_HEADER *header)
-+ EFI_MM_COMMUNICATE_HEADER *header,
-+ size_t buffer_size)
- {
- rpc_status_t rpc_status = TS_RPC_ERROR_INTERNAL;
- struct mm_service_call_req call_req = { 0 };
-@@ -49,11 +50,11 @@ static int32_t invoke_mm_service(struct mm_communicate_ep *call_ep, uint16_t sou
- */
- call_req.req_buf.data = header->Data;
- call_req.req_buf.data_len = header->MessageLength;
-- call_req.req_buf.size = call_ep->comm_buffer_size - EFI_MM_COMMUNICATE_HEADER_SIZE;
-+ call_req.req_buf.size = buffer_size;
-
- call_req.resp_buf.data = header->Data;
- call_req.resp_buf.data_len = 0;
-- call_req.resp_buf.size = call_ep->comm_buffer_size - EFI_MM_COMMUNICATE_HEADER_SIZE;
-+ call_req.resp_buf.size = buffer_size;
-
- result = iface->receive(iface, &call_req);
-
-@@ -63,32 +64,38 @@ static int32_t invoke_mm_service(struct mm_communicate_ep *call_ep, uint16_t sou
- }
-
- static int32_t handle_mm_communicate(struct mm_communicate_ep *call_ep, uint16_t source_id,
-- uintptr_t buffer_addr, size_t buffer_size)
-+ size_t buffer_offset)
- {
-- uintptr_t buffer_arg = 0;
-- size_t request_size = 0;
-+ size_t header_end_offset = 0;
-+ size_t request_end_offset = 0;
-+ size_t buffer_size = 0;
- EFI_MM_COMMUNICATE_HEADER *header = NULL;
- unsigned int i = 0;
-
-- /* Validating call args according to ARM MM spec 3.2.4 */
-- if (buffer_addr == 0)
-+ if (ADD_OVERFLOW(buffer_offset, EFI_MM_COMMUNICATE_HEADER_SIZE, &header_end_offset))
-+ return MM_RETURN_CODE_INVALID_PARAMETER;
-+
-+ if (call_ep->comm_buffer_size < header_end_offset)
- return MM_RETURN_CODE_INVALID_PARAMETER;
-
- /* Validating comm buffer contents */
-- header = (EFI_MM_COMMUNICATE_HEADER *)call_ep->comm_buffer;
-- if (ADD_OVERFLOW(header->MessageLength, EFI_MM_COMMUNICATE_HEADER_SIZE, &request_size))
-+ header = (EFI_MM_COMMUNICATE_HEADER *)(call_ep->comm_buffer + buffer_offset);
-+ if (ADD_OVERFLOW(header_end_offset, header->MessageLength, &request_end_offset))
- return MM_RETURN_CODE_INVALID_PARAMETER;
-
-- if (call_ep->comm_buffer_size < request_size)
-+ if (call_ep->comm_buffer_size < request_end_offset)
- return MM_RETURN_CODE_INVALID_PARAMETER;
-
-+ buffer_size = call_ep->comm_buffer_size - header_end_offset;
-+
- /* Finding iface_id by GUID */
- for (i = 0; i < ARRAY_SIZE(call_ep->service_table); i++) {
- const struct mm_service_entry *entry = &call_ep->service_table[i];
-
- if (entry->iface != NULL &&
- memcmp(&header->HeaderGuid, &entry->guid, sizeof(entry->guid)) == 0)
-- return invoke_mm_service(call_ep, source_id, entry->iface, header);
-+ return invoke_mm_service(call_ep, source_id, entry->iface, header,
-+ buffer_size);
- }
-
- return MM_RETURN_CODE_NOT_SUPPORTED;
-@@ -123,19 +130,16 @@ void mm_communicate_call_ep_receive(struct mm_communicate_ep *mm_communicate_cal
- const struct ffa_direct_msg *req_msg,
- struct ffa_direct_msg *resp_msg)
- {
-- int32_t return_value = 0;
-- uintptr_t buffer_address = 0;
-- size_t buffer_size = 0;
--
-- buffer_address = req_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_ADDRESS];
-- buffer_size = req_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_SIZE];
--
-- return_value = handle_mm_communicate(mm_communicate_call_ep, req_msg->source_id,
-- buffer_address, buffer_size);
--
-- resp_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_RETURN_ID] = ARM_SVC_ID_SP_EVENT_COMPLETE;
-- resp_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_RETURN_CODE] = return_value;
-- resp_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_MBZ0] = 0;
-- resp_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_MBZ1] = 0;
-- resp_msg->args.args32[MM_COMMUNICATE_CALL_ARGS_MBZ2] = 0;
-+ int32_t return_value = MM_RETURN_CODE_NOT_SUPPORTED;
-+ size_t buffer_offset = req_msg->args.args64[MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_OFFSET];
-+
-+ return_value = handle_mm_communicate(mm_communicate_call_ep,
-+ req_msg->source_id,
-+ buffer_offset);
-+
-+ resp_msg->args.args64[MM_COMMUNICATE_CALL_ARGS_RETURN_CODE] = return_value;
-+ resp_msg->args.args64[MM_COMMUNICATE_CALL_ARGS_MBZ0] = 0;
-+ resp_msg->args.args64[MM_COMMUNICATE_CALL_ARGS_MBZ1] = 0;
-+ resp_msg->args.args64[MM_COMMUNICATE_CALL_ARGS_MBZ2] = 0;
-+ resp_msg->args.args64[MM_COMMUNICATE_CALL_ARGS_MBZ3] = 0;
- }
-diff --git a/components/rpc/mm_communicate/endpoint/sp/test/mock_mm_service.cpp b/components/rpc/mm_communicate/endpoint/sp/test/mock_mm_service.cpp
-index a58c33a..0ae2a80 100644
---- a/components/rpc/mm_communicate/endpoint/sp/test/mock_mm_service.cpp
-+++ b/components/rpc/mm_communicate/endpoint/sp/test/mock_mm_service.cpp
-@@ -1,6 +1,6 @@
- // SPDX-License-Identifier: BSD-3-Clause
- /*
-- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
- */
-
- #include <CppUTestExt/MockSupport.h>
-@@ -16,7 +16,7 @@ void mock_mm_service_init(void)
-
- void expect_mock_mm_service_receive(struct mm_service_interface *iface,
- const struct mm_service_call_req *req,
-- int32_t result)
-+ int64_t result)
- {
- mock().expectOneCall("mm_service_receive").onObject(iface).
- withOutputParameterReturning("resp_buf_data_len", &req->resp_buf.data_len,
-@@ -31,5 +31,5 @@ int32_t mock_mm_service_receive(struct mm_service_interface *iface,
- return mock().actualCall("mm_service_receive").onObject(iface).
- withOutputParameter("resp_buf_data_len", &req->resp_buf.data_len).
- withParameterOfType("mm_service_call_req", "req", req).
-- returnIntValue();
-+ returnLongIntValue();
- }
-diff --git a/components/rpc/mm_communicate/endpoint/sp/test/mock_mm_service.h b/components/rpc/mm_communicate/endpoint/sp/test/mock_mm_service.h
-index 768022d..56c8a26 100644
---- a/components/rpc/mm_communicate/endpoint/sp/test/mock_mm_service.h
-+++ b/components/rpc/mm_communicate/endpoint/sp/test/mock_mm_service.h
-@@ -1,6 +1,6 @@
- /* SPDX-License-Identifier: BSD-3-Clause */
- /*
-- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
- */
-
- #ifndef MOCK_MM_SERVICE_H_
-@@ -16,7 +16,7 @@ void mock_mm_service_init(void);
-
- void expect_mock_mm_service_receive(struct mm_service_interface *iface,
- const struct mm_service_call_req *req,
-- int32_t result);
-+ int64_t result);
-
- int32_t mock_mm_service_receive(struct mm_service_interface *iface,
- struct mm_service_call_req *req);
-diff --git a/components/rpc/mm_communicate/endpoint/sp/test/test_mm_communicate_call_ep.cpp b/components/rpc/mm_communicate/endpoint/sp/test/test_mm_communicate_call_ep.cpp
-index 55a61fb..5aaa3a6 100644
---- a/components/rpc/mm_communicate/endpoint/sp/test/test_mm_communicate_call_ep.cpp
-+++ b/components/rpc/mm_communicate/endpoint/sp/test/test_mm_communicate_call_ep.cpp
-@@ -1,6 +1,6 @@
- // SPDX-License-Identifier: BSD-3-Clause
- /*
-- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
- */
-
- #include <CppUTest/TestHarness.h>
-@@ -32,14 +32,14 @@ TEST_GROUP(mm_communicate_call_ep)
- mock().clear();
- }
-
-- void check_sp_msg(const struct ffa_direct_msg *msg, uint32_t arg0,
-- uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4)
-+ void check_sp_msg(const struct ffa_direct_msg *msg, uint64_t arg0,
-+ uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4)
- {
-- UNSIGNED_LONGLONGS_EQUAL(arg0, msg->args[0]);
-- UNSIGNED_LONGLONGS_EQUAL(arg1, msg->args[1]);
-- UNSIGNED_LONGLONGS_EQUAL(arg2, msg->args[2]);
-- UNSIGNED_LONGLONGS_EQUAL(arg3, msg->args[3]);
-- UNSIGNED_LONGLONGS_EQUAL(arg4, msg->args[4]);
-+ UNSIGNED_LONGLONGS_EQUAL(arg0, msg->args.args64[0]);
-+ UNSIGNED_LONGLONGS_EQUAL(arg1, msg->args.args64[1]);
-+ UNSIGNED_LONGLONGS_EQUAL(arg2, msg->args.args64[2]);
-+ UNSIGNED_LONGLONGS_EQUAL(arg3, msg->args.args64[3]);
-+ UNSIGNED_LONGLONGS_EQUAL(arg4, msg->args.args64[4]);
- }
-
- struct mm_communicate_ep call_ep;
-@@ -114,59 +114,54 @@ TEST(mm_communicate_call_ep, attach_do_not_fit)
- }
- }
-
--TEST(mm_communicate_call_ep, mm_communicate_no_buffer_arg)
-+TEST(mm_communicate_call_ep, mm_communicate_offset_int_overflow)
- {
- CHECK_TRUE(mm_communicate_call_ep_init(&call_ep, comm_buffer, sizeof(comm_buffer)));
-+ req_msg.args.args64[0] = 0xffffffffffffffff;
-
- mm_communicate_call_ep_receive(&call_ep, &req_msg, &resp_msg);
-
-- check_sp_msg(&resp_msg, ARM_SVC_ID_SP_EVENT_COMPLETE, MM_RETURN_CODE_INVALID_PARAMETER,
-- 0, 0, 0);
-+ check_sp_msg(&resp_msg, MM_RETURN_CODE_INVALID_PARAMETER, 0, 0, 0, 0);
- }
-
--TEST(mm_communicate_call_ep, mm_communicate_length_overflow)
-+TEST(mm_communicate_call_ep, mm_communicate_offset_overflow)
- {
- CHECK_TRUE(mm_communicate_call_ep_init(&call_ep, comm_buffer, sizeof(comm_buffer)));
-+ req_msg.args.args64[0] = sizeof(comm_buffer) - EFI_MM_COMMUNICATE_HEADER_SIZE + 1;
-+
-+ mm_communicate_call_ep_receive(&call_ep, &req_msg, &resp_msg);
-
-- req_msg.args[0] = (uintptr_t)comm_buffer;
-- req_msg.args[1] = sizeof(comm_buffer);
-+ check_sp_msg(&resp_msg, MM_RETURN_CODE_INVALID_PARAMETER, 0, 0, 0, 0);
-+}
-
-+TEST(mm_communicate_call_ep, mm_communicate_length_overflow)
-+{
-+ CHECK_TRUE(mm_communicate_call_ep_init(&call_ep, comm_buffer, sizeof(comm_buffer)));
- header->MessageLength = UINT64_MAX - EFI_MM_COMMUNICATE_HEADER_SIZE + 1;
-
- mm_communicate_call_ep_receive(&call_ep, &req_msg, &resp_msg);
-
-- check_sp_msg(&resp_msg, ARM_SVC_ID_SP_EVENT_COMPLETE, MM_RETURN_CODE_INVALID_PARAMETER,
-- 0, 0, 0);
-+ check_sp_msg(&resp_msg, MM_RETURN_CODE_INVALID_PARAMETER, 0, 0, 0, 0);
- }
-
- TEST(mm_communicate_call_ep, mm_communicate_too_large)
- {
- CHECK_TRUE(mm_communicate_call_ep_init(&call_ep, comm_buffer, sizeof(comm_buffer)));
--
-- req_msg.args[0] = (uintptr_t)comm_buffer;
-- req_msg.args[1] = sizeof(comm_buffer);
--
- header->MessageLength = sizeof(comm_buffer) - EFI_MM_COMMUNICATE_HEADER_SIZE + 1;
-
- mm_communicate_call_ep_receive(&call_ep, &req_msg, &resp_msg);
-
-- check_sp_msg(&resp_msg, ARM_SVC_ID_SP_EVENT_COMPLETE, MM_RETURN_CODE_INVALID_PARAMETER,
-- 0, 0, 0);
-+ check_sp_msg(&resp_msg, MM_RETURN_CODE_INVALID_PARAMETER, 0, 0, 0, 0);
- }
-
- TEST(mm_communicate_call_ep, mm_communicate_no_handler)
- {
- CHECK_TRUE(mm_communicate_call_ep_init(&call_ep, comm_buffer, sizeof(comm_buffer)));
--
-- req_msg.args[0] = (uintptr_t)comm_buffer;
-- req_msg.args[1] = sizeof(comm_buffer);
--
- header->MessageLength = 0;
-
- mm_communicate_call_ep_receive(&call_ep, &req_msg, &resp_msg);
-
-- check_sp_msg(&resp_msg, ARM_SVC_ID_SP_EVENT_COMPLETE, MM_RETURN_CODE_NOT_SUPPORTED,
-- 0, 0, 0);
-+ check_sp_msg(&resp_msg, MM_RETURN_CODE_NOT_SUPPORTED, 0, 0, 0, 0);
- }
-
- TEST(mm_communicate_call_ep, mm_communicate_single_handler_not_matching)
-@@ -175,16 +170,11 @@ TEST(mm_communicate_call_ep, mm_communicate_single_handler_not_matching)
-
- CHECK_TRUE(mm_communicate_call_ep_init(&call_ep, comm_buffer, sizeof(comm_buffer)));
- mm_communicate_call_ep_attach_service(&call_ep, &guid0, &iface);
--
-- req_msg.args[0] = (uintptr_t)comm_buffer;
-- req_msg.args[1] = sizeof(comm_buffer);
--
- header->MessageLength = 0;
-
- mm_communicate_call_ep_receive(&call_ep, &req_msg, &resp_msg);
-
-- check_sp_msg(&resp_msg, ARM_SVC_ID_SP_EVENT_COMPLETE, MM_RETURN_CODE_NOT_SUPPORTED,
-- 0, 0, 0);
-+ check_sp_msg(&resp_msg, MM_RETURN_CODE_NOT_SUPPORTED, 0, 0, 0, 0);
- }
-
- TEST(mm_communicate_call_ep, mm_communicate_single_handler_matching)
-@@ -211,19 +201,55 @@ TEST(mm_communicate_call_ep, mm_communicate_single_handler_matching)
- CHECK_TRUE(mm_communicate_call_ep_init(&call_ep, comm_buffer, sizeof(comm_buffer)));
- mm_communicate_call_ep_attach_service(&call_ep, &guid0, &iface);
-
-- req_msg.args[0] = (uintptr_t)comm_buffer;
-- req_msg.args[1] = sizeof(comm_buffer);
-+ memcpy(&header->HeaderGuid, &guid0, sizeof(guid0));
-+ header->MessageLength = req_len;
-+
-+ expect_mock_mm_service_receive(&iface, &req, MM_RETURN_CODE_SUCCESS);
-+
-+ mm_communicate_call_ep_receive(&call_ep, &req_msg, &resp_msg);
-+
-+ check_sp_msg(&resp_msg, MM_RETURN_CODE_SUCCESS, 0, 0, 0, 0);
-+}
-+
-+TEST(mm_communicate_call_ep, mm_communicate_single_handler_matching_with_offset)
-+{
-+ const size_t offset = 0x10;
-+ EFI_MM_COMMUNICATE_HEADER *header = (EFI_MM_COMMUNICATE_HEADER *)(comm_buffer + offset);
-+
-+ const size_t req_len = 16;
-+ struct mm_service_interface iface = {
-+ .context = (void *)0x1234,
-+ .receive = mock_mm_service_receive
-+ };
-+ struct mm_service_call_req req = {
-+ .guid = &guid0,
-+ .req_buf = {
-+ .size = sizeof(comm_buffer) - EFI_MM_COMMUNICATE_HEADER_SIZE - offset,
-+ .data_len = req_len,
-+ .data = header->Data
-+ },
-+ .resp_buf = {
-+ .size = sizeof(comm_buffer) - EFI_MM_COMMUNICATE_HEADER_SIZE - offset,
-+ .data_len = 0,
-+ .data = header->Data
-+ },
-+ };
-+
-+ CHECK_TRUE(mm_communicate_call_ep_init(&call_ep, comm_buffer, sizeof(comm_buffer)));
-+ mm_communicate_call_ep_attach_service(&call_ep, &guid0, &iface);
-
- memcpy(&header->HeaderGuid, &guid0, sizeof(guid0));
- header->MessageLength = req_len;
-+ req_msg.args.args64[0] = offset;
-
- expect_mock_mm_service_receive(&iface, &req, MM_RETURN_CODE_SUCCESS);
-
- mm_communicate_call_ep_receive(&call_ep, &req_msg, &resp_msg);
-
-- check_sp_msg(&resp_msg, ARM_SVC_ID_SP_EVENT_COMPLETE, MM_RETURN_CODE_SUCCESS, 0, 0, 0);
-+ check_sp_msg(&resp_msg, MM_RETURN_CODE_SUCCESS, 0, 0, 0, 0);
- }
-
-+
- TEST(mm_communicate_call_ep, mm_communicate_single_handler_matching_error)
- {
- const size_t req_len = 16;
-@@ -248,9 +274,6 @@ TEST(mm_communicate_call_ep, mm_communicate_single_handler_matching_error)
- CHECK_TRUE(mm_communicate_call_ep_init(&call_ep, comm_buffer, sizeof(comm_buffer)));
- mm_communicate_call_ep_attach_service(&call_ep, &guid0, &iface);
-
-- req_msg.args[0] = (uintptr_t)comm_buffer;
-- req_msg.args[1] = sizeof(comm_buffer);
--
- memcpy(&header->HeaderGuid, &guid0, sizeof(guid0));
- header->MessageLength = req_len;
-
-@@ -258,7 +281,7 @@ TEST(mm_communicate_call_ep, mm_communicate_single_handler_matching_error)
-
- mm_communicate_call_ep_receive(&call_ep, &req_msg, &resp_msg);
-
-- check_sp_msg(&resp_msg, ARM_SVC_ID_SP_EVENT_COMPLETE, MM_RETURN_CODE_NO_MEMORY, 0, 0, 0);
-+ check_sp_msg(&resp_msg, MM_RETURN_CODE_NO_MEMORY, 0, 0, 0, 0);
- }
-
- TEST(mm_communicate_call_ep, mm_communicate_two_handlers)
-@@ -290,9 +313,6 @@ TEST(mm_communicate_call_ep, mm_communicate_two_handlers)
- mm_communicate_call_ep_attach_service(&call_ep, &guid0, &iface0);
- mm_communicate_call_ep_attach_service(&call_ep, &guid1, &iface1);
-
-- req_msg.args[0] = (uintptr_t)comm_buffer;
-- req_msg.args[1] = sizeof(comm_buffer);
--
- memcpy(&header->HeaderGuid, &guid1, sizeof(guid0));
- header->MessageLength = req_len;
-
-@@ -300,5 +320,5 @@ TEST(mm_communicate_call_ep, mm_communicate_two_handlers)
-
- mm_communicate_call_ep_receive(&call_ep, &req_msg, &resp_msg);
-
-- check_sp_msg(&resp_msg, ARM_SVC_ID_SP_EVENT_COMPLETE, MM_RETURN_CODE_SUCCESS, 0, 0, 0);
-+ check_sp_msg(&resp_msg, MM_RETURN_CODE_SUCCESS, 0, 0, 0, 0);
- }
-diff --git a/components/rpc/mm_communicate/endpoint/sp/test/test_mock_mm_service.cpp b/components/rpc/mm_communicate/endpoint/sp/test/test_mock_mm_service.cpp
-index 360a8fa..600386e 100644
---- a/components/rpc/mm_communicate/endpoint/sp/test/test_mock_mm_service.cpp
-+++ b/components/rpc/mm_communicate/endpoint/sp/test/test_mock_mm_service.cpp
-@@ -1,6 +1,6 @@
- // SPDX-License-Identifier: BSD-3-Clause
- /*
-- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
-+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
- */
-
- #include <CppUTest/TestHarness.h>
-@@ -44,7 +44,7 @@ TEST(mock_mm_service, receive)
- .data = (void *)0x2345
- }
- };
-- int32_t result = -123456;
-+ int64_t result = -123456;
-
- expect_mock_mm_service_receive(&iface, &req, result);
- LONGS_EQUAL(result, mock_mm_service_receive(&iface, &req));
-diff --git a/deployments/smm-gateway/common/smm_gateway_sp.c b/deployments/smm-gateway/common/smm_gateway_sp.c
-index 3697b7f..3062877 100644
---- a/deployments/smm-gateway/common/smm_gateway_sp.c
-+++ b/deployments/smm-gateway/common/smm_gateway_sp.c
-@@ -11,6 +11,7 @@
- #include "components/rpc/mm_communicate/endpoint/sp/mm_communicate_call_ep.h"
- #include "components/service/smm_variable/frontend/mm_communicate/smm_variable_mm_service.h"
- #include "platform/interface/memory_region.h"
-+#include "protocols/common/mm/mm_smc.h"
- #include <ffa_api.h>
- #include <sp_api.h>
- #include <sp_messaging.h>
-@@ -68,12 +69,20 @@ void __noreturn sp_main(struct ffa_init_info *init_info)
- ffa_msg_wait(&req_msg);
-
- while (1) {
-+ if (FFA_IS_32_BIT_FUNC(req_msg.function_id)) {
-+ EMSG("MM communicate over 32 bit FF-A messages is not supported");
-+ ffa_msg_send_direct_resp_32(req_msg.destination_id, req_msg.source_id,
-+ MM_RETURN_CODE_NOT_SUPPORTED, 0, 0, 0, 0,
-+ &req_msg);
-+ continue;
-+ }
-+
- mm_communicate_call_ep_receive(&mm_communicate_call_ep, &req_msg, &resp_msg);
-
-- ffa_msg_send_direct_resp_32(req_msg.destination_id,
-- req_msg.source_id, resp_msg.args.args32[0],
-- resp_msg.args.args32[1], resp_msg.args.args32[2],
-- resp_msg.args.args32[3], resp_msg.args.args32[4],
-+ ffa_msg_send_direct_resp_64(req_msg.destination_id,
-+ req_msg.source_id, resp_msg.args.args64[0],
-+ resp_msg.args.args64[1], resp_msg.args.args64[2],
-+ resp_msg.args.args64[3], resp_msg.args.args64[4],
- &req_msg);
- }
-
---
-2.17.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0023-Change-MM-communicate-RPC-protocol-of-MM-caller.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0023-Change-MM-communicate-RPC-protocol-of-MM-caller.patch
deleted file mode 100644
index 4244225b30..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0023-Change-MM-communicate-RPC-protocol-of-MM-caller.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 96d226e4e0ea9c633dbc5d05ae2a7a2f4ba0f39e Mon Sep 17 00:00:00 2001
-From: Imre Kis <imre.kis@arm.com>
-Date: Fri, 22 Jul 2022 17:22:05 +0200
-Subject: [PATCH 23/24] Change MM communicate RPC protocol of MM caller
-
-Replace buffer address and size parameter by offset in buffer parameter
-and move to 64 bit FF-A direct message call. This change requires an
-updated version of the debugfs driver which supports 64 bit direct
-messages.
-
-Signed-off-by: Imre Kis <imre.kis@arm.com>
-Change-Id: I003c1de7f9c3f45bbc52e4a51d622ec960fa7052
-
-Upstream-Status: Pending [In review]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-
----
- .../caller/linux/mm_communicate_caller.c | 35 +++++++------------
- .../LinuxFFAUserShim/LinuxFFAUserShim.cmake | 2 +-
- 2 files changed, 14 insertions(+), 23 deletions(-)
-
-diff --git a/components/rpc/mm_communicate/caller/linux/mm_communicate_caller.c b/components/rpc/mm_communicate/caller/linux/mm_communicate_caller.c
-index 0c505b4..0287acf 100644
---- a/components/rpc/mm_communicate/caller/linux/mm_communicate_caller.c
-+++ b/components/rpc/mm_communicate/caller/linux/mm_communicate_caller.c
-@@ -19,7 +19,7 @@
- #include <string.h>
- #include <errno.h>
-
--#define KERNEL_MOD_REQ_VER_MAJOR 2
-+#define KERNEL_MOD_REQ_VER_MAJOR 5
- #define KERNEL_MOD_REQ_VER_MINOR 0
- #define KERNEL_MOD_REQ_VER_PATCH 0
-
-@@ -294,37 +294,28 @@ static rpc_status_t call_invoke(
-
- direct_msg.dst_id = s->dest_partition_id;
-
-- direct_msg.args[MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_ADDRESS] = (uintptr_t)s->comm_buffer;
-- direct_msg.args[MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_SIZE] = s->comm_buffer_size;
-+ direct_msg.args[MM_COMMUNICATE_CALL_ARGS_COMM_BUFFER_OFFSET] = 0;
-
- int kernel_op_status = ioctl(s->ffa_fd, FFA_IOC_MSG_SEND, &direct_msg);
-
- if (kernel_op_status == 0) {
--
- /* Kernel send operation completed normally */
-- uint32_t mm_return_id = direct_msg.args[MM_COMMUNICATE_CALL_ARGS_RETURN_ID];
- int32_t mm_return_code = direct_msg.args[MM_COMMUNICATE_CALL_ARGS_RETURN_CODE];
-
-- if (mm_return_id == ARM_SVC_ID_SP_EVENT_COMPLETE) {
--
-- if (mm_return_code == MM_RETURN_CODE_SUCCESS) {
--
-- mm_communicate_serializer_header_decode(s->serializer,
-- s->comm_buffer, (efi_status_t*)opstatus, resp_buf, resp_len);
--
-- if (*resp_len > s->req_len) {
-+ if (mm_return_code == MM_RETURN_CODE_SUCCESS) {
-+ mm_communicate_serializer_header_decode(
-+ s->serializer, s->comm_buffer, (efi_status_t *)opstatus,
-+ resp_buf, resp_len);
-
-- s->scrub_len =
-- mm_communicate_serializer_header_size(s->serializer) +
-- *resp_len;
-- }
-+ if (*resp_len > s->req_len)
-+ s->scrub_len =
-+ mm_communicate_serializer_header_size(
-+ s->serializer) + *resp_len;
-
-- rpc_status = TS_RPC_CALL_ACCEPTED;
-- }
-- else {
-+ rpc_status = TS_RPC_CALL_ACCEPTED;
-+ } else {
-
-- rpc_status = mm_return_code_to_rpc_status(mm_return_code);
-- }
-+ rpc_status = mm_return_code_to_rpc_status(mm_return_code);
- }
- }
- }
-diff --git a/external/LinuxFFAUserShim/LinuxFFAUserShim.cmake b/external/LinuxFFAUserShim/LinuxFFAUserShim.cmake
-index 7ba64af..9c2252c 100644
---- a/external/LinuxFFAUserShim/LinuxFFAUserShim.cmake
-+++ b/external/LinuxFFAUserShim/LinuxFFAUserShim.cmake
-@@ -11,7 +11,7 @@
-
- set(LINUX_FFA_USER_SHIM_URL "https://git.gitlab.arm.com/linux-arm/linux-trusted-services.git"
- CACHE STRING "Linux FF-A user space shim repository URL")
--set(LINUX_FFA_USER_SHIM_REFSPEC "v4.0.0"
-+set(LINUX_FFA_USER_SHIM_REFSPEC "v5.0.0"
- CACHE STRING "Linux FF-A user space shim git refspec")
-
- set(LINUX_FFA_USER_SHIM_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/linux_ffa_user_shim-src"
---
-2.17.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/files/0024-Deny-64-bit-FF-A-messages-in-FF-A-RPC-endpoint.patch b/meta-arm/meta-arm/recipes-security/trusted-services/files/0024-Deny-64-bit-FF-A-messages-in-FF-A-RPC-endpoint.patch
deleted file mode 100644
index 01cf523a82..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/files/0024-Deny-64-bit-FF-A-messages-in-FF-A-RPC-endpoint.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From f173e99554512c982665c1d5d4b0543421177b09 Mon Sep 17 00:00:00 2001
-From: Imre Kis <imre.kis@arm.com>
-Date: Tue, 26 Jul 2022 17:06:46 +0200
-Subject: [PATCH 24/24] Deny 64 bit FF-A messages in FF-A RPC endpoint
-
-FF-A RPC protocol only allows 32 bit FF-A direct messages thus deny all
-64 bit messages in the RPC endpoint.
-
-Signed-off-by: Imre Kis <imre.kis@arm.com>
-Change-Id: I37c95425f80b6e2821b3f6b8649ceba8aa007bce
-
-Upstream-Status: Pending [In review]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-
----
- .../rpc/ffarpc/endpoint/ffarpc_call_ep.c | 31 ++++++++++++-------
- 1 file changed, 20 insertions(+), 11 deletions(-)
-
-diff --git a/components/rpc/ffarpc/endpoint/ffarpc_call_ep.c b/components/rpc/ffarpc/endpoint/ffarpc_call_ep.c
-index c024196..3035c16 100644
---- a/components/rpc/ffarpc/endpoint/ffarpc_call_ep.c
-+++ b/components/rpc/ffarpc/endpoint/ffarpc_call_ep.c
-@@ -12,6 +12,7 @@
- #include <protocols/rpc/common/packed-c/status.h>
- #include <trace.h>
- #include <stddef.h>
-+#include <string.h>
-
- /* TODO: remove this when own ID will be available in libsp */
- extern uint16_t own_id;
-@@ -260,17 +261,25 @@ void ffa_call_ep_receive(struct ffa_call_ep *call_ep,
- const struct sp_msg *req_msg,
- struct sp_msg *resp_msg)
- {
-- const uint32_t *req_args = req_msg->args.args32;
-- uint32_t *resp_args = resp_msg->args.args32;
--
-- uint16_t source_id = req_msg->source_id;
-- uint32_t ifaceid_opcode = req_args[SP_CALL_ARGS_IFACE_ID_OPCODE];
--
-- if (FFA_CALL_ARGS_EXTRACT_IFACE(ifaceid_opcode) == FFA_CALL_MGMT_IFACE_ID) {
-- /* It's an RPC layer management request */
-- handle_mgmt_msg(call_ep, source_id, req_args, resp_args);
-+ resp_msg->is_64bit_message = req_msg->is_64bit_message;
-+ memset(&resp_msg->args, 0x00, sizeof(resp_msg->args));
-+
-+ if (!req_msg->is_64bit_message) {
-+ const uint32_t *req_args = req_msg->args.args32;
-+ uint32_t *resp_args = resp_msg->args.args32;
-+ uint16_t source_id = req_msg->source_id;
-+ uint32_t ifaceid_opcode = req_args[SP_CALL_ARGS_IFACE_ID_OPCODE];
-+
-+ if (FFA_CALL_ARGS_EXTRACT_IFACE(ifaceid_opcode) == FFA_CALL_MGMT_IFACE_ID) {
-+ /* It's an RPC layer management request */
-+ handle_mgmt_msg(call_ep, source_id, req_args, resp_args);
-+ } else {
-+ /* Assume anything else is a service request */
-+ handle_service_msg(call_ep, source_id, req_args, resp_args);
-+ }
- } else {
-- /* Assume anything else is a service request */
-- handle_service_msg(call_ep, source_id, req_args, resp_args);
-+ EMSG("64 bit FF-A messages are not supported by the TS RPC layer");
-+ resp_msg->args.args64[SP_CALL_ARGS_RESP_RPC_STATUS] =
-+ TS_RPC_ERROR_INVALID_PARAMETER;
- }
- }
---
-2.17.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/libts/0001-QEMU-MM-communication-buffer-address.patch b/meta-arm/meta-arm/recipes-security/trusted-services/libts/0001-QEMU-MM-communication-buffer-address.patch
deleted file mode 100644
index 2c21e6f109..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/libts/0001-QEMU-MM-communication-buffer-address.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 1fe74d7d5008aed61feb34a8d5d8b5f9144a58b2 Mon Sep 17 00:00:00 2001
-From: Anton Antonov <Anton.Antonov@arm.com>
-Date: Wed, 31 Aug 2022 16:33:13 +0100
-Subject: [PATCH] Update MM communication buffer address for qemuarm64 machine
-
-Upstream-Status: Inappropriate [qemuarm64 specific change]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
----
- components/rpc/mm_communicate/caller/linux/carveout.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/components/rpc/mm_communicate/caller/linux/carveout.c b/components/rpc/mm_communicate/caller/linux/carveout.c
-index e3cdf16f..62845d30 100644
---- a/components/rpc/mm_communicate/caller/linux/carveout.c
-+++ b/components/rpc/mm_communicate/caller/linux/carveout.c
-@@ -12,8 +12,8 @@
- #include "carveout.h"
-
- /* Need to be aligned with carve-out used by StMM or smm-gateway. */
--static const off_t carveout_pa = 0x0000000881000000;
--static const size_t carveout_len = 0x8000;
-+static const off_t carveout_pa = 0x42000000;
-+static const size_t carveout_len = 0x1000;
-
- int carveout_claim(uint8_t **buf, size_t *buf_size)
- {
---
-2.25.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/libts_%.bbappend b/meta-arm/meta-arm/recipes-security/trusted-services/libts_%.bbappend
index f987e40c8d..9156e022c2 100644
--- a/meta-arm/meta-arm/recipes-security/trusted-services/libts_%.bbappend
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/libts_%.bbappend
@@ -1,3 +1,4 @@
# Update MM communication buffer address for qemuarm64 machine
-SRC_URI:append:qemuarm64-secureboot = "file://0001-QEMU-MM-communication-buffer-address.patch \
+EXTRA_OECMAKE:append:qemuarm64-secureboot = "-DMM_COMM_BUFFER_ADDRESS=0x42000000 \
+ -DMM_COMM_BUFFER_SIZE=0x1000 \
"
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/libts_git.bb b/meta-arm/meta-arm/recipes-security/trusted-services/libts_git.bb
index dfcf8ce9a6..598b281bac 100644
--- a/meta-arm/meta-arm/recipes-security/trusted-services/libts_git.bb
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/libts_git.bb
@@ -13,10 +13,6 @@ OECMAKE_SOURCEPATH="${S}/deployments/libts/${TS_ENV}"
DEPENDS += "arm-ffa-tee arm-ffa-user"
RRECOMMENDS:${PN} += "arm-ffa-tee"
-# arm-ffa-user.h is installed by arm-ffa-user recipe
-EXTRA_OECMAKE += "-DLINUX_FFA_USER_SHIM_INCLUDE_DIR:PATH=/usr/include \
- "
-
# Unix group name for dev/tee* ownership.
TEE_GROUP_NAME ?= "teeclnt"
@@ -28,12 +24,11 @@ do_install:append () {
fi
# Move the dynamic libraries into the standard place.
- # Update a cmake files to use correct paths.
+ # Update a cmake file to use correct paths.
install -d ${D}${libdir}
mv ${D}${TS_INSTALL}/lib/libts* ${D}${libdir}
- sed -i -e "s#/${TS_ENV}##g" ${D}${TS_INSTALL}/lib/cmake/libtsTargets-noconfig.cmake
- sed -i -e 's#INTERFACE_INCLUDE_DIRECTORIES.*$#INTERFACE_INCLUDE_DIRECTORIES "\${_IMPORT_PREFIX}/${TS_ENV}/include"#' ${D}${TS_INSTALL}/lib/cmake/libtsTargets.cmake
+ sed -i -e "s#/${TS_ENV}##g" ${D}${TS_INSTALL}/lib/cmake/libts/libtsTargets-noconfig.cmake
}
inherit ${@oe.utils.conditional('VIRTUAL-RUNTIME_dev_manager', 'busybox-mdev', '', 'useradd', d)}
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/trusted-services-src.inc b/meta-arm/meta-arm/recipes-security/trusted-services/trusted-services-src.inc
index 0251fef869..c8aa821a7d 100644
--- a/meta-arm/meta-arm/recipes-security/trusted-services/trusted-services-src.inc
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/trusted-services-src.inc
@@ -3,24 +3,10 @@
LICENSE = "Apache-2.0 & BSD-3-Clause & BSD-2-Clause & Zlib"
SRC_URI = "git://git.trustedfirmware.org/TS/trusted-services.git;protocol=https;branch=integration;name=trusted-services;destsuffix=git/trusted-services \
- file://0004-correctly-find-headers-dir.patch \
- file://0005-setting-sysroot-for-libgcc-lookup.patch \
- file://0006-applying-lowercase-project-convention.patch \
- file://0009-PSA-CRYPTO-API-INCLUDE.patch \
- file://0010-change-libts-to-export-CMake-package.patch \
- file://0011-Adapt-deployments-to-libts-changes.patch \
- file://0017-Move-libsp-mocks-into-separate-component.patch \
- file://0018-Add-mock-for-libsp-sp_discovery.patch \
- file://0019-Add-mock-for-libsp-sp_memory_management.patch \
- file://0020-Add-mock-for-libsp-sp_messaging.patch \
- file://0021-Add-64-bit-direct-message-handling-to-libsp.patch \
- file://0022-Change-MM-communicate-RPC-protocol-of-call-endpoint.patch \
- file://0023-Change-MM-communicate-RPC-protocol-of-MM-caller.patch \
- file://0024-Deny-64-bit-FF-A-messages-in-FF-A-RPC-endpoint.patch \
"
-#latest on 05.07.22.
-SRCREV_trusted-services = "1b0c520279445fc4d85fc582eda5e5ff5f380c39"
+#latest on 12.10.22.
+SRCREV_trusted-services = "3d4956770f89eb9ae0a73257901ae6277c078da6"
LIC_FILES_CHKSUM = "file://${S}/license.rst;md5=ea160bac7f690a069c608516b17997f4"
S = "${WORKDIR}/git/trusted-services"
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/trusted-services.inc b/meta-arm/meta-arm/recipes-security/trusted-services/trusted-services.inc
index a8f49a5e1e..59f461d3b0 100644
--- a/meta-arm/meta-arm/recipes-security/trusted-services/trusted-services.inc
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/trusted-services.inc
@@ -47,8 +47,6 @@ EXTRA_OECMAKE += "${@oe.utils.conditional('TS_ENV', 'opteesp', \
"
# Paths to pre-built dependencies required by some TS SPs/tools
-EXTRA_OECMAKE += "-Dlibts_DIR=${STAGING_DIR_HOST}${TS_INSTALL}/lib/cmake/ \
- -DNEWLIB_INSTALL_DIR=${STAGING_DIR_HOST}${TS_INSTALL}/newlib_install \
+EXTRA_OECMAKE += "-Dlibts_ROOT=${STAGING_DIR_HOST}${TS_INSTALL}/lib/cmake/libts/ \
+ -DNEWLIB_INSTALL_DIR=${STAGING_DIR_HOST}${TS_INSTALL}/newlib \
"
-# Newlib does not compile with clang
-TOOLCHAIN = "gcc"
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/ts-demo_git.bb b/meta-arm/meta-arm/recipes-security/trusted-services/ts-demo_git.bb
index b0abb6ff58..a9f7b65f09 100644
--- a/meta-arm/meta-arm/recipes-security/trusted-services/ts-demo_git.bb
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/ts-demo_git.bb
@@ -11,6 +11,10 @@ RDEPENDS:${PN} += "libts"
OECMAKE_SOURCEPATH="${S}/deployments/ts-demo/${TS_ENV}"
+# Mbedtls 3.1.0 does not compile with clang.
+# This can be removed after TS updated required mbedtls version
+TOOLCHAIN = "gcc"
+
FILES:${PN} = "${bindir}/ts-demo"
do_install:append () {
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib/0003-Add-newlib-deployment.patch b/meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib/0003-Add-newlib-deployment.patch
deleted file mode 100644
index e43e7d2575..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib/0003-Add-newlib-deployment.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 03337e3a509eace9f55a46993cfaadee0e796f46 Mon Sep 17 00:00:00 2001
-From: Gyorgy Szing <Gyorgy.Szing@arm.com>
-Date: Fri, 14 Jan 2022 20:35:53 +0000
-Subject: [PATCH 1/1] Add newlib deployment
-
-This deployment allow building newlib directly and not part of SP
-builds. The resulting binary can be used as a pre-build binary for
-building SPs later.
-The intent is to help integration systems, where recursive build is
-problematic, and there is no direct support for building newlib.
-
-Change-Id: I770cdfd3c39eb7bf9764de74dfb191c321c49561
-Signed-off-by: Gyorgy Szing <Gyorgy.Szing@arm.com>
-
-Upstream-Status: Pending [In review]
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-
----
- deployments/newlib/opteesp/CMakeLists.txt | 38 +++++++++++++++++++++++
- tools/b-test/test_data.yaml | 4 +++
- 2 files changed, 42 insertions(+)
- create mode 100644 deployments/newlib/opteesp/CMakeLists.txt
-
-diff --git a/deployments/newlib/opteesp/CMakeLists.txt b/deployments/newlib/opteesp/CMakeLists.txt
-new file mode 100644
-index 00000000..593e0a96
---- /dev/null
-+++ b/deployments/newlib/opteesp/CMakeLists.txt
-@@ -0,0 +1,38 @@
-+#-------------------------------------------------------------------------------
-+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
-+#
-+# SPDX-License-Identifier: BSD-3-Clause
-+#
-+#-------------------------------------------------------------------------------
-+cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
-+include(../../deployment.cmake REQUIRED)
-+
-+#-------------------------------------------------------------------------------
-+# The CMakeLists.txt for building the newlib deployment for opteesp
-+#
-+# Can be used to build the newlib library, which can be used to build SPs.
-+#-------------------------------------------------------------------------------
-+include(${TS_ROOT}/environments/opteesp/env.cmake)
-+
-+project(newlib C)
-+
-+# This is a dummy library not intended to be compiled ever. It is needed
-+# to avoid opteesp specific newlib targeting files.
-+add_library(dummy EXCLUDE_FROM_ALL)
-+set(TGT dummy)
-+# Build newlib as an external component.
-+include(${TS_ROOT}/external/newlib/newlib.cmake)
-+
-+######################################## install
-+if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
-+ set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "location to install build output to." FORCE)
-+endif()
-+
-+install(DIRECTORY ${NEWLIB_INSTALL_DIR} DESTINATION ${TS_ENV})
-+
-+#get_property(_tmp_lib TARGET stdlib::c PROPERTY IMPORTED_LOCATION)
-+#get_filename_component(_tmp_path ${_tmp_lib} DIRECTORY)
-+#install(DIRECTORY ${_tmp_path} DESTINATION ${TS_ENV})
-+
-+#get_property(_tmp_path TARGET stdlib::c PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
-+#install(DIRECTORY ${_tmp_path} DESTINATION ${TS_ENV})
-diff --git a/tools/b-test/test_data.yaml b/tools/b-test/test_data.yaml
-index 7caafa8b..6bfacc66 100644
---- a/tools/b-test/test_data.yaml
-+++ b/tools/b-test/test_data.yaml
-@@ -69,6 +69,10 @@ data:
- os_id : "GNU/Linux"
- params:
- - "-GUnix Makefiles"
-+ - name: "newlib-optee-arm"
-+ src: "$TS_ROOT/deployments/newlib/opteesp"
-+ params:
-+ - "-GUnix Makefiles"
- - name: "platform-inspect-arm-linux"
- src: "$TS_ROOT/deployments/platform-inspect/arm-linux"
- os_id : "GNU/Linux"
---
-2.37.0
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib/0021-newlib-configure.patch b/meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib/0021-newlib-configure.patch
deleted file mode 100644
index a9d291b4e1..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib/0021-newlib-configure.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From df66efc0db9899c41632091db11bfe2c05eec1fa Mon Sep 17 00:00:00 2001
-From: Anton Antonov <Anton.Antonov@arm.com>
-Date: Wed, 31 Aug 2022 17:55:21 +0100
-Subject: [PATCH] Allow to define additional partameters for newlib configure.
-
-Do not skip newlib and libgloss when crosscompiling
-
-Upstream-Status: Pending
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
----
- ...-aarch64-linux-gcc-to-compile-bare-metal-lib.patch | 11 ++++++++++-
- external/newlib/newlib.cmake | 6 ++++++
- 2 files changed, 16 insertions(+), 1 deletion(-)
-
-diff --git a/external/newlib/0001-Allow-aarch64-linux-gcc-to-compile-bare-metal-lib.patch b/external/newlib/0001-Allow-aarch64-linux-gcc-to-compile-bare-metal-lib.patch
-index f87ed5a..7533ed0 100644
---- a/external/newlib/0001-Allow-aarch64-linux-gcc-to-compile-bare-metal-lib.patch
-+++ b/external/newlib/0001-Allow-aarch64-linux-gcc-to-compile-bare-metal-lib.patch
-@@ -16,9 +16,18 @@ Signed-off-by: Gyorgy Szing <gyorgy.szing@arm.com>
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
- diff --git a/configure b/configure
--index 5db52701..1eb71a80 100755
-+index 5db527014..dce91609e 100755
- --- a/configure
- +++ b/configure
-+@@ -2886,7 +2886,7 @@ esac
-+
-+ # Some are only suitable for cross toolchains.
-+ # Remove these if host=target.
-+-cross_only="target-libgloss target-newlib target-opcodes"
-++cross_only="target-opcodes"
-+
-+ case $is_cross_compiler in
-+ no) skipdirs="${skipdirs} ${cross_only}" ;;
- @@ -3659,7 +3659,7 @@ case "${target}" in
- *-*-freebsd*)
- noconfigdirs="$noconfigdirs target-newlib target-libgloss"
-diff --git a/external/newlib/newlib.cmake b/external/newlib/newlib.cmake
-index 13eb78c..5ee99a5 100644
---- a/external/newlib/newlib.cmake
-+++ b/external/newlib/newlib.cmake
-@@ -168,6 +168,10 @@ if (NOT NEWLIB_LIBC_PATH)
- string(REPLACE ";" " -isystem " CFLAGS_FOR_TARGET "${_gcc_include_dirs}")
- set(CFLAGS_FOR_TARGET "-isystem ${CFLAGS_FOR_TARGET} -fpic")
-
-+ # Split a newlib extra build parameter into a list of parameters
-+ set(NEWLIB_EXTRAS ${NEWLIB_EXTRA})
-+ separate_arguments(NEWLIB_EXTRAS)
-+
- # Newlib configure step
- # CC env var must be unset otherwise configure will assume the cross compiler is the host
- # compiler.
-@@ -175,6 +179,7 @@ if (NOT NEWLIB_LIBC_PATH)
- execute_process(COMMAND
- ${CMAKE_COMMAND} -E env --unset=CC PATH=${COMPILER_PATH}:$ENV{PATH} ./configure
- --target=${COMPILER_PREFIX}
-+ --host=${COMPILER_PREFIX}
- --prefix=${NEWLIB_INSTALL_DIR}
- --enable-newlib-nano-formatted-io
- --enable-newlib-nano-malloc
-@@ -182,6 +187,7 @@ if (NOT NEWLIB_LIBC_PATH)
- --enable-newlib-reent-small
- --enable-newlib-global-atexit
- --disable-multilib
-+ ${NEWLIB_EXTRAS}
- CFLAGS_FOR_TARGET=${CFLAGS_FOR_TARGET}
- LDFLAGS_FOR_TARGET=-fpie
- WORKING_DIRECTORY
---
-2.25.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib_4.1.0.bb b/meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib_4.1.0.bb
index 94038b5be6..408c7d3c24 100644
--- a/meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib_4.1.0.bb
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/ts-newlib_4.1.0.bb
@@ -5,16 +5,17 @@ TS_ENV = "opteesp"
require trusted-services.inc
SRC_URI += "git://sourceware.org/git/newlib-cygwin.git;name=newlib;protocol=https;branch=master;destsuffix=git/newlib \
- file://0003-Add-newlib-deployment.patch \
- file://0021-newlib-configure.patch \
"
# tag "newlib-0.4.1"
SRCREV_newlib = "415fdd4279b85eeec9d54775ce13c5c412451e08"
LIC_FILES_CHKSUM += "file://../newlib/COPYING.NEWLIB;md5=b8dda70da54e0efb49b1074f349d7749"
+# Newlib does not compile with clang
+TOOLCHAIN = "gcc"
+
EXTRA_OECMAKE += '-DNEWLIB_SOURCE_DIR=${WORKDIR}/git/newlib \
- -DNEWLIB_EXTRA="CFLAGS=--sysroot=${STAGING_DIR_HOST}" \
+ -DNEWLIB_CFLAGS="--sysroot=${STAGING_DIR_HOST}" \
'
OECMAKE_SOURCEPATH = "${S}/deployments/newlib/${TS_ENV}/"
@@ -27,5 +28,5 @@ apply_ts_patch() {
}
do_patch[postfuncs] += "apply_ts_patch"
-FILES:${PN}-dev = "${TS_INSTALL}/newlib_install"
-FILES:${PN}-staticdev = "${TS_INSTALL}/newlib_install/*/lib/*.a"
+FILES:${PN}-dev = "${TS_INSTALL}/newlib"
+FILES:${PN}-staticdev = "${TS_INSTALL}/newlib/*/lib/*.a"
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-api-test-common_git.inc b/meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-api-test-common_git.inc
index 1e1be6a91a..dfd471635e 100644
--- a/meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-api-test-common_git.inc
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-api-test-common_git.inc
@@ -8,7 +8,7 @@ DEPENDS += "libts"
RDEPENDS:${PN} += "libts"
SRC_URI += "git://github.com/ARM-software/psa-arch-tests.git;name=psatest;protocol=https;branch=main;destsuffix=git/psatest \
- file://0012-psa-arch-test-toolchain.patch \
+ file://0001-Pass-Yocto-build-settings-to-psa-arch-tests-native.patch;patchdir=../psatest \
"
SRCREV_psatest = "451aa087a40d02c7d04778235014c5619d126471"
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-iat-api-test/0012-PSA-TARGET-QCBOR.patch b/meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-iat-api-test/0012-PSA-TARGET-QCBOR.patch
deleted file mode 100644
index 3b28e80e4d..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-iat-api-test/0012-PSA-TARGET-QCBOR.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 3229ca31e59933608f82001c1cdcca9d0a0aa0e0 Mon Sep 17 00:00:00 2001
-From: Anton Antonov <Anton.Antonov@arm.com>
-Date: Wed, 31 Aug 2022 17:19:08 +0100
-Subject: [PATCH] Subject: [PATCH] Pass PSA_TARGET_QCBOR to psa-arch-tests
-
-psa-arch-tests require they own version of qcbor library.
-Pass PSA_TARGET_QCBOR which defines where pre-fetched qcbor sources are.
-
-Upstream-Status: Pending
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
----
- external/psa_arch_tests/pas-arch-test-init-cache.cmake.in | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/external/psa_arch_tests/pas-arch-test-init-cache.cmake.in b/external/psa_arch_tests/pas-arch-test-init-cache.cmake.in
-index 5c63596..64196c2 100644
---- a/external/psa_arch_tests/pas-arch-test-init-cache.cmake.in
-+++ b/external/psa_arch_tests/pas-arch-test-init-cache.cmake.in
-@@ -10,6 +10,7 @@ set(CMAKE_TOOLCHAIN_FILE "@TS_EXTERNAL_LIB_TOOLCHAIN_FILE@" CACHE STRING "")
-
- set(TOOLCHAIN INHERIT CACHE STRING "")
- set(PSA_INCLUDE_PATHS "@PSA_ARCH_TESTS_EXTERNAL_INCLUDE_PATHS@" CACHE STRING "")
-+set(PSA_TARGET_QCBOR "@PSA_TARGET_QCBOR@" CACHE STRING "")
- set(SUITE "@TS_ARCH_TEST_SUITE@" CACHE STRING "")
- set(ARCH_TEST_EXTERNAL_DEFS "@PSA_ARCH_TEST_EXTERNAL_DEFS@" CACHE STRING "")
- set(CMAKE_VERBOSE_MAKEFILE OFF CACHE BOOL "")
---
-2.25.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-iat-api-test_git.bb b/meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-iat-api-test_git.bb
index 73c5f61dbf..e5c662e4d0 100644
--- a/meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-iat-api-test_git.bb
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/ts-psa-iat-api-test_git.bb
@@ -11,9 +11,12 @@ PSA_TEST = "psa-iat-api-test"
# psa-arch-tests for INITIAL_ATTESTATION suite can't be built with pre-built qcbor
# Fetch qcbor sources as a temp work-around and pass PSA_TARGET_QCBOR to psa-arch-tests
SRC_URI += "git://github.com/laurencelundblade/QCBOR.git;name=psaqcbor;protocol=https;branch=master;destsuffix=git/psaqcbor \
- file://0012-PSA-TARGET-QCBOR.patch \
"
SRCREV_psaqcbor = "42272e466a8472948bf8fca076d113b81b99f0e0"
EXTRA_OECMAKE += "-DPSA_TARGET_QCBOR=${WORKDIR}/git/psaqcbor \
"
+
+# Mbedtls 3.1.0 does not compile with clang.
+# This can be removed after TS updated required mbedtls version
+TOOLCHAIN = "gcc"
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-common.inc b/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-common.inc
index e46cd6bea3..75ddab37d1 100644
--- a/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-common.inc
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-common.inc
@@ -27,3 +27,6 @@ EXTRA_OECMAKE += '-DCMAKE_ASM_FLAGS="${DEBUG_PREFIX_MAP}"'
# Ignore that SP stripped.elf does not have GNU_HASH
# Older versions of optee support SYSV hash only.
INSANE_SKIP:${PN}-dev += "ldflags"
+
+# Trusted Services SPs do not compile with clang
+TOOLCHAIN = "gcc"
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-env-test/0013-env-test-no-std-libs.patch b/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-env-test/0013-env-test-no-std-libs.patch
deleted file mode 100644
index f6269db450..0000000000
--- a/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-env-test/0013-env-test-no-std-libs.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 7a0dcc40ea736dc20b25813dfc08e576c2615217 Mon Sep 17 00:00:00 2001
-From: Anton Antonov <Anton.Antonov@arm.com>
-Date: Wed, 31 Aug 2022 17:32:47 +0100
-Subject: [PATCH] Do not use standard libraries in env-test opteesp deployment
-
-In opteesp deployments newlib used used. The standard libraries should not be included.
-
-Upstream-Status: Pending
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
----
- deployments/env-test/opteesp/CMakeLists.txt | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/deployments/env-test/opteesp/CMakeLists.txt b/deployments/env-test/opteesp/CMakeLists.txt
-index cff00ff..60abc0d 100644
---- a/deployments/env-test/opteesp/CMakeLists.txt
-+++ b/deployments/env-test/opteesp/CMakeLists.txt
-@@ -56,9 +56,9 @@ include(../env-test.cmake REQUIRED)
- #-------------------------------------------------------------------------------
- add_platform(TARGET env-test)
-
--if(CMAKE_CROSSCOMPILING)
-- target_link_libraries(env-test PRIVATE stdc++ gcc m)
--endif()
-+#if(CMAKE_CROSSCOMPILING)
-+# target_link_libraries(env-test PRIVATE stdc++ gcc m)
-+#endif()
-
- #################################################################
-
---
-2.25.1
-
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-env-test_git.bb b/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-env-test_git.bb
index 9cd73cbcf2..040fd4d159 100644
--- a/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-env-test_git.bb
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-env-test_git.bb
@@ -8,7 +8,3 @@ COMPATIBLE_MACHINE ?= "invalid"
SP_UUID = "${ENV_TEST_UUID}"
OECMAKE_SOURCEPATH="${S}/deployments/env-test/${TS_ENV}"
-
-SRC_URI += "\
- file://0013-env-test-no-std-libs.patch \
-"