diff mbox

[U-Boot,08/17] tools: kwbimage: Fix dest addr

Message ID 4b817215997a28db0432095fa908b5938dfbd1f7.1479913469.git.mario.six@gdsys.cc
State Accepted
Commit 94084eea3bd33a8a10b55a9717bd6ba762826323
Delegated to: Stefan Roese
Headers show

Commit Message

Mario Six Nov. 23, 2016, 3:12 p.m. UTC
To enable secure boot, we need to jump back into the BootROM to continue
the SoC's boot process instead of letting the SPL load and run the main
U-Boot image.

But, since the u-boot-spl.img (including the 64 byte header) is loaded
by the SoC as the main image, we need to compensate for the header
length to get a correct entry point.

Thus, we subtract the header size from the destination address, so that
the execution address points at the actual entry point of the image.

Other boards ignore both parameters anyway, so this change shouldn't
concern them.

Signed-off-by: Mario Six <mario.six@gdsys.cc>
---
 tools/kwbimage.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/tools/kwbimage.c b/tools/kwbimage.c
index 369aba7..0659296 100644
--- a/tools/kwbimage.c
+++ b/tools/kwbimage.c
@@ -384,7 +384,8 @@  static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
 		cpu_to_le32(payloadsz - headersz + sizeof(uint32_t));
 	main_hdr->headersz_lsb = cpu_to_le16(headersz & 0xFFFF);
 	main_hdr->headersz_msb = (headersz & 0xFFFF0000) >> 16;
-	main_hdr->destaddr     = cpu_to_le32(params->addr);
+	main_hdr->destaddr     = cpu_to_le32(params->addr)
+				 - sizeof(image_header_t);
 	main_hdr->execaddr     = cpu_to_le32(params->ep);
 	main_hdr->srcaddr      = cpu_to_le32(headersz);
 	main_hdr->ext          = hasext;