[PATCH] AArch64: Add single-step and breakpoint handler hooks

Will Deacon will.deacon at arm.com
Tue Aug 20 09:12:45 EDT 2013


On Tue, Aug 13, 2013 at 03:45:30PM +0100, Sandeepa Prabhu wrote:
> On 13 August 2013 17:02, Will Deacon <will.deacon at arm.com> wrote:
> > On Tue, Aug 06, 2013 at 07:12:06AM +0100, Sandeepa Prabhu wrote:
> >> +     cmp     x24, #ESR_EL1_EC_WATCHPT_EL1
> >> +     csel    x0, x25, x22, eq        //addr: x25->far_el1, x22->elr_el1
> >> +     b.ge    do_dbg
> >>       tbz     x24, #0, el1_inv                // EL1 only
> >
> > I'd rather you left the tbz as the first instruction in el1_dbg, then you
> > can also lose the b.ge.
> well, my understanding is that the tbz check is needed only for
> Exception Class < 0x35 as per debug spec. If this is true, and if tbz
> is first instruction, it fails for breakpoint (EC=0x3A) case and call
> el1_inv to panic instead of routing to do_debug_exception. I am not
> sure if we can optimize the code further to eliminate this one
> branching as well.

Well, you're actually only interested in 0x3c (BRK instruction executed in
AArch64 state), so you should check for that explicitly. I guess it doesn't
matter where you check bit #0 first or not, provided you have the branch
logic correct.

Will



More information about the linux-arm-kernel mailing list