blob: 03191eceaeed82136fd9d7c47ed84f74af136582 [file] [log] [blame]
Xinyu Zhang99b069f2021-04-09 14:36:42 +08001/*
Jamie Fox94a9a2c2021-08-12 22:40:16 +01002 * Copyright (c) 2021-2022, Arm Limited. All rights reserved.
Xinyu Zhang99b069f2021-04-09 14:36:42 +08003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
Ken Liu82e3eac2021-10-14 16:19:13 +08008#ifndef __TFM_PSA_CALL_PACK_H__
9#define __TFM_PSA_CALL_PACK_H__
10
Ken Liu82e3eac2021-10-14 16:19:13 +080011#include "psa/client.h"
Xinyu Zhang99b069f2021-04-09 14:36:42 +080012
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17#define TYPE_OFFSET 16U
18#define TYPE_MASK (0xFFFFUL << TYPE_OFFSET)
19#define IN_LEN_OFFSET 8U
20#define IN_LEN_MASK (0xFFUL << IN_LEN_OFFSET)
21#define OUT_LEN_OFFSET 0U
22#define OUT_LEN_MASK (0xFFUL << OUT_LEN_OFFSET)
23
24#define PARAM_PACK(type, in_len, out_len) \
25 (((((uint32_t)type) << TYPE_OFFSET) & TYPE_MASK) | \
26 ((((uint32_t)in_len) << IN_LEN_OFFSET) & IN_LEN_MASK) | \
27 ((((uint32_t)out_len) << OUT_LEN_OFFSET) & OUT_LEN_MASK))
28
Jamie Fox94a9a2c2021-08-12 22:40:16 +010029#define PARAM_UNPACK_TYPE(ctrl_param) \
30 ((int32_t)(((ctrl_param) & TYPE_MASK) >> TYPE_OFFSET))
31
32#define PARAM_UNPACK_IN_LEN(ctrl_param) \
33 ((size_t)(((ctrl_param) & IN_LEN_MASK) >> IN_LEN_OFFSET))
34
35#define PARAM_UNPACK_OUT_LEN(ctrl_param) \
36 ((size_t)(((ctrl_param) & OUT_LEN_MASK) >> OUT_LEN_OFFSET))
37
Ken Liu82e3eac2021-10-14 16:19:13 +080038psa_status_t tfm_psa_call_pack(psa_handle_t handle,
39 uint32_t ctrl_param,
40 const psa_invec *in_vec,
41 psa_outvec *out_vec);
42
Xinyu Zhang99b069f2021-04-09 14:36:42 +080043#ifdef __cplusplus
44}
45#endif
46
Ken Liu82e3eac2021-10-14 16:19:13 +080047#endif /* __TFM_PSA_CALL_PACK_H__ */