From 713ca6ad89084f0ccfa47f4b711dfd0b1436c7e5 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Thu, 9 Jun 2005 19:55:12 +0000 Subject: [PATCH] move to version 5 of header: kernel_size == kernel_image_size means uncompressed --- second/head.S | 2 +- second/head.h | 3 +++ tools/emile-install.c | 6 +++++- tools/emile.c | 6 +++++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/second/head.S b/second/head.S index b3bb02d..44f7dc3 100644 --- a/second/head.S +++ b/second/head.S @@ -23,7 +23,7 @@ ***************************************************************************/ _start: bra setup -_signature: .dc.b 'E','M','0','4' +_signature: .dc.b 'E','M','0','5' /* kernel image information */ diff --git a/second/head.h b/second/head.h index 0e4a2a1..9ce107f 100644 --- a/second/head.h +++ b/second/head.h @@ -21,6 +21,8 @@ struct emile_l2_header { u_int32_t signature; /* EMO4 addendum: if kernel_image_size == 0, * kernel_image_offset is a pointer to a container + * EM05 addendum: if kernel_image_size == kernel_size + * kernel is not compressed */ u_int32_t kernel_image_offset; u_int32_t kernel_image_size; @@ -72,6 +74,7 @@ struct emile_container { #define EMILE_02_SIGNATURE (('E'<<24)|('M'<<16)|('0'<<8)|'2') #define EMILE_03_SIGNATURE (('E'<<24)|('M'<<16)|('0'<<8)|'3') #define EMILE_04_SIGNATURE (('E'<<24)|('M'<<16)|('0'<<8)|'4') +#define EMILE_05_SIGNATURE (('E'<<24)|('M'<<16)|('0'<<8)|'5') #define EMILE_COMPAT(a,b) ( ( EMILE_ID(a) == EMILE_ID(b) ) && \ ( EMILE_VERSION(a) <= EMILE_VERSION(b) ) ) diff --git a/tools/emile-install.c b/tools/emile-install.c index 0580326..c7dfa33 100644 --- a/tools/emile-install.c +++ b/tools/emile-install.c @@ -192,7 +192,11 @@ int main(int argc, char** argv) if (buffer_size == 0) { buffer_size = emile_get_uncompressed_size(kernel_image); - if (buffer_size == -1) + if (buffer_size == 0) + { + buffer_size = emile_file_get_size(kernel_image); + } + else if (buffer_size == -1) { fprintf(stderr, "ERROR: cannot compute size of uncompressed kernel\n"); diff --git a/tools/emile.c b/tools/emile.c index 27216ef..639d8b5 100644 --- a/tools/emile.c +++ b/tools/emile.c @@ -636,7 +636,11 @@ int main(int argc, char **argv) if ((action & ACTION_SET_BUFFER) == 0) { buffer_size = emile_get_uncompressed_size(kernel_path); - if (buffer_size == -1) + if (buffer_size == 0) + { + buffer_size = emile_file_get_size(kernel_path); + } + else if (buffer_size == -1) { fprintf(stderr, "ERROR: cannot compute size of uncompressed kernel\n");