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 23 static inline void idte3_enable(cpu_context_t *ctx) 24 { 25 } 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 } 31 static inline void idte3_init_percpu_once_regs(size_t security_state) 32 { 33 } 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