Implement the -R option and add a -S option.
PATCH 1/1 Implement the -R option and add a -S option.
Implement the -R <number> option to add memory reserve slots. Add a -S <size> option makes the blob at least this number of bytes.
Signed-off-by Gerald Van Baren <[email protected]>
--- dtc.c | 19 ++++++++++++++++--- dtc.h | 6 ++++-- flattree.c | 22 ++++++++++++++++++++-- 3 files changed, 40 insertions(+), 7 deletions(-)
dtc.c +16 -3
@@ -21,6 +21,13 @@#include "dtc.h" #include "srcpos.h" +/* +* Command line options +*/ +int quiet;/* Level of quietness */ +int reservenum;/* Number of memory reservation slots */ +int minsize;/* Minimum blob size */ +char *join_path (char *path,char *name) {int lenp =strlen (path);
@@ -85,6 +92,8 @@ static void usage(void)fprintf (stderr,"\t\tBlob version to produce, defaults to %d (relevant for dtb\n\t\tand asm output only)\n" ,OF_DEFAULT_VERSION );fprintf (stderr,"\t-R <number>\n" );fprintf (stderr,"\t\tMake space for <number> reserve map entries (relevant for \n\t\tdtb and asm output only)\n" ); +fprintf (stderr,"\t-S <bytes>\n" ); +fprintf (stderr,"\t\tMake the blob at least <bytes> long (extra space)\n" );fprintf (stderr,"\t-b <number>\n" );fprintf (stderr,"\t\tSet the physical boot cpu\n" );fprintf (stderr,"\t-f\n" );
@@ -104,12 +113,13 @@ int main(int argc, char *argv[])FILE *inf =NULL ;FILE *outf =NULL ;int outversion =OF_DEFAULT_VERSION ; -int reservenum =1 ;int boot_cpuid_phys =0xfeedbeef ; - quiet =0 ; + quiet =0 ; + reservenum =0 ; + minsize =0 ; -while ((opt =getopt (argc, argv,"hI:O:o:V:R:fqb:" )) !=EOF ) { +while ((opt =getopt (argc, argv,"hI:O:o:V:R:S:fqb:" )) !=EOF ) {switch (opt) {case 'I' : inform = optarg;
@@ -126,6 +136,9 @@ int main(int argc, char *argv[])case 'R' : reservenum =strtol (optarg,NULL ,0 );break ; +case 'S' : + minsize =strtol (optarg,NULL ,0 ); +break ;case 'f' : force =1 ;break ;
dtc.h +4 -2
@@ -37,9 +37,11 @@#include "flat_dt.h" /* -* Level of quietness +* Command line options */ -int quiet; +extern int quiet;/* Level of quietness */ +extern int reservenum;/* Number of memory reservation slots */ +extern int minsize;/* Minimum blob size */ static inline void die (char * str, ...) {
flattree.c +20 -2
@@ -295,10 +295,18 @@ static struct data flatten_reserve_list(struct reserve_info *reservelist, {struct reserve_info *re;struct data d = empty_data; +static struct reserve_entry null_re = {0 ,0 }; +int j;for (re = reservelist; re; re = re->next) { d =data_append_re (d, &re->re); } +/* +* Add additional reserved slots if the user asked for them. +*/ +for (j =0 ; j < reservenum; j++) { + d =data_append_re (d, &null_re); + }return d; }
@@ -324,8 +332,18 @@ static void make_bph(struct boot_param_header *bph, bph->off_dt_struct =cpu_to_be32 (reserve_off + reservesize); bph->off_dt_strings =cpu_to_be32 (reserve_off + reservesize + dtsize); - bph->totalsize =cpu_to_be32 (reserve_off + reservesize - + dtsize + strsize); + bph->totalsize = reserve_off + reservesize + dtsize + strsize; +if (minsize >0 ) { +if (bph->totalsize >= minsize) { +if (quiet <1 ) +fprintf (stderr, +"Warning: blob size %d >= minimum size %d\n" , + bph->totalsize, minsize); + + }else + bph->totalsize = minsize; + } + bph->totalsize =cpu_to_be32 (bph->totalsize);if (vi->flags &FTF_BOOTCPUID ) bph->boot_cpuid_phys =cpu_to_be32 (boot_cpuid_phys);
Signature · 1 line
1.4.4.4