* [PATCH 02/11] decompress_unlzo: define decompress_unlzo as decompress
2012-07-25 8:02 ` [PATCH 01/11] stddev: make it selectable via Kconfig Jean-Christophe PLAGNIOL-VILLARD
@ 2012-07-25 8:02 ` Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 03/11] compressed image: factorise compressor type Jean-Christophe PLAGNIOL-VILLARD
` (8 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-07-25 8:02 UTC (permalink / raw)
To: barebox
so we can use decompress in the decompressor
this will simplify multi decompress support
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
lib/decompress_unlzo.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/decompress_unlzo.c b/lib/decompress_unlzo.c
index 0e6a7ad..56abfc6 100644
--- a/lib/decompress_unlzo.c
+++ b/lib/decompress_unlzo.c
@@ -289,3 +289,4 @@ exit_1:
exit:
return ret;
}
+#define decompress decompress_unlzo
--
1.7.10.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 03/11] compressed image: factorise compressor type
2012-07-25 8:02 ` [PATCH 01/11] stddev: make it selectable via Kconfig Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 02/11] decompress_unlzo: define decompress_unlzo as decompress Jean-Christophe PLAGNIOL-VILLARD
@ 2012-07-25 8:02 ` Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 04/11] decompressor: import malloc/free implementation for linux 3.4 Jean-Christophe PLAGNIOL-VILLARD
` (7 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-07-25 8:02 UTC (permalink / raw)
To: barebox
This will simplify to support of multi compressor support such as gzip, lzma,
xz.
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
Makefile | 12 +++++++-----
arch/arm/cpu/start.c | 9 ++++++---
arch/arm/lib/Makefile | 2 +-
arch/arm/lib/barebox.lds.S | 2 +-
common/Kconfig | 17 ++++++++++++++---
5 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/Makefile b/Makefile
index e0a3c07..0b3da03 100644
--- a/Makefile
+++ b/Makefile
@@ -715,20 +715,22 @@ barebox-uncompressed: $(barebox-lds) $(barebox-head) $(barebox-common) $(kallsym
barebox-uncompressed.bin: barebox-uncompressed
$(call if_changed,objcopy)
+suffix_$(CONFIG_IMAGE_COMPRESSION_LZO) = lzo
+
barebox-uncompressed.bin.lzo: barebox-uncompressed.bin
@echo " LZO " $@
$(Q)lzop -f -9 -o $@ barebox-uncompressed.bin
-piggy.lzo.o: barebox-uncompressed.bin.lzo $(src)/piggy.lzo.S
+piggy.$(suffix_y).o: barebox-uncompressed.bin.$(suffix_y) $(src)/piggy.$(suffix_y).S
@echo " CC " $@
- $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -c $(src)/piggy.lzo.S -o $@
+ $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -c $(src)/piggy.$(suffix_y).S -o $@
-ifdef CONFIG_IMAGE_COMPRESSION_LZO
-barebox: piggy.lzo.o
+ifdef CONFIG_IMAGE_COMPRESSION
+barebox: piggy.$(suffix_y).o
@echo " LD " $@
$(Q)$(LD) $(LDFLAGS) $(LDFLAGS_barebox) -o $@ \
-T $(barebox-compressed-lds) \
- --start-group $(barebox-common) piggy.lzo.o --end-group
+ --start-group $(barebox-common) piggy.$(suffix_y).o --end-group
else
barebox: $(barebox-lds) $(barebox-head) $(barebox-common) $(kallsyms.o) FORCE
$(call barebox-modpost)
diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c
index 6743804..18c5c83 100644
--- a/arch/arm/cpu/start.c
+++ b/arch/arm/cpu/start.c
@@ -28,7 +28,7 @@
#include <asm-generic/memory_layout.h>
#include <asm/sections.h>
-#ifdef CONFIG_IMAGE_COMPRESSION_LZO
+#ifdef CONFIG_IMAGE_COMPRESSION
void __naked __section(.text_head_entry) compressed_start(void)
{
barebox_arm_head();
@@ -101,7 +101,10 @@ extern void *input_data;
extern void *input_data_end;
#define STATIC static
+
+#ifdef CONFIG_IMAGE_COMPRESSION_LZO
#include "../../../lib/decompress_unlzo.c"
+#endif
void barebox_uncompress(void *compressed_start, unsigned int len)
{
@@ -112,7 +115,7 @@ void barebox_uncompress(void *compressed_start, unsigned int len)
else
barebox = (void *)TEXT_BASE;
- decompress_unlzo((void *)compressed_start,
+ decompress((void *)compressed_start,
len,
NULL, NULL,
(void *)TEXT_BASE, NULL, NULL);
@@ -158,7 +161,7 @@ void __naked __section(.text_ll_return) board_init_lowlevel_return(void)
/* flush I-cache before jumping to the copied binary */
__asm__ __volatile__("mcr p15, 0, %0, c7, c5, 0" : : "r" (0));
- if (IS_ENABLED(CONFIG_IMAGE_COMPRESSION_LZO)) {
+ if (IS_ENABLED(CONFIG_IMAGE_COMPRESSION)) {
compressed_start = (uint32_t)&input_data - offset;
compressed_end = (uint32_t)&input_data_end - offset;
len = compressed_end - compressed_start;
diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
index 044d3e6..1b6f7f4 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -21,4 +21,4 @@ obj-$(CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS) += memset.o
obj-$(CONFIG_ARM_UNWIND) += unwind.o
obj-$(CONFIG_MODULES) += module.o
extra-y += barebox.lds
-extra-$(CONFIG_IMAGE_COMPRESSION_LZO) += barebox-compressed.lds
+extra-$(CONFIG_IMAGE_COMPRESSION) += barebox-compressed.lds
diff --git a/arch/arm/lib/barebox.lds.S b/arch/arm/lib/barebox.lds.S
index b415830..b22cf98 100644
--- a/arch/arm/lib/barebox.lds.S
+++ b/arch/arm/lib/barebox.lds.S
@@ -31,7 +31,7 @@ SECTIONS
{
. = TEXT_BASE;
-#ifndef CONFIG_IMAGE_COMPRESSION_LZO
+#ifndef CONFIG_IMAGE_COMPRESSION
PRE_IMAGE
#endif
. = ALIGN(4);
diff --git a/common/Kconfig b/common/Kconfig
index c6f1afa..8437e1c 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -99,9 +99,20 @@ menu "memory layout "
config HAVE_IMAGE_COMPRESSION
bool
+config IMAGE_COMPRESSION
+ bool "Compressed image"
+
+if IMAGE_COMPRESSION
+
+choice
+ prompt "Compression"
+
config IMAGE_COMPRESSION_LZO
- depends on HAVE_IMAGE_COMPRESSION
- bool "lzo compressed image"
+ bool "lzo"
+
+endchoice
+
+endif
config MMU
bool "Enable MMU"
@@ -185,7 +196,7 @@ config MALLOC_SIZE
prompt "malloc area size"
config HEAD_TEXT_BASE
- depends on MEMORY_LAYOUT_FIXED && IMAGE_COMPRESSION_LZO
+ depends on MEMORY_LAYOUT_FIXED && IMAGE_COMPRESSION
hex
prompt "HEAD_TEXT_BASE"
endmenu
--
1.7.10.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 04/11] decompressor: import malloc/free implementation for linux 3.4
2012-07-25 8:02 ` [PATCH 01/11] stddev: make it selectable via Kconfig Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 02/11] decompress_unlzo: define decompress_unlzo as decompress Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 03/11] compressed image: factorise compressor type Jean-Christophe PLAGNIOL-VILLARD
@ 2012-07-25 8:02 ` Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 05/11] ARM: add early malloc support needed by the decompressor Jean-Christophe PLAGNIOL-VILLARD
` (6 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-07-25 8:02 UTC (permalink / raw)
To: barebox
This is need for gunzip support
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
include/linux/decompress/mm.h | 68 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 68 insertions(+)
create mode 100644 include/linux/decompress/mm.h
diff --git a/include/linux/decompress/mm.h b/include/linux/decompress/mm.h
new file mode 100644
index 0000000..0c35411
--- /dev/null
+++ b/include/linux/decompress/mm.h
@@ -0,0 +1,68 @@
+/*
+ * linux/compr_mm.h
+ *
+ * Memory management for pre-boot and ramdisk uncompressors
+ *
+ * Authors: Alain Knaff <alain@knaff.lu>
+ *
+ */
+
+#ifndef DECOMPR_MM_H
+#define DECOMPR_MM_H
+
+#ifdef STATIC
+
+/* Code active when included from pre-boot environment: */
+
+/*
+ * Some architectures want to ensure there is no local data in their
+ * pre-boot environment, so that data can arbitrarily relocated (via
+ * GOT references). This is achieved by defining STATIC_RW_DATA to
+ * be null.
+ */
+#ifndef STATIC_RW_DATA
+#define STATIC_RW_DATA static
+#endif
+
+/* A trivial malloc implementation, adapted from
+ * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
+ */
+STATIC_RW_DATA unsigned long malloc_ptr;
+STATIC_RW_DATA int malloc_count;
+
+static void *malloc(int size)
+{
+ void *p;
+
+ if (size < 0)
+ return NULL;
+ if (!malloc_ptr)
+ malloc_ptr = free_mem_ptr;
+
+ malloc_ptr = (malloc_ptr + 3) & ~3; /* Align */
+
+ p = (void *)malloc_ptr;
+ malloc_ptr += size;
+
+ if (free_mem_end_ptr && malloc_ptr >= free_mem_end_ptr)
+ return NULL;
+
+ malloc_count++;
+ return p;
+}
+
+static void free(void *where)
+{
+ malloc_count--;
+ if (!malloc_count)
+ malloc_ptr = free_mem_ptr;
+}
+
+#define large_malloc(a) malloc(a)
+#define large_free(a) free(a)
+
+#define INIT
+
+#endif /* STATIC */
+
+#endif /* DECOMPR_MM_H */
--
1.7.10.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 05/11] ARM: add early malloc support needed by the decompressor
2012-07-25 8:02 ` [PATCH 01/11] stddev: make it selectable via Kconfig Jean-Christophe PLAGNIOL-VILLARD
` (2 preceding siblings ...)
2012-07-25 8:02 ` [PATCH 04/11] decompressor: import malloc/free implementation for linux 3.4 Jean-Christophe PLAGNIOL-VILLARD
@ 2012-07-25 8:02 ` Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 06/11] compressed: rename barebox target to zbarebox and zbarebox.bin Jean-Christophe PLAGNIOL-VILLARD
` (5 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-07-25 8:02 UTC (permalink / raw)
To: barebox
This is not needed by lzo but by gunzip, xz and others.
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
arch/arm/cpu/start.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c
index 18c5c83..8ab6fdc 100644
--- a/arch/arm/cpu/start.c
+++ b/arch/arm/cpu/start.c
@@ -28,6 +28,9 @@
#include <asm-generic/memory_layout.h>
#include <asm/sections.h>
+unsigned long free_mem_ptr;
+unsigned long free_mem_end_ptr;
+
#ifdef CONFIG_IMAGE_COMPRESSION
void __naked __section(.text_head_entry) compressed_start(void)
{
@@ -158,6 +161,10 @@ void __naked __section(.text_ll_return) board_init_lowlevel_return(void)
/* clear bss */
memset(__bss_start, 0, __bss_stop - __bss_start);
+ /* set 128 KiB before the STACK_BASE - 16 address for early malloc */
+ free_mem_ptr = STACK_BASE - 0x20000 - 16;
+ free_mem_end_ptr = STACK_BASE - 16;
+
/* flush I-cache before jumping to the copied binary */
__asm__ __volatile__("mcr p15, 0, %0, c7, c5, 0" : : "r" (0));
--
1.7.10.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 06/11] compressed: rename barebox target to zbarebox and zbarebox.bin
2012-07-25 8:02 ` [PATCH 01/11] stddev: make it selectable via Kconfig Jean-Christophe PLAGNIOL-VILLARD
` (3 preceding siblings ...)
2012-07-25 8:02 ` [PATCH 05/11] ARM: add early malloc support needed by the decompressor Jean-Christophe PLAGNIOL-VILLARD
@ 2012-07-25 8:02 ` Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 07/11] compressed image: add gzip support Jean-Christophe PLAGNIOL-VILLARD
` (4 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-07-25 8:02 UTC (permalink / raw)
To: barebox
Today we link to whole barebox and rely on gcc to cleanup via it's garbage
collector.
Now we specify only what is needed and introduce a new directory with source
only related to the compressed target.
Build it in arch/<arm>/compressed
Rebuild all the needed object.
Keep the previous target untouched.
This fix the modules support and allow custom flags for each file.
Import string functions from linux 3.4 (arch/arm/boot/compressed/string.c) and
implement a dummy panic.
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
Makefile | 37 ++---------
arch/arm/Makefile | 9 ++-
arch/arm/compressed/Makefile | 69 ++++++++++++++++++++
arch/arm/compressed/barebox.lds.S | 70 ++++++++++++++++++++
arch/arm/compressed/piggy.lzo.S | 6 ++
arch/arm/cpu/start.c | 41 +++++++-----
compressed/misc.c | 14 ++++
compressed/string.c | 127 +++++++++++++++++++++++++++++++++++++
piggy.lzo.S | 6 --
9 files changed, 323 insertions(+), 56 deletions(-)
create mode 100644 arch/arm/compressed/Makefile
create mode 100644 arch/arm/compressed/barebox.lds.S
create mode 100644 arch/arm/compressed/piggy.lzo.S
create mode 100644 compressed/misc.c
create mode 100644 compressed/string.c
delete mode 100644 piggy.lzo.S
diff --git a/Makefile b/Makefile
index 0b3da03..46c9491 100644
--- a/Makefile
+++ b/Makefile
@@ -512,7 +512,6 @@ common-y := $(patsubst %/, %/built-in.o, $(common-y))
barebox-common := $(common-y)
barebox-all := $(barebox-common)
barebox-lds := $(lds-y)
-barebox-compressed-lds := $(lds-compressed-y)
# Rule to link barebox
# May be overridden by arch/$(ARCH)/Makefile
@@ -668,11 +667,12 @@ quiet_cmd_objcopy = OBJCOPY $@
cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
OBJCOPYFLAGS_barebox.bin = -O binary
-OBJCOPYFLAGS_barebox-uncompressed.bin = -O binary
barebox.bin: barebox FORCE
$(call if_changed,objcopy)
+ifndef CONFIG_IMAGE_COMPRESSION
$(call cmd,check_file_size,$(CONFIG_BAREBOX_MAX_IMAGE_SIZE))
+endif
ifdef CONFIG_X86
barebox.S: barebox
@@ -702,41 +702,13 @@ quiet_cmd_disasm = DISASM $@
barebox.S: barebox FORCE
$(call if_changed,disasm)
-barebox-uncompressed.S: barebox-uncompressed FORCE
- $(call if_changed,disasm)
endif
# barebox image
-barebox-uncompressed: $(barebox-lds) $(barebox-head) $(barebox-common) $(kallsyms.o)
- $(call barebox-modpost)
- $(call if_changed_rule,barebox__)
- $(Q)rm -f .old_version
-
-barebox-uncompressed.bin: barebox-uncompressed
- $(call if_changed,objcopy)
-
-suffix_$(CONFIG_IMAGE_COMPRESSION_LZO) = lzo
-
-barebox-uncompressed.bin.lzo: barebox-uncompressed.bin
- @echo " LZO " $@
- $(Q)lzop -f -9 -o $@ barebox-uncompressed.bin
-
-piggy.$(suffix_y).o: barebox-uncompressed.bin.$(suffix_y) $(src)/piggy.$(suffix_y).S
- @echo " CC " $@
- $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -c $(src)/piggy.$(suffix_y).S -o $@
-
-ifdef CONFIG_IMAGE_COMPRESSION
-barebox: piggy.$(suffix_y).o
- @echo " LD " $@
- $(Q)$(LD) $(LDFLAGS) $(LDFLAGS_barebox) -o $@ \
- -T $(barebox-compressed-lds) \
- --start-group $(barebox-common) piggy.$(suffix_y).o --end-group
-else
barebox: $(barebox-lds) $(barebox-head) $(barebox-common) $(kallsyms.o) FORCE
$(call barebox-modpost)
$(call if_changed_rule,barebox__)
$(Q)rm -f .old_version
-endif
barebox.srec: barebox
$(OBJCOPY) -O srec $< $@
@@ -1031,11 +1003,10 @@ endif # CONFIG_MODULES
# Directories & files removed with 'make clean'
CLEAN_DIRS += $(MODVERDIR)
CLEAN_FILES += barebox System.map include/generated/barebox_default_env.h \
- .tmp_version .tmp_barebox* barebox.bin barebox.map barebox.S \
+ .tmp_version .tmp_barebox* barebox.* \
.tmp_kallsyms* barebox_default_env* barebox.ldr \
scripts/bareboxenv-target \
- Doxyfile.version barebox.srec barebox.s5p \
- barebox-uncompressed barebox-uncompressed.bin barebox-uncompressed.bin.lzo
+ Doxyfile.version barebox.srec barebox.s5p
# Directories & files removed with 'make mrproper'
MRPROPER_DIRS += include/config include2 usr/include
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index a93c4d5..647c536 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -184,6 +184,14 @@ ifeq ($(CONFIG_OMAP_BUILD_IFT),y)
KBUILD_IMAGE := MLO
endif
+ifdef CONFIG_IMAGE_COMPRESSION
+KBUILD_IMAGE := zbarebox.bin
+endif
+
+comp := arch/arm/compressed
+zbarebox.S zbarebox.bin zbarebox: barebox.bin
+ $(Q)$(MAKE) $(build)=$(comp) $(comp)/$@
+
all: $(KBUILD_IMAGE)
archprepare: maketools
@@ -208,6 +216,5 @@ common-y += $(BOARD) $(MACH)
common-y += arch/arm/lib/ arch/arm/cpu/
lds-y := arch/arm/lib/barebox.lds
-lds-compressed-y := arch/arm/lib/barebox-compressed.lds
CLEAN_FILES += include/generated/mach-types.h arch/arm/lib/barebox.lds
diff --git a/arch/arm/compressed/Makefile b/arch/arm/compressed/Makefile
new file mode 100644
index 0000000..627a411
--- /dev/null
+++ b/arch/arm/compressed/Makefile
@@ -0,0 +1,69 @@
+
+suffix_$(CONFIG_IMAGE_COMPRESSION_LZO) = lzo
+
+OBJCOPYFLAGS_zbarebox.bin = -O binary
+
+targets := zbarebox zbarebox.bin zbarebox.S \
+ piggy.$(suffix_y) piggy.$(suffix_y).o \
+ lib1funcs.o lib1funcs.S ashldi3.o ashldi3.S \
+ misc.o string.o start.o
+
+# Make sure files are removed during clean
+extra-y += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern \
+ lib1funcs.S ashldi3.S start.c string.c misc.c
+
+$(obj)/zbarebox.bin: $(obj)/zbarebox FORCE
+ $(call if_changed,objcopy)
+ $(call cmd,check_file_size,$(CONFIG_BAREBOX_MAX_IMAGE_SIZE))
+ @echo ' Barebox: $@ is ready'
+
+$(obj)/zbarebox.S: $(obj)/zbarebox FORCE
+ $(call if_changed,disasm)
+
+# For __aeabi_uidivmod
+lib1funcs = $(obj)/lib1funcs.o
+
+$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S
+ $(call cmd,shipped)
+
+CFLAGS_start.o = -D CONFIG_COMPRESSOR
+start= $(obj)/start.o
+$(obj)/start.c: $(srctree)/arch/$(SRCARCH)/cpu/start.c
+ $(call cmd,shipped)
+
+string= $(obj)/string.o
+$(obj)/string.c: $(srctree)/compressed/string.c
+ $(call cmd,shipped)
+
+misc= $(obj)/misc.o
+$(obj)/misc.c: $(srctree)/compressed/misc.c
+ $(call cmd,shipped)
+
+# For __aeabi_llsl
+ashldi3 = $(obj)/ashldi3.o
+
+$(obj)/ashldi3.S: $(srctree)/arch/$(SRCARCH)/lib/ashldi3.S
+ $(call cmd,shipped)
+
+# For __div0
+div0 = $(obj)/div0.o
+
+$(obj)/div0.c: $(srctree)/arch/$(SRCARCH)/lib/div0.c
+ $(call cmd,shipped)
+
+LDFLAGS_zbarebox := -Map zbarebox.map
+comp := $(obj)/piggy.$(suffix_y).o \
+ $(lib1funcs) $(ashldi3) $(start) $(string) $(misc) $(div0)
+
+$(obj)/zbarebox: $(obj)/barebox.lds $(comp) FORCE
+ @echo " LD " $@
+ $(Q)$(LD) $(LDFLAGS) $(LDFLAGS_zbarebox) -o $@ \
+ -T $(obj)/barebox.lds \
+ --start-group $(comp) --end-group
+
+$(obj)/piggy.$(suffix_y): $(obj)/../../../barebox.bin FORCE
+ $(call if_changed,$(suffix_y))
+
+$(obj)/piggy.$(suffix_y).o: $(obj)/piggy.$(suffix_y) FORCE
+
+$(obj)/barebox.lds: $(obj)/barebox.lds.S
diff --git a/arch/arm/compressed/barebox.lds.S b/arch/arm/compressed/barebox.lds.S
new file mode 100644
index 0000000..809e567
--- /dev/null
+++ b/arch/arm/compressed/barebox.lds.S
@@ -0,0 +1,70 @@
+/*
+ * (C) Copyright 2012 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ */
+
+#include <asm-generic/barebox.lds.h>
+#include <asm-generic/memory_layout.h>
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(compressed_start)
+SECTIONS
+{
+ . = HEAD_TEXT_BASE;
+
+ PRE_IMAGE
+
+ . = ALIGN(4);
+ .text :
+ {
+ _stext = .;
+ _text = .;
+ *(.text_head_entry*)
+ __ll_return = .;
+ *(.text_ll_return*)
+ __bare_init_start = .;
+ *(.text_bare_init*)
+ __bare_init_end = .;
+ *(.text*)
+ }
+ BAREBOX_BARE_INIT_SIZE
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata*) }
+
+ _etext = .; /* End of text and rodata section */
+
+ . = ALIGN(4);
+ .piggydata : {
+ *(.piggydata)
+ }
+
+ . = ALIGN(4);
+ .data : { *(.data*) }
+
+ . = ALIGN(4);
+ __bss_start = .;
+ .bss : { *(.bss*) }
+ __bss_stop = .;
+ _end = .;
+ _barebox_image_size = __bss_start - HEAD_TEXT_BASE;
+}
diff --git a/arch/arm/compressed/piggy.lzo.S b/arch/arm/compressed/piggy.lzo.S
new file mode 100644
index 0000000..0c0d216
--- /dev/null
+++ b/arch/arm/compressed/piggy.lzo.S
@@ -0,0 +1,6 @@
+ .section .piggydata,#alloc
+ .globl input_data
+input_data:
+ .incbin "arch/arm/compressed/piggy.lzo"
+ .globl input_data_end
+input_data_end:
diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c
index 8ab6fdc..6c745f7 100644
--- a/arch/arm/cpu/start.c
+++ b/arch/arm/cpu/start.c
@@ -100,6 +100,7 @@ void __naked __bare_init reset(void)
board_init_lowlevel_return();
}
+#ifdef CONFIG_COMPRESSOR
extern void *input_data;
extern void *input_data_end;
@@ -129,6 +130,29 @@ void barebox_uncompress(void *compressed_start, unsigned int len)
barebox();
}
+void barebox_decompress(uint32_t offset)
+{
+ uint32_t compressed_start, compressed_end, len;
+ void (*uncompress)(void *compressed_start, unsigned int len);
+
+ compressed_start = (uint32_t)&input_data - offset;
+ compressed_end = (uint32_t)&input_data_end - offset;
+ len = compressed_end - compressed_start;
+
+ uncompress = barebox_uncompress;
+
+ /* call barebox_uncompress with its absolute address */
+ __asm__ __volatile__(
+ "mov r0, %1\n"
+ "mov r1, %2\n"
+ "mov pc, %0\n"
+ :
+ : "r"(uncompress), "r"(compressed_start), "r"(len)
+ : "r0", "r1");
+}
+#else
+void barebox_decompress(uint32_t offset) {}
+#endif
/*
* Board code can jump here by either returning from board_init_lowlevel
@@ -137,8 +161,6 @@ void barebox_uncompress(void *compressed_start, unsigned int len)
void __naked __section(.text_ll_return) board_init_lowlevel_return(void)
{
uint32_t r, addr, offset;
- uint32_t compressed_start, compressed_end, len;
- void (*uncompress)(void *compressed_start, unsigned int len);
/*
* Get runtime address of this function. Do not
@@ -169,20 +191,7 @@ void __naked __section(.text_ll_return) board_init_lowlevel_return(void)
__asm__ __volatile__("mcr p15, 0, %0, c7, c5, 0" : : "r" (0));
if (IS_ENABLED(CONFIG_IMAGE_COMPRESSION)) {
- compressed_start = (uint32_t)&input_data - offset;
- compressed_end = (uint32_t)&input_data_end - offset;
- len = compressed_end - compressed_start;
-
- uncompress = barebox_uncompress;
-
- /* call barebox_uncompress with its absolute address */
- __asm__ __volatile__(
- "mov r0, %1\n"
- "mov r1, %2\n"
- "mov pc, %0\n"
- :
- : "r"(uncompress), "r"(compressed_start), "r"(len)
- : "r0", "r1");
+ barebox_decompress(offset);
} else {
/* call start_barebox with its absolute address */
r = (unsigned int)&start_barebox;
diff --git a/compressed/misc.c b/compressed/misc.c
new file mode 100644
index 0000000..47e9cea
--- /dev/null
+++ b/compressed/misc.c
@@ -0,0 +1,14 @@
+#include <common.h>
+#include <init.h>
+#include <linux/types.h>
+#include <linux/string.h>
+#include <linux/ctype.h>
+
+void __noreturn panic(const char *fmt, ...)
+{
+ while(1);
+}
+
+void start_barebox(void)
+{
+}
diff --git a/compressed/string.c b/compressed/string.c
new file mode 100644
index 0000000..6787e82
--- /dev/null
+++ b/compressed/string.c
@@ -0,0 +1,127 @@
+/*
+ * arch/arm/boot/compressed/string.c
+ *
+ * Small subset of simple string routines
+ */
+
+#include <linux/types.h>
+
+void *memcpy(void *__dest, __const void *__src, size_t __n)
+{
+ int i = 0;
+ unsigned char *d = (unsigned char *)__dest, *s = (unsigned char *)__src;
+
+ for (i = __n >> 3; i > 0; i--) {
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ }
+
+ if (__n & 1 << 2) {
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ }
+
+ if (__n & 1 << 1) {
+ *d++ = *s++;
+ *d++ = *s++;
+ }
+
+ if (__n & 1)
+ *d++ = *s++;
+
+ return __dest;
+}
+
+void *memmove(void *__dest, __const void *__src, size_t count)
+{
+ unsigned char *d = __dest;
+ const unsigned char *s = __src;
+
+ if (__dest == __src)
+ return __dest;
+
+ if (__dest < __src)
+ return memcpy(__dest, __src, count);
+
+ while (count--)
+ d[count] = s[count];
+ return __dest;
+}
+
+size_t strlen(const char *s)
+{
+ const char *sc = s;
+
+ while (*sc != '\0')
+ sc++;
+ return sc - s;
+}
+
+int memcmp(const void *cs, const void *ct, size_t count)
+{
+ const unsigned char *su1 = cs, *su2 = ct, *end = su1 + count;
+ int res = 0;
+
+ while (su1 < end) {
+ res = *su1++ - *su2++;
+ if (res)
+ break;
+ }
+ return res;
+}
+
+int strcmp(const char *cs, const char *ct)
+{
+ unsigned char c1, c2;
+ int res = 0;
+
+ do {
+ c1 = *cs++;
+ c2 = *ct++;
+ res = c1 - c2;
+ if (res)
+ break;
+ } while (c1);
+ return res;
+}
+
+void *memchr(const void *s, int c, size_t count)
+{
+ const unsigned char *p = s;
+
+ while (count--)
+ if ((unsigned char)c == *p++)
+ return (void *)(p - 1);
+ return NULL;
+}
+
+char *strchr(const char *s, int c)
+{
+ while (*s != (char)c)
+ if (*s++ == '\0')
+ return NULL;
+ return (char *)s;
+}
+
+#undef memset
+
+void *memset(void *s, int c, size_t count)
+{
+ char *xs = s;
+ while (count--)
+ *xs++ = c;
+ return s;
+}
+
+void __memzero(void *s, size_t count)
+{
+ memset(s, 0, count);
+}
diff --git a/piggy.lzo.S b/piggy.lzo.S
deleted file mode 100644
index 6cc618d..0000000
--- a/piggy.lzo.S
+++ /dev/null
@@ -1,6 +0,0 @@
- .section .piggydata,#alloc
- .globl input_data
-input_data:
- .incbin "barebox-uncompressed.bin.lzo"
- .globl input_data_end
-input_data_end:
--
1.7.10.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 07/11] compressed image: add gzip support
2012-07-25 8:02 ` [PATCH 01/11] stddev: make it selectable via Kconfig Jean-Christophe PLAGNIOL-VILLARD
` (4 preceding siblings ...)
2012-07-25 8:02 ` [PATCH 06/11] compressed: rename barebox target to zbarebox and zbarebox.bin Jean-Christophe PLAGNIOL-VILLARD
@ 2012-07-25 8:02 ` Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 08/11] kbuild: Init all relevant variables used in kbuild files so Jean-Christophe PLAGNIOL-VILLARD
` (3 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-07-25 8:02 UTC (permalink / raw)
To: barebox
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
arch/arm/compressed/Makefile | 1 +
arch/arm/compressed/piggy.gzip.S | 6 ++++++
arch/arm/cpu/start.c | 4 ++++
common/Kconfig | 3 +++
lib/decompress_inflate.c | 1 +
5 files changed, 15 insertions(+)
create mode 100644 arch/arm/compressed/piggy.gzip.S
diff --git a/arch/arm/compressed/Makefile b/arch/arm/compressed/Makefile
index 627a411..59e7d59 100644
--- a/arch/arm/compressed/Makefile
+++ b/arch/arm/compressed/Makefile
@@ -1,4 +1,5 @@
+suffix_$(CONFIG_IMAGE_COMPRESSION_GZIP) = gzip
suffix_$(CONFIG_IMAGE_COMPRESSION_LZO) = lzo
OBJCOPYFLAGS_zbarebox.bin = -O binary
diff --git a/arch/arm/compressed/piggy.gzip.S b/arch/arm/compressed/piggy.gzip.S
new file mode 100644
index 0000000..ef3dd77
--- /dev/null
+++ b/arch/arm/compressed/piggy.gzip.S
@@ -0,0 +1,6 @@
+ .section .piggydata,#alloc
+ .globl input_data
+input_data:
+ .incbin "arch/arm/compressed/piggy.gzip"
+ .globl input_data_end
+input_data_end:
diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c
index 6c745f7..5503552 100644
--- a/arch/arm/cpu/start.c
+++ b/arch/arm/cpu/start.c
@@ -110,6 +110,10 @@ extern void *input_data_end;
#include "../../../lib/decompress_unlzo.c"
#endif
+#ifdef CONFIG_IMAGE_COMPRESSION_GZIP
+#include "../../../../lib/decompress_inflate.c"
+#endif
+
void barebox_uncompress(void *compressed_start, unsigned int len)
{
void (*barebox)(void);
diff --git a/common/Kconfig b/common/Kconfig
index 8437e1c..702a0bd 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -110,6 +110,9 @@ choice
config IMAGE_COMPRESSION_LZO
bool "lzo"
+config IMAGE_COMPRESSION_GZIP
+ bool "gzip"
+
endchoice
endif
diff --git a/lib/decompress_inflate.c b/lib/decompress_inflate.c
index 526d6a1..5c1ebb6 100644
--- a/lib/decompress_inflate.c
+++ b/lib/decompress_inflate.c
@@ -4,6 +4,7 @@
/* prevent inclusion of _LINUX_KERNEL_H in pre-boot environment: lots
* errors about console_printk etc... on ARM */
#define _LINUX_KERNEL_H
+#include <linux/decompress/mm.h>
#include "zlib_inflate/inftrees.c"
#include "zlib_inflate/inffast.c"
--
1.7.10.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 08/11] kbuild: Init all relevant variables used in kbuild files so
2012-07-25 8:02 ` [PATCH 01/11] stddev: make it selectable via Kconfig Jean-Christophe PLAGNIOL-VILLARD
` (5 preceding siblings ...)
2012-07-25 8:02 ` [PATCH 07/11] compressed image: add gzip support Jean-Christophe PLAGNIOL-VILLARD
@ 2012-07-25 8:02 ` Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 09/11] kbuild: add comp-y target Jean-Christophe PLAGNIOL-VILLARD
` (2 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-07-25 8:02 UTC (permalink / raw)
To: barebox
import from linux 3.5-rc5
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
scripts/Makefile.build | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index f70e2b9..1a82c44 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -7,7 +7,30 @@ src := $(obj)
PHONY := __build
__build:
-# Read .config if it exist, otherwise ignore
+# Init all relevant variables used in kbuild files so
+# 1) they have correct type
+# 2) they do not inherit any value from the environment
+obj-y :=
+obj-m :=
+lib-y :=
+lib-m :=
+always :=
+targets :=
+subdir-y :=
+subdir-m :=
+EXTRA_AFLAGS :=
+EXTRA_CFLAGS :=
+EXTRA_CPPFLAGS :=
+EXTRA_LDFLAGS :=
+asflags-y :=
+ccflags-y :=
+cppflags-y :=
+ldflags-y :=
+
+subdir-asflags-y :=
+subdir-ccflags-y :=
+
+# Read auto.conf if it exists, otherwise ignore
-include include/config/auto.conf
include scripts/Kbuild.include
--
1.7.10.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 09/11] kbuild: add comp-y target
2012-07-25 8:02 ` [PATCH 01/11] stddev: make it selectable via Kconfig Jean-Christophe PLAGNIOL-VILLARD
` (6 preceding siblings ...)
2012-07-25 8:02 ` [PATCH 08/11] kbuild: Init all relevant variables used in kbuild files so Jean-Christophe PLAGNIOL-VILLARD
@ 2012-07-25 8:02 ` Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 10/11] arm: use the new built-comp.o generated files Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 11/11] at91: add lowlevel init to the decompressor Jean-Christophe PLAGNIOL-VILLARD
9 siblings, 0 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-07-25 8:02 UTC (permalink / raw)
To: barebox
This will allow to link compiled object to the built-comp.o across the source
tree that will be finally link to the decompressor.
Limitation:
if the object is present in both decompressor and barebox the object is
generated once only
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
Makefile | 6 +++++-
scripts/Makefile.build | 22 ++++++++++++++++++++--
scripts/Makefile.lib | 3 +++
3 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index 46c9491..277f7da 100644
--- a/Makefile
+++ b/Makefile
@@ -481,6 +481,8 @@ barebox-alldirs := $(sort $(barebox-dirs) $(patsubst %/,%,$(filter %/, \
$(core-n) $(core-) $(drivers-n) $(drivers-) \
$(net-n) $(net-) $(libs-n) $(libs-))))
+comp-common-y := $(common-y)
+comp-common-y := $(patsubst %/, %/built-comp.o, $(common-y))
common-y := $(patsubst %/, %/built-in.o, $(common-y))
# Build barebox
@@ -510,6 +512,8 @@ common-y := $(patsubst %/, %/built-in.o, $(common-y))
# System.map is generated to document addresses of all kernel symbols
barebox-common := $(common-y)
+barebox-common-comp := $(comp-common-y)
+export barebox-common-comp
barebox-all := $(barebox-common)
barebox-lds := $(lds-y)
@@ -715,7 +719,7 @@ barebox.srec: barebox
# The actual objects are generated when descending,
# make sure no implicit rule kicks in
-$(sort $(barebox-head) $(barebox-common) ) $(barebox-lds): $(barebox-dirs) ;
+$(sort $(barebox-head) $(barebox-common) ) $(barebox-lds) $(barebox-common-comp): $(barebox-dirs) ;
# Handle descending into subdirectories listed in $(barebox-dirs)
# Preset locale variables to speed up the build process. Limit locale
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 1a82c44..7b3f711 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -13,6 +13,7 @@ __build:
obj-y :=
obj-m :=
lib-y :=
+comp-y :=
lib-m :=
always :=
targets :=
@@ -97,13 +98,17 @@ ifneq ($(strip $(lib-y) $(lib-m) $(lib-n) $(lib-)),)
lib-target := $(obj)/lib.a
endif
-ifneq ($(strip $(obj-y) $(obj-m) $(obj-n) $(obj-) $(lib-target)),)
+ifneq ($(strip $(obj-y) $(obj-m) $(obj-n) $(obj-) $(lib-target) $(comp-y)),)
builtin-target := $(obj)/built-in.o
endif
+ifneq ($(strip $(comp-y) $(builtin-target)),)
+comp-target := $(obj)/built-comp.o
+endif
+
# We keep a list of all modules in $(MODVERDIR)
-__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
+__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(comp-target) $(extra-y)) \
$(if $(KBUILD_MODULES),$(obj-m)) \
$(subdir-ym) $(always)
@:
@@ -294,6 +299,19 @@ $(builtin-target): $(obj-y) FORCE
targets += $(builtin-target)
endif # builtin-target
+ifdef comp-target
+quiet_cmd_link_comp_o_target = COMPLD $@
+# If the list of objects to link is empty, just create an empty built-comp.o
+cmd_link_comp_o_target = $(if $(strip $(comp-y)),\
+ $(LD) $(ld_flags) -r -o $@ $(filter $(comp-y), $^),\
+ rm -f $@; $(AR) rcs $@)
+
+$(comp-target): $(comp-y) FORCE
+ $(call if_changed,link_comp_o_target)
+
+targets += $(comp-target)
+endif # comp-target
+
#
# Rule to compile a set of .o files into one .a file
#
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index b842c48..f0ea147 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -28,6 +28,8 @@ subdir-m += $(__subdir-m)
obj-y := $(patsubst %/, %/built-in.o, $(obj-y))
obj-m := $(filter-out %/, $(obj-m))
+comp-y := $(patsubst %/, %/built-comp.o, $(comp-y))
+
# Subdirectories we need to descend into
subdir-ym := $(sort $(subdir-y) $(subdir-m))
@@ -63,6 +65,7 @@ targets := $(addprefix $(obj)/,$(targets))
obj-y := $(addprefix $(obj)/,$(obj-y))
obj-m := $(addprefix $(obj)/,$(obj-m))
lib-y := $(addprefix $(obj)/,$(lib-y))
+comp-y := $(addprefix $(obj)/,$(comp-y))
subdir-obj-y := $(addprefix $(obj)/,$(subdir-obj-y))
real-objs-y := $(addprefix $(obj)/,$(real-objs-y))
real-objs-m := $(addprefix $(obj)/,$(real-objs-m))
--
1.7.10.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 10/11] arm: use the new built-comp.o generated files
2012-07-25 8:02 ` [PATCH 01/11] stddev: make it selectable via Kconfig Jean-Christophe PLAGNIOL-VILLARD
` (7 preceding siblings ...)
2012-07-25 8:02 ` [PATCH 09/11] kbuild: add comp-y target Jean-Christophe PLAGNIOL-VILLARD
@ 2012-07-25 8:02 ` Jean-Christophe PLAGNIOL-VILLARD
2012-07-25 8:02 ` [PATCH 11/11] at91: add lowlevel init to the decompressor Jean-Christophe PLAGNIOL-VILLARD
9 siblings, 0 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-07-25 8:02 UTC (permalink / raw)
To: barebox
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
Makefile | 2 ++
arch/arm/compressed/Makefile | 33 +++------------------------------
arch/arm/lib/Makefile | 4 ++++
compressed/Makefile | 5 +++++
4 files changed, 14 insertions(+), 30 deletions(-)
create mode 100644 compressed/Makefile
diff --git a/Makefile b/Makefile
index 277f7da..35a681f 100644
--- a/Makefile
+++ b/Makefile
@@ -474,6 +474,8 @@ CFLAGS += $(call cc-option,-Wno-pointer-sign,)
# this default value
export KBUILD_IMAGE ?= barebox
+common-$(CONFIG_IMAGE_COMPRESSION) += compressed/
+
barebox-dirs := $(patsubst %/,%,$(filter %/, $(common-y)))
barebox-alldirs := $(sort $(barebox-dirs) $(patsubst %/,%,$(filter %/, \
diff --git a/arch/arm/compressed/Makefile b/arch/arm/compressed/Makefile
index 59e7d59..9d8c051 100644
--- a/arch/arm/compressed/Makefile
+++ b/arch/arm/compressed/Makefile
@@ -6,12 +6,11 @@ OBJCOPYFLAGS_zbarebox.bin = -O binary
targets := zbarebox zbarebox.bin zbarebox.S \
piggy.$(suffix_y) piggy.$(suffix_y).o \
- lib1funcs.o lib1funcs.S ashldi3.o ashldi3.S \
- misc.o string.o start.o
+ start.o
# Make sure files are removed during clean
extra-y += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern \
- lib1funcs.S ashldi3.S start.c string.c misc.c
+ start.c
$(obj)/zbarebox.bin: $(obj)/zbarebox FORCE
$(call if_changed,objcopy)
@@ -21,39 +20,13 @@ $(obj)/zbarebox.bin: $(obj)/zbarebox FORCE
$(obj)/zbarebox.S: $(obj)/zbarebox FORCE
$(call if_changed,disasm)
-# For __aeabi_uidivmod
-lib1funcs = $(obj)/lib1funcs.o
-
-$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S
- $(call cmd,shipped)
-
CFLAGS_start.o = -D CONFIG_COMPRESSOR
start= $(obj)/start.o
$(obj)/start.c: $(srctree)/arch/$(SRCARCH)/cpu/start.c
$(call cmd,shipped)
-string= $(obj)/string.o
-$(obj)/string.c: $(srctree)/compressed/string.c
- $(call cmd,shipped)
-
-misc= $(obj)/misc.o
-$(obj)/misc.c: $(srctree)/compressed/misc.c
- $(call cmd,shipped)
-
-# For __aeabi_llsl
-ashldi3 = $(obj)/ashldi3.o
-
-$(obj)/ashldi3.S: $(srctree)/arch/$(SRCARCH)/lib/ashldi3.S
- $(call cmd,shipped)
-
-# For __div0
-div0 = $(obj)/div0.o
-
-$(obj)/div0.c: $(srctree)/arch/$(SRCARCH)/lib/div0.c
- $(call cmd,shipped)
-
LDFLAGS_zbarebox := -Map zbarebox.map
-comp := $(obj)/piggy.$(suffix_y).o \
+comp := $(barebox-common-comp) $(obj)/piggy.$(suffix_y).o \
$(lib1funcs) $(ashldi3) $(start) $(string) $(misc) $(div0)
$(obj)/zbarebox: $(obj)/barebox.lds $(comp) FORCE
diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
index 1b6f7f4..2291dc2 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -22,3 +22,7 @@ obj-$(CONFIG_ARM_UNWIND) += unwind.o
obj-$(CONFIG_MODULES) += module.o
extra-y += barebox.lds
extra-$(CONFIG_IMAGE_COMPRESSION) += barebox-compressed.lds
+
+comp-y += lib1funcs.o
+comp-y += ashldi3.o
+comp-y += div0.o
diff --git a/compressed/Makefile b/compressed/Makefile
new file mode 100644
index 0000000..c2c4f7f
--- /dev/null
+++ b/compressed/Makefile
@@ -0,0 +1,5 @@
+#
+# only unsed by the decompressor
+#
+comp-y += misc.o
+comp-y += string.o
--
1.7.10.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 11/11] at91: add lowlevel init to the decompressor
2012-07-25 8:02 ` [PATCH 01/11] stddev: make it selectable via Kconfig Jean-Christophe PLAGNIOL-VILLARD
` (8 preceding siblings ...)
2012-07-25 8:02 ` [PATCH 10/11] arm: use the new built-comp.o generated files Jean-Christophe PLAGNIOL-VILLARD
@ 2012-07-25 8:02 ` Jean-Christophe PLAGNIOL-VILLARD
9 siblings, 0 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-07-25 8:02 UTC (permalink / raw)
To: barebox
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
arch/arm/mach-at91/Makefile | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index 491c454..5565989 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -4,6 +4,8 @@ lowlevel_init-y = at91sam926x_lowlevel_init.o
lowlevel_init-$(CONFIG_ARCH_AT91RM9200) = at91rm9200_lowlevel_init.o
obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)
+comp-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)
+
obj-$(CONFIG_AT91SAM9_RESET) += at91sam9_reset.o
obj-$(CONFIG_AT91SAM9G45_RESET) += at91sam9g45_reset.o
--
1.7.10.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread