Browse Source

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 <vanbaren@cideas.com>
main
Jerry Van Baren 18 years ago committed by Jon Loeliger
parent
commit
4384b23454
  1. 19
      dtc.c
  2. 6
      dtc.h
  3. 22
      flattree.c

19
dtc.c

@ -21,6 +21,13 @@ @@ -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) @@ -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[]) @@ -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[]) @@ -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;

6
dtc.h

@ -37,9 +37,11 @@ @@ -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, ...)
{

22
flattree.c

@ -295,10 +295,18 @@ static struct data flatten_reserve_list(struct reserve_info *reservelist, @@ -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, @@ -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);

Loading…
Cancel
Save