qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 2/2] risu_ppc64le: distinguish real illegal instruct


From: Nikunj A Dadhania
Subject: [Qemu-devel] [PATCH 2/2] risu_ppc64le: distinguish real illegal instruction
Date: Mon, 13 Feb 2017 14:29:12 +0530

While executing qemu_ppc64le, found an issue that the real illegal
instructions are handled as risu_op which results in wrong info at the
master end. Even the master needs to distinguish real illegal
instructions versus risu_op.

Signed-off-by: Nikunj A Dadhania <address@hidden>
---
 risu_ppc64le.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/risu_ppc64le.c b/risu_ppc64le.c
index 9c1fafd..54a9bcb 100644
--- a/risu_ppc64le.c
+++ b/risu_ppc64le.c
@@ -55,7 +55,6 @@ int send_register_info(int sock, void *uc)
     switch (op) {
     case OP_COMPARE:
     case OP_TESTEND:
-    default:
         return send_data_pkt(sock, &ri, sizeof(ri));
     case OP_SETMEMBLOCK:
         memblock = (void*)ri.gregs[0];
@@ -66,6 +65,11 @@ int send_register_info(int sock, void *uc)
     case OP_COMPAREMEM:
         return send_data_pkt(sock, memblock, MEMBLOCKLEN);
         break;
+    default:
+      fprintf(stderr, "apprentice: Unhandled instruction\n");
+      fprintf(stderr, "  faulting insn        0x%x\n", ri.faulting_insn);
+      fprintf(stderr, "  insn addr            0x%" PRIx64 "\n\n", ri.nip);
+      return -1;
     }
     return 0;
 }
@@ -85,7 +89,6 @@ int recv_and_compare_register_info(int sock, void *uc)
     switch (op) {
     case OP_COMPARE:
     case OP_TESTEND:
-    default:
         if (recv_data_pkt(sock, &apprentice_ri, sizeof(apprentice_ri))) {
             packet_mismatch = 1;
             resp = 2;
@@ -113,6 +116,11 @@ int recv_and_compare_register_info(int sock, void *uc)
         }
         send_response_byte(sock, resp);
         break;
+    default:
+      fprintf(stderr, "master: Unhandled instruction\n");
+      fprintf(stderr, "  faulting insn    0x%x\n", master_ri.faulting_insn);
+      fprintf(stderr, "  insn addr        0x%" PRIx64 "\n\n", master_ri.nip);
+      return -1;
     }
     return resp;
 }
-- 
2.7.4




reply via email to

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