1 /*
2 * Copyright (c) 2025-2026, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7 #ifndef IDTE3_H
8 #define IDTE3_H
9
10 #ifdef IMAGE_BL31
11 #include <arch.h>
12 #include <bl31/sync_handle.h>
13 #include <context.h>
14 #include <lib/el3_runtime/cpu_data.h>
15
16 #if ENABLE_FEAT_IDTE3
17 void idte3_enable(cpu_context_t *ctx);
18 int handle_idreg_trap(uint8_t rt, uint64_t idreg, cpu_context_t *ctx,
19 u_register_t flags);
20 void idte3_init_cached_idregs_per_world(size_t security_state);
21 void idte3_init_percpu_once_regs(size_t security_state);
22 #else
idte3_enable(cpu_context_t * ctx)23 static inline void idte3_enable(cpu_context_t *ctx)
24 {
25 }
handle_idreg_trap(uint8_t rt,uint64_t idreg,cpu_context_t * ctx,u_register_t flags)26 static inline int handle_idreg_trap(uint8_t rt, uint64_t idreg,
27 cpu_context_t *ctx, u_register_t flags)
28 {
29 return TRAP_RET_UNHANDLED;
30 }
idte3_init_percpu_once_regs(size_t security_state)31 static inline void idte3_init_percpu_once_regs(size_t security_state)
32 {
33 }
idte3_init_cached_idregs_per_world(size_t security_state)34 static inline void idte3_init_cached_idregs_per_world(size_t security_state)
35 {
36 }
37 #endif /* ENABLE_FEAT_IDTE3 */
38 #endif /* IMAGE_BL31 */
39 #endif /* IDTE3_H */
40