|
@@ -140,6 +140,14 @@ static UINT32 *IxNpeMicroCodeImageLibrary = (UINT32 *)CONFIG_IXP4XX_NPE_EXT_UCOD
|
|
|
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;
|
|
|
+}
|
|
|
|
|
|
/*
|
|
|
* static function prototypes.
|
|
@@ -218,9 +226,9 @@ ixNpeDlImageMgrImageListExtract (
|
|
|
IX_NPEDL_TRACE0 (IX_NPEDL_FN_ENTRY_EXIT,
|
|
|
"Entering ixNpeDlImageMgrImageListExtract\n");
|
|
|
|
|
|
- header = (IxNpeDlImageMgrImageLibraryHeader *) IxNpeMicroCodeImageLibrary;
|
|
|
+ header = (IxNpeDlImageMgrImageLibraryHeader *) getIxNpeMicroCodeImageLibrary();
|
|
|
|
|
|
- if (ixNpeDlImageMgrSignatureCheck (IxNpeMicroCodeImageLibrary))
|
|
|
+ if (ixNpeDlImageMgrSignatureCheck (getIxNpeMicroCodeImageLibrary()))
|
|
|
{
|
|
|
/* for each image entry in the image header ... */
|
|
|
while (header->entry[imageCount].eohMarker !=
|
|
@@ -291,9 +299,9 @@ ixNpeDlImageMgrImageLocate (
|
|
|
IX_NPEDL_TRACE0 (IX_NPEDL_FN_ENTRY_EXIT,
|
|
|
"Entering ixNpeDlImageMgrImageLocate\n");
|
|
|
|
|
|
- header = (IxNpeDlImageMgrImageLibraryHeader *) IxNpeMicroCodeImageLibrary;
|
|
|
+ header = (IxNpeDlImageMgrImageLibraryHeader *) getIxNpeMicroCodeImageLibrary();
|
|
|
|
|
|
- if (ixNpeDlImageMgrSignatureCheck (IxNpeMicroCodeImageLibrary))
|
|
|
+ if (ixNpeDlImageMgrSignatureCheck (getIxNpeMicroCodeImageLibrary()))
|
|
|
{
|
|
|
/* for each image entry in the image library header ... */
|
|
|
while (header->entry[imageCount].eohMarker !=
|
|
@@ -308,8 +316,9 @@ ixNpeDlImageMgrImageLocate (
|
|
|
* get pointer to the image in the image library using offset from
|
|
|
* 1st word in image library
|
|
|
*/
|
|
|
+ UINT32 *tmp=getIxNpeMicroCodeImageLibrary();
|
|
|
imageOffset = header->entry[imageCount].image.offset;
|
|
|
- *imagePtr = &IxNpeMicroCodeImageLibrary[imageOffset];
|
|
|
+ *imagePtr = &tmp[imageOffset];
|
|
|
/* get the image size */
|
|
|
*imageSize = header->entry[imageCount].image.size;
|
|
|
status = IX_SUCCESS;
|
|
@@ -354,9 +363,9 @@ ixNpeDlImageMgrLatestImageExtract (IxNpeDlImageId *imageId)
|
|
|
IX_NPEDL_TRACE0 (IX_NPEDL_FN_ENTRY_EXIT,
|
|
|
"Entering ixNpeDlImageMgrLatestImageExtract\n");
|
|
|
|
|
|
- header = (IxNpeDlImageMgrImageLibraryHeader *) IxNpeMicroCodeImageLibrary;
|
|
|
+ header = (IxNpeDlImageMgrImageLibraryHeader *) getIxNpeMicroCodeImageLibrary();
|
|
|
|
|
|
- if (ixNpeDlImageMgrSignatureCheck (IxNpeMicroCodeImageLibrary))
|
|
|
+ if (ixNpeDlImageMgrSignatureCheck (getIxNpeMicroCodeImageLibrary()))
|
|
|
{
|
|
|
/* for each image entry in the image library header ... */
|
|
|
while (header->entry[imageCount].eohMarker !=
|
|
@@ -633,7 +642,7 @@ ixNpeDlImageMgrImageFind (
|
|
|
imageLibrary = ixNpeMicrocode_binaryArray;
|
|
|
}
|
|
|
#else
|
|
|
- imageLibrary = IxNpeMicroCodeImageLibrary;
|
|
|
+ imageLibrary = getIxNpeMicroCodeImageLibrary();
|
|
|
#endif /* IX_NPEDL_READ_MICROCODE_FROM_FILE */
|
|
|
}
|
|
|
|