faults.cc (11581:d6cfd0be73b2) faults.cc (11585:83784c48fb73)
1/*
2 * Copyright (c) 2010, 2012-2014, 2016 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 955 unchanged lines hidden (view full) ---

964 tc->setMiscReg(T::FsrIndex, fsr);
965 tc->setMiscReg(T::FarIndex, faultAddr);
966 }
967 DPRINTF(Faults, "Abort Fault source=%#x fsr=%#x faultAddr=%#x "\
968 "tranMethod=%#x\n", source, fsr, faultAddr, tranMethod);
969 } else { // AArch64
970 // Set the FAR register. Nothing else to do if we are in AArch64 state
971 // because the syndrome register has already been set inside invoke64()
1/*
2 * Copyright (c) 2010, 2012-2014, 2016 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 955 unchanged lines hidden (view full) ---

964 tc->setMiscReg(T::FsrIndex, fsr);
965 tc->setMiscReg(T::FarIndex, faultAddr);
966 }
967 DPRINTF(Faults, "Abort Fault source=%#x fsr=%#x faultAddr=%#x "\
968 "tranMethod=%#x\n", source, fsr, faultAddr, tranMethod);
969 } else { // AArch64
970 // Set the FAR register. Nothing else to do if we are in AArch64 state
971 // because the syndrome register has already been set inside invoke64()
972 tc->setMiscReg(AbortFault<T>::getFaultAddrReg64(), faultAddr);
972 if (stage2) {
973 // stage 2 fault, set HPFAR_EL2 to the faulting IPA
974 // and FAR_EL2 to the Original VA
975 tc->setMiscReg(AbortFault<T>::getFaultAddrReg64(), OVAddr);
976 tc->setMiscReg(MISCREG_HPFAR_EL2, bits(faultAddr, 47, 12) << 4);
977
978 DPRINTF(Faults, "Abort Fault (Stage 2) VA: 0x%x IPA: 0x%x\n",
979 OVAddr, faultAddr);
980 } else {
981 tc->setMiscReg(AbortFault<T>::getFaultAddrReg64(), faultAddr);
982 }
973 }
974}
975
976template<class T>
977FSR
978AbortFault<T>::getFsr(ThreadContext *tc)
979{
980 FSR fsr = 0;

--- 465 unchanged lines hidden ---
983 }
984}
985
986template<class T>
987FSR
988AbortFault<T>::getFsr(ThreadContext *tc)
989{
990 FSR fsr = 0;

--- 465 unchanged lines hidden ---