2012/11/2 Marek Czerski <[email protected]>: >> This is a known problem, a (dirty) workaround is to just disable the >> CRC checking: > > ok, it helped. > >> >> What I can see when using the simulation with GDB over VPI (and the >> >> claasic dbg_if) is that the instruction replaced by the TRAP (for sw >> >> breakpoint) never gets executed (see waveform). > > > I can confirm this behavior both in simulation (dbg_if + VPI) and on > hardware with adv_dbg_if + adv_jtag_bridge. > >> >> >> I did the same test on my hardware platform with openOCD + adv_dbg_if >> >> and r6 gets updated.... > > > With adv_dbg_if + OpneOCD it works as Franck said. > > It seems that the issue is related with the software since adv_jtag_bridge > can properly sigle-step through jump instructions and OpenOCD can properly > handle software breakpoints. > > -- > mgr inż. Marek Czerski > +48 696 842 686 >
One of the problem is showed on waveforms I posted. The instruction trapped doesn't get executed after the breakpoint is removed. I have a fix almost ready. I checked for a debug unstall condition plus a trap condition in or1200_du (dbg_stall && |except_stop). Then, when this event occur, I flush the entire pipeline (in or1200_ctrl) and set the pc to npc in or1200_genpc (which is equal to the trapped instruction address). Franck. _______________________________________________ OpenRISC mailing list [email protected] http://lists.openrisc.net/listinfo/openrisc
