powerpc: Replace __get_cpu_var uses

Christoph Lameter cl at linux.com
Thu Oct 30 00:49:25 AEDT 2014


On Wed, 29 Oct 2014, Michael Ellerman wrote:

> >  #define __ARCH_IRQ_STAT
> >
> > -#define local_softirq_pending()	__get_cpu_var(irq_stat).__softirq_pending
> > +#define local_softirq_pending()	__this_cpu_read(irq_stat.__softirq_pending)
> > +#define set_softirq_pending(x) __this_cpu_write(irq_stat._softirq_pending, (x))
> > +#define or_softirq_pending(x) __this_cpu_or(irq_stat._softirq_pending, (x))
>
> This breaks the build, because we also get the version of set_ and or_ from
> include/linux/interrupt.h, and then because it's __softirq_pending.
>
> Fixed by adding:
>
> #define __ARCH_SET_SOFTIRQ_PENDING
>
> And fixing the typo.

Ok.

> >
> >  void __set_breakpoint(struct arch_hw_breakpoint *brk)
> >  {
> > -	__get_cpu_var(current_brk) = *brk;
> > +	__this_cpu_write(current_brk, *brk);
>
> This breaks the build because we're trying to do a structure assignment but
> __this_cpu_write() only supports certain sizes.
>
> I replaced it with this which I think is right?
>
> 	memcpy(this_cpu_ptr(&current_brk), brk, sizeof(*brk));
>
>

Yes that is right. Thank you.



More information about the Linuxppc-dev mailing list