with using gzip and the default env we can save 5.2KiB (5,352 bytes) tested on sam9g20ek before -rwxr-xr-x 1 root root 260396 Dec 14 00:42 barebox.bin after -rwxr-xr-x 1 root root 265748 Dec 14 00:42 barebox.bin Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@xxxxxxxxxxxx> --- Hi, need to apply usb-926x first Best Regards, J. common/Kconfig | 1 + common/Makefile | 6 +++++- common/startup.c | 23 +++++++++++++++++++++-- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/common/Kconfig b/common/Kconfig index 27464d1..ef5bba7 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -423,6 +423,7 @@ config PARTITION_DISK_DOS config DEFAULT_ENVIRONMENT bool default y + select ZLIB prompt "Compile in default environment" help Enabling this option will give you a default environment when diff --git a/common/Makefile b/common/Makefile index 9bce479..5cbaa1d 100644 --- a/common/Makefile +++ b/common/Makefile @@ -52,5 +52,9 @@ endif # ifdef CONFIG_DEFAULT_ENVIRONMENT barebox_default_env: $(ENV_FILES) $(Q)$(srctree)/scripts/genenv $(srctree) $(objtree) $(DEFAULT_ENVIRONMENT_PATH) -include/generated/barebox_default_env.h: barebox_default_env +barebox_default_env.gz: barebox_default_env FORCE + $(call if_changed,gzip) + +include/generated/barebox_default_env.h: barebox_default_env.gz $(Q)cat $< | $(objtree)/scripts/bin2c default_environment > $@ + echo "const int default_environment_uncompress_size=`stat -c%s barebox_default_env`;" >> $@ diff --git a/common/startup.c b/common/startup.c index 13783fb..c68ac8b 100644 --- a/common/startup.c +++ b/common/startup.c @@ -63,11 +63,30 @@ static void display_meminfo(void) #ifdef CONFIG_DEFAULT_ENVIRONMENT #include <generated/barebox_default_env.h> +#include <uncompress.h> + +void *defaultenv; static int register_default_env(void) { - add_mem_device("defaultenv", (unsigned long)default_environment, - sizeof(default_environment), + int ret; + void *tmp; + + tmp = xzalloc(default_environment_size); + memcpy(tmp, default_environment, default_environment_size); + + defaultenv = xzalloc(default_environment_uncompress_size); + + ret = uncompress(tmp, default_environment_size, NULL, NULL, + defaultenv, NULL, uncompress_err_stdout); + + free(tmp); + + if (ret) + return ret; + + add_mem_device("defaultenv", (unsigned long)defaultenv, + default_environment_uncompress_size, IORESOURCE_MEM_WRITEABLE); return 0; } -- 1.7.7 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox