Useful on scripts which control the retry operation
                  themselves.
 
-  npe_ucode    - see CONFIG_IXP4XX_NPE_EXT_UCOD
-                 if set load address for the NPE microcode
+  npe_ucode    - set load address for the NPE microcode
 
   tftpsrcport  - If this is set, the value is used for TFTP's
                  UDP source port.
 
  */
 static IxNpeDlImageMgrStats ixNpeDlImageMgrStats;
 
-/* default image */
-#ifdef CONFIG_IXP4XX_NPE_EXT_UCODE_BASE
-static UINT32 *IxNpeMicroCodeImageLibrary = (UINT32 *)CONFIG_IXP4XX_NPE_EXT_UCODE_BASE;
-#else
-static UINT32 *IxNpeMicroCodeImageLibrary = (UINT32 *)IxNpeMicrocode_array;
-#endif
-
 static UINT32* getIxNpeMicroCodeImageLibrary(void)
 {
        char *s;
+
        if ((s = getenv("npe_ucode")) != NULL)
                return (UINT32*) simple_strtoul(s, NULL, 16);
        else
-               return IxNpeMicroCodeImageLibrary;
+               return NULL;
 }
 
 /*
        (IxNpeDlImageMgrImageLibraryHeader *) microCodeImageLibrary;
     BOOL result = TRUE;
 
-    if (header->signature != IX_NPEDL_IMAGEMGR_SIGNATURE)
+    if (!header || header->signature != IX_NPEDL_IMAGEMGR_SIGNATURE)
     {
        result = FALSE;
        ixNpeDlImageMgrStats.invalidSignature++;
        }
 #else
        imageLibrary = getIxNpeMicroCodeImageLibrary();
+       if (imageLibrary == NULL)
+        {
+           printf ("npe:  ERROR, no Microcode found in memory\n");
+           return IX_FAIL;
+       }
 #endif /* IX_NPEDL_READ_MICROCODE_FROM_FILE */
     }
 
 
        IxNpeMhSolicitedCbMgr.o \
        IxNpeMhUnsolicitedCbMgr.o
 
-ifndef CONFIG_IXP4XX_NPE_EXT_UCODE_BASE
-COBJS-$(CONFIG_IXP4XX_NPE) += IxNpeMicrocode.o
-endif
-
 SRCS   := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS-y))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 
 /* include IXP4xx NPE support */
 #define CONFIG_IXP4XX_NPE              1
-/* use separate flash sector with ucode images */
-#define CONFIG_IXP4XX_NPE_EXT_UCODE_BASE       0x50040000
 #define CONFIG_NET_MULTI               1
 /* NPE0 PHY address */
 #define        CONFIG_PHY_ADDR                 0
 #define CONFIG_SYS_USE_PPCENV                  1
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
+       "npe_ucode=50040000\0"                                          \
        "mtd=IXP4XX-Flash.0:256k(uboot),64k(ucode),1152k(linux),-(root)\0" \
        "kerneladdr=50050000\0"                                         \
        "rootaddr=50170000\0"                                           \
 
 
 /* include IXP4xx NPE support */
 #define CONFIG_IXP4XX_NPE              1
-/* use separate flash sector with ucode images */
-#define CONFIG_IXP4XX_NPE_EXT_UCODE_BASE       0x50040000
 #define CONFIG_NET_MULTI               1
 /* NPE0 PHY address */
 #define        CONFIG_PHY_ADDR                 0x00
 #define CONFIG_SYS_USE_PPCENV                  1
 
 #define CONFIG_EXTRA_ENV_SETTINGS                                      \
+       "npe_ucode=50040000\0"                                          \
        "mtd=IXP4XX-Flash.0:256k(uboot),64k(ucode),1152k(linux),-(root)\0" \
        "kerneladdr=50050000\0"                                         \
        "rootaddr=50170000\0"                                           \
 
 
 /* include IXP4xx NPE support */
 #define CONFIG_IXP4XX_NPE              1
-/* use separate flash sector with ucode images */
-#define CONFIG_IXP4XX_NPE_EXT_UCODE_BASE       0x50040000
 
 #define CONFIG_NET_MULTI               1
 /* NPE0 PHY address */
 #define CONFIG_SYS_USE_PPCENV                  1
 
 #define CONFIG_EXTRA_ENV_SETTINGS                                      \
+       "npe_ucode=50040000\0"                                          \
        "mtd=IXP4XX-Flash.0:256k(uboot),64k(ucode),1152k(linux),-(root)\0" \
        "kerneladdr=50050000\0"                                         \
        "rootaddr=50170000\0"                                           \
 
 
 /* include IXP4xx NPE support */
 #define CONFIG_IXP4XX_NPE              1
-/* use separate flash sector with ucode images */
-#define CONFIG_IXP4XX_NPE_EXT_UCODE_BASE       0x51000000
 
 #define CONFIG_NET_MULTI               1
 /* NPE0 PHY address */
 #define CONFIG_ENV_ADDR                        (PHYS_FLASH_1 + 0x3f000)
 
 #define CONFIG_EXTRA_ENV_SETTINGS                                      \
+       "npe_ucode=51000000\0"                                          \
        "mtd=IXP4XX-Flash.0:252k(uboot),4k(uboot_env);"                 \
        "IXP4XX-Flash.1:128k(ucode),1280k(linux),-(root)\0"             \
        "kerneladdr=51020000\0"                                         \