aboutsummaryrefslogtreecommitdiff
path: root/util/cbfstool/cbfstool.c
diff options
context:
space:
mode:
authorHung-Te Lin <hungte@chromium.org>2013-03-19 12:24:43 +0800
committerHung-Te Lin <hungte@chromium.org>2013-03-20 05:47:32 +0100
commite4ea2ca18d4764f8c79560d373d548d52532566d (patch)
treec55d0d8ce4746c60f51e50917128ca9841f083a2 /util/cbfstool/cbfstool.c
parentb3b72f350e22ecdfa8e228b820f46da805d4f230 (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.c10
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"