mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-23 22:05:20 +02:00
backport r21848 and r24000
git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@24009 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
4405aa6006
commit
5b4dbc058d
@ -32,9 +32,9 @@ union int2char {
|
||||
char output[4];
|
||||
};
|
||||
|
||||
/* This appears to be necessary due to alignment issues */
|
||||
/* Convert uint32_t CRC to bigendian and copy it into a character array */
|
||||
#define int2tag(tag, value) intchar.input = htonl(value); \
|
||||
strncpy(tag, intchar.output, sizeof(union int2char))
|
||||
memcpy(tag, intchar.output, sizeof(union int2char))
|
||||
|
||||
/* Kernel header */
|
||||
struct kernelhdr {
|
||||
@ -94,7 +94,7 @@ uint32_t compute_crc32(uint32_t crc, FILE *binfile, size_t compute_start, size_t
|
||||
size_t read;
|
||||
|
||||
fseek(binfile, compute_start, SEEK_SET);
|
||||
|
||||
|
||||
/* read block of 1024 bytes */
|
||||
while (binfile && !feof(binfile) && !ferror(binfile) && (compute_len >= sizeof(readbuf))) {
|
||||
read = fread(readbuf, sizeof(uint8_t), sizeof(readbuf), binfile);
|
||||
@ -221,7 +221,7 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
|
||||
printf("Data alignment to %dk with 'deadc0de' appended\n", flash_bs/1024);
|
||||
fseek(binfile, rootfsoff + rootfslen - fwaddr, SEEK_SET);
|
||||
fwrite(&deadcode, sizeof(uint32_t), 1, binfile);
|
||||
|
||||
|
||||
/* Flush the binfile buffer so that when we read from file, it contains
|
||||
* everything in the buffer
|
||||
*/
|
||||
@ -243,7 +243,7 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
|
||||
* needs to be rootfs + deadcode
|
||||
*/
|
||||
rootfscrc = compute_crc32(rootfscrc, binfile, kerneloff - fwaddr, rootfslen + sizeof(deadcode));
|
||||
|
||||
|
||||
/* Close the files */
|
||||
fclose(kernelfile);
|
||||
fclose(rootfsfile);
|
||||
@ -306,7 +306,7 @@ int main(int argc, char **argv)
|
||||
uint32_t flashstart, fwoffset, loadaddr, entry;
|
||||
uint32_t fwaddr, flash_bs;
|
||||
int tagidfound = 0;
|
||||
|
||||
|
||||
kernel = rootfs = bin = boardid = chipid = magic2 = ver = rsignature = layoutver = NULL;
|
||||
entry = 0;
|
||||
|
||||
@ -394,11 +394,11 @@ int main(int argc, char **argv)
|
||||
fprintf(stderr, "You need to specify the kernel entry (-e)\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* Fallback to defaults */
|
||||
|
||||
fwaddr = flashstart + fwoffset;
|
||||
|
||||
|
||||
if (!magic2) {
|
||||
magic2 = malloc(sizeof(char) * 14);
|
||||
if (!magic2) {
|
||||
@ -416,7 +416,7 @@ int main(int argc, char **argv)
|
||||
}
|
||||
strcpy(ver, IMAGETAG_VER);
|
||||
}
|
||||
|
||||
|
||||
|
||||
return tagfile(kernel, rootfs, bin, boardid, chipid, fwaddr, loadaddr, entry, ver, magic2, flash_bs, rsignature, layoutver);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user