mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-22 12:34:19 +00:00
feat(lib/optee): introduce optee_header_is_valid()
This new function optee_header_is_valid() allows platform to know whether OP-TEE OS is loaded from multi-image (using OP-TEE header image as BL32_IMAGE_ID) or from a single OP-TEE binary image. The function tee_validate_header() is reworked to return a boolean, and is now silent. Change-Id: Idc7dde091f2ada8898f40d02e68c3834ca39d8e8 Signed-off-by: Etienne Carriere <etienne.carriere@st.com> Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
This commit is contained in:
parent
f465cc1659
commit
b84a850864
2 changed files with 15 additions and 12 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2017-2021, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -7,8 +7,12 @@
|
||||||
#ifndef OPTEE_UTILS_H
|
#ifndef OPTEE_UTILS_H
|
||||||
#define OPTEE_UTILS_H
|
#define OPTEE_UTILS_H
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <common/bl_common.h>
|
#include <common/bl_common.h>
|
||||||
|
|
||||||
|
bool optee_header_is_valid(uintptr_t header_base);
|
||||||
|
|
||||||
int parse_optee_header(entry_point_info_t *header_ep,
|
int parse_optee_header(entry_point_info_t *header_ep,
|
||||||
image_info_t *pager_image_info,
|
image_info_t *pager_image_info,
|
||||||
image_info_t *paged_image_info);
|
image_info_t *paged_image_info);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017-2020, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2017-2021, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -47,25 +47,24 @@ typedef struct optee_header {
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Check if it is a valid tee header
|
* Check if it is a valid tee header
|
||||||
* Return 1 if valid
|
* Return true if valid
|
||||||
* Return 0 if invalid
|
* Return false if invalid
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
static inline int tee_validate_header(optee_header_t *header)
|
static bool tee_validate_header(optee_header_t *header)
|
||||||
{
|
{
|
||||||
int valid = 0;
|
|
||||||
|
|
||||||
if ((header->magic == TEE_MAGIC_NUM_OPTEE) &&
|
if ((header->magic == TEE_MAGIC_NUM_OPTEE) &&
|
||||||
(header->version == 2u) &&
|
(header->version == 2u) &&
|
||||||
(header->nb_images > 0u) &&
|
(header->nb_images > 0u) &&
|
||||||
(header->nb_images <= OPTEE_MAX_NUM_IMAGES)) {
|
(header->nb_images <= OPTEE_MAX_NUM_IMAGES)) {
|
||||||
valid = 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
return false;
|
||||||
WARN("Not a known TEE, use default loading options.\n");
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return valid;
|
bool optee_header_is_valid(uintptr_t header_base)
|
||||||
|
{
|
||||||
|
return tee_validate_header((optee_header_t *)header_base);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
|
Loading…
Add table
Reference in a new issue