From 7ba76bd146394be87dc6480a172386a9e5e73877 Mon Sep 17 00:00:00 2001 From: Andrzej Zaborowski Date: Fri, 16 Mar 2007 17:25:41 +0100 Subject: [PATCH] PXA-specific ARM hacks. --- cpu-all.h | 3 ++- cpu-exec.c | 10 ++++++++-- target-arm/translate.c | 2 ++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/cpu-all.h b/cpu-all.h index 9b617fc..177bcba 100644 --- a/cpu-all.h +++ b/cpu-all.h @@ -763,7 +763,8 @@ void cpu_dump_statistics (CPUState *env, FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...), int flags); -void cpu_abort(CPUState *env, const char *fmt, ...); +void cpu_abort(CPUState *env, const char *fmt, ...) + __attribute__ ((__format__ (__printf__, 2, 3))); extern CPUState *first_cpu; extern CPUState *cpu_single_env; extern int code_copy_enabled; diff --git a/cpu-exec.c b/cpu-exec.c index 48c2a93..2e99de2 100644 --- a/cpu-exec.c +++ b/cpu-exec.c @@ -276,8 +276,8 @@ int cpu_exec(CPUState *env1) if (env1->halted) { /* An interrupt wakes the CPU even if the I and F CPSR bits are set. */ - if (env1->interrupt_request - & (CPU_INTERRUPT_FIQ | CPU_INTERRUPT_HARD)) { + if (env1->interrupt_request & + (CPU_INTERRUPT_FIQ | CPU_INTERRUPT_HARD | CPU_INTERRUPT_EXITTB)) { env1->halted = 0; } else { return EXCP_HALTED; @@ -528,6 +528,12 @@ int cpu_exec(CPUState *env1) env->exception_index = EXCP_IRQ; do_interrupt(env); } + if (interrupt_request & CPU_INTERRUPT_HALT) { + env->interrupt_request &= ~CPU_INTERRUPT_HALT; + env->halted = 1; + env->exception_index = EXCP_HLT; + cpu_loop_exit(); + } #elif defined(TARGET_SH4) /* XXXXX */ #endif diff --git a/target-arm/translate.c b/target-arm/translate.c index e5032c5..c476e06 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -1536,7 +1536,9 @@ static int disas_cp15_insn(DisasContext *s, uint32_t insn) gen_movl_T0_reg(s, rd); gen_op_movl_cp15_T0(insn); } +#if 0 gen_lookup_tb(s); +#endif return 0; } -- 1.4.4.3