mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2026-07-03 22:28:39 +00:00
All BLs have a bl_setup() for things that need to happen early, a fall back into assembly and then bl_main() for the main functionality. This was necessary in order to fiddle with PAuth related things that tend to break C calls. Since then PAuth's enablement has seen a lot of refactoring and this is now worked around cleanly so the distinction can be removed. The only tradeoff is that this requires pauth to not be used for the top-level main function. There are two main benefits to doing this: First, code is easier to understand as it's all together and the entrypoint is smaller. Second, the compiler gets to see more of the code and apply optimisations (importantly LTO). Change-Id: Iddb93551115a2048988017547eb7b8db441dbd37 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
25 lines
774 B
C
25 lines
774 B
C
/*
|
|
* Copyright (c) 2013-2025, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef BL31_H
|
|
#define BL31_H
|
|
|
|
#include <stdint.h>
|
|
|
|
/*******************************************************************************
|
|
* Function prototypes
|
|
******************************************************************************/
|
|
void bl31_next_el_arch_setup(uint32_t security_state);
|
|
void bl31_set_next_image_type(uint32_t security_state);
|
|
void bl31_prepare_next_image_entry(void);
|
|
void bl31_register_bl32_init(int32_t (*func)(void));
|
|
void bl31_register_rmm_init(int32_t (*func)(void));
|
|
void bl31_warm_entrypoint(void);
|
|
void bl31_main(u_register_t arg0, u_register_t arg1, u_register_t arg2,
|
|
u_register_t arg3);
|
|
|
|
#endif /* BL31_H */
|