[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