diff options
-rw-r--r-- | target/linux/generic-2.6/patches/600-x86_lzma.patch | 125 |
1 files changed, 16 insertions, 109 deletions
diff --git a/target/linux/generic-2.6/patches/600-x86_lzma.patch b/target/linux/generic-2.6/patches/600-x86_lzma.patch index 168576e02..b370827b9 100644 --- a/target/linux/generic-2.6/patches/600-x86_lzma.patch +++ b/target/linux/generic-2.6/patches/600-x86_lzma.patch @@ -1,6 +1,6 @@ -diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/LzmaDecode.c linux-2.6.21.1-owrt/arch/i386/boot/compressed/LzmaDecode.c ---- linux-2.6.21.1/arch/i386/boot/compressed/LzmaDecode.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.21.1-owrt/arch/i386/boot/compressed/LzmaDecode.c 2007-05-14 11:55:38.000000000 +0200 +diff -Naur linux-old/arch/i386/boot/compressed/LzmaDecode.c linux-lzma/arch/i386/boot/compressed/LzmaDecode.c +--- linux-old/arch/i386/boot/compressed/LzmaDecode.c 1969-12-31 19:00:00.000000000 -0500 ++++ linux-lzma/arch/i386/boot/compressed/LzmaDecode.c 2005-06-05 00:07:38.000000000 -0400 @@ -0,0 +1,586 @@ +/* + LzmaDecode.c @@ -588,9 +588,9 @@ diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/LzmaDecode.c linux-2.6.21.1-o + *outSizeProcessed = nowPos; + return LZMA_RESULT_OK; +} -diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/LzmaDecode.h linux-2.6.21.1-owrt/arch/i386/boot/compressed/LzmaDecode.h ---- linux-2.6.21.1/arch/i386/boot/compressed/LzmaDecode.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.21.1-owrt/arch/i386/boot/compressed/LzmaDecode.h 2007-05-14 11:55:38.000000000 +0200 +diff -Naur linux-old/arch/i386/boot/compressed/LzmaDecode.h linux-lzma/arch/i386/boot/compressed/LzmaDecode.h +--- linux-old/arch/i386/boot/compressed/LzmaDecode.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-lzma/arch/i386/boot/compressed/LzmaDecode.h 2005-06-05 00:07:39.000000000 -0400 @@ -0,0 +1,100 @@ +/* + LzmaDecode.h @@ -692,10 +692,10 @@ diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/LzmaDecode.h linux-2.6.21.1-o + UInt32 *outSizeProcessed); + +#endif -diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/lzma_misc.c linux-2.6.21.1-owrt/arch/i386/boot/compressed/lzma_misc.c ---- linux-2.6.21.1/arch/i386/boot/compressed/lzma_misc.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.21.1-owrt/arch/i386/boot/compressed/lzma_misc.c 2007-05-14 11:55:38.000000000 +0200 -@@ -0,0 +1,374 @@ +diff -Naur linux-old/arch/i386/boot/compressed/lzma_misc.c linux-lzma/arch/i386/boot/compressed/lzma_misc.c +--- linux-old/arch/i386/boot/compressed/lzma_misc.c 1969-12-31 19:00:00.000000000 -0500 ++++ linux-lzma/arch/i386/boot/compressed/lzma_misc.c 2005-06-04 21:33:48.000000000 -0400 +@@ -0,0 +1,281 @@ +/* + * lzma_misc.c + * @@ -851,76 +851,16 @@ diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/lzma_misc.c linux-2.6.21.1-ow + * This is set up by the setup-routine at boot-time + */ +static unsigned char *real_mode; /* Pointer to real-mode data */ -+ -+#define RM_EXT_MEM_K (*(unsigned short *)(real_mode + 0x2)) -+#ifndef STANDARD_MEMORY_BIOS_CALL -+#define RM_ALT_MEM_K (*(unsigned long *)(real_mode + 0x1e0)) -+#endif -+#define RM_SCREEN_INFO (*(struct screen_info *)(real_mode+0)) -+ +extern unsigned char input_data[]; +extern int input_len; + +static void error(char *x); +static void *memcpy(void *dest, const void *src, unsigned n); + -+static void putstr(const char *); -+ -+static char *vidmem = (char *)0xb8000; -+static int vidport; -+static int lines, cols; -+ +#ifdef CONFIG_X86_NUMAQ +void *xquad_portio; +#endif + -+ -+static void scroll(void) -+{ -+ int i; -+ -+ memcpy ( vidmem, vidmem + cols * 2, ( lines - 1 ) * cols * 2 ); -+ for ( i = ( lines - 1 ) * cols * 2; i < lines * cols * 2; i += 2 ) -+ vidmem[i] = ' '; -+} -+ -+static void putstr(const char *s) -+{ -+ int x,y,pos; -+ char c; -+ -+ x = RM_SCREEN_INFO.orig_x; -+ y = RM_SCREEN_INFO.orig_y; -+ -+ while ( ( c = *s++ ) != '\0' ) { -+ if ( c == '\n' ) { -+ x = 0; -+ if ( ++y >= lines ) { -+ scroll(); -+ y--; -+ } -+ } else { -+ vidmem [ ( x + cols * y ) * 2 ] = c; -+ if ( ++x >= cols ) { -+ x = 0; -+ if ( ++y >= lines ) { -+ scroll(); -+ y--; -+ } -+ } -+ } -+ } -+ -+ RM_SCREEN_INFO.orig_x = x; -+ RM_SCREEN_INFO.orig_y = y; -+ -+ pos = (x + cols * y) * 2; /* Update cursor position */ -+ outb_p(14, vidport); -+ outb_p(0xff & (pos >> 9), vidport+1); -+ outb_p(15, vidport); -+ outb_p(0xff & (pos >> 1), vidport+1); -+} -+ +static void* memcpy(void* dest, const void* src, unsigned n) +{ + int i; @@ -948,9 +888,7 @@ diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/lzma_misc.c linux-2.6.21.1-ow +#include "LzmaDecode.h" +#include "LzmaDecode.c" + -+#ifdef _LZMA_IN_CB +static int read_byte(void *object, unsigned char **buffer, UInt32 *bufferSize); -+#endif + + +/* @@ -968,14 +906,8 @@ diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/lzma_misc.c linux-2.6.21.1-ow + unsigned int uncompressedSize = 0; + unsigned char* p; + -+#ifdef _LZMA_IN_CB + ILzmaInCallback callback; + callback.Read = read_byte; -+#else -+ unsigned char* inputbuf; -+ unsigned int lzma_workspace_size; -+ unsigned int compressedSize = 0; -+#endif + + /* lzma args */ + i = get_byte(); @@ -991,14 +923,8 @@ diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/lzma_misc.c linux-2.6.21.1-ow + *p++ = get_byte(); + + //get compressedSize -+#ifdef _LZMA_IN_CB + for (i = 0; i < 4; i++) + get_byte(); -+#else -+ p= (char*)&compressedSize; -+ for (i = 0; i < 4; i++) -+ *p++ = get_byte(); -+#endif + + // point it beyond uncompresedSize + workspace = window + uncompressedSize; @@ -1020,18 +946,12 @@ diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/lzma_misc.c linux-2.6.21.1-ow + *bufferSize = 1; + val = get_byte(); + *buffer = &val; -+ if ( i++ % ( 1024 * 50 ) == 0 ) -+ putstr("."); + return LZMA_RESULT_OK; +} +#endif + +static void error(char *x) +{ -+ putstr("\n\n"); -+ putstr(x); -+ putstr("\n\n -- System halted"); -+ + while(1); /* Halt */ +} + @@ -1040,17 +960,6 @@ diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/lzma_misc.c linux-2.6.21.1-ow +{ + real_mode = rmode; + -+ if (RM_SCREEN_INFO.orig_video_mode == 7) { -+ vidmem = (char *) 0xb0000; -+ vidport = 0x3b4; -+ } else { -+ vidmem = (char *) 0xb8000; -+ vidport = 0x3d4; -+ } -+ -+ lines = RM_SCREEN_INFO.orig_video_lines; -+ cols = RM_SCREEN_INFO.orig_video_cols; -+ + window = output; + inbuf = input_data; /* Input buffer */ + insize = input_len; @@ -1065,14 +974,12 @@ diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/lzma_misc.c linux-2.6.21.1-ow + error("Wrong destination address"); +#endif + -+ putstr("Uncompressing Linux... "); + lzma_unzip(); -+ putstr("Ok, booting the kernel.\n"); + return; +} -diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/Makefile linux-2.6.21.1-owrt/arch/i386/boot/compressed/Makefile ---- linux-2.6.21.1/arch/i386/boot/compressed/Makefile 2007-04-27 23:49:26.000000000 +0200 -+++ linux-2.6.21.1-owrt/arch/i386/boot/compressed/Makefile 2007-05-14 12:01:25.000000000 +0200 +diff -Naur linux-old/arch/i386/boot/compressed/Makefile linux-lzma/arch/i386/boot/compressed/Makefile +--- linux-old/arch/i386/boot/compressed/Makefile 2005-06-04 21:53:40.000000000 -0400 ++++ linux-lzma/arch/i386/boot/compressed/Makefile 2005-06-05 00:25:23.000000000 -0400 @@ -4,15 +4,15 @@ # create a compressed vmlinux image from the original vmlinux # @@ -1112,9 +1019,9 @@ diff -Nur linux-2.6.21.1/arch/i386/boot/compressed/Makefile linux-2.6.21.1-owrt/ -$(obj)/piggy.o: $(src)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE +$(obj)/piggy.o: $(src)/vmlinux.scr $(obj)/vmlinux.bin.lzma FORCE $(call if_changed,ld) -diff -Nur linux-2.6.21.1/scripts/Makefile.lib linux-2.6.21.1-owrt/scripts/Makefile.lib ---- linux-2.6.21.1/scripts/Makefile.lib 2007-04-27 23:49:26.000000000 +0200 -+++ linux-2.6.21.1-owrt/scripts/Makefile.lib 2007-05-14 11:55:38.000000000 +0200 +diff -urN linux-2.6.19.2/scripts/Makefile.lib linux-2.6.19.2.new/scripts/Makefile.lib +--- linux-2.6.19.2/scripts/Makefile.lib 2007-01-10 20:10:37.000000000 +0100 ++++ linux-2.6.19.2.new/scripts/Makefile.lib 2007-04-15 23:51:54.000000000 +0200 @@ -162,4 +162,9 @@ quiet_cmd_gzip = GZIP $@ cmd_gzip = gzip -f -9 < $< > $@ |