> colin wrote:. > > 2. When an exception happens and we find that it's not touching the righ > > address, we will discard it. However, exception will happen again because > > the former instruction will be re-executed when the exception is finished. > > > > You'll need to single-step over the instruction which generated the > unwanted watchpoint exception, with the watchpoint disabled. Then after > handling the single step reenable the watchpoint and resume normal > execution. There's actually a simpler and more efficient approach in Linux. The code already exists in the MIPS Linux kernel to "skip" the instruction responsible for the current exception, because the situation also arises for emulated instructions. In do_watch(), in the cases where you want to ignore the watchpoint, you should be able to just invoke compute_return_epc(regs) and return. There should be no need to handle single-step exceptions or disable/reenable the watchpoint. Regards, Kevin K.