add user-specified offset when creating armv7 cbfs image

The "offs" provided on the command-line was not taken into account
when creating an image for armv7...

Change-Id: I1781bd636f60c00581f3bd1d54506f0f50bb8ad0
Signed-off-by: David Hendricks <dhendrix@chromium.org>
Reviewed-on: http://review.coreboot.org/2092
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
diff --git a/util/cbfstool/common.c b/util/cbfstool/common.c
index 7e33c97..befdc3f 100644
--- a/util/cbfstool/common.c
+++ b/util/cbfstool/common.c
@@ -567,10 +567,10 @@
 
 		// should be aligned to align but then we need to dynamically
 		// create the jump to the bootblock
-		loadfile(bootblock, &bootblocksize, romarea + 0x20 +
+		loadfile(bootblock, &bootblocksize, romarea + offs + 0x20 +
 			 sizeof(struct cbfs_header), SEEK_SET);
-		master_header = (struct cbfs_header *)(romarea + 0x20);
-		uint32_t *arm_vec = (uint32_t *)romarea;
+		master_header = (struct cbfs_header *)(romarea + offs + 0x20);
+		uint32_t *arm_vec = (uint32_t *)(romarea + offs);
 		/*
 		 * Encoding for this branch instruction is:
 		 * 31:28 - condition (0xe for always/unconditional)
@@ -591,16 +591,15 @@
 				ALIGN((0x40 + bootblocksize), align));
 		master_header->architecture = htonl(CBFS_ARCHITECTURE_ARMV7);
 
-		((uint32_t *) phys_to_virt(0x4))[0] =
+		((uint32_t *) phys_to_virt(0x4 + offs))[0] =
 				virt_to_phys(master_header);
 
 		recalculate_rom_geometry(romarea);
 
 		cbfs_create_empty_file(
-				ALIGN((0x40 + bootblocksize), align),
-				romsize - ALIGN((bootblocksize + 0x40), align)
-				//- sizeof(struct cbfs_header)
-				- sizeof(struct cbfs_file) );
+				offs + ALIGN((0x40 + bootblocksize), align),
+				romsize - offs - sizeof(struct cbfs_file) -
+				ALIGN((bootblocksize + 0x40), align));
 		break;
 
 	case CBFS_ARCHITECTURE_X86: