[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] PPC32 Trace Exception and Trap instruction
From: |
Jason Wessel |
Subject: |
[Qemu-devel] [PATCH] PPC32 Trace Exception and Trap instruction |
Date: |
Wed, 27 Dec 2006 10:05:45 -0600 |
User-agent: |
Thunderbird 1.5.0.8 (Windows/20061025) |
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] [PATCH] PPC32 Trace Exception and Trap instruction,
Jason Wessel <=