[PATCH 1/2] ARM: Make OMAP syslib.c functions available for other ARM targets

Sascha Hauer s.hauer at pengutronix.de
Wed May 8 15:57:10 EDT 2013


On Wed, May 08, 2013 at 11:42:50AM +0400, Alexander Shiyan wrote:
> > On Sat, Apr 27, 2013 at 08:58:54PM +0400, Alexander Shiyan wrote:
> > > This patch moves OMAP syslib functions into common ARM location, so
> > > make these functions available to other ARM targets.
> > > 
> > > +/**
> > > + * @brief clear & set a value in a bit range for a 32 bit address
> > > + *
> > > + * @param[in] addr Address to set/read from
> > > + * @param[in] start_bit Where to put the value
> > > + * @param[in] num_bits number of bits the value should be set
> > > + * @param[in] value the value to set
> > > + *
> > > + * @return void
> > > + */
> > > +static inline void sr32(u32 addr, u32 start_bit, u32 num_bits, u32 value)
> > > +{
> > > +	u32 tmp, msk = 0;
> > > +	msk = 1 << num_bits;
> > > +	--msk;
> > > +	tmp = readl(addr) & ~(msk << start_bit);
> > > +	tmp |=  value << start_bit;
> > > +	writel(tmp, addr);
> > > +}
> > > +
> > > +u32 wait_on_value(u32 read_bit_mask, u32 match_value, u32 read_addr, u32 bound);
> > 
> > I'm still undecided on this. On one hand it's good to have common
> > functions for these jobs, but on the other hand I'm not sure these are
> > the versions we should use as the definite answer to the problem. I
> > don't know how many versions of read-modify-write functions are around,
> > but there are many.
> > 
> > > +void sdelay(unsigned long loops);
> > 
> > The sdelay change is a good one, though I think this should be a static
> > inline function.
> 
> The U-Boot contain followed note about this inline:
> 
> /************************************************************
> * sdelay() - simple spin loop. Will be constant time as
> * its generally used in bypass conditions only. This
> * is necessary until timers are accessible.
> *
> * not inline to increase chances its in cache when called

I have no idea what difference this should make. After the first
iteration of the loop the code is in cache.
When the code is not in the cache the loop maybe takes a bit longer, but
that's ok.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list