mirror of https://github.com/xemu-project/xemu.git
target-arm: Move arm_log_exception() into internals.h
Move arm_log_exception() into internals.h so we can use it from helper-a64.c for the AArch64 exception entry code. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
This commit is contained in:
parent
a65f1de982
commit
2f2a00aec9
|
@ -2957,37 +2957,6 @@ static void do_v7m_exception_exit(CPUARMState *env)
|
||||||
pointer. */
|
pointer. */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Exception names for debug logging; note that not all of these
|
|
||||||
* precisely correspond to architectural exceptions.
|
|
||||||
*/
|
|
||||||
static const char * const excnames[] = {
|
|
||||||
[EXCP_UDEF] = "Undefined Instruction",
|
|
||||||
[EXCP_SWI] = "SVC",
|
|
||||||
[EXCP_PREFETCH_ABORT] = "Prefetch Abort",
|
|
||||||
[EXCP_DATA_ABORT] = "Data Abort",
|
|
||||||
[EXCP_IRQ] = "IRQ",
|
|
||||||
[EXCP_FIQ] = "FIQ",
|
|
||||||
[EXCP_BKPT] = "Breakpoint",
|
|
||||||
[EXCP_EXCEPTION_EXIT] = "QEMU v7M exception exit",
|
|
||||||
[EXCP_KERNEL_TRAP] = "QEMU intercept of kernel commpage",
|
|
||||||
[EXCP_STREX] = "QEMU intercept of STREX",
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline void arm_log_exception(int idx)
|
|
||||||
{
|
|
||||||
if (qemu_loglevel_mask(CPU_LOG_INT)) {
|
|
||||||
const char *exc = NULL;
|
|
||||||
|
|
||||||
if (idx >= 0 && idx < ARRAY_SIZE(excnames)) {
|
|
||||||
exc = excnames[idx];
|
|
||||||
}
|
|
||||||
if (!exc) {
|
|
||||||
exc = "unknown";
|
|
||||||
}
|
|
||||||
qemu_log_mask(CPU_LOG_INT, "Taking exception %d [%s]\n", idx, exc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void arm_v7m_cpu_do_interrupt(CPUState *cs)
|
void arm_v7m_cpu_do_interrupt(CPUState *cs)
|
||||||
{
|
{
|
||||||
ARMCPU *cpu = ARM_CPU(cs);
|
ARMCPU *cpu = ARM_CPU(cs);
|
||||||
|
|
|
@ -39,6 +39,37 @@ static inline bool excp_is_internal(int excp)
|
||||||
|| excp == EXCP_STREX;
|
|| excp == EXCP_STREX;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Exception names for debug logging; note that not all of these
|
||||||
|
* precisely correspond to architectural exceptions.
|
||||||
|
*/
|
||||||
|
static const char * const excnames[] = {
|
||||||
|
[EXCP_UDEF] = "Undefined Instruction",
|
||||||
|
[EXCP_SWI] = "SVC",
|
||||||
|
[EXCP_PREFETCH_ABORT] = "Prefetch Abort",
|
||||||
|
[EXCP_DATA_ABORT] = "Data Abort",
|
||||||
|
[EXCP_IRQ] = "IRQ",
|
||||||
|
[EXCP_FIQ] = "FIQ",
|
||||||
|
[EXCP_BKPT] = "Breakpoint",
|
||||||
|
[EXCP_EXCEPTION_EXIT] = "QEMU v7M exception exit",
|
||||||
|
[EXCP_KERNEL_TRAP] = "QEMU intercept of kernel commpage",
|
||||||
|
[EXCP_STREX] = "QEMU intercept of STREX",
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline void arm_log_exception(int idx)
|
||||||
|
{
|
||||||
|
if (qemu_loglevel_mask(CPU_LOG_INT)) {
|
||||||
|
const char *exc = NULL;
|
||||||
|
|
||||||
|
if (idx >= 0 && idx < ARRAY_SIZE(excnames)) {
|
||||||
|
exc = excnames[idx];
|
||||||
|
}
|
||||||
|
if (!exc) {
|
||||||
|
exc = "unknown";
|
||||||
|
}
|
||||||
|
qemu_log_mask(CPU_LOG_INT, "Taking exception %d [%s]\n", idx, exc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Scale factor for generic timers, ie number of ns per tick.
|
/* Scale factor for generic timers, ie number of ns per tick.
|
||||||
* This gives a 62.5MHz timer.
|
* This gives a 62.5MHz timer.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue