1*f396aec8SArvind Ram Prakash /* 2*f396aec8SArvind Ram Prakash * Copyright (c) 2025, Arm Limited. All rights reserved. 3*f396aec8SArvind Ram Prakash * 4*f396aec8SArvind Ram Prakash * SPDX-License-Identifier: BSD-3-Clause 5*f396aec8SArvind Ram Prakash */ 6*f396aec8SArvind Ram Prakash 7*f396aec8SArvind Ram Prakash #include <arch.h> 8*f396aec8SArvind Ram Prakash #include <arch_features.h> 9*f396aec8SArvind Ram Prakash #include <arch_helpers.h> 10*f396aec8SArvind Ram Prakash #include <context.h> 11*f396aec8SArvind Ram Prakash #include <lib/el3_runtime/context_mgmt.h> 12*f396aec8SArvind Ram Prakash #include <lib/el3_runtime/cpu_data.h> 13*f396aec8SArvind Ram Prakash #include <lib/extensions/idte3.h> 14*f396aec8SArvind Ram Prakash 15*f396aec8SArvind Ram Prakash void idte3_init_percpu_once_regs(size_t security_state) 16*f396aec8SArvind Ram Prakash { 17*f396aec8SArvind Ram Prakash assert(security_state < CPU_CONTEXT_NUM); 18*f396aec8SArvind Ram Prakash 19*f396aec8SArvind Ram Prakash percpu_idregs_t * const reg = 20*f396aec8SArvind Ram Prakash &get_cpu_data(idregs[security_state]); 21*f396aec8SArvind Ram Prakash 22*f396aec8SArvind Ram Prakash reg->id_aa64dfr0_el1 = read_id_aa64dfr0_el1(); 23*f396aec8SArvind Ram Prakash reg->id_aa64dfr1_el1 = read_id_aa64dfr1_el1(); 24*f396aec8SArvind Ram Prakash 25*f396aec8SArvind Ram Prakash update_feat_spe_idreg_field(security_state); 26*f396aec8SArvind Ram Prakash update_feat_brbe_idreg_field(security_state); 27*f396aec8SArvind Ram Prakash update_feat_trbe_idreg_field(security_state); 28*f396aec8SArvind Ram Prakash update_feat_trf_idreg_field(security_state); 29*f396aec8SArvind Ram Prakash update_feat_mtpmu_idreg_field(security_state); 30*f396aec8SArvind Ram Prakash update_feat_sebep_idreg_field(security_state); 31*f396aec8SArvind Ram Prakash update_feat_sys_reg_trace_idreg_field(security_state); 32*f396aec8SArvind Ram Prakash update_feat_debugv8p9_idreg_field(security_state); 33*f396aec8SArvind Ram Prakash update_feat_ebep_idreg_field(security_state); 34*f396aec8SArvind Ram Prakash } 35*f396aec8SArvind Ram Prakash 36*f396aec8SArvind Ram Prakash void idte3_init_cached_idregs_per_world(size_t security_state) 37*f396aec8SArvind Ram Prakash { 38*f396aec8SArvind Ram Prakash 39*f396aec8SArvind Ram Prakash assert(security_state < CPU_CONTEXT_NUM); 40*f396aec8SArvind Ram Prakash 41*f396aec8SArvind Ram Prakash per_world_context_t *per_world_ctx = &per_world_context[security_state]; 42*f396aec8SArvind Ram Prakash perworld_idregs_t *reg = &(per_world_ctx->idregs); 43*f396aec8SArvind Ram Prakash 44*f396aec8SArvind Ram Prakash reg->id_aa64pfr0_el1 = read_id_aa64pfr0_el1(); 45*f396aec8SArvind Ram Prakash reg->id_aa64pfr1_el1 = read_id_aa64pfr1_el1(); 46*f396aec8SArvind Ram Prakash reg->id_aa64pfr2_el1 = read_id_aa64pfr2_el1(); 47*f396aec8SArvind Ram Prakash reg->id_aa64smfr0_el1 = read_id_aa64smfr0_el1(); 48*f396aec8SArvind Ram Prakash reg->id_aa64isar0_el1 = read_id_aa64isar0_el1(); 49*f396aec8SArvind Ram Prakash reg->id_aa64isar1_el1 = read_id_aa64isar1_el1(); 50*f396aec8SArvind Ram Prakash reg->id_aa64isar2_el1 = read_id_aa64isar2_el1(); 51*f396aec8SArvind Ram Prakash reg->id_aa64isar3_el1 = read_id_aa64isar3_el1(); 52*f396aec8SArvind Ram Prakash reg->id_aa64mmfr0_el1 = read_id_aa64mmfr0_el1(); 53*f396aec8SArvind Ram Prakash reg->id_aa64mmfr1_el1 = read_id_aa64mmfr1_el1(); 54*f396aec8SArvind Ram Prakash reg->id_aa64mmfr2_el1 = read_id_aa64mmfr2_el1(); 55*f396aec8SArvind Ram Prakash reg->id_aa64mmfr3_el1 = read_id_aa64mmfr3_el1(); 56*f396aec8SArvind Ram Prakash reg->id_aa64mmfr4_el1 = read_id_aa64mmfr4_el1(); 57*f396aec8SArvind Ram Prakash 58*f396aec8SArvind Ram Prakash update_feat_pan_idreg_field(security_state); 59*f396aec8SArvind Ram Prakash update_feat_vhe_idreg_field(security_state); 60*f396aec8SArvind Ram Prakash update_feat_ttcnp_idreg_field(security_state); 61*f396aec8SArvind Ram Prakash update_feat_uao_idreg_field(security_state); 62*f396aec8SArvind Ram Prakash update_feat_pacqarma3_idreg_field(security_state); 63*f396aec8SArvind Ram Prakash update_feat_pauth_idreg_field(security_state); 64*f396aec8SArvind Ram Prakash update_feat_ttst_idreg_field(security_state); 65*f396aec8SArvind Ram Prakash update_feat_bti_idreg_field(security_state); 66*f396aec8SArvind Ram Prakash update_feat_mte2_idreg_field(security_state); 67*f396aec8SArvind Ram Prakash update_feat_ssbs_idreg_field(security_state); 68*f396aec8SArvind Ram Prakash update_feat_nmi_idreg_field(security_state); 69*f396aec8SArvind Ram Prakash update_feat_gcs_idreg_field(security_state); 70*f396aec8SArvind Ram Prakash update_feat_ebep_idreg_field(security_state); 71*f396aec8SArvind Ram Prakash update_feat_sel2_idreg_field(security_state); 72*f396aec8SArvind Ram Prakash update_feat_twed_idreg_field(security_state); 73*f396aec8SArvind Ram Prakash update_feat_fgt_idreg_field(security_state); 74*f396aec8SArvind Ram Prakash update_feat_ecv_idreg_field(security_state); 75*f396aec8SArvind Ram Prakash update_feat_rng_idreg_field(security_state); 76*f396aec8SArvind Ram Prakash update_feat_tcr2_idreg_field(security_state); 77*f396aec8SArvind Ram Prakash update_feat_s2poe_idreg_field(security_state); 78*f396aec8SArvind Ram Prakash update_feat_s1poe_idreg_field(security_state); 79*f396aec8SArvind Ram Prakash update_feat_s2pie_idreg_field(security_state); 80*f396aec8SArvind Ram Prakash update_feat_s1pie_idreg_field(security_state); 81*f396aec8SArvind Ram Prakash update_feat_amu_idreg_field(security_state); 82*f396aec8SArvind Ram Prakash update_feat_mpam_idreg_field(security_state); 83*f396aec8SArvind Ram Prakash update_feat_hcx_idreg_field(security_state); 84*f396aec8SArvind Ram Prakash update_feat_rng_trap_idreg_field(security_state); 85*f396aec8SArvind Ram Prakash update_feat_sb_idreg_field(security_state); 86*f396aec8SArvind Ram Prakash update_feat_csv2_2_idreg_field(security_state); 87*f396aec8SArvind Ram Prakash update_feat_sve_idreg_field(security_state); 88*f396aec8SArvind Ram Prakash update_feat_ras_idreg_field(security_state); 89*f396aec8SArvind Ram Prakash update_feat_dit_idreg_field(security_state); 90*f396aec8SArvind Ram Prakash update_feat_trbe_idreg_field(security_state); 91*f396aec8SArvind Ram Prakash update_feat_sme_idreg_field(security_state); 92*f396aec8SArvind Ram Prakash update_feat_fgt2_idreg_field(security_state); 93*f396aec8SArvind Ram Prakash update_feat_the_idreg_field(security_state); 94*f396aec8SArvind Ram Prakash update_feat_sctlr2_idreg_field(security_state); 95*f396aec8SArvind Ram Prakash update_feat_d128_idreg_field(security_state); 96*f396aec8SArvind Ram Prakash update_feat_ls64_accdata_idreg_field(security_state); 97*f396aec8SArvind Ram Prakash update_feat_fpmr_idreg_field(security_state); 98*f396aec8SArvind Ram Prakash update_feat_mops_idreg_field(security_state); 99*f396aec8SArvind Ram Prakash update_feat_fgwte3_idreg_field(security_state); 100*f396aec8SArvind Ram Prakash update_feat_cpa2_idreg_field(security_state); 101*f396aec8SArvind Ram Prakash update_feat_idte3_idreg_field(security_state); 102*f396aec8SArvind Ram Prakash } 103*f396aec8SArvind Ram Prakash 104*f396aec8SArvind Ram Prakash int handle_idreg_trap(uint64_t esr_el3, cpu_context_t *ctx, u_register_t flags) 105*f396aec8SArvind Ram Prakash { 106*f396aec8SArvind Ram Prakash uint32_t iss = (uint32_t) ESR_ELx_ISS(esr_el3); 107*f396aec8SArvind Ram Prakash uint8_t rt = (uint8_t) ISS_SYS64_RT(iss); 108*f396aec8SArvind Ram Prakash uint8_t op0 = (uint8_t) ISS_SYS64_OP0(iss); 109*f396aec8SArvind Ram Prakash uint8_t op1 = (uint8_t) ISS_SYS64_OP1(iss); 110*f396aec8SArvind Ram Prakash uint8_t CRn = (uint8_t) ISS_SYS64_CRN(iss); 111*f396aec8SArvind Ram Prakash uint8_t CRm = (uint8_t) ISS_SYS64_CRM(iss); 112*f396aec8SArvind Ram Prakash uint8_t op2 = (uint8_t) ISS_SYS64_OP2(iss); 113*f396aec8SArvind Ram Prakash 114*f396aec8SArvind Ram Prakash u_register_t idreg = esr_el3 & ESR_EL3_SYSREG_MASK; 115*f396aec8SArvind Ram Prakash 116*f396aec8SArvind Ram Prakash u_register_t value = 0ULL; 117*f396aec8SArvind Ram Prakash size_t security_state = GET_SECURITY_STATE(flags); 118*f396aec8SArvind Ram Prakash percpu_idregs_t *percpu_reg = &(get_cpu_data(idregs[security_state])); 119*f396aec8SArvind Ram Prakash 120*f396aec8SArvind Ram Prakash per_world_context_t *per_world_ctx = 121*f396aec8SArvind Ram Prakash &per_world_context[get_cpu_context_index(security_state)]; 122*f396aec8SArvind Ram Prakash perworld_idregs_t *perworld_reg = &(per_world_ctx->idregs); 123*f396aec8SArvind Ram Prakash 124*f396aec8SArvind Ram Prakash switch (idreg) { 125*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64PFR0_EL1: 126*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64pfr0_el1; 127*f396aec8SArvind Ram Prakash break; 128*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64PFR1_EL1: 129*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64pfr1_el1; 130*f396aec8SArvind Ram Prakash break; 131*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64PFR2_EL1: 132*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64pfr2_el1; 133*f396aec8SArvind Ram Prakash break; 134*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64SMFR0_EL1: 135*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64smfr0_el1; 136*f396aec8SArvind Ram Prakash break; 137*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64ISAR0_EL1: 138*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64isar0_el1; 139*f396aec8SArvind Ram Prakash break; 140*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64ISAR1_EL1: 141*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64isar1_el1; 142*f396aec8SArvind Ram Prakash break; 143*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64ISAR2_EL1: 144*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64isar2_el1; 145*f396aec8SArvind Ram Prakash break; 146*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64ISAR3_EL1: 147*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64isar3_el1; 148*f396aec8SArvind Ram Prakash break; 149*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64MMFR0_EL1: 150*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64mmfr0_el1; 151*f396aec8SArvind Ram Prakash break; 152*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64MMFR1_EL1: 153*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64mmfr1_el1; 154*f396aec8SArvind Ram Prakash break; 155*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64MMFR2_EL1: 156*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64mmfr2_el1; 157*f396aec8SArvind Ram Prakash break; 158*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64MMFR3_EL1: 159*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64mmfr3_el1; 160*f396aec8SArvind Ram Prakash break; 161*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64MMFR4_EL1: 162*f396aec8SArvind Ram Prakash value = perworld_reg->id_aa64mmfr4_el1; 163*f396aec8SArvind Ram Prakash break; 164*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64DFR0_EL1: 165*f396aec8SArvind Ram Prakash value = percpu_reg->id_aa64dfr0_el1; 166*f396aec8SArvind Ram Prakash break; 167*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64DFR1_EL1: 168*f396aec8SArvind Ram Prakash value = percpu_reg->id_aa64dfr1_el1; 169*f396aec8SArvind Ram Prakash break; 170*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64ZFR0_EL1: 171*f396aec8SArvind Ram Prakash value = read_id_aa64zfr0_el1(); 172*f396aec8SArvind Ram Prakash break; 173*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64FPFR0_EL1: 174*f396aec8SArvind Ram Prakash value = read_id_aa64fpfr0_el1(); 175*f396aec8SArvind Ram Prakash break; 176*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64DFR2_EL1: 177*f396aec8SArvind Ram Prakash value = read_id_aa64dfr2_el1(); 178*f396aec8SArvind Ram Prakash break; 179*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64AFR0_EL1: 180*f396aec8SArvind Ram Prakash value = read_id_aa64afr0_el1(); 181*f396aec8SArvind Ram Prakash break; 182*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AA64AFR1_EL1: 183*f396aec8SArvind Ram Prakash value = read_id_aa64afr1_el1(); 184*f396aec8SArvind Ram Prakash break; 185*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_GMID_EL1: 186*f396aec8SArvind Ram Prakash value = read_gmid_el1(); 187*f396aec8SArvind Ram Prakash break; 188*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_PFR0_EL1: 189*f396aec8SArvind Ram Prakash value = read_id_pfr0_el1(); 190*f396aec8SArvind Ram Prakash break; 191*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_PFR1_EL1: 192*f396aec8SArvind Ram Prakash value = read_id_pfr1_el1(); 193*f396aec8SArvind Ram Prakash break; 194*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_DFR0_EL1: 195*f396aec8SArvind Ram Prakash value = read_id_dfr0_el1(); 196*f396aec8SArvind Ram Prakash break; 197*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_AFR0_EL1: 198*f396aec8SArvind Ram Prakash value = read_id_afr0_el1(); 199*f396aec8SArvind Ram Prakash break; 200*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_PFR2_EL1: 201*f396aec8SArvind Ram Prakash value = read_id_pfr2_el1(); 202*f396aec8SArvind Ram Prakash break; 203*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_DFR1_EL1: 204*f396aec8SArvind Ram Prakash value = read_id_dfr1_el1(); 205*f396aec8SArvind Ram Prakash break; 206*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_MMFR0_EL1: 207*f396aec8SArvind Ram Prakash value = read_id_mmfr0_el1(); 208*f396aec8SArvind Ram Prakash break; 209*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_MMFR1_EL1: 210*f396aec8SArvind Ram Prakash value = read_id_mmfr1_el1(); 211*f396aec8SArvind Ram Prakash break; 212*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_MMFR2_EL1: 213*f396aec8SArvind Ram Prakash value = read_id_mmfr2_el1(); 214*f396aec8SArvind Ram Prakash break; 215*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_MMFR3_EL1: 216*f396aec8SArvind Ram Prakash value = read_id_mmfr3_el1(); 217*f396aec8SArvind Ram Prakash break; 218*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_MMFR4_EL1: 219*f396aec8SArvind Ram Prakash value = read_id_mmfr4_el1(); 220*f396aec8SArvind Ram Prakash break; 221*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_MMFR5_EL1: 222*f396aec8SArvind Ram Prakash value = read_id_mmfr5_el1(); 223*f396aec8SArvind Ram Prakash break; 224*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_ISAR0_EL1: 225*f396aec8SArvind Ram Prakash value = read_id_isar0_el1(); 226*f396aec8SArvind Ram Prakash break; 227*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_ISAR1_EL1: 228*f396aec8SArvind Ram Prakash value = read_id_isar1_el1(); 229*f396aec8SArvind Ram Prakash break; 230*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_ISAR2_EL1: 231*f396aec8SArvind Ram Prakash value = read_id_isar2_el1(); 232*f396aec8SArvind Ram Prakash break; 233*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_ISAR3_EL1: 234*f396aec8SArvind Ram Prakash value = read_id_isar3_el1(); 235*f396aec8SArvind Ram Prakash break; 236*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_ISAR4_EL1: 237*f396aec8SArvind Ram Prakash value = read_id_isar4_el1(); 238*f396aec8SArvind Ram Prakash break; 239*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_ISAR5_EL1: 240*f396aec8SArvind Ram Prakash value = read_id_isar5_el1(); 241*f396aec8SArvind Ram Prakash break; 242*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_ID_ISAR6_EL1: 243*f396aec8SArvind Ram Prakash value = read_id_isar6_el1(); 244*f396aec8SArvind Ram Prakash break; 245*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_MVFR0_EL1: 246*f396aec8SArvind Ram Prakash value = read_mvfr0_el1(); 247*f396aec8SArvind Ram Prakash break; 248*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_MVFR1_EL1: 249*f396aec8SArvind Ram Prakash value = read_mvfr1_el1(); 250*f396aec8SArvind Ram Prakash break; 251*f396aec8SArvind Ram Prakash case ESR_EL3_IDREG_MVFR2_EL1: 252*f396aec8SArvind Ram Prakash value = read_mvfr2_el1(); 253*f396aec8SArvind Ram Prakash break; 254*f396aec8SArvind Ram Prakash 255*f396aec8SArvind Ram Prakash /* 256*f396aec8SArvind Ram Prakash * Any ID register access that falls within the Group 3 257*f396aec8SArvind Ram Prakash * ID space (op0 == 3, op1 == 0, CRn == 0, CRm == {2-7}, op2 == {0-7}) 258*f396aec8SArvind Ram Prakash * but is not explicitly handled here will return 0. 259*f396aec8SArvind Ram Prakash * This covers newly introduced ID registers that were previously 260*f396aec8SArvind Ram Prakash * reserved or unknown. 261*f396aec8SArvind Ram Prakash * 262*f396aec8SArvind Ram Prakash * When new ID registers are added in future revisions of 263*f396aec8SArvind Ram Prakash * the architecture, they must be explicitly handled in this 264*f396aec8SArvind Ram Prakash * switch statement to return their actual value instead of 265*f396aec8SArvind Ram Prakash * Res0. 266*f396aec8SArvind Ram Prakash */ 267*f396aec8SArvind Ram Prakash default: 268*f396aec8SArvind Ram Prakash WARN("Unknown ID register: S%u_%u_C%u_C%u_%u is trapped\n", 269*f396aec8SArvind Ram Prakash op0, op1, CRn, CRm, op2); 270*f396aec8SArvind Ram Prakash value = 0UL; 271*f396aec8SArvind Ram Prakash } 272*f396aec8SArvind Ram Prakash 273*f396aec8SArvind Ram Prakash ctx->gpregs_ctx.ctx_regs[rt] = value; 274*f396aec8SArvind Ram Prakash return TRAP_RET_CONTINUE; 275*f396aec8SArvind Ram Prakash } 276*f396aec8SArvind Ram Prakash 277*f396aec8SArvind Ram Prakash void idte3_enable(cpu_context_t *context) 278*f396aec8SArvind Ram Prakash { 279*f396aec8SArvind Ram Prakash u_register_t reg; 280*f396aec8SArvind Ram Prakash el3_state_t *state; 281*f396aec8SArvind Ram Prakash 282*f396aec8SArvind Ram Prakash state = get_el3state_ctx(context); 283*f396aec8SArvind Ram Prakash 284*f396aec8SArvind Ram Prakash /* 285*f396aec8SArvind Ram Prakash * Setting the TID3 & TID5 bits enables trapping for 286*f396aec8SArvind Ram Prakash * group 3 ID registers and group 5 287*f396aec8SArvind Ram Prakash * ID register - GMID_EL1. 288*f396aec8SArvind Ram Prakash */ 289*f396aec8SArvind Ram Prakash 290*f396aec8SArvind Ram Prakash reg = read_ctx_reg(state, CTX_SCR_EL3); 291*f396aec8SArvind Ram Prakash reg |= (SCR_TID3_BIT | SCR_TID5_BIT); 292*f396aec8SArvind Ram Prakash write_ctx_reg(state, CTX_SCR_EL3, reg); 293*f396aec8SArvind Ram Prakash } 294