[U-Boot-Users] [PATCH 3/5] OneNAND support

Wolfgang Denk wd at denx.de
Mon Sep 10 09:06:55 CEST 2007


In message <002501c7f347$e1d579c0$e1ac580a at swcenter.sec.samsung.co.kr> you wrote:
> > ...
> > > +#ifdef __ARM__
> > > +extern void memcpy32(void *, void *, size_t);
> > > +
> > > +static void *memcpy(void *dest, const void *src, size_t count)
> > > +{
> > > +	if (count < 32) {
> > > +		unsigned short *_s = (unsigned short *)(src);
> > > +		unsigned short *_d = (unsigned short *)(dest);
> > > +		count >>= 1;
> > > +		while (count--)
> > > +			*_d++ = *_s++;
> > > +		return _d;
> > > +	}
> > > +
> > > +	memcpy32(dest, (void *)src, count);
> > > +
> > > +	return (void *)count;
> > > +}
> > > +#endif
> > 
> > Why exactly do we need this? And why do we need an additonal  special
> > function memcpy32?
> 
> It's for performance. Now ARM used the char-based memcpy. Even though it's working with current char-based memcpy, I want to use the
> optimized memcpy.

How much difference does this optimization make in real life? Do you
have any time measurements at hand?

I'm concerned about correctness. What happens in your coide when I
write

	memcpy (dst, src, 5);

How many bytes will be copied?

What happens when src or dst or both are pointing to  odd  addresses,
i. e. in case of unaligned accesses?


> And basically OneNAND uses the 16-bit buswidth so we don't sure the correct behavior in OneNAND BufferRAM if we use the char-based
> memcpy.

I remember that ARM is terribly broken there... :-(

> Memcpy32 is 32-bytes aligned optimized. Since we know the memcpy usages in OneNAND driver, we guarantee the usage of memcpy32.

But the memcpy() you provide will also be used in all other partrs of
U-Boot, won't it?

> > Using a dynamic buffer and a memset() call in the init code may helpt
> > to reduce the memory footprint. What do you think?
> 
> At first I want to sync between the linux OneNAND code and u-boot one.
> The current code of u-boot patch is the first implementation of linux OneNAND.
> There are a lot of works to sync.
> So after committing of patches, I will modify it.

Agreed.

> Also others are same. Some functions are don't needed at u-boot. But it was remained for easy adaptation from linux to u-boot.

Understood and agreed.

> Thank you,

Thank *you*.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Deliver yesterday, code today, think tomorrow."




More information about the U-Boot mailing list