aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoredgar_igl <edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162>2008-02-25 09:58:22 +0000
committeredgar_igl <edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162>2008-02-25 09:58:22 +0000
commit5d4a534dec61df1dc2e521093040e965c180f63b (patch)
tree967fae1482f0b21221db31401b4e78e1c9db59c7
parent1a2fb1c0093c9ac1bceec8b5cbe550c478f2e7b3 (diff)
Silently ignore CRIS cache flushes, instead of aborting due to unknown insn.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3990 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--target-cris/crisv32-decode.h3
-rw-r--r--target-cris/translate.c16
2 files changed, 17 insertions, 2 deletions
diff --git a/target-cris/crisv32-decode.h b/target-cris/crisv32-decode.h
index 5d30dcc4be..3a515c4a05 100644
--- a/target-cris/crisv32-decode.h
+++ b/target-cris/crisv32-decode.h
@@ -124,3 +124,6 @@
#define DEC_BASC_IM {B8(11101111), B8(11111111)}
#define DEC_MOVEM_MR {B8(10111011), B8(10111111)}
#define DEC_MOVEM_RM {B8(10111111), B8(10111111)}
+
+#define DEC_FTAG_FIDX_D_M {B8(10101011), B8(11111111)}
+#define DEC_FTAG_FIDX_I_M {B8(11010011), B8(11111111)}
diff --git a/target-cris/translate.c b/target-cris/translate.c
index 3a5e5eb1ba..d8cfda5559 100644
--- a/target-cris/translate.c
+++ b/target-cris/translate.c
@@ -2123,6 +2123,18 @@ static unsigned int dec_rfe_etc(DisasContext *dc)
return 2;
}
+static unsigned int dec_ftag_fidx_d_m(DisasContext *dc)
+{
+ /* Ignore D-cache flushes. */
+ return 2;
+}
+
+static unsigned int dec_ftag_fidx_i_m(DisasContext *dc)
+{
+ /* Ignore I-cache flushes. */
+ return 2;
+}
+
static unsigned int dec_null(DisasContext *dc)
{
printf ("unknown insn pc=%x opc=%x op1=%x op2=%x\n",
@@ -2213,8 +2225,8 @@ struct decoder_info {
{DEC_NEG_R, dec_neg_r},
{DEC_MOVE_R, dec_move_r},
- /* ftag_fidx_i_m. */
- /* ftag_fidx_d_m. */
+ {DEC_FTAG_FIDX_I_M, dec_ftag_fidx_i_m},
+ {DEC_FTAG_FIDX_D_M, dec_ftag_fidx_d_m},
{DEC_MULS_R, dec_muls_r},
{DEC_MULU_R, dec_mulu_r},