public inbox for u-boot@lists.denx.de
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox