1 /* 2 * Copyright (c) 2022, ARM Limited. All rights reserved. 3 * Copyright (c) 2023, NVIDIA Corporation. All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 * 7 * Dispatch synchronous system register traps from lower ELs. 8 */ 9 10 #include <bl31/sync_handle.h> 11 #include <context.h> 12 handle_sysreg_trap(uint64_t esr_el3,cpu_context_t * ctx)13int handle_sysreg_trap(uint64_t esr_el3, cpu_context_t *ctx) 14 { 15 uint64_t __unused opcode = esr_el3 & ISS_SYSREG_OPCODE_MASK; 16 17 #if ENABLE_FEAT_RNG_TRAP 18 if ((opcode == ISS_SYSREG_OPCODE_RNDR) || (opcode == ISS_SYSREG_OPCODE_RNDRRS)) { 19 return plat_handle_rng_trap(esr_el3, ctx); 20 } 21 #endif 22 23 #if IMPDEF_SYSREG_TRAP 24 if ((opcode & ISS_SYSREG_OPCODE_IMPDEF) == ISS_SYSREG_OPCODE_IMPDEF) { 25 return plat_handle_impdef_trap(esr_el3, ctx); 26 } 27 #endif 28 29 return TRAP_RET_UNHANDLED; 30 } 31