diff options
author | Thorsten Glaser <tg@mirbsd.org> | 2011-01-06 00:21:46 +0000 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2011-01-06 03:54:12 +0100 |
commit | 88d3e6d6c572143bd95a589a44e30bfefd616b88 (patch) | |
tree | fcacba01cf761b9ed3ccc9b2244ac326ae181fad /target/tools/srec2bin | |
parent | 2ab8ae9946dd47a88089844e42140a83a0061758 (diff) |
Add experimental code to self-relocate vmlinuz on e.g. brcm
This is needed for the following reason: our memory layout
looks like this:
| |vmlinux | |CFE| * |
| | |vmlinuz | |
^
Since CFE can only load to the spot marked with ‘^’ anyway,
we load vmlinub.elf there which is basically a big rodata
blob containing vmlinuz and minimal code moving it to the
location pointed with vmlinuz above. Another solution would
be to use CFE’s “boot -raw” to place it on the location marked
with ‘*’ above (but the CFE location and size are dynamic, and
since it insists on loading to 0x80001000 anyway, this point
is virtually moot).
Even worse, we probably cannot overwrite CFE space even late,
so we move vmlinuz like this:
| |vmlinux | |CFE| |vmlinuz | |
This way, both “Total memory used by CFE” and “Boot area
(physical)” (the latter as mapped into KSEG0) are retained.
Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
Diffstat (limited to 'target/tools/srec2bin')
0 files changed, 0 insertions, 0 deletions