What was suppose to be a stack variable was declared as a pointer,
  overwriting random memory.
Also moved the libfdt.a requirement into the main Makefile.  That is
  The U-Boot Way.
 LIBS += $(shell if [ -d post/board/$(BOARDDIR) ]; then echo \
        "post/board/$(BOARDDIR)/libpost$(BOARD).a"; fi)
 LIBS += common/libcommon.a
+LIBS += libfdt/libfdt.a
 LIBS += $(BOARDLIBS)
 
 LIBS := $(addprefix $(obj),$(LIBS))
 
 #
 
 TEXT_BASE = 0xFE000000
-
-#
-# Additional board-specific libraries
-#
-BOARDLIBS = libfdt/libfdt.a
 
        }
 
        if (initrd_start && initrd_end) {
-               struct fdt_reserve_entry *re;
+               struct fdt_reserve_entry re;
                int  used;
                int  total;
                int  j;
                 */
                for (j = 0; j < used; j++) {
                        err = fdt_get_reservemap(fdt, j, &re);
-                       if (re->address == initrd_start) {
+                       if (re.address == initrd_start) {
                                break;
                        }
                }