Subject: Re: [PATCH] fix gcc4 warning in asm-ppc/time.h

From: Benjamin Herrenschmidt <[email-masked]>
Date: Thu, 04 Aug 2005 11:46:38 +0200

On Thu, 2005-08-04 at 07:54 +0200, Gabriel Paubert wrote:
> On Wed, Aug 03, 2005 at 10:15:17PM -0700, Andrew Morton wrote:
> > Christoph Hellwig <[email-masked]> wrote:
> > >
> > > A function must not return a const value, instead use
> > > __attribute_const__.
> > > 
> > > 
> > > Index: linux-2.6/include/asm/time.h
> > > ===================================================================
> > > --- linux-2.6.orig/include/asm/time.h	2005-04-30 10:17:19.000000000 +0200
> > > +++ linux-2.6/include/asm/time.h	2005-08-01 11:57:12.000000000 +0200
> > > @@ -10,6 +10,7 @@
> > >  #define __ASM_TIME_H__
> > >  
> > >  #include <linux/config.h>
> > > +#include <linux/compiler.h>
> > >  #include <linux/types.h>
> > >  #include <linux/rtc.h>
> > >  #include <linux/threads.h>
> > > @@ -58,7 +59,7 @@
> > >  /* Accessor functions for the timebase (RTC on 601) registers. */
> > >  /* If one day CONFIG_POWER is added just define __USE_RTC as 1 */
> > >  #ifdef CONFIG_6xx
> > > -extern __inline__ int const __USE_RTC(void) {
> > > +extern __inline__ int __attribute_const__ __USE_RTC(void) {
> > >  	return (mfspr(SPRN_PVR)>>16) == 1;
> > >  }
> > >  #else
> > 
> > Do we really want to do this?  The above implies that mfspr(SPRN_PVR) will
> > return the same value across the entire uptime of the kernel.  Is that
> > true?
> 
> Yes, it is a read-only register. PVR means processor version register
> and is linked to the revision of the silicon. Besides that it is
> only used in this context to check for processors of the 601 family
> (the very first PPC processors). Nobody expects them to be hotpluggable,
> nor even used in SMP systems for the matter.

Yes ... However, we want to get rid of PVR accesses. They are a problem
for Xen-like virtualization without HW support (that is running the
kernel actually in user space) among other things.

The above should be replaced by a test of CPU features.

Ben.