]> git.sur5r.net Git - u-boot/blobdiff - common/ft_build.c
Memory footprint optimizations
[u-boot] / common / ft_build.c
index b5a997c1ba5ed514cdb1e1e9650bd4757c938b1f..0b6c2b7334760df07b7118e7bebc433d4b9e17a9 100644 (file)
@@ -29,6 +29,7 @@
 #include <stddef.h>
 
 #include <ft_build.h>
+#include <linux/ctype.h>
 
 #undef DEBUG
 
@@ -87,9 +88,9 @@ static int lookup_string(struct ft_cxt *cxt, const char *name)
 
        p = cxt->p;
        while (p < cxt->p_end) {
-               if (strcmp(p, name) == 0)
+               if (strcmp((char *)p, name) == 0)
                        return p - cxt->p;
-               p += strlen(p) + 1;
+               p += strlen((char *)p) + 1;
        }
 
        return -1;
@@ -103,7 +104,7 @@ void ft_prop(struct ft_cxt *cxt, const char *name, const void *data, int sz)
        if (off == -1) {
                memcpy(cxt->p_end, name, strlen(name) + 1);
                off = cxt->p_end - cxt->p;
-               cxt->p_end += strlen(name) + 2;
+               cxt->p_end += strlen(name) + 1;
        }
 
        /* now put offset from beginning of *STRUCTURE* */
@@ -143,9 +144,9 @@ void ft_init_cxt(struct ft_cxt *cxt, void *blob)
        cxt->p_rsvmap += SIZE_OF_RSVMAP_ENTRY;
        }
 
-       cxt->p_start = (char*)bph + bph->off_dt_struct;
-       cxt->p_end = (char *)bph + bph->totalsize;
-       cxt->p = (char *)bph + bph->off_dt_strings;
+       cxt->p_start = (u8 *)bph + bph->off_dt_struct;
+       cxt->p_end = (u8 *)bph + bph->totalsize;
+       cxt->p = (u8 *)bph + bph->off_dt_strings;
 }
 
 /* add a reserver physical area to the rsvmap */
@@ -180,11 +181,6 @@ void ft_finalize_tree(struct ft_cxt *cxt) {
        bph->dt_strings_size = cxt->p_end - cxt->p;
 }
 
-static inline int isprint(int c)
-{
-       return c >= 0x20 && c <= 0x7e;
-}
-
 static int is_printable_string(const void *data, int len)
 {
        const char *s = data;
@@ -219,7 +215,9 @@ static void print_data(const void *data, int len)
                return;
 
        if (is_printable_string(data, len)) {
-               printf(" = \"%s\"", (char *)data);
+               puts(" = \"");
+               puts(data);
+               puts("\"");
                return;
        }
 
@@ -398,58 +396,6 @@ void *ft_get_prop(void *bphp, const char *propname, int *szp)
 
 /********************************************************************/
 
-/* Function that returns a character from the environment */
-extern uchar(*env_get_char) (int);
-
-#define BDM(x) {       .name = #x, .offset = offsetof(bd_t, bi_ ##x ) }
-
-#ifdef CONFIG_OF_HAS_BD_T
-static const struct {
-       const char *name;
-       int offset;
-} bd_map[] = {
-       BDM(memstart),
-       BDM(memsize),
-       BDM(flashstart),
-       BDM(flashsize),
-       BDM(flashoffset),
-       BDM(sramstart),
-       BDM(sramsize),
-#if defined(CONFIG_5xx) || defined(CONFIG_8xx) || defined(CONFIG_8260) \
-       || defined(CONFIG_E500)
-       BDM(immr_base),
-#endif
-#if defined(CONFIG_MPC5xxx)
-       BDM(mbar_base),
-#endif
-#if defined(CONFIG_MPC83XX)
-       BDM(immrbar),
-#endif
-#if defined(CONFIG_MPC8220)
-       BDM(mbar_base),
-       BDM(inpfreq),
-       BDM(pcifreq),
-       BDM(pevfreq),
-       BDM(flbfreq),
-       BDM(vcofreq),
-#endif
-       BDM(bootflags),
-       BDM(ip_addr),
-       BDM(intfreq),
-       BDM(busfreq),
-#ifdef CONFIG_CPM2
-       BDM(cpmfreq),
-       BDM(brgfreq),
-       BDM(sccfreq),
-       BDM(vco),
-#endif
-#if defined(CONFIG_MPC5xxx)
-       BDM(ipbfreq),
-       BDM(pcifreq),
-#endif
-       BDM(baudrate),
-};
-#endif
 
 void ft_setup(void *blob, bd_t * bd, ulong initrd_start, ulong initrd_end)
 {
@@ -457,16 +403,6 @@ void ft_setup(void *blob, bd_t * bd, ulong initrd_start, ulong initrd_end)
        int len;
        struct ft_cxt cxt;
        ulong clock;
-#if defined(CONFIG_OF_HAS_UBOOT_ENV)
-       int k, nxt;
-#endif
-#if defined(CONFIG_OF_HAS_BD_T)
-       u8 *end;
-#endif
-#if defined(CONFIG_OF_HAS_UBOOT_ENV) || defined(CONFIG_OF_HAS_BD_T)
-       int i;
-       static char tmpenv[256];
-#endif
 
        /* disable OF tree; booting old kernel */
        if (getenv("disable_of") != NULL) {
@@ -487,30 +423,6 @@ void ft_setup(void *blob, bd_t * bd, ulong initrd_start, ulong initrd_end)
        /* back into root */
        ft_backtrack_node(&cxt);
 
-#ifdef CONFIG_OF_HAS_UBOOT_ENV
-       ft_begin_node(&cxt, "u-boot-env");
-
-       for (i = 0; env_get_char(i) != '\0'; i = nxt + 1) {
-               char *s, *lval, *rval;
-
-               for (nxt = i; env_get_char(nxt) != '\0'; ++nxt) ;
-               s = tmpenv;
-               for (k = i; k < nxt && s < &tmpenv[sizeof(tmpenv) - 1]; ++k)
-                       *s++ = env_get_char(k);
-               *s++ = '\0';
-               lval = tmpenv;
-               s = strchr(tmpenv, '=');
-               if (s != NULL) {
-                       *s++ = '\0';
-                       rval = s;
-               } else
-                       continue;
-               ft_prop_str(&cxt, lval, rval);
-       }
-
-       ft_end_node(&cxt);
-#endif
-
        ft_begin_node(&cxt, "chosen");
        ft_prop_str(&cxt, "name", "chosen");
 
@@ -531,36 +443,7 @@ void ft_setup(void *blob, bd_t * bd, ulong initrd_start, ulong initrd_end)
        ft_end_tree(&cxt);
        ft_finalize_tree(&cxt);
 
-#ifdef CONFIG_OF_HAS_BD_T
-       /* paste the bd_t at the end of the flat tree */
-       end = (char *)blob +
-           be32_to_cpu(((struct boot_param_header *)blob)->totalsize);
-       memcpy(end, bd, sizeof(*bd));
-#endif
-
 #ifdef CONFIG_PPC
-
-#ifdef CONFIG_OF_HAS_BD_T
-       for (i = 0; i < sizeof(bd_map)/sizeof(bd_map[0]); i++) {
-               uint32_t v;
-
-               sprintf(tmpenv, "/bd_t/%s", bd_map[i].name);
-               v = *(uint32_t *)((char *)bd + bd_map[i].offset);
-
-               p = ft_get_prop(blob, tmpenv, &len);
-               if (p != NULL)
-                       *p = cpu_to_be32(v);
-       }
-
-       p = ft_get_prop(blob, "/bd_t/enetaddr", &len);
-       if (p != NULL)
-               memcpy(p, bd->bi_enetaddr, 6);
-
-       p = ft_get_prop(blob, "/bd_t/ethspeed", &len);
-       if (p != NULL)
-               *p = cpu_to_be32((uint32_t) bd->bi_ethspeed);
-#endif
-
        clock = bd->bi_intfreq;
        p = ft_get_prop(blob, "/cpus/" OF_CPU "/clock-frequency", &len);
        if (p != NULL)