From: Joel Brobecker <brobecker@adacore.com>
To: Anton Blanchard <anton@samba.org>
Cc: gdb-patches@sourceware.org, emachado@linux.vnet.ibm.com,
luis_gustavo@mentor.com, ulrich.weigand@de.ibm.com
Subject: Re: [PATCH 4/4] Add lbarx/stbcx., lharx/sthcx. and lqarx/stqcx. single stepping
Date: Fri, 28 Mar 2014 13:17:00 -0000 [thread overview]
Message-ID: <20140328131700.GG4030@adacore.com> (raw)
In-Reply-To: <1395978111-30706-4-git-send-email-anton@samba.org>
> gdb/testsuite/
^^^^^^^^^^
Small typo. I'm sure you'll be adding the ChangeLog entry to the right
file, but we can also avoid this typo creeping into the revision log
of the commit that will eventually get pushed.
> 2014-03-28 Anton Blanchard <anton@samba.org>
>
> * rs6000-tdep.c (ppc_deal_with_atomic_sequence): Add single step
> support for lbarx/stbcx., lharx/sthcx. and lqarx/stqcx.
OK.
Thank you.
> ---
> gdb/rs6000-tdep.c | 36 ++++++++++++++++++++++++++----------
> 1 file changed, 26 insertions(+), 10 deletions(-)
>
> diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
> index be14e39..7257cc3 100644
> --- a/gdb/rs6000-tdep.c
> +++ b/gdb/rs6000-tdep.c
> @@ -1070,14 +1070,21 @@ ppc_displaced_step_hw_singlestep (struct gdbarch *gdbarch,
>
> /* Instruction masks used during single-stepping of atomic sequences. */
> #define LWARX_MASK 0xfc0007fe
> +#define LBARX_INSTRUCTION 0x7c000068
> +#define LHARX_INSTRUCTION 0x7c0000e8
> #define LWARX_INSTRUCTION 0x7c000028
> #define LDARX_INSTRUCTION 0x7c0000A8
> +#define LQARX_INSTRUCTION 0x7c000228
> +
> #define STWCX_MASK 0xfc0007ff
> +#define STBCX_INSTRUCTION 0x7c00056d
> +#define STHCX_INSTRUCTION 0x7c0005ad
> #define STWCX_INSTRUCTION 0x7c00012d
> #define STDCX_INSTRUCTION 0x7c0001ad
> +#define STQCX_INSTRUCTION 0x7c00016d
>
> -/* Checks for an atomic sequence of instructions beginning with a LWARX/LDARX
> - instruction and ending with a STWCX/STDCX instruction. If such a sequence
> +/* Checks for an atomic sequence of instructions beginning with a l[bhwdq]arx
> + instruction and ending with a st[bhwdq]cx instruction. If such a sequence
> is found, attempt to step through it. A breakpoint is placed at the end of
> the sequence. */
>
> @@ -1098,9 +1105,12 @@ ppc_deal_with_atomic_sequence (struct frame_info *frame)
> const int atomic_sequence_length = 16; /* Instruction sequence length. */
> int opcode; /* Branch instruction's OPcode. */
>
> - /* Assume all atomic sequences start with a lwarx/ldarx instruction. */
> - if ((insn & LWARX_MASK) != LWARX_INSTRUCTION
> - && (insn & LWARX_MASK) != LDARX_INSTRUCTION)
> + /* Assume all atomic sequences start with a l[bhwdq]arx instruction. */
> + if ((insn & LWARX_MASK) != LBARX_INSTRUCTION
> + && (insn & LWARX_MASK) != LHARX_INSTRUCTION
> + && (insn & LWARX_MASK) != LWARX_INSTRUCTION
> + && (insn & LWARX_MASK) != LDARX_INSTRUCTION
> + && (insn & LWARX_MASK) != LQARX_INSTRUCTION)
> return 0;
>
> /* Assume that no atomic sequence is longer than "atomic_sequence_length"
> @@ -1127,14 +1137,20 @@ ppc_deal_with_atomic_sequence (struct frame_info *frame)
> last_breakpoint++;
> }
>
> - if ((insn & STWCX_MASK) == STWCX_INSTRUCTION
> - || (insn & STWCX_MASK) == STDCX_INSTRUCTION)
> + if ((insn & STWCX_MASK) == STBCX_INSTRUCTION
> + || (insn & STWCX_MASK) == STHCX_INSTRUCTION
> + || (insn & STWCX_MASK) == STWCX_INSTRUCTION
> + || (insn & STWCX_MASK) == STDCX_INSTRUCTION
> + || (insn & STWCX_MASK) == STQCX_INSTRUCTION)
> break;
> }
>
> - /* Assume that the atomic sequence ends with a stwcx/stdcx instruction. */
> - if ((insn & STWCX_MASK) != STWCX_INSTRUCTION
> - && (insn & STWCX_MASK) != STDCX_INSTRUCTION)
> + /* Assume that the atomic sequence ends with a st[bhwdq]cx instruction. */
> + if ((insn & STWCX_MASK) != STBCX_INSTRUCTION
> + && (insn & STWCX_MASK) != STHCX_INSTRUCTION
> + && (insn & STWCX_MASK) != STWCX_INSTRUCTION
> + && (insn & STWCX_MASK) != STDCX_INSTRUCTION
> + && (insn & STWCX_MASK) != STQCX_INSTRUCTION)
> return 0;
>
> closing_insn = loc;
> --
> 1.8.3.2
--
Joel
next prev parent reply other threads:[~2014-03-28 13:17 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-28 3:41 [PATCH 1/4] Fix ppc64 single step over atomic sequence testcase Anton Blanchard
2014-03-28 3:42 ` [PATCH 2/4] Support up to 3 conditional branches in an atomic sequence Anton Blanchard
2014-03-28 13:12 ` Joel Brobecker
2014-03-28 17:13 ` Pedro Alves
2014-03-28 17:22 ` Pedro Alves
2014-03-28 17:32 ` Joel Brobecker
2014-03-28 17:58 ` Pedro Alves
2014-03-28 18:10 ` Joel Brobecker
2014-03-28 3:42 ` [PATCH 3/4] Add multiple branches to ppc64 single step through atomic sequence testcase Anton Blanchard
2014-03-28 13:14 ` Joel Brobecker
2014-03-28 3:42 ` [PATCH 4/4] Add lbarx/stbcx., lharx/sthcx. and lqarx/stqcx. single stepping Anton Blanchard
2014-03-28 13:17 ` Joel Brobecker [this message]
2014-03-28 13:05 ` [PATCH 1/4] Fix ppc64 single step over atomic sequence testcase Joel Brobecker
2014-03-31 2:55 ` Anton Blanchard
2014-03-28 13:13 ` Ulrich Weigand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140328131700.GG4030@adacore.com \
--to=brobecker@adacore.com \
--cc=anton@samba.org \
--cc=emachado@linux.vnet.ibm.com \
--cc=gdb-patches@sourceware.org \
--cc=luis_gustavo@mentor.com \
--cc=ulrich.weigand@de.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox