Browse Source

embedded: save stack

and also do not recaluate the crc32_table upon
every invocation.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
tags/v0.4.0-rc1
Øyvind Harboe 14 years ago
parent
commit
31da0003dc
1 changed files with 15 additions and 9 deletions
  1. +15
    -9
      src/target/image.c

+ 15
- 9
src/target/image.c View File

@@ -1023,17 +1023,23 @@ int image_calculate_checksum(uint8_t* buffer, uint32_t nbytes, uint32_t* checksu
uint32_t crc = 0xffffffff;
LOG_DEBUG("Calculating checksum");

uint32_t crc32_table[256];
static uint32_t crc32_table[256];

/* Initialize the CRC table and the decoding table. */
int i, j;
unsigned int c;
for (i = 0; i < 256; i++)
static bool first_init = false;
if (!first_init)
{
/* as per gdb */
for (c = i << 24, j = 8; j > 0; --j)
c = c & 0x80000000 ? (c << 1) ^ 0x04c11db7 : (c << 1);
crc32_table[i] = c;
/* Initialize the CRC table and the decoding table. */
int i, j;
unsigned int c;
for (i = 0; i < 256; i++)
{
/* as per gdb */
for (c = i << 24, j = 8; j > 0; --j)
c = c & 0x80000000 ? (c << 1) ^ 0x04c11db7 : (c << 1);
crc32_table[i] = c;
}

first_init = true;
}

while (nbytes > 0)


Loading…
Cancel
Save