From db05fb77dcdce2259876543aacade3f9b1346b4c Mon Sep 17 00:00:00 2001 From: Bryan O'Donoghue Date: Tue, 3 Jul 2018 15:07:32 +0100 Subject: [PATCH] imx: imx_hab: Define a HAB header file The High Assurance Boot or HAB is an on-chip method of providing a root-of-trust from the reset vector to subsequent stages in the bootup flow of the Cortex-A7 on the i.MX series of processors. This patch adds a simple header file with pointer offsets of the provided set of HAH API callbacks in the BootROM. The relative offset of the function pointers is a constant and known quantum, a software-contract between NXP and an implementation which is defined in the NXP HAB documentation. All we need is the correct base offset and then we can map the set of function pointers relative to that offset. imx_hab_arch.h provides the correct offset and the imx_hab.h hooks the offset to the pre-determined callbacks. Signed-off-by: Bryan O'Donoghue Reviewed-by: Ryan Harkin --- plat/imx/common/include/imx_hab.h | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 plat/imx/common/include/imx_hab.h diff --git a/plat/imx/common/include/imx_hab.h b/plat/imx/common/include/imx_hab.h new file mode 100644 index 00000000..e3d266c6 --- /dev/null +++ b/plat/imx/common/include/imx_hab.h @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2018, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#ifndef __IMX_HAB_H__ +#define __IMX_HAB_H__ + +#include +#include + +#define HAB_ROM_VECTOR_BASE\ + (BOOTROM_BASE + HAB_CALLBACK_OFFSET) +/* + * Section 4.5 of the High Assurance Boot Version 4 Application Programming + * Interface Reference Manual defines the ROM Vector table as coming after a 4 + * byte header + * + * A series of function pointers are enumerated at fixed addresses, which are + * described below + */ +#define HAB_ROM_VECTOR_TABLE_ENTRY (HAB_ROM_VECTOR_BASE + 0x04) +#define HAB_ROM_VECTOR_TABLE_EXIT (HAB_ROM_VECTOR_BASE + 0x08) +#define HAB_ROM_VECTOR_TABLE_CHECK_TARGET (HAB_ROM_VECTOR_BASE + 0x0C) +#define HAB_ROM_VECTOR_TABLE_AUTHENTICATE_IMAGE (HAB_ROM_VECTOR_BASE + 0x10) +#define HAB_ROM_VECTOR_TABLE_RUN_DCD (HAB_ROM_VECTOR_BASE + 0x14) +#define HAB_ROM_VECTOR_TABLE_RUN_CSF (HAB_ROM_VECTOR_BASE + 0x18) +#define HAB_ROM_VECTOR_TABLE_ASSERT (HAB_ROM_VECTOR_BASE + 0x1C) +#define HAB_ROM_VECTOR_TABLE_REPORT_EVENT (HAB_ROM_VECTOR_BASE + 0x20) +#define HAB_ROM_VECTOR_TABLE_REPORT_STATUS (HAB_ROM_VECTOR_BASE + 0x24) +#define HAB_ROM_VECTOR_TABLE_FAILSAFE (HAB_ROM_VECTOR_BASE + 0x28) + +#endif /* __IMX_HAB_H__ */ -- 2.30.2