DECLARE_GLOBAL_DATA_PTR;
 
-static image_header_t* image_get_ramdisk (ulong rd_addr, uint8_t arch,
+static const image_header_t* image_get_ramdisk (ulong rd_addr, uint8_t arch,
                                                int verify);
 #else
 #include "mkimage.h"
 /*****************************************************************************/
 /* Legacy format routines */
 /*****************************************************************************/
-int image_check_hcrc (image_header_t *hdr)
+int image_check_hcrc (const image_header_t *hdr)
 {
        ulong hcrc;
        ulong len = image_get_header_size ();
        return (hcrc == image_get_hcrc (hdr));
 }
 
-int image_check_dcrc (image_header_t *hdr)
+int image_check_dcrc (const image_header_t *hdr)
 {
        ulong data = image_get_data (hdr);
        ulong len = image_get_data_size (hdr);
  * returns:
  *     number of components
  */
-ulong image_multi_count (image_header_t *hdr)
+ulong image_multi_count (const image_header_t *hdr)
 {
        ulong i, count = 0;
        uint32_t *size;
  *     data address and size of the component, if idx is valid
  *     0 in data and len, if idx is out of range
  */
-void image_multi_getimg (image_header_t *hdr, ulong idx,
+void image_multi_getimg (const image_header_t *hdr, ulong idx,
                        ulong *data, ulong *len)
 {
        int i;
        }
 }
 
-static void image_print_type (image_header_t *hdr)
+static void image_print_type (const image_header_t *hdr)
 {
        const char *os, *arch, *type, *comp;
 
 
 /**
  * image_print_contents - prints out the contents of the legacy format image
- * @hdr: pointer to the legacy format image header
+ * @ptr: pointer to the legacy format image header
  * @p: pointer to prefix string
  *
  * image_print_contents() formats a multi line legacy image contents description.
  * returns:
  *     no returned results
  */
-void image_print_contents (image_header_t *hdr)
+void image_print_contents (const void *ptr)
 {
+       const image_header_t *hdr = (const image_header_t *)ptr;
        const char *p;
 
 #ifdef USE_HOSTCC
  *     pointer to a ramdisk image header, if image was found and valid
  *     otherwise, return NULL
  */
-static image_header_t* image_get_ramdisk (ulong rd_addr, uint8_t arch,
+static const image_header_t *image_get_ramdisk (ulong rd_addr, uint8_t arch,
                                                int verify)
 {
-       image_header_t *rd_hdr = (image_header_t *)rd_addr;
+       const image_header_t *rd_hdr = (const image_header_t *)rd_addr;
 
        if (!image_check_magic (rd_hdr)) {
                puts ("Bad Magic Number\n");
  */
 int genimg_get_format (void *img_addr)
 {
-       ulong           format = IMAGE_FORMAT_INVALID;
-       image_header_t  *hdr;
+       ulong format = IMAGE_FORMAT_INVALID;
+       const image_header_t *hdr;
 #if defined(CONFIG_FIT) || defined(CONFIG_OF_LIBFDT)
-       char            *fit_hdr;
+       char *fit_hdr;
 #endif
 
-       hdr = (image_header_t *)img_addr;
+       hdr = (const image_header_t *)img_addr;
        if (image_check_magic(hdr))
                format = IMAGE_FORMAT_LEGACY;
 #if defined(CONFIG_FIT) || defined(CONFIG_OF_LIBFDT)
                /* get data size */
                switch (genimg_get_format ((void *)ram_addr)) {
                case IMAGE_FORMAT_LEGACY:
-                       d_size = image_get_data_size ((image_header_t *)ram_addr);
+                       d_size = image_get_data_size ((const image_header_t *)ram_addr);
                        debug ("   Legacy format image found at 0x%08lx, size 0x%08lx\n",
                                        ram_addr, d_size);
                        break;
 {
        ulong rd_addr, rd_load;
        ulong rd_data, rd_len;
-       image_header_t *rd_hdr;
+       const image_header_t *rd_hdr;
 #if defined(CONFIG_FIT)
        void            *fit_hdr;
        const char      *fit_uname_config = NULL;
        puts (" - must RESET the board to recover.\n");
 }
 
-static image_header_t *image_get_fdt (ulong fdt_addr)
+static const image_header_t *image_get_fdt (ulong fdt_addr)
 {
-       image_header_t *fdt_hdr = (image_header_t *)fdt_addr;
+       const image_header_t *fdt_hdr = (const image_header_t *)fdt_addr;
 
        image_print_contents (fdt_hdr);
 
 int boot_get_fdt (int flag, int argc, char *argv[], bootm_headers_t *images,
                char **of_flat_tree, ulong *of_size)
 {
+       const image_header_t *fdt_hdr;
        ulong           fdt_addr;
-       image_header_t  *fdt_hdr;
        char            *fdt_blob = NULL;
        ulong           image_start, image_end;
        ulong           load_start, load_end;
 
 }
 
 #define image_get_hdr_l(f) \
-       static inline uint32_t image_get_##f(image_header_t *hdr) \
+       static inline uint32_t image_get_##f(const image_header_t *hdr) \
        { \
                return uimage_to_cpu (hdr->ih_##f); \
        }
 image_get_hdr_l (dcrc);                /* image_get_dcrc */
 
 #define image_get_hdr_b(f) \
-       static inline uint8_t image_get_##f(image_header_t *hdr) \
+       static inline uint8_t image_get_##f(const image_header_t *hdr) \
        { \
                return hdr->ih_##f; \
        }
 image_get_hdr_b (type);                /* image_get_type */
 image_get_hdr_b (comp);                /* image_get_comp */
 
-static inline char *image_get_name (image_header_t *hdr)
+static inline char *image_get_name (const image_header_t *hdr)
 {
        return (char *)hdr->ih_name;
 }
 
-static inline uint32_t image_get_data_size (image_header_t *hdr)
+static inline uint32_t image_get_data_size (const image_header_t *hdr)
 {
        return image_get_size (hdr);
 }
  * returns:
  *     image payload data start address
  */
-static inline ulong image_get_data (image_header_t *hdr)
+static inline ulong image_get_data (const image_header_t *hdr)
 {
        return ((ulong)hdr + image_get_header_size ());
 }
 
-static inline uint32_t image_get_image_size (image_header_t *hdr)
+static inline uint32_t image_get_image_size (const image_header_t *hdr)
 {
        return (image_get_size (hdr) + image_get_header_size ());
 }
-static inline ulong image_get_image_end (image_header_t *hdr)
+static inline ulong image_get_image_end (const image_header_t *hdr)
 {
        return ((ulong)hdr + image_get_image_size (hdr));
 }
        strncpy (image_get_name (hdr), name, IH_NMLEN);
 }
 
-int image_check_hcrc (image_header_t *hdr);
-int image_check_dcrc (image_header_t *hdr);
+int image_check_hcrc (const image_header_t *hdr);
+int image_check_dcrc (const image_header_t *hdr);
 #ifndef USE_HOSTCC
 int getenv_yesno (char *var);
 ulong getenv_bootm_low(void);
 void memmove_wd (void *to, void *from, size_t len, ulong chunksz);
 #endif
 
-static inline int image_check_magic (image_header_t *hdr)
+static inline int image_check_magic (const image_header_t *hdr)
 {
        return (image_get_magic (hdr) == IH_MAGIC);
 }
-static inline int image_check_type (image_header_t *hdr, uint8_t type)
+static inline int image_check_type (const image_header_t *hdr, uint8_t type)
 {
        return (image_get_type (hdr) == type);
 }
-static inline int image_check_arch (image_header_t *hdr, uint8_t arch)
+static inline int image_check_arch (const image_header_t *hdr, uint8_t arch)
 {
        return (image_get_arch (hdr) == arch);
 }
-static inline int image_check_os (image_header_t *hdr, uint8_t os)
+static inline int image_check_os (const image_header_t *hdr, uint8_t os)
 {
        return (image_get_os (hdr) == os);
 }
 
-ulong image_multi_count (image_header_t *hdr);
-void image_multi_getimg (image_header_t *hdr, ulong idx,
+ulong image_multi_count (const image_header_t *hdr);
+void image_multi_getimg (const image_header_t *hdr, ulong idx,
                        ulong *data, ulong *len);
 
-void image_print_contents (image_header_t *hdr);
+void image_print_contents (const void *hdr);
 
 #ifndef USE_HOSTCC
-static inline int image_check_target_arch (image_header_t *hdr)
+static inline int image_check_target_arch (const image_header_t *hdr)
 {
 #if defined(__ARM__)
        if (!image_check_arch (hdr, IH_ARCH_ARM))