Oh, sorry, also one modification about TILEGX_EXCP_OPCODE_UNIMPLEMENTED left. I shall send patch v2 for it.
Thanks. On 10/3/15 16:54, gang.chen.5...@gmail.com wrote: > From: Chen Gang <gang.chen.5...@gmail.com> > > For some cases, they are for TILEGX_EXCP_OPCODE_UNKNOWN, not for > TILEGX_EXCP_OPCODE_UNIMPLEMENTED. > > When analyzing issues, the related output is incorrect (e.g. grep UIMP > in the output log for finding qemu tilegx umimplementation issues). > > Signed-off-by: Chen Gang <gang.chen.5...@gmail.com> > --- > target-tilegx/translate.c | 35 +++++++++++++++++++++-------------- > 1 file changed, 21 insertions(+), 14 deletions(-) > > diff --git a/target-tilegx/translate.c b/target-tilegx/translate.c > index 40f9b12..d2aeae0 100644 > --- a/target-tilegx/translate.c > +++ b/target-tilegx/translate.c > @@ -293,7 +293,7 @@ static TileExcp gen_st_opcode(DisasContext *dc, unsigned > dest, unsigned srca, > unsigned srcb, TCGMemOp memop, const char > *name) > { > if (dest) { > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > > tcg_gen_qemu_st_tl(load_gr(dc, srcb), load_gr(dc, srca), > @@ -540,7 +540,7 @@ static TileExcp gen_rr_opcode(DisasContext *dc, unsigned > opext, > mnemonic = "swint1"; > done0: > if (srca || dest) { > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > qemu_log_mask(CPU_LOG_TB_IN_ASM, "%s", mnemonic); > return ret; > @@ -586,7 +586,7 @@ static TileExcp gen_rr_opcode(DisasContext *dc, unsigned > opext, > tcg_gen_andi_tl(dc->jmp.dest, load_gr(dc, srca), ~7); > done1: > if (dest) { > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > qemu_log_mask(CPU_LOG_TB_IN_ASM, "%s %s", mnemonic, reg_names[srca]); > return ret; > @@ -688,7 +688,7 @@ static TileExcp gen_rr_opcode(DisasContext *dc, unsigned > opext, > case OE_RR_X1(LNK): > case OE_RR_Y1(LNK): > if (srca) { > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > tcg_gen_movi_tl(TDEST, dc->pc + TILEGX_BUNDLE_SIZE_IN_BYTES); > mnemonic = "lnk"; > @@ -735,7 +735,7 @@ static TileExcp gen_rr_opcode(DisasContext *dc, unsigned > opext, > mnemonic = "tblidxb3"; > break; > default: > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > > qemu_log_mask(CPU_LOG_TB_IN_ASM, "%s %s, %s", mnemonic, > @@ -1833,7 +1833,7 @@ static TileExcp gen_rri_opcode(DisasContext *dc, > unsigned opext, > break; > > default: > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > > qemu_log_mask(CPU_LOG_TB_IN_ASM, "%s %s, %s, %d", mnemonic, > @@ -1927,7 +1927,7 @@ static TileExcp gen_bf_opcode_x0(DisasContext *dc, > unsigned ext, > break; > > default: > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > > qemu_log_mask(CPU_LOG_TB_IN_ASM, "%s %s, %s, %u, %u", mnemonic, > @@ -1983,7 +1983,7 @@ static TileExcp gen_branch_opcode_x1(DisasContext *dc, > unsigned ext, > mnemonic = "blbs"; > break; > default: > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > > if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) { > @@ -2131,7 +2131,7 @@ static TileExcp decode_y0(DisasContext *dc, > tilegx_bundle_bits bundle) > return gen_rri_opcode(dc, OE(opc, 0, Y0), dest, srca, imm); > > default: > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > } > > @@ -2175,7 +2175,7 @@ static TileExcp decode_y1(DisasContext *dc, > tilegx_bundle_bits bundle) > return gen_rri_opcode(dc, OE(opc, 0, Y1), dest, srca, imm); > > default: > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > } > > @@ -2233,7 +2233,7 @@ static TileExcp decode_y2(DisasContext *dc, > tilegx_bundle_bits bundle) > return gen_st_opcode(dc, 0, srca, srcbdest, MO_TEQ, "st"); > > default: > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > } > > @@ -2278,7 +2278,7 @@ static TileExcp decode_x0(DisasContext *dc, > tilegx_bundle_bits bundle) > return gen_rri_opcode(dc, OE(opc, 0, X0), dest, srca, imm); > > default: > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > } > > @@ -2368,7 +2368,7 @@ static TileExcp decode_x1(DisasContext *dc, > tilegx_bundle_bits bundle) > return gen_rri_opcode(dc, OE(opc, 0, X1), dest, srca, imm); > > default: > - return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; > + return TILEGX_EXCP_OPCODE_UNKNOWN; > } > } > > @@ -2379,8 +2379,15 @@ static void notice_excp(DisasContext *dc, uint64_t > bundle, > return; > } > gen_exception(dc, excp); > - if (excp == TILEGX_EXCP_OPCODE_UNIMPLEMENTED) { > + switch (excp) { > + case TILEGX_EXCP_OPCODE_UNIMPLEMENTED: > qemu_log_mask(LOG_UNIMP, "UNIMP %s, [" FMT64X "]\n", type, bundle); > + return; > + case TILEGX_EXCP_OPCODE_UNKNOWN: > + qemu_log_mask(LOG_UNIMP, "UNKNOWN %s, [" FMT64X "]\n", type, bundle); > + return; > + default: > + return; > } > } > > -- Chen Gang (陈刚) Open, share, and attitude like air, water, and life which God blessed