if (cpu_isar_feature(aa64_mec, cpu)) {
env->cp15.scr_el3 |= SCR_MECEN;
}
+ if (cpu_isar_feature(aa64_fpmr, cpu)) {
+ env->cp15.scr_el3 |= SCR_ENFPM;
+ }
}
if (target_el == 2) {
if (cpu_isar_feature(aa64_mec, cpu)) {
valid_mask |= SCR_MECEN;
}
+ if (cpu_isar_feature(aa64_fpmr, cpu)) {
+ valid_mask |= SCR_ENFPM;
+ }
} else {
valid_mask &= ~(SCR_RW | SCR_ST);
if (cpu_isar_feature(aa32_ras, cpu)) {
if (cpu_isar_feature(aa64_gcs, cpu)) {
valid_mask |= HCRX_GCSEN;
}
+ if (cpu_isar_feature(aa64_fpmr, cpu)) {
+ valid_mask |= HCRX_ENFPM;
+ }
/* Clear RES0 bits. */
env->cp15.hcrx_el2 = value & valid_mask;
if (cpu_isar_feature(aa64_gcs, cpu)) {
hcrx |= HCRX_GCSEN;
}
+ if (cpu_isar_feature(aa64_fpmr, cpu)) {
+ hcrx |= HCRX_ENFPM;
+ }
return hcrx;
}
if (arm_feature(env, ARM_FEATURE_EL3) && !(env->cp15.scr_el3 & SCR_HXEN)) {