Align also kernel image
This commit is contained in:
1 parent
860d71d18a
commit
8301455a5b
2 files changed
+26
-8
No files matched your search
+16
-5
@@ -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
@@ -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) {
|
||||||
|
|||||||
Reference in new issue
Block a user