All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steve Rae <srae@broadcom.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] arm: Allow u-boot to run from offset base address
Date: Wed, 11 Jun 2014 11:56:00 -0700	[thread overview]
Message-ID: <5398A640.3050105@broadcom.com> (raw)
In-Reply-To: <E1WucIJ-0001Lv-5Q@janus>



On 14-06-10 11:45 PM, Albert ARIBAUD wrote:
> Hi Wolfgang,
>
> On Wed, 11 Jun 2014 06:49:28 +0200, Wolfgang Denk <wd@denx.de> wrote:
>
>> Dear Steve,
>>
>> In message <53979199.5010100@broadcom.com> you wrote:
>>>
>>> OK - I think that one of the alternate proposals would be to
>>> conditionally reserve a "32 byte block" prior to the _start symbol (in
>>> "arch/arm/cpu/armv8/start.S") which would then be filled in by a
>>> post-processing step... This could be implemented by:
>>
>> Yes, that illustrates the idea.  However, this implementation suffers
>> from the use of an #ifdef where none is actually needed.  Instead, you
>> can create your own source file which defines the header; this could
>> be then even in it's own segment, say:
>>
>> your_header.c:
>>
>> struct your_header {
>> 	u_int32[8];
>> } your_header __attribute__ ((__section__ (".your_hdr")));
>>
>> All that is needed then is to make the linker place this segment in
>> front of the text segment.
>>
>> This avoids an ugly #ifdef, and also modifications in the common code.
>
> Agreed and seconded.
>
> Plus, using a dedicated 'header' section and a separate C source file
> for the header makes it automatic that if no input 'header' section
> were provided then no output 'header' section would be emitted; IOW,
> we would not need two different linker scripts, a single one would be
> useable for both 'headerless' and 'headerful' image types.
>
> Also, the alignment constraint should be configurable.
>
>> Best regards,
>>
>> Wolfgang Denk
>
> Amicalement,
>

Albert, Wolfgang, et al.

I didn't know about the automatic handling of "conditional" sections in 
the linker script file - Thanks!!!

So if I add a "your_header.c" as above, then

(1) I need to modify "arch/arm/cpu/armv8/u-boot.lds":
  	. = 0x00000000;

+ 	. = ALIGN(8);
+	.your_hdr : {
+		KEEP(*(.your_hdr*));
+	}
+
	. = ALIGN(8);
  	.text :
  	{

(2) then (I believe) I need to modify the "Makefile" to define the start 
address of this new section:
+LDFLAGS_u-boot += --section-start=".your_hdr"=CONFIG_YOUR_HEADER_ADDR

(3) and (I believe) I need to modify the OBJCOPYFLAGS (somewhere) in 
order to include this new section in the u-boot.bin:
+OBJCOPYFLAGS += -j .your_hdr

(... I don't actually have this working yet; so I suspect more changes 
are required ...)

And in the end, (I believe) I am just going to have a block (likely 4096 
bytes) prepended to the "original" u-boot.bin; which I can do today with 
no code changes at all....

Remember that original design request was effectively a two line change:
+	gd->mon_len += CONFIG_SYS_TEXT_BASE % 4096;
and
+	gd->relocaddr += CONFIG_SYS_TEXT_BASE % 4096;

Regrettably, since this is not going to be accepted, I am abandoning 
this change.
Thanks, Steve

  reply	other threads:[~2014-06-11 18:56 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-14 22:05 [U-Boot] [PATCH] arm: Allow u-boot to run from offset base address Darwin Rambo
2014-05-14 22:41 ` Jeroen Hofstee
2014-05-15 14:21   ` Darwin Rambo
2014-05-15 15:21     ` Wolfgang Denk
2014-05-15 16:07       ` Darwin Rambo
2014-05-15 19:19         ` Wolfgang Denk
2014-05-26  9:50           ` Albert ARIBAUD
2014-05-26 16:11             ` Darwin Rambo
2014-06-02  7:26               ` Albert ARIBAUD
2014-06-03  0:37                 ` Darwin Rambo
2014-06-09 10:23                   ` Albert ARIBAUD
2014-06-09 20:45                     ` Steve Rae
2014-06-09 20:56                       ` Jeroen Hofstee
2014-06-10  5:16                       ` Albert ARIBAUD
2014-06-10 17:56                         ` Steve Rae
2014-06-10 18:13                           ` Wolfgang Denk
2014-06-10 19:38                             ` Steve Rae
2014-06-10 20:35                               ` Wolfgang Denk
2014-06-10 23:15                                 ` Steve Rae
2014-06-11  4:49                                   ` Wolfgang Denk
2014-06-11  6:45                                     ` Albert ARIBAUD
2014-06-11 18:56                                       ` Steve Rae [this message]
2014-06-11 21:16                                         ` Wolfgang Denk
2014-06-25 12:52                                           ` Albert ARIBAUD
2014-06-10 21:20                               ` Albert ARIBAUD
2014-06-11  0:14                                 ` Steve Rae
2014-06-11  5:02                                   ` Wolfgang Denk
2014-06-11  4:38                                 ` Wolfgang Denk
2014-05-15  4:26 ` Wolfgang Denk
2014-05-15 14:16   ` Darwin Rambo
2014-05-15 15:16     ` 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=5398A640.3050105@broadcom.com \
    --to=srae@broadcom.com \
    --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.