On Monday 07 May 2007, John Reiser wrote:
> Daniel Jacobowitz wrote:
> > On Sun, May 06, 2007 at 09:04:52PM +0100, Thiemo Seufer wrote:
> >>This looks like another instance of "Qemu/MIPS doesn't handle
> >>self-modifying code correctly" (the break instructions inserted
> >>by gdb are exactly this).
> >>
> >>A gross workaround is
> >>http://lists.nongnu.org/archive/html/qemu-devel/2007-05/msg00037.html
> >
> > Someone might want to try:
> >   http://lists.nongnu.org/archive/html/qemu-devel/2007-04/msg00514.html
>
> This works for me so far: I can single-step reliably in gdb.
>
> --- a/qemu-0.9.0/target-mips/helper.c   2007-05-05 15:39:21.000000000 -0700
> +++ b/qemu-0.9.0/target-mips/helper.c   2007-05-07 13:24:50.000000000 -0700
> @@ -358,6 +358,7 @@
>          goto set_EPC;
>      case EXCP_BREAK:
>          cause = 9;
> +       tlb_flush_page(env, env->PC);
>          goto set_EPC;
>      case EXCP_RI:
>          cause = 10;

I think this is still broken if the breakpoint is the first instruction on a 
page. The changes Daniel mentioned should make this sort of flushing 
unnecessary.

Paul


Reply via email to