On Mon, 18 May 2009, K.Prasad wrote:

> > > > > +int __kprobes hw_breakpoint_handler(struct die_args *args)
> > > > > +{
> > > > > +     int rc = NOTIFY_STOP;
> > > > > +     struct hw_breakpoint *bp;
> > > > > +     struct pt_regs *regs = args->regs;
> > > > > +     unsigned long dar;
> > > > > +     int cpu, stepped, is_kernel;
> > > > > +
> > > > > +     /* Disable breakpoints during exception handling */
> > > > > +     set_dabr(0);
> > > > > +
> > > > > +     dar = regs->dar & (~HW_BREAKPOINT_ALIGN);
> > > > > +     is_kernel = (dar >= TASK_SIZE) ? 1 : 0;
> > > > 
> > > > is_kernel_addr() ?
> > > > 
> > > 
> > > Ok.
> > 
> > Shouldn't this test hbp_kernel_pos instead?
> > 
> 
> Testing hbp_kernel_pos should be sufficient for PPC64 with just one
> breakpoint register. However the above code is more extensible to other
> PowerPC implementations which have more than one breakpoint register.

Then maybe you don't want to test this at all.  Just compare the dar 
value with each of the breakpoint addresses.  That's more like what the 
x86 code does.

Alan Stern

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to