329,353c329,330
< // Check for traps to supervisor (FP/SIMD regs)
< if (el <= EL1 && msrMrs64TrapToSup(flat_idx, el, Cpacr64))
< return std::make_shared<SupervisorTrap>(machInst, 0x1E00000,
< EC_TRAPPED_SIMD_FP);
<
< bool is_vfp_neon = false;
<
< // Check for traps to hypervisor
< if ((ArmSystem::haveVirtualization(xc->tcBase()) && el <= EL2) &&
< msrMrs64TrapToHyp(flat_idx, el, %s, CptrEl264, Hcr64,
< Scr64, cpsr, &is_vfp_neon)) {
<
< return std::make_shared<HypervisorTrap>(
< machInst, is_vfp_neon ? 0x1E00000 : imm,
< is_vfp_neon ? EC_TRAPPED_SIMD_FP : EC_TRAPPED_MSR_MRS_64);
< }
<
< // Check for traps to secure monitor
< if ((ArmSystem::haveSecurity(xc->tcBase()) && el <= EL3) &&
< msrMrs64TrapToMon(flat_idx, CptrEl364, el, &is_vfp_neon)) {
< return std::make_shared<SecureMonitorTrap>(
< machInst,
< is_vfp_neon ? 0x1E00000 : imm,
< is_vfp_neon ? EC_TRAPPED_SIMD_FP : EC_TRAPPED_MSR_MRS_64);
< }
---
> fault = this->trap(xc->tcBase(), flat_idx, el, imm);
> if (fault != NoFault) return fault;
363c340
< ''' % (msrMrs64EnabledCheckCode % ('Read', 'true'),)
---
> ''' % (msrMrs64EnabledCheckCode % ('Read'),)
387c364
< ''' % (msrMrs64EnabledCheckCode % ('Write', 'false'),)
---
> ''' % (msrMrs64EnabledCheckCode % ('Write'),)
410c387
< ''' % (msrMrs64EnabledCheckCode % ('Write', 'false'),)
---
> ''' % (msrMrs64EnabledCheckCode % ('Write'),)