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

Alexander Shiyan shc_work at mail.ru
Wed May 8 03:42:50 EDT 2013


> 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
*************************************************************/

So...

---


More information about the barebox mailing list