blob: 3c7ae6cadc29e8bcd260745f4762edfe5a9097ee [file] [log] [blame]
/*
* Copyright (c) 2017-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
#ifndef __TFM_PLAT_DEFS_H__
#define __TFM_PLAT_DEFS_H__
/**
* \note The interfaces defined in this file must be implemented for each
* target.
*/
#include <stdint.h>
#include <limits.h>
enum tfm_plat_err_t {
TFM_PLAT_ERR_SUCCESS = 0,
TFM_PLAT_ERR_SYSTEM_ERR = 0x3A5C,
TFM_PLAT_ERR_MAX_VALUE = 0x55A3,
TFM_PLAT_ERR_INVALID_INPUT = 0xA3C5,
TFM_PLAT_ERR_UNSUPPORTED = 0xC35A,
TFM_PLAT_ERR_NOT_PERMITTED = 0xC5A3,
/* Following entry is only to ensure the error code of int size */
TFM_PLAT_ERR_FORCE_INT_SIZE = INT_MAX
};
#if defined(TFM_ISOLATION_LEVEL) && (TFM_ISOLATION_LEVEL != 1)
/*!
* \def TFM_LINK_SET_RO_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
*
* \brief This macro provides a mechanism to place a function code or a data
* variable in the code section (e.g. RO) of a specific secure partition
* at linker time.
*
* \param[in] TFM_PARTITION_NAME TF-M partition name assigned in the manifest
* file "name" field.
* \param[in] TFM_PARTITION_TYPE TF-M partition type assigned in the manifest
* file "type" field.
*/
#define TFM_LINK_SET_RO_IN_PARTITION_SECTION(TFM_PARTITION_NAME, \
TFM_PARTITION_TYPE) \
__attribute__((section(TFM_PARTITION_NAME "_" TFM_PARTITION_TYPE "_ATTR_FN")))
/*!
* \def TFM_LINK_SET_RW_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
*
* \brief This macro provides a mechanism to place data variables in the RW data
* section of a specific secure partition at linker time.
*
* \param[in] TFM_PARTITION_NAME TF-M partition name assigned in the manifest
* file "name" field.
* \param[in] TFM_PARTITION_TYPE TF-M partition type assigned in the manifest
* file "type" field.
*/
#define TFM_LINK_SET_RW_IN_PARTITION_SECTION(TFM_PARTITION_NAME, \
TFM_PARTITION_TYPE) \
__attribute__((section(TFM_PARTITION_NAME "_" TFM_PARTITION_TYPE "_ATTR_RW")))
/*!
* \def TFM_LINK_SET_ZI_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
*
* \brief This macro provides a mechanism to place data variables in the ZI data
* section of a specific secure partition at linker time.
*
* \param[in] TFM_PARTITION_NAME TF-M partition name assigned in the manifest
* file "name" field.
* \param[in] TFM_PARTITION_TYPE TF-M partition type assigned in the manifest
* file "type" field.
*/
#define TFM_LINK_SET_ZI_IN_PARTITION_SECTION(TFM_PARTITION_NAME, \
TFM_PARTITION_TYPE) \
__attribute__((section(TFM_PARTITION_NAME "_" TFM_PARTITION_TYPE "_ATTR_ZI")))
#else
#define TFM_LINK_SET_RO_IN_PARTITION_SECTION(TFM_PARTITION_NAME, TFM_PARTITION_TYPE)
#define TFM_LINK_SET_RW_IN_PARTITION_SECTION(TFM_PARTITION_NAME, TFM_PARTITION_TYPE)
#define TFM_LINK_SET_ZI_IN_PARTITION_SECTION(TFM_PARTITION_NAME, TFM_PARTITION_TYPE)
#endif
#endif /* __TFM_PLAT_DEFS_H__ */