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
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 @@
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;
};
/**