diff options
author | Jerry Van Baren <gvb.uboot@gmail.com> | 2007-04-19 22:22:35 -0400 |
---|---|---|
committer | Jon Loeliger <jdl@freescale.com> | 2007-04-20 08:43:45 -0500 |
commit | 7ea144f4c0b47c6f25cb4862b3299b7e5d7f7813 (patch) | |
tree | 900692bfce67d57984c26ee70abf0f5235374f04 /flattree.c | |
parent | 86c01ee6dfc68c633eaaee6ab62d0742fd82b24f (diff) | |
download | dtc-7ea144f4c0b47c6f25cb4862b3299b7e5d7f7813.tar.gz |
Fix the -S to modify the totalsize properly.
With the last improvement to pad out the blob, I broke the blob
header totalsize adjustment. The adjustment was moved up in the
code before the memory image of the blob is created.
Signed-off-by: Gerald Van Baren <vanbaren@cideas.com>
Diffstat (limited to 'flattree.c')
-rw-r--r-- | flattree.c | 29 |
1 files changed, 17 insertions, 12 deletions
@@ -353,6 +353,7 @@ void dt_to_blob(FILE *f, struct boot_info *bi, int version, struct data dtbuf = empty_data; struct data strbuf = empty_data; struct boot_param_header bph; + int padlen; for (i = 0; i < ARRAY_SIZE(version_table); i++) { if (version_table[i].version == version) @@ -371,6 +372,19 @@ void dt_to_blob(FILE *f, struct boot_info *bi, int version, boot_cpuid_phys); /* + * If the user asked for more space than is used, adjust the totalsize. + */ + padlen = minsize - be32_to_cpu(bph.totalsize); + if (padlen > 0) { + bph.totalsize = cpu_to_be32(minsize); + } else { + if ((minsize > 0) && (quiet < 1)) + fprintf(stderr, + "Warning: blob size %d >= minimum size %d\n", + be32_to_cpu(bph.totalsize), minsize); + } + + /* * Assemble the blob: start with the header, add with alignment * the reserve buffer, add the reserve map terminating zeroes, * the device tree itself, and finally the strings. @@ -385,18 +399,9 @@ void dt_to_blob(FILE *f, struct boot_info *bi, int version, /* * If the user asked for more space than is used, pad out the blob. */ - if (minsize > 0) { - int padlen = minsize - be32_to_cpu(bph.totalsize); - - if (padlen > 0) { - blob = data_append_zeroes(blob, padlen); - bph.totalsize = cpu_to_be32(minsize); - } else { - if (quiet < 1) - fprintf(stderr, - "Warning: blob size %d >= minimum size %d\n", - be32_to_cpu(bph.totalsize), minsize); - } + if (padlen > 0) { + blob = data_append_zeroes(blob, padlen); + bph.totalsize = cpu_to_be32(minsize); } fwrite(blob.val, blob.len, 1, f); |