⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ixnpedlimagemgr.c

📁 AMCC POWERPC 44X系列的U-BOOT文件
💻 C
📖 第 1 页 / 共 2 页
字号:
 * * FOR BACKWARD-COMPATIBILITY WITH OLD NPE IMAGE LIBRARY FORMAT * AND/OR LEGACY API FUNCTIONS. TO BE DEPRECATED IN A FUTURE RELEASE */IX_STATUSixNpeDlImageMgrLatestImageExtract (IxNpeDlImageId *imageId){    UINT32 imageCount = 0;     UINT32 rawImageId;    IxNpeDlImageId formattedImageId;    IX_STATUS status = IX_FAIL;    IxNpeDlImageMgrImageLibraryHeader *header;            IX_NPEDL_TRACE0 (IX_NPEDL_FN_ENTRY_EXIT,		     "Entering ixNpeDlImageMgrLatestImageExtract\n");		         header = (IxNpeDlImageMgrImageLibraryHeader *) IxNpeMicroCodeImageLibrary;        if (ixNpeDlImageMgrSignatureCheck (IxNpeMicroCodeImageLibrary))    {	/* for each image entry in the image library header ... */	while (header->entry[imageCount].eohMarker !=	       IX_NPEDL_IMAGEMGR_END_OF_HEADER)	{	    rawImageId = header->entry[imageCount].image.id;	    ixNpeDlImageMgrImageIdFormat (rawImageId, &formattedImageId);	    /* 	     * if a match for the npe Id and functionality Id of the imageId is	     *  found in the image library header... 	     */            if(ixNpeDlImageMgrNpeFunctionIdCompare(imageId, &formattedImageId))            {                if(imageId->major <= formattedImageId.major)                {                    if(imageId->minor < formattedImageId.minor)                    {                        imageId->minor = formattedImageId.minor;                    }                    imageId->major = formattedImageId.major;                }                status = IX_SUCCESS;            }            imageCount++;	}	if (status != IX_SUCCESS)	{	    IX_NPEDL_ERROR_REPORT ("ixNpeDlImageMgrLatestImageExtract: "				   "imageId not found in image library header\n");	    ixNpeDlImageMgrStats.imageIdNotFound++;	}    }    else    {	IX_NPEDL_ERROR_REPORT ("ixNpeDlImageMgrLatestImageGet: "			       "invalid signature in image library\n");    }    IX_NPEDL_TRACE1 (IX_NPEDL_FN_ENTRY_EXIT,		     "Exiting ixNpeDlImageMgrLatestImageGet: status = %d\n", status);    return status;}/* * Function definition: ixNpeDlImageMgrSignatureCheck * * FOR BACKWARD-COMPATIBILITY WITH OLD NPE IMAGE LIBRARY FORMAT * AND/OR LEGACY API FUNCTIONS. TO BE DEPRECATED IN A FUTURE RELEASE */PRIVATE BOOLixNpeDlImageMgrSignatureCheck (UINT32 *microCodeImageLibrary){    IxNpeDlImageMgrImageLibraryHeader *header =	(IxNpeDlImageMgrImageLibraryHeader *) microCodeImageLibrary;    BOOL result = TRUE;    if (header->signature != IX_NPEDL_IMAGEMGR_SIGNATURE)    {	result = FALSE;	ixNpeDlImageMgrStats.invalidSignature++;    }    return result;}/* * Function definition: ixNpeDlImageMgrImageIdFormat * * FOR BACKWARD-COMPATIBILITY WITH OLD NPE IMAGE LIBRARY FORMAT * AND/OR LEGACY API FUNCTIONS. TO BE DEPRECATED IN A FUTURE RELEASE */PRIVATE voidixNpeDlImageMgrImageIdFormat (    UINT32 rawImageId,     IxNpeDlImageId *imageId){      imageId->npeId = (rawImageId >>				IX_NPEDL_IMAGEID_NPEID_OFFSET) &	IX_NPEDL_NPEIMAGE_FIELD_MASK;    imageId->functionalityId = (rawImageId >> 				  IX_NPEDL_IMAGEID_FUNCTIONID_OFFSET) &	IX_NPEDL_NPEIMAGE_FIELD_MASK;    imageId->major = (rawImageId >>				IX_NPEDL_IMAGEID_MAJOR_OFFSET) &	IX_NPEDL_NPEIMAGE_FIELD_MASK;    imageId->minor = (rawImageId >>				IX_NPEDL_IMAGEID_MINOR_OFFSET) &	IX_NPEDL_NPEIMAGE_FIELD_MASK;}/* * Function definition: ixNpeDlImageMgrImageIdCompare * * FOR BACKWARD-COMPATIBILITY WITH OLD NPE IMAGE LIBRARY FORMAT * AND/OR LEGACY API FUNCTIONS. TO BE DEPRECATED IN A FUTURE RELEASE */PRIVATE BOOLixNpeDlImageMgrImageIdCompare (    IxNpeDlImageId *imageIdA,    IxNpeDlImageId *imageIdB){    if ((imageIdA->npeId   == imageIdB->npeId)   &&	(imageIdA->functionalityId == imageIdB->functionalityId) &&	(imageIdA->major   == imageIdB->major)   &&	(imageIdA->minor   == imageIdB->minor))    {	return TRUE;    }    else    {	return FALSE;    }}/* * Function definition: ixNpeDlImageMgrNpeFunctionIdCompare * * FOR BACKWARD-COMPATIBILITY WITH OLD NPE IMAGE LIBRARY FORMAT * AND/OR LEGACY API FUNCTIONS. TO BE DEPRECATED IN A FUTURE RELEASE */PRIVATE BOOLixNpeDlImageMgrNpeFunctionIdCompare (    IxNpeDlImageId *imageIdA,    IxNpeDlImageId *imageIdB){    if ((imageIdA->npeId   == imageIdB->npeId)   &&	(imageIdA->functionalityId == imageIdB->functionalityId))    {	return TRUE;    }    else    {	return FALSE;    }}/* * Function definition: ixNpeDlImageMgrStatsShow */voidixNpeDlImageMgrStatsShow (void){    ixOsalLog (IX_OSAL_LOG_LVL_USER,               IX_OSAL_LOG_DEV_STDOUT,               "\nixNpeDlImageMgrStatsShow:\n"               "\tInvalid Image Signatures: %u\n"               "\tImage Id List capacity too small: %u\n"               "\tImage Id not found: %u\n\n",               ixNpeDlImageMgrStats.invalidSignature,               ixNpeDlImageMgrStats.imageIdListOverflow,               ixNpeDlImageMgrStats.imageIdNotFound,               0,0,0);}/* * Function definition: ixNpeDlImageMgrStatsReset */voidixNpeDlImageMgrStatsReset (void){    ixNpeDlImageMgrStats.invalidSignature = 0;    ixNpeDlImageMgrStats.imageIdListOverflow = 0;    ixNpeDlImageMgrStats.imageIdNotFound = 0;}/* * Function definition: ixNpeDlImageMgrImageFind_legacy * * FOR BACKWARD-COMPATIBILITY WITH OLD NPE IMAGE LIBRARY FORMAT * AND/OR LEGACY API FUNCTIONS. TO BE DEPRECATED IN A FUTURE RELEASE */PRIVATE IX_STATUSixNpeDlImageMgrImageFind_legacy (    UINT32 *imageLibrary,    UINT32 imageId,    UINT32 **imagePtr,    UINT32 *imageSize){    UINT32 imageOffset;    /* used to index image entries in image library header */    UINT32 imageCount = 0;       IX_STATUS status = IX_FAIL;    IxNpeDlImageMgrImageLibraryHeader *header;    BOOL imageFound = FALSE;    IX_NPEDL_TRACE0 (IX_NPEDL_FN_ENTRY_EXIT,		     "Entering ixNpeDlImageMgrImageFind\n");    /* If user didn't specify a library to use, use the default     * one from IxNpeMicrocode.h     */    if (imageLibrary == NULL)    {	imageLibrary = IxNpeMicroCodeImageLibrary;    }        if (ixNpeDlImageMgrSignatureCheck (imageLibrary))    {	header = (IxNpeDlImageMgrImageLibraryHeader *) imageLibrary;    	/* for each image entry in the image library header ... */	while ((header->entry[imageCount].eohMarker !=               IX_NPEDL_IMAGEMGR_END_OF_HEADER) && !(imageFound))	{	    /* if a match for imageId is found in the image library header... */	    if (imageId == header->entry[imageCount].image.id)	    {		/*		 * get pointer to the image in the image library using offset from		 * 1st word in image library		 */		imageOffset = header->entry[imageCount].image.offset;		*imagePtr = &imageLibrary[imageOffset];		/* get the image size */		*imageSize = header->entry[imageCount].image.size;		status = IX_SUCCESS;		imageFound = TRUE;	    }	    imageCount++;	}	if (status != IX_SUCCESS)	{	    IX_NPEDL_ERROR_REPORT ("ixNpeDlImageMgrImageFind: "				   "imageId not found in image library header\n");	    ixNpeDlImageMgrStats.imageIdNotFound++;	}    }    else    {	IX_NPEDL_ERROR_REPORT ("ixNpeDlImageMgrImageFind: "			       "invalid signature in image library\n");    }    IX_NPEDL_TRACE1 (IX_NPEDL_FN_ENTRY_EXIT,		     "Exiting ixNpeDlImageMgrImageFind: status = %d\n", status);    return status;}/* * Function definition: ixNpeDlImageMgrImageFind */IX_STATUSixNpeDlImageMgrImageFind (    UINT32 *imageLibrary,    UINT32 imageId,    UINT32 **imagePtr,    UINT32 *imageSize){    IxNpeDlImageMgrImageHeader *image;    UINT32 offset = 0;    /* If user didn't specify a library to use, use the default     * one from IxNpeMicrocode.h     */    if (imageLibrary == NULL)    {#ifdef IX_NPEDL_READ_MICROCODE_FROM_FILE	if (ixNpeMicrocode_binaryArray == NULL)        {	    printk (KERN_ERR "ixp400.o:  ERROR, no Microcode found in memory\n");	    return IX_FAIL;	}	else	{	    imageLibrary = ixNpeMicrocode_binaryArray;	}#else	imageLibrary = IxNpeMicroCodeImageLibrary;#endif /* IX_NPEDL_READ_MICROCODE_FROM_FILE */    }    /* For backward's compatibility with previous image format */    if (ixNpeDlImageMgrSignatureCheck(imageLibrary))    {        return ixNpeDlImageMgrImageFind_legacy(imageLibrary,                                               imageId,                                               imagePtr,                                               imageSize);    }    while (*(imageLibrary+offset) == NPE_IMAGE_MARKER)    {        image = (IxNpeDlImageMgrImageHeader *)(imageLibrary+offset);        offset += sizeof(IxNpeDlImageMgrImageHeader)/sizeof(UINT32);                if (image->id == imageId)        {            *imagePtr = imageLibrary + offset;            *imageSize = image->size;            return IX_SUCCESS;        }        /* 2 consecutive NPE_IMAGE_MARKER's indicates end of library */        else if (image->id == NPE_IMAGE_MARKER)        {	    IX_NPEDL_ERROR_REPORT ("ixNpeDlImageMgrImageFind: "				   "imageId not found in image library header\n");	    ixNpeDlImageMgrStats.imageIdNotFound++;            /* reached end of library, image not found */            return IX_FAIL;        }        offset += image->size;    }    /* If we get here, our image library may be corrupted */    IX_NPEDL_ERROR_REPORT ("ixNpeDlImageMgrImageFind: "                           "image library format may be invalid or corrupted\n");    return IX_FAIL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -