Fix reds.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23712 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
4279c9f4aa
commit
360d00f600
2 changed files with 6 additions and 88 deletions
|
@ -255,47 +255,6 @@ bool GetFlashInfo(tFlashInfo* pInfo)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*********** Utility Functions ************/
|
|
||||||
|
|
||||||
|
|
||||||
/* Tool function to calculate a CRC32 across some buffer */
|
|
||||||
/* third argument is either 0xFFFFFFFF to start or value from last piece */
|
|
||||||
unsigned crc_32(unsigned char* buf, unsigned len, unsigned crc32)
|
|
||||||
{
|
|
||||||
/* CCITT standard polynomial 0x04C11DB7 */
|
|
||||||
static const unsigned crc32_lookup[16] =
|
|
||||||
{ /* lookup table for 4 bits at a time is affordable */
|
|
||||||
0x00000000, 0x04C11DB7, 0x09823B6E, 0x0D4326D9,
|
|
||||||
0x130476DC, 0x17C56B6B, 0x1A864DB2, 0x1E475005,
|
|
||||||
0x2608EDB8, 0x22C9F00F, 0x2F8AD6D6, 0x2B4BCB61,
|
|
||||||
0x350C9B64, 0x31CD86D3, 0x3C8EA00A, 0x384FBDBD
|
|
||||||
};
|
|
||||||
|
|
||||||
unsigned char byte;
|
|
||||||
unsigned t;
|
|
||||||
|
|
||||||
while (len--)
|
|
||||||
{
|
|
||||||
byte = *buf++; /* get one byte of data */
|
|
||||||
|
|
||||||
/* upper nibble of our data */
|
|
||||||
t = crc32 >> 28; /* extract the 4 most significant bits */
|
|
||||||
t ^= byte >> 4; /* XOR in 4 bits of data into the extracted bits */
|
|
||||||
crc32 <<= 4; /* shift the CRC register left 4 bits */
|
|
||||||
crc32 ^= crc32_lookup[t]; /* do the table lookup and XOR the result */
|
|
||||||
|
|
||||||
/* lower nibble of our data */
|
|
||||||
t = crc32 >> 28; /* extract the 4 most significant bits */
|
|
||||||
t ^= byte & 0x0F; /* XOR in 4 bits of data into the extracted bits */
|
|
||||||
crc32 <<= 4; /* shift the CRC register left 4 bits */
|
|
||||||
crc32 ^= crc32_lookup[t]; /* do the table lookup and XOR the result */
|
|
||||||
}
|
|
||||||
|
|
||||||
return crc32;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*********** Firmware File Functions + helpers ************/
|
/*********** Firmware File Functions + helpers ************/
|
||||||
|
|
||||||
/* test if the version number is consistent with the platform */
|
/* test if the version number is consistent with the platform */
|
||||||
|
@ -389,7 +348,7 @@ tCheckResult CheckFirmwareFile(char* filename, int chipsize, bool is_romless)
|
||||||
|
|
||||||
if (has_crc)
|
if (has_crc)
|
||||||
{
|
{
|
||||||
crc32 = crc_32(sector, SEC_SIZE, crc32); /* checksum */
|
crc32 = rb->crc_32(sector, SEC_SIZE, crc32); /* checksum */
|
||||||
|
|
||||||
/* in addition to the CRC, my files also have a platform ID */
|
/* in addition to the CRC, my files also have a platform ID */
|
||||||
if (sector[PLATFORM_ADR] != PLATFORM_ID) /* for our hardware? */
|
if (sector[PLATFORM_ADR] != PLATFORM_ID) /* for our hardware? */
|
||||||
|
@ -442,7 +401,7 @@ tCheckResult CheckFirmwareFile(char* filename, int chipsize, bool is_romless)
|
||||||
|
|
||||||
if (has_crc)
|
if (has_crc)
|
||||||
{
|
{
|
||||||
crc32 = crc_32(sector, got_now, crc32); /* checksum */
|
crc32 = rb->crc_32(sector, got_now, crc32); /* checksum */
|
||||||
}
|
}
|
||||||
} while (fileleft);
|
} while (fileleft);
|
||||||
|
|
||||||
|
|
|
@ -177,47 +177,6 @@ bool cfi_get_flash_info(struct flash_info* pInfo)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*********** Utility Functions ************/
|
|
||||||
|
|
||||||
|
|
||||||
/* Tool function to calculate a CRC32 across some buffer */
|
|
||||||
/* third argument is either 0xFFFFFFFF to start or value from last piece */
|
|
||||||
unsigned crc_32(const unsigned char* buf, unsigned len, unsigned crc32)
|
|
||||||
{
|
|
||||||
/* CCITT standard polynomial 0x04C11DB7 */
|
|
||||||
static const unsigned crc32_lookup[16] =
|
|
||||||
{ /* lookup table for 4 bits at a time is affordable */
|
|
||||||
0x00000000, 0x04C11DB7, 0x09823B6E, 0x0D4326D9,
|
|
||||||
0x130476DC, 0x17C56B6B, 0x1A864DB2, 0x1E475005,
|
|
||||||
0x2608EDB8, 0x22C9F00F, 0x2F8AD6D6, 0x2B4BCB61,
|
|
||||||
0x350C9B64, 0x31CD86D3, 0x3C8EA00A, 0x384FBDBD
|
|
||||||
};
|
|
||||||
|
|
||||||
unsigned char byte;
|
|
||||||
unsigned t;
|
|
||||||
|
|
||||||
while (len--)
|
|
||||||
{
|
|
||||||
byte = *buf++; /* get one byte of data */
|
|
||||||
|
|
||||||
/* upper nibble of our data */
|
|
||||||
t = crc32 >> 28; /* extract the 4 most significant bits */
|
|
||||||
t ^= byte >> 4; /* XOR in 4 bits of data into the extracted bits */
|
|
||||||
crc32 <<= 4; /* shift the CRC register left 4 bits */
|
|
||||||
crc32 ^= crc32_lookup[t]; /* do the table lookup and XOR the result */
|
|
||||||
|
|
||||||
/* lower nibble of our data */
|
|
||||||
t = crc32 >> 28; /* extract the 4 most significant bits */
|
|
||||||
t ^= byte & 0x0F; /* XOR in 4 bits of data into the extracted bits */
|
|
||||||
crc32 <<= 4; /* shift the CRC register left 4 bits */
|
|
||||||
crc32 ^= crc32_lookup[t]; /* do the table lookup and XOR the result */
|
|
||||||
}
|
|
||||||
|
|
||||||
return crc32;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************** User Interface Functions *****************/
|
/***************** User Interface Functions *****************/
|
||||||
int wait_for_button(void)
|
int wait_for_button(void)
|
||||||
{
|
{
|
||||||
|
@ -357,18 +316,18 @@ bool detect_valid_bootloader(const unsigned char *addr, int len)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
unsigned long crc32;
|
unsigned long crc32;
|
||||||
|
|
||||||
/* Try to scan through all valid bootloaders. */
|
/* Try to scan through all valid bootloaders. */
|
||||||
for (i = 0; valid_bootloaders[i][0]; i++)
|
for (i = 0; valid_bootloaders[i][0]; i++)
|
||||||
{
|
{
|
||||||
if (len > 0 && len != (long)valid_bootloaders[i][0])
|
if (len > 0 && len != (long)valid_bootloaders[i][0])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
crc32 = crc_32(addr, valid_bootloaders[i][0], 0xffffffff);
|
crc32 = rb->crc_32(addr, valid_bootloaders[i][0], 0xffffffff);
|
||||||
if (crc32 == valid_bootloaders[i][1])
|
if (crc32 == valid_bootloaders[i][1])
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue