qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [patch] Arm/Thumb entry points


From: Paul Brook
Subject: [Qemu-devel] [patch] Arm/Thumb entry points
Date: Fri, 3 Feb 2006 15:14:13 +0000
User-agent: KMail/1.9.1

The patch fixes a bug in the arm usermode emulation. The CPU wasn't being 
correctly initialized when the entry point is a Thumb function.

Paul

=== linux-user/elfload.c
==================================================================
--- linux-user/elfload.c        (revision 1831)
+++ linux-user/elfload.c        (local)
@@ -100,7 +100,9 @@
     target_long *stack = (void *)infop->start_stack;
     memset(regs, 0, sizeof(*regs));
     regs->ARM_cpsr = 0x10;
-    regs->ARM_pc = infop->entry;
+    if (infop->entry & 1)
+      regs->ARM_cpsr |= CPSR_T;
+    regs->ARM_pc = infop->entry & 0xfffffffe;
     regs->ARM_sp = infop->start_stack;
     regs->ARM_r2 = tswapl(stack[2]); /* envp */
     regs->ARM_r1 = tswapl(stack[1]); /* argv */




reply via email to

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