diff options
author | Hung-Te Lin <hungte@chromium.org> | 2013-03-19 12:24:43 +0800 |
---|---|---|
committer | Hung-Te Lin <hungte@chromium.org> | 2013-03-20 05:47:32 +0100 |
commit | e4ea2ca18d4764f8c79560d373d548d52532566d (patch) | |
tree | c55d0d8ce4746c60f51e50917128ca9841f083a2 /util/cbfstool/cbfstool.c | |
parent | b3b72f350e22ecdfa8e228b820f46da805d4f230 (diff) |
cbfstool locate: Implement alignment switch --align/-a
cbfstool usage change:
"-a" for "cbfstool locate" can specify base address alignment.
To support putting a blob in aligned location (ex, microcode needs to be aligned
in 0x10), alignment (-a) is implemented into "locate" command.
Verified by manually testing a file (324 bytes) with alignment=0x10:
cbfstool coreboot.rom locate -f test -n test -a 0x10
# output: 0x71fdd0
cbfstool coreboot.rom add -f test -n test -t raw -b 0x71fdd0
cbfstool coreboot.rom print -v -v
# output: test 0x71fd80 raw 324
# output: cbfs_file=0x71fd80, offset=0x50, content_address=0x71fdd0+0x144
Also verified to be compatible with old behavior by building i386/axus/tc320
(with page limitation 0x40000):
cbfstool coreboot.rom locate -f romstage_null.bin -n romstage -P 0x40000
# output: 0x44
cbfstool coreboot.rom locate -f x.bin -n romstage -P 0x40000 -a 0x30
# output: 0x60
Change-Id: I78b549fe6097ce5cb6162b09f064853827069637
Signed-off-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-on: http://review.coreboot.org/2824
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Tested-by: build bot (Jenkins)
Diffstat (limited to 'util/cbfstool/cbfstool.c')
-rw-r--r-- | util/cbfstool/cbfstool.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/util/cbfstool/cbfstool.c b/util/cbfstool/cbfstool.c index e918d89d95..eeb6936510 100644 --- a/util/cbfstool/cbfstool.c +++ b/util/cbfstool/cbfstool.c @@ -356,12 +356,12 @@ static int cbfs_locate(void) } address = cbfs_locate_entry(&image, param.name, buffer.size, - param.pagesize); + param.pagesize, param.alignment); buffer_delete(&buffer); if (address == -1) { - ERROR("'%s' can't fit in CBFS for page-size %#x.\n", - param.name, param.pagesize); + ERROR("'%s' can't fit in CBFS for page-size %#x, align %#x.\n", + param.name, param.pagesize, param.alignment); cbfs_image_delete(&image); return 1; } @@ -422,7 +422,7 @@ static const struct command commands[] = { {"add-flat-binary", "f:n:l:e:c:b:vh?", cbfs_add_flat_binary}, {"remove", "n:vh?", cbfs_remove}, {"create", "s:B:b:H:a:o:m:vh?", cbfs_create}, - {"locate", "f:n:P:Tvh?", cbfs_locate}, + {"locate", "f:n:P:a:Tvh?", cbfs_locate}, {"print", "vh?", cbfs_print}, {"extract", "n:f:vh?", cbfs_extract}, }; @@ -470,7 +470,7 @@ static void usage(char *name) "Remove a component\n" " create -s size -B bootblock -m ARCH [-a align] [-o offset] " "Create a ROM file\n" - " locate -f FILE -n NAME [-P page-size] [-T] " + " locate -f FILE -n NAME [-P page-size] [-a align] [-T] " "Find a place for a file of that size\n" " print " "Show the contents of the ROM\n" |