Lines Matching defs:ctx

45 static void manage_extensions_nonsecure(cpu_context_t *ctx);
46 static void manage_extensions_secure(cpu_context_t *ctx);
49 static void setup_el1_context(cpu_context_t *ctx, const struct entry_point_info *ep)
93 write_ctx_reg(get_el1_sysregs_ctx(ctx), CTX_SCTLR_EL1, sctlr_elx);
103 write_ctx_reg((get_el1_sysregs_ctx(ctx)), (CTX_ACTLR_EL1), (actlr_elx));
108 * and updates the cpu context specified by 'ctx'.
110 static void setup_secure_context(cpu_context_t *ctx, const struct entry_point_info *ep)
115 state = get_el3state_ctx(ctx);
150 setup_el1_context(ctx, ep);
153 manage_extensions_secure(ctx);
171 * and updates the cpu context specified by 'ctx'.
173 static void setup_realm_context(cpu_context_t *ctx, const struct entry_point_info *ep)
178 state = get_el3state_ctx(ctx);
194 * and updates the cpu context specified by 'ctx'.
196 static void setup_ns_context(cpu_context_t *ctx, const struct entry_point_info *ep)
201 state = get_el3state_ctx(ctx);
266 setup_el1_context(ctx, ep);
277 write_ctx_reg(get_el2_sysregs_ctx(ctx), CTX_SCTLR_EL2,
289 write_ctx_reg(get_el2_sysregs_ctx(ctx), CTX_HCRX_EL2,
299 write_ctx_reg(get_el2_sysregs_ctx(ctx), CTX_HFGITR_EL2,
301 write_ctx_reg(get_el2_sysregs_ctx(ctx), CTX_HFGRTR_EL2,
303 write_ctx_reg(get_el2_sysregs_ctx(ctx), CTX_HFGWTR_EL2,
308 manage_extensions_nonsecure(ctx);
312 * The following function performs initialization of the cpu_context 'ctx'
319 static void setup_context_common(cpu_context_t *ctx, const entry_point_info_t *ep)
325 state = get_el3state_ctx(ctx);
328 zeromem(ctx, sizeof(*ctx));
337 el2_sysregs_t *el2_ctx = get_el2_sysregs_ctx(ctx);
487 write_ctx_reg(get_el3state_ctx(ctx), CTX_MPAM3_EL3, \
503 gp_regs = get_gpregs_ctx(ctx);
529 * This is the high-level function used to initialize the cpu_context 'ctx' for
533 void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep)
537 assert(ctx != NULL);
543 setup_context_common(ctx, ep);
550 setup_secure_context(ctx, ep);
554 setup_realm_context(ctx, ep);
558 setup_ns_context(ctx, ep);
682 static void manage_extensions_nonsecure(cpu_context_t *ctx)
686 amu_enable(ctx);
690 sme_enable(ctx);
694 mpam_enable(ctx);
696 pmuv3_enable(ctx);
766 static void manage_extensions_secure(cpu_context_t *ctx)
776 sme_enable(ctx);
782 sme_disable(ctx);
796 cpu_context_t *ctx;
797 ctx = cm_get_context_by_index(cpu_idx, GET_SECURITY_STATE(ep->h.attr));
798 cm_setup_context(ctx, ep);
808 cpu_context_t *ctx;
809 ctx = cm_get_context(GET_SECURITY_STATE(ep->h.attr));
810 cm_setup_context(ctx, ep);
814 static void init_nonsecure_el2_unused(cpu_context_t *ctx)
821 scr_el3 = read_ctx_reg(get_el3state_ctx(ctx), CTX_SCR_EL3);
930 cpu_context_t *ctx = cm_get_context(security_state);
932 assert(ctx != NULL);
937 scr_el3 = read_ctx_reg(get_el3state_ctx(ctx),
972 sctlr_elx = read_ctx_reg(get_el1_sysregs_ctx(ctx),
986 init_nonsecure_el2_unused(ctx);
996 static void el2_sysregs_context_save_fgt(el2_sysregs_t *ctx)
998 write_ctx_reg(ctx, CTX_HDFGRTR_EL2, read_hdfgrtr_el2());
1000 write_ctx_reg(ctx, CTX_HAFGRTR_EL2, read_hafgrtr_el2());
1002 write_ctx_reg(ctx, CTX_HDFGWTR_EL2, read_hdfgwtr_el2());
1003 write_ctx_reg(ctx, CTX_HFGITR_EL2, read_hfgitr_el2());
1004 write_ctx_reg(ctx, CTX_HFGRTR_EL2, read_hfgrtr_el2());
1005 write_ctx_reg(ctx, CTX_HFGWTR_EL2, read_hfgwtr_el2());
1008 static void el2_sysregs_context_restore_fgt(el2_sysregs_t *ctx)
1010 write_hdfgrtr_el2(read_ctx_reg(ctx, CTX_HDFGRTR_EL2));
1012 write_hafgrtr_el2(read_ctx_reg(ctx, CTX_HAFGRTR_EL2));
1014 write_hdfgwtr_el2(read_ctx_reg(ctx, CTX_HDFGWTR_EL2));
1015 write_hfgitr_el2(read_ctx_reg(ctx, CTX_HFGITR_EL2));
1016 write_hfgrtr_el2(read_ctx_reg(ctx, CTX_HFGRTR_EL2));
1017 write_hfgwtr_el2(read_ctx_reg(ctx, CTX_HFGWTR_EL2));
1020 static void el2_sysregs_context_save_mpam(el2_sysregs_t *ctx)
1024 write_ctx_reg(ctx, CTX_MPAM2_EL2, read_mpam2_el2());
1038 write_ctx_reg(ctx, CTX_MPAMHCR_EL2, read_mpamhcr_el2());
1039 write_ctx_reg(ctx, CTX_MPAMVPM0_EL2, read_mpamvpm0_el2());
1040 write_ctx_reg(ctx, CTX_MPAMVPMV_EL2, read_mpamvpmv_el2());
1048 write_ctx_reg(ctx, CTX_MPAMVPM7_EL2, read_mpamvpm7_el2());
1051 write_ctx_reg(ctx, CTX_MPAMVPM6_EL2, read_mpamvpm6_el2());
1054 write_ctx_reg(ctx, CTX_MPAMVPM5_EL2, read_mpamvpm5_el2());
1057 write_ctx_reg(ctx, CTX_MPAMVPM4_EL2, read_mpamvpm4_el2());
1060 write_ctx_reg(ctx, CTX_MPAMVPM3_EL2, read_mpamvpm3_el2());
1063 write_ctx_reg(ctx, CTX_MPAMVPM2_EL2, read_mpamvpm2_el2());
1066 write_ctx_reg(ctx, CTX_MPAMVPM1_EL2, read_mpamvpm1_el2());
1071 static void el2_sysregs_context_restore_mpam(el2_sysregs_t *ctx)
1075 write_mpam2_el2(read_ctx_reg(ctx, CTX_MPAM2_EL2));
1081 write_mpamhcr_el2(read_ctx_reg(ctx, CTX_MPAMHCR_EL2));
1082 write_mpamvpm0_el2(read_ctx_reg(ctx, CTX_MPAMVPM0_EL2));
1083 write_mpamvpmv_el2(read_ctx_reg(ctx, CTX_MPAMVPMV_EL2));
1087 write_mpamvpm7_el2(read_ctx_reg(ctx, CTX_MPAMVPM7_EL2));
1090 write_mpamvpm6_el2(read_ctx_reg(ctx, CTX_MPAMVPM6_EL2));
1093 write_mpamvpm5_el2(read_ctx_reg(ctx, CTX_MPAMVPM5_EL2));
1096 write_mpamvpm4_el2(read_ctx_reg(ctx, CTX_MPAMVPM4_EL2));
1099 write_mpamvpm3_el2(read_ctx_reg(ctx, CTX_MPAMVPM3_EL2));
1102 write_mpamvpm2_el2(read_ctx_reg(ctx, CTX_MPAMVPM2_EL2));
1105 write_mpamvpm1_el2(read_ctx_reg(ctx, CTX_MPAMVPM1_EL2));
1119 static void el2_sysregs_context_save_common(el2_sysregs_t *ctx)
1121 write_ctx_reg(ctx, CTX_ACTLR_EL2, read_actlr_el2());
1122 write_ctx_reg(ctx, CTX_AFSR0_EL2, read_afsr0_el2());
1123 write_ctx_reg(ctx, CTX_AFSR1_EL2, read_afsr1_el2());
1124 write_ctx_reg(ctx, CTX_AMAIR_EL2, read_amair_el2());
1125 write_ctx_reg(ctx, CTX_CNTHCTL_EL2, read_cnthctl_el2());
1126 write_ctx_reg(ctx, CTX_CNTVOFF_EL2, read_cntvoff_el2());
1127 write_ctx_reg(ctx, CTX_CPTR_EL2, read_cptr_el2());
1129 write_ctx_reg(ctx, CTX_DBGVCR32_EL2, read_dbgvcr32_el2());
1131 write_ctx_reg(ctx, CTX_ELR_EL2, read_elr_el2());
1132 write_ctx_reg(ctx, CTX_ESR_EL2, read_esr_el2());
1133 write_ctx_reg(ctx, CTX_FAR_EL2, read_far_el2());
1134 write_ctx_reg(ctx, CTX_HACR_EL2, read_hacr_el2());
1135 write_ctx_reg(ctx, CTX_HCR_EL2, read_hcr_el2());
1136 write_ctx_reg(ctx, CTX_HPFAR_EL2, read_hpfar_el2());
1137 write_ctx_reg(ctx, CTX_HSTR_EL2, read_hstr_el2());
1147 write_ctx_reg(ctx, CTX_ICC_SRE_EL2, read_icc_sre_el2());
1152 write_ctx_reg(ctx, CTX_ICH_HCR_EL2, read_ich_hcr_el2());
1153 write_ctx_reg(ctx, CTX_ICH_VMCR_EL2, read_ich_vmcr_el2());
1154 write_ctx_reg(ctx, CTX_MAIR_EL2, read_mair_el2());
1155 write_ctx_reg(ctx, CTX_MDCR_EL2, read_mdcr_el2());
1156 write_ctx_reg(ctx, CTX_SCTLR_EL2, read_sctlr_el2());
1157 write_ctx_reg(ctx, CTX_SPSR_EL2, read_spsr_el2());
1158 write_ctx_reg(ctx, CTX_SP_EL2, read_sp_el2());
1159 write_ctx_reg(ctx, CTX_TCR_EL2, read_tcr_el2());
1160 write_ctx_reg(ctx, CTX_TPIDR_EL2, read_tpidr_el2());
1161 write_ctx_reg(ctx, CTX_TTBR0_EL2, read_ttbr0_el2());
1162 write_ctx_reg(ctx, CTX_VBAR_EL2, read_vbar_el2());
1163 write_ctx_reg(ctx, CTX_VMPIDR_EL2, read_vmpidr_el2());
1164 write_ctx_reg(ctx, CTX_VPIDR_EL2, read_vpidr_el2());
1165 write_ctx_reg(ctx, CTX_VTCR_EL2, read_vtcr_el2());
1166 write_ctx_reg(ctx, CTX_VTTBR_EL2, read_vttbr_el2());
1169 static void el2_sysregs_context_restore_common(el2_sysregs_t *ctx)
1171 write_actlr_el2(read_ctx_reg(ctx, CTX_ACTLR_EL2));
1172 write_afsr0_el2(read_ctx_reg(ctx, CTX_AFSR0_EL2));
1173 write_afsr1_el2(read_ctx_reg(ctx, CTX_AFSR1_EL2));
1174 write_amair_el2(read_ctx_reg(ctx, CTX_AMAIR_EL2));
1175 write_cnthctl_el2(read_ctx_reg(ctx, CTX_CNTHCTL_EL2));
1176 write_cntvoff_el2(read_ctx_reg(ctx, CTX_CNTVOFF_EL2));
1177 write_cptr_el2(read_ctx_reg(ctx, CTX_CPTR_EL2));
1179 write_dbgvcr32_el2(read_ctx_reg(ctx, CTX_DBGVCR32_EL2));
1181 write_elr_el2(read_ctx_reg(ctx, CTX_ELR_EL2));
1182 write_esr_el2(read_ctx_reg(ctx, CTX_ESR_EL2));
1183 write_far_el2(read_ctx_reg(ctx, CTX_FAR_EL2));
1184 write_hacr_el2(read_ctx_reg(ctx, CTX_HACR_EL2));
1185 write_hcr_el2(read_ctx_reg(ctx, CTX_HCR_EL2));
1186 write_hpfar_el2(read_ctx_reg(ctx, CTX_HPFAR_EL2));
1187 write_hstr_el2(read_ctx_reg(ctx, CTX_HSTR_EL2));
1197 write_icc_sre_el2(read_ctx_reg(ctx, CTX_ICC_SRE_EL2));
1202 write_ich_hcr_el2(read_ctx_reg(ctx, CTX_ICH_HCR_EL2));
1203 write_ich_vmcr_el2(read_ctx_reg(ctx, CTX_ICH_VMCR_EL2));
1204 write_mair_el2(read_ctx_reg(ctx, CTX_MAIR_EL2));
1205 write_mdcr_el2(read_ctx_reg(ctx, CTX_MDCR_EL2));
1206 write_sctlr_el2(read_ctx_reg(ctx, CTX_SCTLR_EL2));
1207 write_spsr_el2(read_ctx_reg(ctx, CTX_SPSR_EL2));
1208 write_sp_el2(read_ctx_reg(ctx, CTX_SP_EL2));
1209 write_tcr_el2(read_ctx_reg(ctx, CTX_TCR_EL2));
1210 write_tpidr_el2(read_ctx_reg(ctx, CTX_TPIDR_EL2));
1211 write_ttbr0_el2(read_ctx_reg(ctx, CTX_TTBR0_EL2));
1212 write_vbar_el2(read_ctx_reg(ctx, CTX_VBAR_EL2));
1213 write_vmpidr_el2(read_ctx_reg(ctx, CTX_VMPIDR_EL2));
1214 write_vpidr_el2(read_ctx_reg(ctx, CTX_VPIDR_EL2));
1215 write_vtcr_el2(read_ctx_reg(ctx, CTX_VTCR_EL2));
1216 write_vttbr_el2(read_ctx_reg(ctx, CTX_VTTBR_EL2));
1224 cpu_context_t *ctx;
1227 ctx = cm_get_context(security_state);
1228 assert(ctx != NULL);
1230 el2_sysregs_ctx = get_el2_sysregs_ctx(ctx);
1297 cpu_context_t *ctx;
1300 ctx = cm_get_context(security_state);
1301 assert(ctx != NULL);
1303 el2_sysregs_ctx = get_el2_sysregs_ctx(ctx);
1375 cpu_context_t *ctx = cm_get_context(NON_SECURE);
1376 assert(ctx != NULL);
1379 u_register_t scr_el3 = read_ctx_reg(get_el3state_ctx(ctx), CTX_SCR_EL3);
1400 cpu_context_t *ctx;
1402 ctx = cm_get_context(security_state);
1403 assert(ctx != NULL);
1405 el1_sysregs_context_save(get_el1_sysregs_ctx(ctx));
1417 cpu_context_t *ctx;
1419 ctx = cm_get_context(security_state);
1420 assert(ctx != NULL);
1422 el1_sysregs_context_restore(get_el1_sysregs_ctx(ctx));
1438 cpu_context_t *ctx;
1441 ctx = cm_get_context(security_state);
1442 assert(ctx != NULL);
1445 state = get_el3state_ctx(ctx);
1456 cpu_context_t *ctx;
1459 ctx = cm_get_context(security_state);
1460 assert(ctx != NULL);
1463 state = get_el3state_ctx(ctx);
1477 cpu_context_t *ctx;
1481 ctx = cm_get_context(security_state);
1482 assert(ctx != NULL);
1494 state = get_el3state_ctx(ctx);
1507 cpu_context_t *ctx;
1510 ctx = cm_get_context(security_state);
1511 assert(ctx != NULL);
1514 state = get_el3state_ctx(ctx);
1525 cpu_context_t *ctx;
1527 ctx = cm_get_context(security_state);
1528 assert(ctx != NULL);
1530 cm_set_next_context(ctx);