[RFC] 4xx hardware watchpoint support

Josh Boyer jwboyer at linux.vnet.ibm.com
Thu Jul 24 01:53:21 EST 2008


On Tue, 22 Jul 2008 22:47:58 -0300
Luis Machado <luisgpm at linux.vnet.ibm.com> wrote:

> Hi,
> 
> > That, or adding a small function to move the bits to the appropriate
> > registers (set_dbcr or set_dac_events).
> > 
> > > Do you think it's worth to support this facility on 405's processors? If
> > > so, i'll gladly work on a solution to it.
> > 
> > I would think so.  There's really no difference from a userspace
> > perspective, so gdb watchpoints could be valuable there too.  I'll
> > leave it up to you though.
> 
> As the 440 support is ready and the 405 needs additional tweaking due to
> the use of DBCR1 instead of DBCR0 and due to a different position scheme
> of the DAC1R/DAC1W flags inside DBCR1, i'd say we should include this
> code and handle the 405 case later. 

That's fine with me, but I have one question below then.

> Index: linux-2.6.26/arch/powerpc/kernel/signal.c
> ===================================================================
> --- linux-2.6.26.orig/arch/powerpc/kernel/signal.c	2008-07-20 16:56:57.000000000 -0700
> +++ linux-2.6.26/arch/powerpc/kernel/signal.c	2008-07-22 16:47:22.000000000 -0700
> @@ -145,8 +145,12 @@
>  	 * user space. The DABR will have been cleared if it
>  	 * triggered inside the kernel.
>  	 */
> -	if (current->thread.dabr)
> +	if (current->thread.dabr) {
>  		set_dabr(current->thread.dabr);
> +#if defined(CONFIG_40x) || defined(CONFIG_BOOKE)
> +		mtspr(SPRN_DBCR0, current->thread.dbcr0);
> +#endif

Shouldn't this (and other places) be:

#if defined(CONFIG_44x) || defined(CONFIG_BOOKE)

if you are going to exclude 40x for now?  Otherwise this is still
enabled on 405 and setting the wrong register.

josh



More information about the Linuxppc-dev mailing list