diff mbox

target-tilegx: Use TILEGX_EXCP_OPCODE_UNKNOWN instead of TILEGX_EXCP_OPCODE_UNIMPLEMENTED for some cases

Message ID 1443862443-4523-1-git-send-email-gang.chen.5i5j@gmail.com
State New
Headers show

Commit Message

Chen Gang Oct. 3, 2015, 8:54 a.m. UTC
From: Chen Gang <gang.chen.5i5j@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.5i5j@gmail.com>
---
 target-tilegx/translate.c | 35 +++++++++++++++++++++--------------
 1 file changed, 21 insertions(+), 14 deletions(-)

Comments

Chen Gang Oct. 4, 2015, 5:20 a.m. UTC | #1
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.5i5j@gmail.com wrote:
> From: Chen Gang <gang.chen.5i5j@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.5i5j@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;
>      }
>  }
>  
>
diff mbox

Patch

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;
     }
 }