target-arm: Log AArch64 exception returns
We already log exception entry; add logging of the AArch64 exception return path as well. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
This commit is contained in:
parent
92204403ef
commit
c9b61d9aa1
|
@ -17,6 +17,7 @@
|
||||||
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "qemu/osdep.h"
|
#include "qemu/osdep.h"
|
||||||
|
#include "qemu/log.h"
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
#include "exec/helper-proto.h"
|
#include "exec/helper-proto.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
|
@ -972,6 +973,9 @@ void HELPER(exception_return)(CPUARMState *env)
|
||||||
} else {
|
} else {
|
||||||
env->regs[15] = env->elr_el[cur_el] & ~0x3;
|
env->regs[15] = env->elr_el[cur_el] & ~0x3;
|
||||||
}
|
}
|
||||||
|
qemu_log_mask(CPU_LOG_INT, "Exception return from AArch64 EL%d to "
|
||||||
|
"AArch32 EL%d PC 0x%" PRIx32 "\n",
|
||||||
|
cur_el, new_el, env->regs[15]);
|
||||||
} else {
|
} else {
|
||||||
env->aarch64 = 1;
|
env->aarch64 = 1;
|
||||||
pstate_write(env, spsr);
|
pstate_write(env, spsr);
|
||||||
|
@ -980,6 +984,9 @@ void HELPER(exception_return)(CPUARMState *env)
|
||||||
}
|
}
|
||||||
aarch64_restore_sp(env, new_el);
|
aarch64_restore_sp(env, new_el);
|
||||||
env->pc = env->elr_el[cur_el];
|
env->pc = env->elr_el[cur_el];
|
||||||
|
qemu_log_mask(CPU_LOG_INT, "Exception return from AArch64 EL%d to "
|
||||||
|
"AArch64 EL%d PC 0x%" PRIx64 "\n",
|
||||||
|
cur_el, new_el, env->pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
arm_call_el_change_hook(arm_env_get_cpu(env));
|
arm_call_el_change_hook(arm_env_get_cpu(env));
|
||||||
|
@ -1002,6 +1009,8 @@ illegal_return:
|
||||||
if (!arm_singlestep_active(env)) {
|
if (!arm_singlestep_active(env)) {
|
||||||
env->pstate &= ~PSTATE_SS;
|
env->pstate &= ~PSTATE_SS;
|
||||||
}
|
}
|
||||||
|
qemu_log_mask(LOG_GUEST_ERROR, "Illegal exception return at EL%d: "
|
||||||
|
"resuming execution at 0x%" PRIx64 "\n", cur_el, env->pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return true if the linked breakpoint entry lbn passes its checks */
|
/* Return true if the linked breakpoint entry lbn passes its checks */
|
||||||
|
|
Loading…
Reference in New Issue