cris: Add break support for v10.

Still no retb

Signed-off-by: Edgar E. Iglesias <edgar@axis.com>
This commit is contained in:
Edgar E. Iglesias 2011-07-05 12:56:41 +02:00 committed by Edgar E. Iglesias
parent 7677e24f3d
commit f756c7a723
3 changed files with 4 additions and 2 deletions

View File

@ -64,6 +64,7 @@
#define PR_NRP 12 #define PR_NRP 12
#define PR_CCS 13 #define PR_CCS 13
#define PR_USP 14 #define PR_USP 14
#define PRV10_BRP 14
#define PR_SPC 15 #define PR_SPC 15
/* CPU flags. */ /* CPU flags. */

View File

@ -121,14 +121,14 @@ static void do_interruptv10(CPUCRISState *env)
/* These exceptions are genereated by the core itself. /* These exceptions are genereated by the core itself.
ERP should point to the insn following the brk. */ ERP should point to the insn following the brk. */
ex_vec = env->trap_vector; ex_vec = env->trap_vector;
env->pregs[PR_ERP] = env->pc; env->pregs[PRV10_BRP] = env->pc;
break; break;
case EXCP_NMI: case EXCP_NMI:
/* NMI is hardwired to vector zero. */ /* NMI is hardwired to vector zero. */
ex_vec = 0; ex_vec = 0;
env->pregs[PR_CCS] &= ~M_FLAG; env->pregs[PR_CCS] &= ~M_FLAG;
env->pregs[PR_NRP] = env->pc; env->pregs[PRV10_BRP] = env->pc;
break; break;
case EXCP_BUSFAULT: case EXCP_BUSFAULT:

View File

@ -1132,6 +1132,7 @@ static unsigned int dec10_ind(DisasContext *dc)
LOG_DIS("break %d\n", dc->src); LOG_DIS("break %d\n", dc->src);
cris_evaluate_flags(dc); cris_evaluate_flags(dc);
tcg_gen_movi_tl(env_pc, dc->pc + 2); 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); t_gen_raise_exception(EXCP_BREAK);
dc->is_jmp = DISAS_UPDATE; dc->is_jmp = DISAS_UPDATE;
return insn_len; return insn_len;