On Wed, Nov 16, 2011 at 10:46 PM, Richard Henderson <r...@redhat.com> wrote: >> +/* Checks for an atomic sequence of instructions beginning with a >> LWARX/LDARX >> + instruction and ending with a STWCX/STDCX instruction. If such a >> sequence >> + is found, attempt to step through it. A breakpoint is placed at the end >> of >> + the sequence. */ >> + > > s/LWARX/LDL_L/g > s/LDARX/LDQ_L/g > s/STWCX/STL_C/g > s/STDCX/STQ_C/g > >> + int immediate = ((insn & 0x001fffff) << 2); >> + >> + if (bc_insn_count >= 1) >> + return 0; /* More than one conditional branch found, fallback >> + to the standard single-step code. */ >> + >> + breaks[1] = loc + ALPHA_INSN_SIZE + immediate; > > The immediate needs to be sign-extended. Add: > > immedaite = (immediate ^ 0x400000) - 0x400000; > > Otherwise your computation of the address is correct.
Thanks, corrected gdb patch is at [1]. [1] http://sourceware.org/ml/gdb-patches/2011-11/msg00457.html Uros.