Align also kernel image

This commit is contained in:
Pali Rohár committed 2012-07-14 09:21:34 +02:00
1 parent 860d71d18a
commit 8301455a5b
2 files changed
+26 -8

No files matched your search

+16 -5
View File
@@ -394,6 +394,7 @@ int fiasco_add(int fd, const char *name, const char *file, const char *layout, c
int i; int i;
int gd,ret; int gd,ret;
int size; int size;
int align;
unsigned int sz; unsigned int sz;
unsigned char len; unsigned char len;
unsigned short hash; unsigned short hash;
@@ -410,8 +411,12 @@ int fiasco_add(int fd, const char *name, const char *file, const char *layout, c
return -1; return -1;
sz = lseek(gd, 0, SEEK_END); sz = lseek(gd, 0, SEEK_END);
if (name && strcmp(name, "mmc") == 0) // align mmc if (name) {
sz = ((sz >> 8) + 1) << 8; if (strcmp(name, "mmc") == 0) // align mmc
sz = ((sz >> 8) + 1) << 8;
else if (strcmp(name, "kernel") == 0) // align kernel
sz = ((sz >> 7) + 1) << 7;
}
printf(" size: %d\n", sz); printf(" size: %d\n", sz);
sz = htonl((unsigned int) sz); sz = htonl((unsigned int) sz);
@@ -533,9 +538,15 @@ int fiasco_add(int fd, const char *name, const char *file, const char *layout, c
} }
} }
/* align mmc (fill with 0xff) */ /* align mmc and kernel (fill with 0xff) */
if (name && strcmp(name, "mmc") == 0) { align = 0;
int align = ((size >> 8) + 1) << 8; if (name) {
if (strcmp(name, "mmc") == 0)
align = ((size >> 8) + 1) << 8;
else if (strcmp(name, "kernel") == 0)
align = ((size >> 7) + 1) << 7;
}
if (align) {
while (size < align) { while (size < align) {
write(fd, "\xff", 1); write(fd, "\xff", 1);
++size; ++size;
+10 -3
View File
@@ -33,6 +33,7 @@ usho do_hash_file(const char *filename, const char *type)
unsigned char buf[BSIZE]; unsigned char buf[BSIZE];
FILE *fd = fopen(filename, "r"); FILE *fd = fopen(filename, "r");
usho hash = 0; usho hash = 0;
int align = 0;
int size; int size;
int ret; int ret;
@@ -51,9 +52,15 @@ usho do_hash_file(const char *filename, const char *type)
size = ftell(fd); size = ftell(fd);
fclose(fd); fclose(fd);
/* mmc image must be aligned */ /* mmc and kernel image must be aligned */
if (type && strcmp(type, "mmc") == 0) { if (type) {
int align = ((size >> 8) + 1) << 8; if (strcmp(type, "mmc") == 0)
align = ((size >> 8) + 1) << 8;
else if (strcmp(type, "kernel") == 0)
align = ((size >> 7) + 1) << 7;
}
if (align) {
printf("align from %d to %d\n", size, align); printf("align from %d to %d\n", size, align);
buf[0] = 0xff; buf[0] = 0xff;
while (size < align) { while (size < align) {