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 ---