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>
This commit is contained in:
David Hendricks 2013-01-02 17:29:00 -08:00 committed by Ronald G. Minnich
parent 45256b3bfc
commit 454856b274
1 changed files with 7 additions and 8 deletions

View File

@ -567,10 +567,10 @@ int create_cbfs_image(const char *romfile, uint32_t _romsize,
// should be aligned to align but then we need to dynamically // should be aligned to align but then we need to dynamically
// create the jump to the bootblock // create the jump to the bootblock
loadfile(bootblock, &bootblocksize, romarea + 0x20 + loadfile(bootblock, &bootblocksize, romarea + offs + 0x20 +
sizeof(struct cbfs_header), SEEK_SET); sizeof(struct cbfs_header), SEEK_SET);
master_header = (struct cbfs_header *)(romarea + 0x20); master_header = (struct cbfs_header *)(romarea + offs + 0x20);
uint32_t *arm_vec = (uint32_t *)romarea; uint32_t *arm_vec = (uint32_t *)(romarea + offs);
/* /*
* Encoding for this branch instruction is: * Encoding for this branch instruction is:
* 31:28 - condition (0xe for always/unconditional) * 31:28 - condition (0xe for always/unconditional)
@ -591,16 +591,15 @@ int create_cbfs_image(const char *romfile, uint32_t _romsize,
ALIGN((0x40 + bootblocksize), align)); ALIGN((0x40 + bootblocksize), align));
master_header->architecture = htonl(CBFS_ARCHITECTURE_ARMV7); 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); virt_to_phys(master_header);
recalculate_rom_geometry(romarea); recalculate_rom_geometry(romarea);
cbfs_create_empty_file( cbfs_create_empty_file(
ALIGN((0x40 + bootblocksize), align), offs + ALIGN((0x40 + bootblocksize), align),
romsize - ALIGN((bootblocksize + 0x40), align) romsize - offs - sizeof(struct cbfs_file) -
//- sizeof(struct cbfs_header) ALIGN((bootblocksize + 0x40), align));
- sizeof(struct cbfs_file) );
break; break;
case CBFS_ARCHITECTURE_X86: case CBFS_ARCHITECTURE_X86: