[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] target-tilegx: Use TILEGX_EXCP_OPCODE_UNKNOWN i
From: |
Chen Gang |
Subject: |
Re: [Qemu-devel] [PATCH] target-tilegx: Use TILEGX_EXCP_OPCODE_UNKNOWN instead of TILEGX_EXCP_OPCODE_UNIMPLEMENTED for some cases |
Date: |
Sun, 4 Oct 2015 13:20:04 +0800 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 |
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, address@hidden wrote:
> From: Chen Gang <address@hidden>
>
> 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 <address@hidden>
> ---
> 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