/*************************************************************** ** ** Broadcom Corp. Confidential ** Copyright 2003-2008 Broadcom Corp. All Rights Reserved. ** ** THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED ** SOFTWARE LICENSE AGREEMENT BETWEEN THE USER AND BROADCOM. ** YOU HAVE NO RIGHT TO USE OR EXPLOIT THIS MATERIAL EXCEPT ** SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. ** ** File: si_util.c ** Description: general utility functions that can be used in SI ** processing. ** ** Created: 03/08/2001 ** ** REVISION: ** ** $Log: $ ** ** ****************************************************************/ #include "si.h" #include "si_os.h" #include "si_dbg.h" #include "si_util.h" unsigned long SI_Construct_Data( unsigned char * rawdat, unsigned long idx, unsigned long num, unsigned long shift, unsigned long mask) { unsigned long data = 0; long i; if (num > 4) { SI_DBG_PRINT(E_SI_ERR_MSG, ("Error in SI_Construct_Data, the number of bytes has to be <= 4!!!\n")); return 0; } for (i=0; i>= shift; return (data&mask); } SI_RET_CODE SI_CRC32_Check ( unsigned char * data, unsigned short length) { #ifdef CONFIG_TABLE_WITH_CRC unsigned long reg = 0xffffffff; /* Annex B of ISO/IEC 13818-1, init state all 1's */ unsigned long add_mask = 0x04c11db6; /* generation poly coefficient except for bit0. */ unsigned short i; short bit; unsigned char input, z31; for (i=0; i=0; bit--) { z31 = (reg&0x80000000)?0x1:0x0; reg <<= 1; input = (data[i] & (0x0001<