]> git.proxmox.com Git - qemu.git/commitdiff
cris: Add break support for v10.
authorEdgar E. Iglesias <edgar@axis.com>
Tue, 5 Jul 2011 10:56:41 +0000 (12:56 +0200)
committerEdgar E. Iglesias <edgar.iglesias@gmail.com>
Thu, 14 Jun 2012 13:29:11 +0000 (15:29 +0200)
Still no retb

Signed-off-by: Edgar E. Iglesias <edgar@axis.com>
target-cris/cpu.h
target-cris/helper.c
target-cris/translate_v10.c

index a7603678fce02943b0d9075e2255c64e235a548b..73004af01025bed38e4a3e57e96cf6d46ccb399a 100644 (file)
@@ -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.  */
index 8680f436a0b5ced34f27460617ba65ce54d0df6a..dcc19ef63b8d6ddbffe6ba513aa88ba0e6dc4df7 100644 (file)
@@ -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:
index 4ada3ed09f7ff3495f4ee47cdbd203bddd7c2631..3629629d9d019a180a5dcfcc16121ca71dd3ae4e 100644 (file)
@@ -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;