qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH] target-arm: make smc behave as a nop


From: Rob Herring
Subject: [Qemu-devel] [PATCH] target-arm: make smc behave as a nop
Date: Tue, 11 Feb 2014 17:19:21 -0600

From: Rob Herring <address@hidden>

Several platforms make smc calls for things such as PL310 cache setup.
In these cases, making smc a nop rather than an illegal instruction
is sufficient for qemu to work.

Signed-off-by: Rob Herring <address@hidden>
---
 target-arm/translate.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/target-arm/translate.c b/target-arm/translate.c
index e701c0f..ab4cd56 100644
--- a/target-arm/translate.c
+++ b/target-arm/translate.c
@@ -7518,16 +7518,18 @@ static void disas_arm_insn(CPUARMState * env, 
DisasContext *s)
             store_reg(s, rd, tmp);
             break;
         case 7:
-            /* SMC instruction (op1 == 3)
-               and undefined instructions (op1 == 0 || op1 == 2)
-               will trap */
-            if (op1 != 1) {
-                goto illegal_op;
+            if (op1 == 3) {
+                ARCH(6K);
+                /* nop */
+                break;
+            } else if (op1 == 1) {
+                /* bkpt */
+                ARCH(5);
+                gen_exception_insn(s, 4, EXCP_BKPT);
+                break;
             }
-            /* bkpt */
-            ARCH(5);
-            gen_exception_insn(s, 4, EXCP_BKPT);
-            break;
+            /* Undefined instructions will trap */
+            goto illegal_op;
         case 0x8: /* signed multiply */
         case 0xa:
         case 0xc:
-- 
1.8.3.2




reply via email to

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