From: Florian Fainelli Date: Wed, 29 Jul 2009 20:30:54 +0000 (+0000) Subject: fix the lzma patch after r16944 and r16939, thanks agb X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=7a1826cf8ac1af1a87be8de861eb333979da0d6d;p=openwrt%2Fstaging%2Flinusw.git fix the lzma patch after r16944 and r16939, thanks agb SVN-Revision: 17043 --- diff --git a/target/linux/rdc/patches-2.6.28/006-bzip2_lzma_x86.patch b/target/linux/rdc/patches-2.6.28/006-bzip2_lzma_x86.patch index 6ebe0585a4..c1865a86b7 100644 --- a/target/linux/rdc/patches-2.6.28/006-bzip2_lzma_x86.patch +++ b/target/linux/rdc/patches-2.6.28/006-bzip2_lzma_x86.patch @@ -1,223 +1,3 @@ ---- a/arch/arm/boot/compressed/Makefile -+++ b/arch/arm/boot/compressed/Makefile -@@ -67,8 +67,15 @@ endif - - SEDFLAGS = s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/ - --targets := vmlinux vmlinux.lds piggy.gz piggy.o font.o font.c \ -- head.o misc.o $(OBJS) -+suffix_$(CONFIG_KERNEL_GZIP) = gz -+suffix_$(CONFIG_KERNEL_BZIP2) = bz2 -+suffix_$(CONFIG_KERNEL_LZMA) = lzma -+ -+targets := vmlinux vmlinux.lds \ -+ piggy.gz piggy.gz.o \ -+ piggy.bz2 piggy.bz2.o \ -+ piggy.lzma piggy.lzma.o \ -+ font.o font.c head.o misc.o $(OBJS) - - ifeq ($(CONFIG_FUNCTION_TRACER),y) - ORIG_CFLAGS := $(KBUILD_CFLAGS) -@@ -95,7 +102,7 @@ LDFLAGS_vmlinux += -p --no-undefined -X - # would otherwise mess up our GOT table - CFLAGS_misc.o := -Dstatic= - --$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \ -+$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \ - $(addprefix $(obj)/, $(OBJS)) FORCE - $(call if_changed,ld) - @: -@@ -103,7 +110,17 @@ $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj - $(obj)/piggy.gz: $(obj)/../Image FORCE - $(call if_changed,gzip) - --$(obj)/piggy.o: $(obj)/piggy.gz FORCE -+$(obj)/piggy.bz2: $(obj)/../Image FORCE -+ $(call if_changed,bzip2) -+ -+$(obj)/piggy.lzma: $(obj)/../Image FORCE -+ $(call if_changed,lzma) -+ -+$(obj)/piggy.gz.o: $(obj)/piggy.gz FORCE -+ -+$(obj)/piggy.bz2.o: $(obj)/piggy.bz2 FORCE -+ -+$(obj)/piggy.lzma.o: $(obj)/piggy.lzma FORCE - - CFLAGS_font.o := -Dstatic= - ---- a/arch/arm/boot/compressed/misc.c -+++ b/arch/arm/boot/compressed/misc.c -@@ -169,116 +169,34 @@ static inline __ptr_t memcpy(__ptr_t __d - /* - * gzip delarations - */ --#define OF(args) args - #define STATIC static - --typedef unsigned char uch; --typedef unsigned short ush; - typedef unsigned long ulg; - --#define WSIZE 0x8000 /* Window size must be at least 32k, */ -- /* and a power of two */ -- --static uch *inbuf; /* input buffer */ --static uch window[WSIZE]; /* Sliding window buffer */ -- --static unsigned insize; /* valid bytes in inbuf */ --static unsigned inptr; /* index of next byte to be processed in inbuf */ --static unsigned outcnt; /* bytes in output buffer */ -- --/* gzip flag byte */ --#define ASCII_FLAG 0x01 /* bit 0 set: file probably ascii text */ --#define CONTINUATION 0x02 /* bit 1 set: continuation of multi-part gzip file */ --#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */ --#define ORIG_NAME 0x08 /* bit 3 set: original file name present */ --#define COMMENT 0x10 /* bit 4 set: file comment present */ --#define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */ --#define RESERVED 0xC0 /* bit 6,7: reserved */ -- --#define get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf()) -- --/* Diagnostic functions */ --#ifdef DEBUG --# define Assert(cond,msg) {if(!(cond)) error(msg);} --# define Trace(x) fprintf x --# define Tracev(x) {if (verbose) fprintf x ;} --# define Tracevv(x) {if (verbose>1) fprintf x ;} --# define Tracec(c,x) {if (verbose && (c)) fprintf x ;} --# define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;} --#else --# define Assert(cond,msg) --# define Trace(x) --# define Tracev(x) --# define Tracevv(x) --# define Tracec(c,x) --# define Tracecv(c,x) --#endif -- --static int fill_inbuf(void); --static void flush_window(void); --static void error(char *m); -- - extern char input_data[]; - extern char input_data_end[]; - --static uch *output_data; --static ulg output_ptr; --static ulg bytes_out; -- - static void error(char *m); - --static void putstr(const char *); -- --extern int end; - static ulg free_mem_ptr; - static ulg free_mem_end_ptr; - --#ifdef STANDALONE_DEBUG --#define NO_INFLATE_MALLOC --#endif -- - #define ARCH_HAS_DECOMP_WDOG -+#define NEW_CODE - -+#ifdef CONFIG_KERNEL_GZIP - #include "../../../../lib/inflate.c" -+#endif - --/* =========================================================================== -- * Fill the input buffer. This is called only when the buffer is empty -- * and at least one byte is really needed. -- */ --int fill_inbuf(void) --{ -- if (insize != 0) -- error("ran out of input data"); -+#ifdef CONFIG_KERNEL_BZIP2 -+#include "../../../../lib/decompress_bunzip2.c" -+#endif - -- inbuf = input_data; -- insize = &input_data_end[0] - &input_data[0]; -+#ifdef CONFIG_KERNEL_LZMA -+#include "../../../../lib/decompress_unlzma.c" -+#endif - -- inptr = 1; -- return inbuf[0]; --} - --/* =========================================================================== -- * Write the output window window[0..outcnt-1] and update crc and bytes_out. -- * (Used for the decompressed data only.) -- */ --void flush_window(void) --{ -- ulg c = crc; -- unsigned n; -- uch *in, *out, ch; -- -- in = window; -- out = &output_data[output_ptr]; -- for (n = 0; n < outcnt; n++) { -- ch = *out++ = *in++; -- c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8); -- } -- crc = c; -- bytes_out += (ulg)outcnt; -- output_ptr += (ulg)outcnt; -- outcnt = 0; -- putstr("."); --} - - #ifndef arch_error - #define arch_error(x) -@@ -301,16 +219,24 @@ ulg - decompress_kernel(ulg output_start, ulg free_mem_ptr_p, ulg free_mem_ptr_end_p, - int arch_id) - { -- output_data = (uch *)output_start; /* Points to kernel start */ -- free_mem_ptr = free_mem_ptr_p; -- free_mem_end_ptr = free_mem_ptr_end_p; -+ ulg output_ptr; -+ ulg *ptr; -+ size_t input_len = input_data_end - input_data; -+ size_t pos = 0; -+ - __machine_arch_type = arch_id; - - arch_decomp_setup(); - -- makecrc(); -- putstr("Uncompressing Linux..."); -- gunzip(); -+ ptr = (ulg *) (((long)input_data_end) - 4); -+ output_ptr = output_start + *ptr; -+ -+ free_mem_ptr = output_ptr; -+ free_mem_end_ptr = output_ptr + 0x4000000; -+ -+ putstr("Decompressing Linux..."); -+ decompress(input_data, input_len, -+ NULL, NULL, (unsigned char *) output_start, &pos, error); - putstr(" done, booting the kernel.\n"); - return output_ptr; - } -@@ -320,11 +246,8 @@ char output_buffer[1500*1024]; - - int main() - { -- output_data = output_buffer; -- -- makecrc(); - putstr("Uncompressing Linux..."); -- gunzip(); -+ decompress(input_data, input_len, NULL, output_buffer, NULL); - putstr("done.\n"); - return 0; - } --- a/arch/x86/boot/compressed/Makefile +++ b/arch/x86/boot/compressed/Makefile @@ -4,7 +4,7 @@