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