1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*
- * Copyright (c) 2017-2021, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- #ifndef EP_INFO_H
- #define EP_INFO_H
- #include <common/param_header.h>
- #ifndef __ASSEMBLER__
- #include <stdint.h>
- #include <lib/cassert.h>
- #endif /* __ASSEMBLER__ */
- #include <export/common/ep_info_exp.h>
- #define SECURE EP_SECURE
- #define NON_SECURE EP_NON_SECURE
- #define REALM EP_REALM
- #if ENABLE_RME
- #define sec_state_is_valid(s) (((s) == SECURE) || \
- ((s) == NON_SECURE) || \
- ((s) == REALM))
- #else
- #define sec_state_is_valid(s) (((s) == SECURE) || ((s) == NON_SECURE))
- #endif
- #define PARAM_EP_SECURITY_MASK EP_SECURITY_MASK
- #define NON_EXECUTABLE EP_NON_EXECUTABLE
- #define EXECUTABLE EP_EXECUTABLE
- /* Get/set security state of an image */
- #define GET_SECURITY_STATE(x) ((x) & EP_SECURITY_MASK)
- #define SET_SECURITY_STATE(x, security) \
- ((x) = ((x) & ~EP_SECURITY_MASK) | (security))
- #ifndef __ASSEMBLER__
- /*
- * Compile time assertions related to the 'entry_point_info' structure to
- * ensure that the assembler and the compiler view of the offsets of
- * the structure members is the same.
- */
- CASSERT(ENTRY_POINT_INFO_PC_OFFSET ==
- __builtin_offsetof(entry_point_info_t, pc), \
- assert_BL31_pc_offset_mismatch);
- #ifndef __aarch64__
- CASSERT(ENTRY_POINT_INFO_LR_SVC_OFFSET ==
- __builtin_offsetof(entry_point_info_t, lr_svc),
- assert_entrypoint_lr_offset_error);
- #endif
- CASSERT(ENTRY_POINT_INFO_ARGS_OFFSET == \
- __builtin_offsetof(entry_point_info_t, args), \
- assert_BL31_args_offset_mismatch);
- CASSERT(sizeof(uintptr_t) ==
- __builtin_offsetof(entry_point_info_t, spsr) - \
- __builtin_offsetof(entry_point_info_t, pc), \
- assert_entrypoint_and_spsr_should_be_adjacent);
- #endif /*__ASSEMBLER__*/
- #endif /* EP_INFO_H */
|