public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Matthias Weisser <weisserm@arcor.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH V2] Do not copy elf section to same adress
Date: Mon, 11 Apr 2011 22:12:25 +0200	[thread overview]
Message-ID: <4DA360A9.10401@arcor.de> (raw)
In-Reply-To: <20110411195954.E467E14F02E@gemini.denx.de>

Am 11.04.2011 21:59, schrieb Wolfgang Denk:
> Dear Matthias Weisser,
> 
> In message <1295435020-14190-1-git-send-email-weisserm@arcor.de> you wrote:
>> > When an elf section is already at the right position (e.g. after image
>> > decompression by bootm) there is no need to copy it. This saves some ms
>> > when bootig an elf image.
>> > 
>> > Changes since V1
>> >   - Fixed style issues
>> > 
>> > Signed-off-by: Matthias Weisser <weisserm@arcor.de>
>> > ---
>> >  common/cmd_elf.c |    8 +++++---
>> >  1 files changed, 5 insertions(+), 3 deletions(-)
>> > 
>> > diff --git a/common/cmd_elf.c b/common/cmd_elf.c
>> > index bf32612..3537769 100644
>> > --- a/common/cmd_elf.c
>> > +++ b/common/cmd_elf.c
>> > @@ -342,9 +342,11 @@ static unsigned long load_elf_image_shdr(unsigned long addr)
>> >  			memset ((void *)shdr->sh_addr, 0, shdr->sh_size);
>> >  		} else {
>> >  			image = (unsigned char *) addr + shdr->sh_offset;
>> > -			memcpy ((void *) shdr->sh_addr,
>> > -				(const void *) image,
>> > -				shdr->sh_size);
>> > +			if ((void *) shdr->sh_addr != (void *) image) {
>> > +				memcpy((void *) shdr->sh_addr,
>> > +					(const void *) image,
>> > +					shdr->sh_size);
>> > +			}
> The idea is correct, but I think the implementation is suboptimal.
> Instead of fixing this use case only, the test should be moved into
> the implementation of memcpy() itself so any other callers with such a
> situation benefit from it, too.

Well, I thought about that too. But decided against it as I thought it
will be a bit too intervening for a patch from me as this will hit all
boards.

I can't come up with an example where this may produce a problem but who
knows which exotic hardware is out there which expects that a memcpy
with identical src and dst addresses is executed exactly in that way.
But maybe we can ignore this and let these exotic boards come up with a
solution handling that special situation.

> While we are at it, we should do the same with bcopy() and memmove(),
> too.

Maybe I can post a patch tomorrow. The only thing which I can't handle
are architecture specific memcpy/memmove/... functions besides ARM.

Regards,
Matthias Wei?er

  reply	other threads:[~2011-04-11 20:12 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-18 16:14 [U-Boot] [PATCH] Do not copy elf section to same adress Matthias Weisser
2011-01-19  8:40 ` Wolfgang Denk
2011-01-19 11:03 ` [U-Boot] [PATCH V2] " Matthias Weisser
2011-04-11 16:17   ` Matthias Weisser
2011-04-11 19:59   ` Wolfgang Denk
2011-04-11 20:12     ` Matthias Weisser [this message]
2011-04-11 21:09       ` Wolfgang Denk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DA360A9.10401@arcor.de \
    --to=weisserm@arcor.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox