diff options
author | Marc Zyngier <maz@misterjones.org> | 2008-08-02 13:12:23 -0400 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2008-08-02 13:36:10 -0400 |
commit | 85ebd00334099fd5d296bcae74a66c943d46686d (patch) | |
tree | 07f799155fd03f15606e7c49a7d6547fb6f18563 /firmware/ihex2fw.c | |
parent | f1136d022af8f07a97f59c6d07483bdb82ffbd8e (diff) |
Fix IHEX firmware generation/loading
Fix both the IHEX firmware generation (len field always null, and EOF
marker a byte too short) and loading (struct ihex_binrec needs to be
packed to reflect the on-disk structure).
Signed-off-by: Marc Zyngier <maz@misterjones.org>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'firmware/ihex2fw.c')
-rw-r--r-- | firmware/ihex2fw.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/firmware/ihex2fw.c b/firmware/ihex2fw.c index 660b191ed75e..8f7fdaa9e010 100644 --- a/firmware/ihex2fw.c +++ b/firmware/ihex2fw.c | |||
@@ -250,19 +250,19 @@ static void file_record(struct ihex_binrec *record) | |||
250 | 250 | ||
251 | static int output_records(int outfd) | 251 | static int output_records(int outfd) |
252 | { | 252 | { |
253 | unsigned char zeroes[5] = {0, 0, 0, 0, 0}; | 253 | unsigned char zeroes[6] = {0, 0, 0, 0, 0, 0}; |
254 | struct ihex_binrec *p = records; | 254 | struct ihex_binrec *p = records; |
255 | 255 | ||
256 | while (p) { | 256 | while (p) { |
257 | uint16_t writelen = (p->len + 9) & ~3; | 257 | uint16_t writelen = (p->len + 9) & ~3; |
258 | 258 | ||
259 | p->addr = htonl(p->addr); | 259 | p->addr = htonl(p->addr); |
260 | p->len = htonl(p->len); | 260 | p->len = htons(p->len); |
261 | write(outfd, &p->addr, writelen); | 261 | write(outfd, &p->addr, writelen); |
262 | p = p->next; | 262 | p = p->next; |
263 | } | 263 | } |
264 | /* EOF record is zero length, since we don't bother to represent | 264 | /* EOF record is zero length, since we don't bother to represent |
265 | the type field in the binary version */ | 265 | the type field in the binary version */ |
266 | write(outfd, zeroes, 5); | 266 | write(outfd, zeroes, 6); |
267 | return 0; | 267 | return 0; |
268 | } | 268 | } |