qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] PPC32 Trace Exception and Trap instruction


From: Ely Soto
Subject: Re: [Qemu-devel] [PATCH] PPC32 Trace Exception and Trap instruction
Date: Wed, 27 Dec 2006 11:24:35 -0500


Excellent, I had encountered that bug earlier on when trying to debug using workbench.

Are you guys developing a BSP for qemu?
I have a partially working one.

Ely Soto



Jason Wessel <address@hidden>
Sent by: address@hidden

12/27/2006 11:05 AM

Please respond to
address@hidden

To
address@hidden
cc
Subject
[Qemu-devel] [PATCH] PPC32 Trace Exception and Trap instruction





Please add this patch to CVS.

The patch has two purposes:

1) The NIP needs to be updated for a tw instruction.
   I found that when executing protected mode traps
   the PC was always set to the begining of the code
   generation block instead of the instruction the trap
   occurred on.

   The usual PPC breakpoint instruction is:
   7d 82 10 08 twge    r2,r2  (Trap when rA >= rB)

2) Single stepping was fixed up earlier in the year
   for using a debugger connected to the QEMU
   gdb stub.  Now it is enabled for connecting a
   runtime single stepping with the trace trap so you
   can use ptrace() or even debug KGDB.

signed-off-by: address@hidden

Thanks,
Jason.
Index: qemu/target-ppc/helper.c
===================================================================
--- qemu.orig/target-ppc/helper.c
+++ qemu/target-ppc/helper.c
@@ -1113,8 +1113,6 @@ void do_interrupt (CPUState *env)
        }
        goto store_next;
    case EXCP_TRACE: /* 0x0D00 */
-        /* XXX: TODO */
-        cpu_abort(env, "Trace exception is not implemented yet !\n");
        goto store_next;
    case EXCP_PERF: /* 0x0F00 */
        /* XXX: TODO */
Index: qemu/target-ppc/translate.c
===================================================================
--- qemu.orig/target-ppc/translate.c
+++ qemu/target-ppc/translate.c
@@ -1956,6 +1956,8 @@ GEN_HANDLER(tw, 0x1F, 0x04, 0xFF, 0x0000
{
    gen_op_load_gpr_T0(rA(ctx->opcode));
    gen_op_load_gpr_T1(rB(ctx->opcode));
+    /* Update the nip since this might generate a trap exception */
+    gen_op_update_nip(ctx->nip);
    gen_op_tw(TO(ctx->opcode));
}

_______________________________________________
Qemu-devel mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/qemu-devel


Notice: This e-mail is intended solely for use of the individual or entity to which it is addressed and may contain information that is proprietary, privileged and exempt from disclosure under applicable law. If the reader is not the intended recipient or agent responsible for delivering the message to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. This communication may also contain data subject to U.S. export laws. If so, that data subject to the International Traffic in Arms Regulation cannot be disseminated, distributed or copied to foreign nationals, residing in the U.S. or abroad, absent the express prior approval of the U.S. Department of State. If you have received this communication in error, please notify the sender by reply e-mail and destroy the e-mail message and any physical copies made of the communication. Thank you.


reply via email to

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