Signed-off-by: Christian Ruppert <christian.rupp...@abilis.com>
---
 arch/x86/Kconfig                  |  1 +
 arch/x86/boot/compressed/Makefile | 14 ++++++------
 arch/x86/boot/compressed/misc.c   |  4 ++++
 lib/decompress_copy.c             | 47 +++++++++++++++++++++++++++++++++++++++
 4 files changed, 59 insertions(+), 7 deletions(-)
 create mode 100644 lib/decompress_copy.c

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index f67e839..2a32df9 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -61,6 +61,7 @@ config X86
        select USER_STACKTRACE_SUPPORT
        select HAVE_REGS_AND_STACK_ACCESS_API
        select HAVE_DMA_API_DEBUG
+       select HAVE_KERNEL_UNCOMPRESSED
        select HAVE_KERNEL_GZIP
        select HAVE_KERNEL_BZIP2
        select HAVE_KERNEL_LZMA
diff --git a/arch/x86/boot/compressed/Makefile 
b/arch/x86/boot/compressed/Makefile
index dcd90df..f65e444 100644
--- a/arch/x86/boot/compressed/Makefile
+++ b/arch/x86/boot/compressed/Makefile
@@ -67,16 +67,16 @@ $(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
 $(obj)/vmlinux.bin.lz4: $(vmlinux.bin.all-y) FORCE
        $(call if_changed,lz4)
 
-suffix-$(CONFIG_KERNEL_GZIP)   := gz
-suffix-$(CONFIG_KERNEL_BZIP2)  := bz2
-suffix-$(CONFIG_KERNEL_LZMA)   := lzma
-suffix-$(CONFIG_KERNEL_XZ)     := xz
-suffix-$(CONFIG_KERNEL_LZO)    := lzo
-suffix-$(CONFIG_KERNEL_LZ4)    := lz4
+suffix-$(CONFIG_KERNEL_GZIP)   := .gz
+suffix-$(CONFIG_KERNEL_BZIP2)  := .bz2
+suffix-$(CONFIG_KERNEL_LZMA)   := .lzma
+suffix-$(CONFIG_KERNEL_XZ)     := .xz
+suffix-$(CONFIG_KERNEL_LZO)    := .lzo
+suffix-$(CONFIG_KERNEL_LZ4)    := .lz4
 
 quiet_cmd_mkpiggy = MKPIGGY $@
       cmd_mkpiggy = $(obj)/mkpiggy $< > $@ || ( rm -f $@ ; false )
 
 targets += piggy.S
-$(obj)/piggy.S: $(obj)/vmlinux.bin.$(suffix-y) $(obj)/mkpiggy FORCE
+$(obj)/piggy.S: $(obj)/vmlinux.bin$(suffix-y) $(obj)/mkpiggy FORCE
        $(call if_changed,mkpiggy)
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
index 434f077..c210314 100644
--- a/arch/x86/boot/compressed/misc.c
+++ b/arch/x86/boot/compressed/misc.c
@@ -149,6 +149,10 @@ static int lines, cols;
 #include "../../../../lib/decompress_unlz4.c"
 #endif
 
+#ifdef CONFIG_KERNEL_UNCOMPRESSED
+#include "../../../../lib/decompress_copy.c"
+#endif
+
 static void scroll(void)
 {
        int i;
diff --git a/lib/decompress_copy.c b/lib/decompress_copy.c
new file mode 100644
index 0000000..8a41090
--- /dev/null
+++ b/lib/decompress_copy.c
@@ -0,0 +1,47 @@
+#include <linux/decompress/mm.h>
+
+#define NOZIP_BUFSZ (16 * 1024)
+STATIC int INIT nozip(unsigned char *buf, int len,
+                       int(*fill)(void*, unsigned int),
+                       int(*flush)(void*, unsigned int),
+                       unsigned char *outbuf,
+                       int *pos,
+                       void(*error)(char *x))
+{
+       char *b;
+
+       if (buf)
+               b = buf;
+       else
+               b = malloc(NOZIP_BUFSZ);
+
+       if (!b) {
+               error("Out of memory while allocating buffer");
+               return -1;
+       }
+
+       if (flush) {
+               if (!len)
+                       len = fill(b, NOZIP_BUFSZ);
+
+               len = flush(b, len);
+       } else {
+               if (!len)
+                       len = fill(outbuf, NOZIP_BUFSZ);
+               else {
+                       int i;
+                       for (i = 0; i < len; i++)
+                               outbuf[i] = b[i];
+               }
+       }
+
+       if (pos)
+               *pos = len;
+
+       if (!buf)
+               free(b);
+
+       return 0;
+}
+
+#define decompress nozip
-- 
1.8.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to