From a90bd527d9c450974a7c3a45be026331927823cc Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Wed, 15 Aug 2012 16:05:50 -0700 Subject: cbfstool: add offset parameter to create command CBFS allows coreboot rom images that are only partially covered by the filesystem itself. The intention of this feature was to allow EC / ME / IMC firmware to be inserted easily at the beginning of the image. However, this was never implemented in cbfstool. This patch implements an additional parameter for cbfstool. If you call cbfstool like this: cbfstool coreboot.rom create 8192K bootblock.bin 64 0x700000 it will now create an 8M image with CBFS covering the last 1M of that image. Test: cbfstool coreboot.rom create 8192K bootblock.bin 64 0x700000 creates an 8M image that is 7M of 0xff and 1M of CBFS. Change-Id: I5c016b4bf32433f160b43f4df2dd768276f4c70b Signed-off-by: Stefan Reinauer Reviewed-on: http://review.coreboot.org/1708 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich --- util/cbfstool/common.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'util/cbfstool/common.c') diff --git a/util/cbfstool/common.c b/util/cbfstool/common.c index 648bfa849d..23f3ecfa87 100644 --- a/util/cbfstool/common.c +++ b/util/cbfstool/common.c @@ -446,7 +446,7 @@ void *create_cbfs_file(const char *filename, void *data, uint32_t * datasize, } int create_cbfs_image(const char *romfile, uint32_t _romsize, - const char *bootblock, uint32_t align) + const char *bootblock, uint32_t align, uint32_t offs) { romsize = _romsize; unsigned char *romarea = malloc(romsize); @@ -473,14 +473,14 @@ int create_cbfs_image(const char *romfile, uint32_t _romsize, master_header->romsize = htonl(romsize); master_header->bootblocksize = htonl(bootblocksize); master_header->align = htonl(align); - master_header->offset = htonl(0); + master_header->offset = htonl(offs); ((uint32_t *) phys_to_virt(0xfffffffc))[0] = virt_to_phys(master_header); recalculate_rom_geometry(romarea); - cbfs_create_empty_file((0 - romsize) & 0xffffffff, - romsize - bootblocksize - + cbfs_create_empty_file((0 - romsize + offs) & 0xffffffff, + romsize - offs - bootblocksize - sizeof(struct cbfs_header) - sizeof(struct cbfs_file) - 16); -- cgit v1.2.3