qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]