From f756c7a723faa3a21dcb6bb6806e77f1628019f5 Mon Sep 17 00:00:00 2001 From: "Edgar E. Iglesias" Date: Tue, 5 Jul 2011 12:56:41 +0200 Subject: [PATCH] cris: Add break support for v10. Still no retb Signed-off-by: Edgar E. Iglesias --- target-cris/cpu.h | 1 + target-cris/helper.c | 4 ++-- target-cris/translate_v10.c | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/target-cris/cpu.h b/target-cris/cpu.h index a7603678fc..73004af010 100644 --- a/target-cris/cpu.h +++ b/target-cris/cpu.h @@ -64,6 +64,7 @@ #define PR_NRP 12 #define PR_CCS 13 #define PR_USP 14 +#define PRV10_BRP 14 #define PR_SPC 15 /* CPU flags. */ diff --git a/target-cris/helper.c b/target-cris/helper.c index 8680f436a0..dcc19ef63b 100644 --- a/target-cris/helper.c +++ b/target-cris/helper.c @@ -121,14 +121,14 @@ static void do_interruptv10(CPUCRISState *env) /* These exceptions are genereated by the core itself. ERP should point to the insn following the brk. */ ex_vec = env->trap_vector; - env->pregs[PR_ERP] = env->pc; + env->pregs[PRV10_BRP] = env->pc; break; case EXCP_NMI: /* NMI is hardwired to vector zero. */ ex_vec = 0; env->pregs[PR_CCS] &= ~M_FLAG; - env->pregs[PR_NRP] = env->pc; + env->pregs[PRV10_BRP] = env->pc; break; case EXCP_BUSFAULT: diff --git a/target-cris/translate_v10.c b/target-cris/translate_v10.c index 4ada3ed09f..3629629d9d 100644 --- a/target-cris/translate_v10.c +++ b/target-cris/translate_v10.c @@ -1132,6 +1132,7 @@ static unsigned int dec10_ind(DisasContext *dc) LOG_DIS("break %d\n", dc->src); cris_evaluate_flags(dc); tcg_gen_movi_tl(env_pc, dc->pc + 2); + t_gen_mov_env_TN(trap_vector, tcg_const_tl(dc->src + 2)); t_gen_raise_exception(EXCP_BREAK); dc->is_jmp = DISAS_UPDATE; return insn_len;