faults.cc (11150:a8a64cca231b) | faults.cc (11496:8e14075966d0) |
---|---|
1/* | 1/* |
2 * Copyright (c) 2010, 2012-2014 ARM Limited | 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 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 932 unchanged lines hidden (view full) --- 943 // Get effective fault source encoding 944 CPSR cpsr = tc->readMiscReg(MISCREG_CPSR); 945 FSR fsr = getFsr(tc); 946 947 // source must be determined BEFORE invoking generic routines which will 948 // try to set hsr etc. and are based upon source! 949 ArmFaultVals<T>::invoke(tc, inst); 950 | 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 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 932 unchanged lines hidden (view full) --- 943 // Get effective fault source encoding 944 CPSR cpsr = tc->readMiscReg(MISCREG_CPSR); 945 FSR fsr = getFsr(tc); 946 947 // source must be determined BEFORE invoking generic routines which will 948 // try to set hsr etc. and are based upon source! 949 ArmFaultVals<T>::invoke(tc, inst); 950 |
951 if (cpsr.width) { // AArch32 | 951 if (!this->to64) { // AArch32 |
952 if (cpsr.mode == MODE_HYP) { 953 tc->setMiscReg(T::HFarIndex, faultAddr); 954 } else if (stage2) { 955 tc->setMiscReg(MISCREG_HPFAR, (faultAddr >> 8) & ~0xf); 956 tc->setMiscReg(T::HFarIndex, OVAddr); 957 } else { 958 tc->setMiscReg(T::FsrIndex, fsr); 959 tc->setMiscReg(T::FarIndex, faultAddr); --- 481 unchanged lines hidden --- | 952 if (cpsr.mode == MODE_HYP) { 953 tc->setMiscReg(T::HFarIndex, faultAddr); 954 } else if (stage2) { 955 tc->setMiscReg(MISCREG_HPFAR, (faultAddr >> 8) & ~0xf); 956 tc->setMiscReg(T::HFarIndex, OVAddr); 957 } else { 958 tc->setMiscReg(T::FsrIndex, fsr); 959 tc->setMiscReg(T::FarIndex, faultAddr); --- 481 unchanged lines hidden --- |