Joshua, I can't help you with the problem, but I can confirm one of your guesses: > I am guessing at a few things here: > > - Because ll/sc are atomic, gdb doesn't let you step through them, which is > why the instruction pointer jumps over the 'li' and 'sc' insns. -- this is exactly the case, GDB tries to be smart enough and when it sees an LL or LLD instruction it examines code that follows to find a matching SC or SCD instruction and any other exit points from the atomic section and sets internal breakpoints correctly to let the code fragment run at the full speed even if single stepping. Otherwise the exception taken at each single step would cause the conditional store instruction to always fail -- which might not be a big issue if you were knowingly stepping code e.g. with `stepi', but would cause big harm in implicit stepping through unknown or unrelated code such as when a software watchpoint is active. See `deal_with_atomic_sequence' in gdb/mips-tdep.c if curious about the details. Maciej