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
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.