All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 3/5] ARM undefined instruction execution
@ 2006-05-20 21:01 Jason Wessel
  0 siblings, 0 replies; only message in thread
From: Jason Wessel @ 2006-05-20 21:01 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 202 bytes --]


This patch fixes the execution of undefined instructions for ARM.  With 
out it the virtualized CPU incorrectly executes the do_abort vector instead.

signed-off-by: jason.wessel@windriver.com

Jason.

[-- Attachment #2: undefined_instruction_handler_fix.patch --]
[-- Type: text/plain, Size: 740 bytes --]

Index: qemu/target-arm/translate.c
===================================================================
--- qemu.orig/target-arm/translate.c
+++ qemu/target-arm/translate.c
@@ -1589,6 +1589,15 @@ static void disas_arm_insn(CPUState * en
         case 0x5:
         case 0x6:
         case 0x7:
+            /* Check for undefined extension instructions
+             * per the ARM Bible IE:
+             * xxxx 0111 1111 xxxx  xxxx xxxx 1111 xxxx
+             */
+            sh = (0xf << 20) | (0xf << 4);
+            if (op1 == 0x7 && ((insn & sh) == sh))
+            {
+                goto illegal_op;
+            }
             /* load/store byte/word */
             rn = (insn >> 16) & 0xf;
             rd = (insn >> 12) & 0xf;

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-05-20 21:01 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-20 21:01 [Qemu-devel] [PATCH 3/5] ARM undefined instruction execution Jason Wessel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.