diff options
Diffstat (limited to 'target/linux/rdc-2.6/patches')
-rw-r--r-- | target/linux/rdc-2.6/patches/000-rdc_fixes.patch | 71 | ||||
-rw-r--r-- | target/linux/rdc-2.6/patches/001-rdc3210_flash_map.patch | 65 | ||||
-rw-r--r-- | target/linux/rdc-2.6/patches/002-r6040_ethernet.patch | 39 | ||||
-rw-r--r-- | target/linux/rdc-2.6/patches/003-rootfstype.patch | 11 | ||||
-rw-r--r-- | target/linux/rdc-2.6/patches/004-rdc3211_leds.patch | 27 | ||||
-rw-r--r-- | target/linux/rdc-2.6/patches/005-rdc_x86_cpu_type.patch | 22 | ||||
-rw-r--r-- | target/linux/rdc-2.6/patches/600-x86_lzma.patch | 1042 |
7 files changed, 0 insertions, 1277 deletions
diff --git a/target/linux/rdc-2.6/patches/000-rdc_fixes.patch b/target/linux/rdc-2.6/patches/000-rdc_fixes.patch deleted file mode 100644 index 306fac79a6..0000000000 --- a/target/linux/rdc-2.6/patches/000-rdc_fixes.patch +++ /dev/null @@ -1,71 +0,0 @@ -diff -urN linux-2.6.19/arch/i386/Kconfig linux-2.6.19.new/arch/i386/Kconfig ---- linux-2.6.19/arch/i386/Kconfig 2006-11-29 22:57:37.000000000 +0100 -+++ linux-2.6.19.new/arch/i386/Kconfig 2006-12-17 17:13:33.000000000 +0100 -@@ -180,6 +180,14 @@ - Only choose this option if you have such a system, otherwise you - should say N here. - -+config X86_RDC -+ bool "Support for RDC 3211 boards" -+ help -+ Support for RDC 3211 systems. Say 'Y' here if the kernel is -+ supposed to run on an IA-32 RDC R3211 system. -+ Only choose this option if you have such as system, otherwise you -+ should say N here. -+ - endchoice - - config ACPI_SRAT -diff -urN linux-2.6.19/arch/i386/Makefile linux-2.6.19.new/arch/i386/Makefile ---- linux-2.6.19/arch/i386/Makefile 2006-11-29 22:57:37.000000000 +0100 -+++ linux-2.6.19.new/arch/i386/Makefile 2006-12-17 17:13:33.000000000 +0100 -@@ -92,6 +92,10 @@ - mflags-$(CONFIG_X86_ES7000) := -Iinclude/asm-i386/mach-es7000 - mcore-$(CONFIG_X86_ES7000) := mach-default - core-$(CONFIG_X86_ES7000) := arch/i386/mach-es7000/ -+# RDC subarch support -+mflags-$(CONFIG_X86_RDC) := -Iinclude/asm-i386/mach-rdc -+mcore-$(CONFIG_X86_RDC) := mach-default -+core-$(CONFIG_X86_RDC) += arch/i386/mach-rdc/ - - # default subarch .h files - mflags-y += -Iinclude/asm-i386/mach-default ---- timex.h 2007-08-07 10:44:03.816112250 -0700 -+++ linux/include/asm-i386/timex.h 2007-08-07 10:48:47.905866750 -0700 -@@ -11,6 +11,8 @@ - - #ifdef CONFIG_X86_ELAN - # define CLOCK_TICK_RATE 1189200 /* AMD Elan has different frequency! */ -+#elif defined(CONFIG_X86_RDC) -+# define CLOCK_TICK_RATE 1041667 /* Underlying HZ for R8610 */ - #else - # define CLOCK_TICK_RATE 1193182 /* Underlying HZ */ - #endif ---- reboot_fixups.c 2007-08-07 12:02:00.908412250 -0700 -+++ linux/arch/i386/kernel/reboot_fixups.c 2007-08-07 12:18:49.391438500 -0700 -@@ -13,6 +13,17 @@ - #include <linux/pci.h> - #include <asm/reboot_fixups.h> - #include <asm/msr.h> -+ -+static void r8610_reset(struct pci_dev *dev) -+{ -+ int i; -+ -+ outl(0x80003840,0xCF8); -+ i=inl(0xCFC); -+ i |= 0x1600; -+ outl(i,0xCFC); -+ outb(1,0x92); -+} - - static void cs5530a_warm_reset(struct pci_dev *dev) - { -@@ -40,6 +53,7 @@ - }; - - static struct device_fixup fixups_table[] = { -+{ 0x17F3, 0x6030, r8610_reset }, - { PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, cs5530a_warm_reset }, - { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, cs5536_warm_reset }, - }; diff --git a/target/linux/rdc-2.6/patches/001-rdc3210_flash_map.patch b/target/linux/rdc-2.6/patches/001-rdc3210_flash_map.patch deleted file mode 100644 index 0c407a114a..0000000000 --- a/target/linux/rdc-2.6/patches/001-rdc3210_flash_map.patch +++ /dev/null @@ -1,65 +0,0 @@ -diff -urN linux-2.6.17/drivers/mtd/maps/Kconfig linux-2.6.17.new/drivers/mtd/maps/Kconfig ---- linux-2.6.17/drivers/mtd/maps/Kconfig 2006-06-18 03:49:35.000000000 +0200 -+++ linux-2.6.17.new/drivers/mtd/maps/Kconfig 2006-09-24 20:28:11.000000000 +0200 -@@ -76,6 +76,50 @@ - PNC-2000 is the name of Network Camera product from PHOTRON - Ltd. in Japan. It uses CFI-compliant flash. - -+config MTD_RDC3210 -+ tristate "CFI Flash device mapped on RDC3210" -+ depends on X86 && MTD_CFI && MTD_PARTITIONS -+ help -+ RDC-3210 is the flash device we find on Ralink reference board. -+ -+config MTD_RDC3210_STATIC_MAP -+ bool "Partitions on RDC3210 mapped statically" if MTD_RDC3210 -+ select MTD_RDC3210_FACTORY_PRESENT -+ help -+ The mapping driver will use the static partition map for the -+ RDC-3210 flash device. -+ -+config MTD_RDC3210_FACTORY_PRESENT -+ bool "Reserve a partition on RDC3210 for factory presets" -+ depends on MTD_RDC3210 -+ default y -+ help -+ The mapping driver will reserve a partition on the RDC-3210 flash -+ device for resetting flash contents to factory defaults. -+ -+config MTD_RDC3210_ALLOW_JFFS2 -+ bool "JFFS2 filesystem usable in a partition on RDC3210" -+ depends on MTD_RDC3210 && !MTD_RDC3210_STATIC_MAP -+ help -+ The mapping driver will align a partition on the RDC-3210 flash -+ device to an erase-block boundary so that a JFFS2 filesystem may -+ reside on it. -+ -+config MTD_RDC3210_SIZE -+ hex "Amount of flash memory on RDC3210" -+ depends on MTD_RDC3210 -+ default "0x400000" -+ help -+ Total size in bytes of the RDC-3210 flash device -+ -+config MTD_RDC3210_BUSWIDTH -+ int "Width of CFI Flash device mapped on RDC3210" -+ depends on MTD_RDC3210 -+ default "2" -+ help -+ Number of bytes addressed on the RDC-3210 flash device before -+ addressing the same chip again -+ - config MTD_SC520CDP - tristate "CFI Flash device mapped on AMD SC520 CDP" - depends on X86 && MTD_CFI && MTD_CONCAT -diff -urN linux-2.6.17/drivers/mtd/maps/Makefile linux-2.6.17.new/drivers/mtd/maps/Makefile ---- linux-2.6.17/drivers/mtd/maps/Makefile 2006-06-18 03:49:35.000000000 +0200 -+++ linux-2.6.17.new/drivers/mtd/maps/Makefile 2006-09-24 20:26:10.000000000 +0200 -@@ -28,6 +28,7 @@ - obj-$(CONFIG_MTD_PHYSMAP) += physmap.o - obj-$(CONFIG_MTD_PNC2000) += pnc2000.o - obj-$(CONFIG_MTD_PCMCIA) += pcmciamtd.o -+obj-$(CONFIG_MTD_RDC3210) += rdc3210.o - obj-$(CONFIG_MTD_RPXLITE) += rpxlite.o - obj-$(CONFIG_MTD_TQM8XXL) += tqm8xxl.o - obj-$(CONFIG_MTD_SA1100) += sa1100-flash.o diff --git a/target/linux/rdc-2.6/patches/002-r6040_ethernet.patch b/target/linux/rdc-2.6/patches/002-r6040_ethernet.patch deleted file mode 100644 index 1b93025247..0000000000 --- a/target/linux/rdc-2.6/patches/002-r6040_ethernet.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff -urN linux-2.6.17/drivers/net/Kconfig linux-2.6.17.new/drivers/net/Kconfig ---- linux-2.6.17/drivers/net/Kconfig 2006-06-18 03:49:35.000000000 +0200 -+++ linux-2.6.17.new/drivers/net/Kconfig 2006-09-25 13:14:27.000000000 +0200 -@@ -1358,6 +1358,24 @@ - <file:Documentation/networking/net-modules.txt>. The module will be - called apricot. - -+config R6040 -+ tristate "RDC Fast-Ethernet support (EXPERIMENTAL)" -+ depends on NET_PCI && EXPERIMENTAL -+ select MII -+ help -+ If you have a network (Ethernet) controller of this type, say Y and -+ read the Ethernet-HOWTO, available from -+ <http://www.tldp.org/docs.html#howto>. -+ -+ To compile this driver as a module, choose M here and read -+ <file:Documentation/networking/net-modules.txt>. The module will be -+ called r6040. -+ -+ -+config R6040_NAPI -+ bool "NAPI support for R6040" -+ depends on R6040 -+ default y - config B44 - tristate "Broadcom 4400 ethernet support (EXPERIMENTAL)" - depends on NET_PCI && PCI && EXPERIMENTAL -diff -urN linux-2.6.17/drivers/net/Makefile linux-2.6.17.new/drivers/net/Makefile ---- linux-2.6.17/drivers/net/Makefile 2006-06-18 03:49:35.000000000 +0200 -+++ linux-2.6.17.new/drivers/net/Makefile 2006-09-25 13:14:45.000000000 +0200 -@@ -106,6 +106,7 @@ - obj-$(CONFIG_NE3210) += ne3210.o 8390.o - obj-$(CONFIG_NET_SB1250_MAC) += sb1250-mac.o - obj-$(CONFIG_B44) += b44.o -+obj-$(CONFIG_R6040) += r6040.o - obj-$(CONFIG_FORCEDETH) += forcedeth.o - obj-$(CONFIG_NE_H8300) += ne-h8300.o 8390.o - diff --git a/target/linux/rdc-2.6/patches/003-rootfstype.patch b/target/linux/rdc-2.6/patches/003-rootfstype.patch deleted file mode 100644 index 34ac3d0a71..0000000000 --- a/target/linux/rdc-2.6/patches/003-rootfstype.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- linux-2.6.19.2/init/do_mounts.c 2007-01-10 11:10:37.000000000 -0800 -+++ foo/init/do_mounts.c 2007-04-05 13:15:37.000000000 -0700 -@@ -243,6 +243,8 @@ - { - char *s = page; - -+ if (!root_fs_names) -+ root_fs_names = "squashfs,jffs2"; - if (root_fs_names) { - strcpy(page, root_fs_names); - while (*s++) { diff --git a/target/linux/rdc-2.6/patches/004-rdc3211_leds.patch b/target/linux/rdc-2.6/patches/004-rdc3211_leds.patch deleted file mode 100644 index 2e704aa600..0000000000 --- a/target/linux/rdc-2.6/patches/004-rdc3211_leds.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff -urN linux-2.6.19.2/drivers/leds/Kconfig linux-2.6.19.2.new/drivers/leds/Kconfig ---- linux-2.6.19.2/drivers/leds/Kconfig 2007-01-10 20:10:37.000000000 +0100 -+++ linux-2.6.19.2.new/drivers/leds/Kconfig 2007-04-16 22:09:40.000000000 +0200 -@@ -76,6 +76,12 @@ - This option enables support for the Soekris net4801 and net4826 error - LED. - -+config LEDS_RDC3211 -+ tristate "LED Support for RDC3211 boards" -+ depends on LEDS_CLASS && X86_RDC -+ help -+ This option enables support for the RDC3211 various LEDs. -+ - comment "LED Triggers" - - config LEDS_TRIGGERS -diff -urN linux-2.6.21.1/drivers/leds/Makefile linux-2.6.21.1.new/drivers/leds/Makefile ---- linux-2.6.21.1/drivers/leds/Makefile 2007-04-27 23:49:26.000000000 +0200 -+++ linux-2.6.21.1.new/drivers/leds/Makefile 2007-05-25 12:19:13.000000000 +0200 -@@ -16,6 +16,7 @@ - obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o - obj-$(CONFIG_LEDS_H1940) += leds-h1940.o - obj-$(CONFIG_LEDS_COBALT) += leds-cobalt.o -+obj-$(CONFIG_LEDS_RDC3211) += leds-rdc3211.o - - # LED Triggers - obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o diff --git a/target/linux/rdc-2.6/patches/005-rdc_x86_cpu_type.patch b/target/linux/rdc-2.6/patches/005-rdc_x86_cpu_type.patch deleted file mode 100644 index 185ec13f7b..0000000000 --- a/target/linux/rdc-2.6/patches/005-rdc_x86_cpu_type.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -urN linux-2.6.22.1/arch/i386/kernel/cpu/Makefile linux-2.6.22.1.new/arch/i386/kernel/cpu/Makefile ---- linux-2.6.22.1/arch/i386/kernel/cpu/Makefile 2007-08-11 22:16:24.000000000 +0200 -+++ linux-2.6.22.1.new/arch/i386/kernel/cpu/Makefile 2007-08-13 16:37:32.000000000 +0200 -@@ -12,6 +12,7 @@ - obj-y += rise.o - obj-y += nexgen.o - obj-y += umc.o -+obj-$(CONFIG_X86_RDC) += rdc.o - - obj-$(CONFIG_X86_MCE) += mcheck/ - -diff -urN linux-2.6.22.1/arch/i386/kernel/cpu/Makefile linux-2.6.22.1.new/arch/i386/kernel/cpu/Makefile ---- linux-2.6.22.1/include/asm-i386/processor.h 2007-08-13 16:42:25.000000000 +0200 -+++ linux-2.6.22.1.new/include/asm-i386/processor.h 2007-08-13 16:51:19.000000000 +0200 -@@ -92,6 +92,7 @@ - #define X86_VENDOR_TRANSMETA 7 - #define X86_VENDOR_NSC 8 - #define X86_VENDOR_NUM 9 -+#define X86_VENDOR_RDC 10 - #define X86_VENDOR_UNKNOWN 0xff - - /* diff --git a/target/linux/rdc-2.6/patches/600-x86_lzma.patch b/target/linux/rdc-2.6/patches/600-x86_lzma.patch deleted file mode 100644 index bb10f1fdcc..0000000000 --- a/target/linux/rdc-2.6/patches/600-x86_lzma.patch +++ /dev/null @@ -1,1042 +0,0 @@ -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 -+ LZMA Decoder (optimized for Speed version) -+ -+ LZMA SDK 4.17 Copyright (c) 1999-2005 Igor Pavlov (2005-04-05) -+ http://www.7-zip.org/ -+ -+ LZMA SDK is licensed under two licenses: -+ 1) GNU Lesser General Public License (GNU LGPL) -+ 2) Common Public License (CPL) -+ It means that you can select one of these two licenses and -+ follow rules of that license. -+ -+ SPECIAL EXCEPTION: -+ Igor Pavlov, as the author of this Code, expressly permits you to -+ statically or dynamically link your Code (or bind by name) to the -+ interfaces of this file without subjecting your linked Code to the -+ terms of the CPL or GNU LGPL. Any modifications or additions -+ to this file, however, are subject to the LGPL or CPL terms. -+*/ -+ -+#include "LzmaDecode.h" -+ -+#ifndef Byte -+#define Byte unsigned char -+#endif -+ -+#define kNumTopBits 24 -+#define kTopValue ((UInt32)1 << kNumTopBits) -+ -+#define kNumBitModelTotalBits 11 -+#define kBitModelTotal (1 << kNumBitModelTotalBits) -+#define kNumMoveBits 5 -+ -+#define RC_READ_BYTE (*Buffer++) -+ -+#define RC_INIT2 Code = 0; Range = 0xFFFFFFFF; \ -+ { int i; for(i = 0; i < 5; i++) { RC_TEST; Code = (Code << 8) | RC_READ_BYTE; }} -+ -+#ifdef _LZMA_IN_CB -+ -+#define RC_TEST { if (Buffer == BufferLim) \ -+ { UInt32 size; int result = InCallback->Read(InCallback, &Buffer, &size); if (result != LZMA_RESULT_OK) return result; \ -+ BufferLim = Buffer + size; if (size == 0) return LZMA_RESULT_DATA_ERROR; }} -+ -+#define RC_INIT Buffer = BufferLim = 0; RC_INIT2 -+ -+#else -+ -+#define RC_TEST { if (Buffer == BufferLim) return LZMA_RESULT_DATA_ERROR; } -+ -+#define RC_INIT(buffer, bufferSize) Buffer = buffer; BufferLim = buffer + bufferSize; RC_INIT2 -+ -+#endif -+ -+#define RC_NORMALIZE if (Range < kTopValue) { RC_TEST; Range <<= 8; Code = (Code << 8) | RC_READ_BYTE; } -+ -+#define IfBit0(p) RC_NORMALIZE; bound = (Range >> kNumBitModelTotalBits) * *(p); if (Code < bound) -+#define UpdateBit0(p) Range = bound; *(p) += (kBitModelTotal - *(p)) >> kNumMoveBits; -+#define UpdateBit1(p) Range -= bound; Code -= bound; *(p) -= (*(p)) >> kNumMoveBits; -+ -+#define RC_GET_BIT2(p, mi, A0, A1) IfBit0(p) \ -+ { UpdateBit0(p); mi <<= 1; A0; } else \ -+ { UpdateBit1(p); mi = (mi + mi) + 1; A1; } -+ -+#define RC_GET_BIT(p, mi) RC_GET_BIT2(p, mi, ; , ;) -+ -+#define RangeDecoderBitTreeDecode(probs, numLevels, res) \ -+ { int i = numLevels; res = 1; \ -+ do { CProb *p = probs + res; RC_GET_BIT(p, res) } while(--i != 0); \ -+ res -= (1 << numLevels); } -+ -+ -+#define kNumPosBitsMax 4 -+#define kNumPosStatesMax (1 << kNumPosBitsMax) -+ -+#define kLenNumLowBits 3 -+#define kLenNumLowSymbols (1 << kLenNumLowBits) -+#define kLenNumMidBits 3 -+#define kLenNumMidSymbols (1 << kLenNumMidBits) -+#define kLenNumHighBits 8 -+#define kLenNumHighSymbols (1 << kLenNumHighBits) -+ -+#define LenChoice 0 -+#define LenChoice2 (LenChoice + 1) -+#define LenLow (LenChoice2 + 1) -+#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits)) -+#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits)) -+#define kNumLenProbs (LenHigh + kLenNumHighSymbols) -+ -+ -+#define kNumStates 12 -+#define kNumLitStates 7 -+ -+#define kStartPosModelIndex 4 -+#define kEndPosModelIndex 14 -+#define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) -+ -+#define kNumPosSlotBits 6 -+#define kNumLenToPosStates 4 -+ -+#define kNumAlignBits 4 -+#define kAlignTableSize (1 << kNumAlignBits) -+ -+#define kMatchMinLen 2 -+ -+#define IsMatch 0 -+#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax)) -+#define IsRepG0 (IsRep + kNumStates) -+#define IsRepG1 (IsRepG0 + kNumStates) -+#define IsRepG2 (IsRepG1 + kNumStates) -+#define IsRep0Long (IsRepG2 + kNumStates) -+#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax)) -+#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) -+#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex) -+#define LenCoder (Align + kAlignTableSize) -+#define RepLenCoder (LenCoder + kNumLenProbs) -+#define Literal (RepLenCoder + kNumLenProbs) -+ -+#if Literal != LZMA_BASE_SIZE -+StopCompilingDueBUG -+#endif -+ -+#ifdef _LZMA_OUT_READ -+ -+typedef struct _LzmaVarState -+{ -+ Byte *Buffer; -+ Byte *BufferLim; -+ UInt32 Range; -+ UInt32 Code; -+ #ifdef _LZMA_IN_CB -+ ILzmaInCallback *InCallback; -+ #endif -+ Byte *Dictionary; -+ UInt32 DictionarySize; -+ UInt32 DictionaryPos; -+ UInt32 GlobalPos; -+ UInt32 Reps[4]; -+ int lc; -+ int lp; -+ int pb; -+ int State; -+ int RemainLen; -+ Byte TempDictionary[4]; -+} LzmaVarState; -+ -+int LzmaDecoderInit( -+ unsigned char *buffer, UInt32 bufferSize, -+ int lc, int lp, int pb, -+ unsigned char *dictionary, UInt32 dictionarySize, -+ #ifdef _LZMA_IN_CB -+ ILzmaInCallback *InCallback -+ #else -+ unsigned char *inStream, UInt32 inSize -+ #endif -+ ) -+{ -+ Byte *Buffer; -+ Byte *BufferLim; -+ UInt32 Range; -+ UInt32 Code; -+ LzmaVarState *vs = (LzmaVarState *)buffer; -+ CProb *p = (CProb *)(buffer + sizeof(LzmaVarState)); -+ UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp)); -+ UInt32 i; -+ if (bufferSize < numProbs * sizeof(CProb) + sizeof(LzmaVarState)) -+ return LZMA_RESULT_NOT_ENOUGH_MEM; -+ vs->Dictionary = dictionary; -+ vs->DictionarySize = dictionarySize; -+ vs->DictionaryPos = 0; -+ vs->GlobalPos = 0; -+ vs->Reps[0] = vs->Reps[1] = vs->Reps[2] = vs->Reps[3] = 1; -+ vs->lc = lc; -+ vs->lp = lp; -+ vs->pb = pb; -+ vs->State = 0; -+ vs->RemainLen = 0; -+ dictionary[dictionarySize - 1] = 0; -+ for (i = 0; i < numProbs; i++) -+ p[i] = kBitModelTotal >> 1; -+ -+ #ifdef _LZMA_IN_CB -+ RC_INIT; -+ #else -+ RC_INIT(inStream, inSize); -+ #endif -+ vs->Buffer = Buffer; -+ vs->BufferLim = BufferLim; -+ vs->Range = Range; -+ vs->Code = Code; -+ #ifdef _LZMA_IN_CB -+ vs->InCallback = InCallback; -+ #endif -+ -+ return LZMA_RESULT_OK; -+} -+ -+int LzmaDecode(unsigned char *buffer, -+ unsigned char *outStream, UInt32 outSize, -+ UInt32 *outSizeProcessed) -+{ -+ LzmaVarState *vs = (LzmaVarState *)buffer; -+ Byte *Buffer = vs->Buffer; -+ Byte *BufferLim = vs->BufferLim; -+ UInt32 Range = vs->Range; -+ UInt32 Code = vs->Code; -+ #ifdef _LZMA_IN_CB -+ ILzmaInCallback *InCallback = vs->InCallback; -+ #endif -+ CProb *p = (CProb *)(buffer + sizeof(LzmaVarState)); -+ int state = vs->State; -+ Byte previousByte; -+ UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3]; -+ UInt32 nowPos = 0; -+ UInt32 posStateMask = (1 << (vs->pb)) - 1; -+ UInt32 literalPosMask = (1 << (vs->lp)) - 1; -+ int lc = vs->lc; -+ int len = vs->RemainLen; -+ UInt32 globalPos = vs->GlobalPos; -+ -+ Byte *dictionary = vs->Dictionary; -+ UInt32 dictionarySize = vs->DictionarySize; -+ UInt32 dictionaryPos = vs->DictionaryPos; -+ -+ Byte tempDictionary[4]; -+ if (dictionarySize == 0) -+ { -+ dictionary = tempDictionary; -+ dictionarySize = 1; -+ tempDictionary[0] = vs->TempDictionary[0]; -+ } -+ -+ if (len == -1) -+ { -+ *outSizeProcessed = 0; -+ return LZMA_RESULT_OK; -+ } -+ -+ while(len != 0 && nowPos < outSize) -+ { -+ UInt32 pos = dictionaryPos - rep0; -+ if (pos >= dictionarySize) -+ pos += dictionarySize; -+ outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos]; -+ if (++dictionaryPos == dictionarySize) -+ dictionaryPos = 0; -+ len--; -+ } -+ if (dictionaryPos == 0) -+ previousByte = dictionary[dictionarySize - 1]; -+ else -+ previousByte = dictionary[dictionaryPos - 1]; -+#else -+ -+int LzmaDecode( -+ Byte *buffer, UInt32 bufferSize, -+ int lc, int lp, int pb, -+ #ifdef _LZMA_IN_CB -+ ILzmaInCallback *InCallback, -+ #else -+ unsigned char *inStream, UInt32 inSize, -+ #endif -+ unsigned char *outStream, UInt32 outSize, -+ UInt32 *outSizeProcessed) -+{ -+ UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp)); -+ CProb *p = (CProb *)buffer; -+ -+ UInt32 i; -+ int state = 0; -+ Byte previousByte = 0; -+ UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1; -+ UInt32 nowPos = 0; -+ UInt32 posStateMask = (1 << pb) - 1; -+ UInt32 literalPosMask = (1 << lp) - 1; -+ int len = 0; -+ -+ Byte *Buffer; -+ Byte *BufferLim; -+ UInt32 Range; -+ UInt32 Code; -+ -+ if (bufferSize < numProbs * sizeof(CProb)) -+ return LZMA_RESULT_NOT_ENOUGH_MEM; -+ for (i = 0; i < numProbs; i++) -+ p[i] = kBitModelTotal >> 1; -+ -+ -+ #ifdef _LZMA_IN_CB -+ RC_INIT; -+ #else -+ RC_INIT(inStream, inSize); -+ #endif -+#endif -+ -+ *outSizeProcessed = 0; -+ while(nowPos < outSize) -+ { -+ CProb *prob; -+ UInt32 bound; -+ int posState = (int)( -+ (nowPos -+ #ifdef _LZMA_OUT_READ -+ + globalPos -+ #endif -+ ) -+ & posStateMask); -+ -+ prob = p + IsMatch + (state << kNumPosBitsMax) + posState; -+ IfBit0(prob) -+ { -+ int symbol = 1; -+ UpdateBit0(prob) -+ prob = p + Literal + (LZMA_LIT_SIZE * -+ ((( -+ (nowPos -+ #ifdef _LZMA_OUT_READ -+ + globalPos -+ #endif -+ ) -+ & literalPosMask) << lc) + (previousByte >> (8 - lc)))); -+ -+ if (state >= kNumLitStates) -+ { -+ int matchByte; -+ #ifdef _LZMA_OUT_READ -+ UInt32 pos = dictionaryPos - rep0; -+ if (pos >= dictionarySize) -+ pos += dictionarySize; -+ matchByte = dictionary[pos]; -+ #else -+ matchByte = outStream[nowPos - rep0]; -+ #endif -+ do -+ { -+ int bit; -+ CProb *probLit; -+ matchByte <<= 1; -+ bit = (matchByte & 0x100); -+ probLit = prob + 0x100 + bit + symbol; -+ RC_GET_BIT2(probLit, symbol, if (bit != 0) break, if (bit == 0) break) -+ } -+ while (symbol < 0x100); -+ } -+ while (symbol < 0x100) -+ { -+ CProb *probLit = prob + symbol; -+ RC_GET_BIT(probLit, symbol) -+ } -+ previousByte = (Byte)symbol; -+ -+ outStream[nowPos++] = previousByte; -+ #ifdef _LZMA_OUT_READ -+ dictionary[dictionaryPos] = previousByte; -+ if (++dictionaryPos == dictionarySize) -+ dictionaryPos = 0; -+ #endif -+ if (state < 4) state = 0; -+ else if (state < 10) state -= 3; -+ else state -= 6; -+ } -+ else -+ { -+ UpdateBit1(prob); -+ prob = p + IsRep + state; -+ IfBit0(prob) -+ { -+ UpdateBit0(prob); -+ rep3 = rep2; -+ rep2 = rep1; -+ rep1 = rep0; -+ state = state < kNumLitStates ? 0 : 3; -+ prob = p + LenCoder; -+ } -+ else -+ { -+ UpdateBit1(prob); -+ prob = p + IsRepG0 + state; -+ IfBit0(prob) -+ { -+ UpdateBit0(prob); -+ prob = p + IsRep0Long + (state << kNumPosBitsMax) + posState; -+ IfBit0(prob) -+ { -+ #ifdef _LZMA_OUT_READ -+ UInt32 pos; -+ #endif -+ UpdateBit0(prob); -+ if (nowPos -+ #ifdef _LZMA_OUT_READ -+ + globalPos -+ #endif -+ == 0) -+ return LZMA_RESULT_DATA_ERROR; -+ state = state < kNumLitStates ? 9 : 11; -+ #ifdef _LZMA_OUT_READ -+ pos = dictionaryPos - rep0; -+ if (pos >= dictionarySize) -+ pos += dictionarySize; -+ previousByte = dictionary[pos]; -+ dictionary[dictionaryPos] = previousByte; -+ if (++dictionaryPos == dictionarySize) -+ dictionaryPos = 0; -+ #else -+ previousByte = outStream[nowPos - rep0]; -+ #endif -+ outStream[nowPos++] = previousByte; -+ continue; -+ } -+ else -+ { -+ UpdateBit1(prob); -+ } -+ } -+ else -+ { -+ UInt32 distance; -+ UpdateBit1(prob); -+ prob = p + IsRepG1 + state; -+ IfBit0(prob) -+ { -+ UpdateBit0(prob); -+ distance = rep1; -+ } -+ else -+ { -+ UpdateBit1(prob); -+ prob = p + IsRepG2 + state; -+ IfBit0(prob) -+ { -+ UpdateBit0(prob); -+ distance = rep2; -+ } -+ else -+ { -+ UpdateBit1(prob); -+ distance = rep3; -+ rep3 = rep2; -+ } -+ rep2 = rep1; -+ } -+ rep1 = rep0; -+ rep0 = distance; -+ } -+ state = state < kNumLitStates ? 8 : 11; -+ prob = p + RepLenCoder; -+ } -+ { -+ int numBits, offset; -+ CProb *probLen = prob + LenChoice; -+ IfBit0(probLen) -+ { -+ UpdateBit0(probLen); -+ probLen = prob + LenLow + (posState << kLenNumLowBits); -+ offset = 0; -+ numBits = kLenNumLowBits; -+ } -+ else -+ { -+ UpdateBit1(probLen); -+ probLen = prob + LenChoice2; -+ IfBit0(probLen) -+ { -+ UpdateBit0(probLen); -+ probLen = prob + LenMid + (posState << kLenNumMidBits); -+ offset = kLenNumLowSymbols; -+ numBits = kLenNumMidBits; -+ } -+ else -+ { -+ UpdateBit1(probLen); -+ probLen = prob + LenHigh; -+ offset = kLenNumLowSymbols + kLenNumMidSymbols; -+ numBits = kLenNumHighBits; -+ } -+ } -+ RangeDecoderBitTreeDecode(probLen, numBits, len); -+ len += offset; -+ } -+ -+ if (state < 4) -+ { -+ int posSlot; -+ state += kNumLitStates; -+ prob = p + PosSlot + -+ ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << -+ kNumPosSlotBits); -+ RangeDecoderBitTreeDecode(prob, kNumPosSlotBits, posSlot); -+ if (posSlot >= kStartPosModelIndex) -+ { -+ int numDirectBits = ((posSlot >> 1) - 1); -+ rep0 = (2 | ((UInt32)posSlot & 1)); -+ if (posSlot < kEndPosModelIndex) -+ { -+ rep0 <<= numDirectBits; -+ prob = p + SpecPos + rep0 - posSlot - 1; -+ } -+ else -+ { -+ numDirectBits -= kNumAlignBits; -+ do -+ { -+ RC_NORMALIZE -+ Range >>= 1; -+ rep0 <<= 1; -+ if (Code >= Range) -+ { -+ Code -= Range; -+ rep0 |= 1; -+ } -+ } -+ while (--numDirectBits != 0); -+ prob = p + Align; -+ rep0 <<= kNumAlignBits; -+ numDirectBits = kNumAlignBits; -+ } -+ { -+ int i = 1; -+ int mi = 1; -+ do -+ { -+ CProb *prob3 = prob + mi; -+ RC_GET_BIT2(prob3, mi, ; , rep0 |= i); -+ i <<= 1; -+ } -+ while(--numDirectBits != 0); -+ } -+ } -+ else -+ rep0 = posSlot; -+ if (++rep0 == (UInt32)(0)) -+ { -+ /* it's for stream version */ -+ len = -1; -+ break; -+ } -+ } -+ -+ len += kMatchMinLen; -+ if (rep0 > nowPos -+ #ifdef _LZMA_OUT_READ -+ + globalPos || rep0 > dictionarySize -+ #endif -+ ) -+ return LZMA_RESULT_DATA_ERROR; -+ do -+ { -+ #ifdef _LZMA_OUT_READ -+ UInt32 pos = dictionaryPos - rep0; -+ if (pos >= dictionarySize) -+ pos += dictionarySize; -+ previousByte = dictionary[pos]; -+ dictionary[dictionaryPos] = previousByte; -+ if (++dictionaryPos == dictionarySize) -+ dictionaryPos = 0; -+ #else -+ previousByte = outStream[nowPos - rep0]; -+ #endif -+ len--; -+ outStream[nowPos++] = previousByte; -+ } -+ while(len != 0 && nowPos < outSize); -+ } -+ } -+ RC_NORMALIZE; -+ -+ #ifdef _LZMA_OUT_READ -+ vs->Buffer = Buffer; -+ vs->BufferLim = BufferLim; -+ vs->Range = Range; -+ vs->Code = Code; -+ vs->DictionaryPos = dictionaryPos; -+ vs->GlobalPos = globalPos + nowPos; -+ vs->Reps[0] = rep0; -+ vs->Reps[1] = rep1; -+ vs->Reps[2] = rep2; -+ vs->Reps[3] = rep3; -+ vs->State = state; -+ vs->RemainLen = len; -+ vs->TempDictionary[0] = tempDictionary[0]; -+ #endif -+ -+ *outSizeProcessed = nowPos; -+ return LZMA_RESULT_OK; -+} -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 -+ LZMA Decoder interface -+ -+ LZMA SDK 4.16 Copyright (c) 1999-2005 Igor Pavlov (2005-03-18) -+ http://www.7-zip.org/ -+ -+ LZMA SDK is licensed under two licenses: -+ 1) GNU Lesser General Public License (GNU LGPL) -+ 2) Common Public License (CPL) -+ It means that you can select one of these two licenses and -+ follow rules of that license. -+ -+ SPECIAL EXCEPTION: -+ Igor Pavlov, as the author of this code, expressly permits you to -+ statically or dynamically link your code (or bind by name) to the -+ interfaces of this file without subjecting your linked code to the -+ terms of the CPL or GNU LGPL. Any modifications or additions -+ to this file, however, are subject to the LGPL or CPL terms. -+*/ -+ -+#ifndef __LZMADECODE_H -+#define __LZMADECODE_H -+ -+/* #define _LZMA_IN_CB */ -+/* Use callback for input data */ -+ -+/* #define _LZMA_OUT_READ */ -+/* Use read function for output data */ -+ -+/* #define _LZMA_PROB32 */ -+/* It can increase speed on some 32-bit CPUs, -+ but memory usage will be doubled in that case */ -+ -+/* #define _LZMA_LOC_OPT */ -+/* Enable local speed optimizations inside code */ -+ -+#ifndef UInt32 -+#ifdef _LZMA_UINT32_IS_ULONG -+#define UInt32 unsigned long -+#else -+#define UInt32 unsigned int -+#endif -+#endif -+ -+#ifdef _LZMA_PROB32 -+#define CProb UInt32 -+#else -+#define CProb unsigned short -+#endif -+ -+#define LZMA_RESULT_OK 0 -+#define LZMA_RESULT_DATA_ERROR 1 -+#define LZMA_RESULT_NOT_ENOUGH_MEM 2 -+ -+#ifdef _LZMA_IN_CB -+typedef struct _ILzmaInCallback -+{ -+ int (*Read)(void *object, unsigned char **buffer, UInt32 *bufferSize); -+} ILzmaInCallback; -+#endif -+ -+#define LZMA_BASE_SIZE 1846 -+#define LZMA_LIT_SIZE 768 -+ -+/* -+bufferSize = (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)))* sizeof(CProb) -+bufferSize += 100 in case of _LZMA_OUT_READ -+by default CProb is unsigned short, -+but if specify _LZMA_PROB_32, CProb will be UInt32(unsigned int) -+*/ -+ -+#ifdef _LZMA_OUT_READ -+int LzmaDecoderInit( -+ unsigned char *buffer, UInt32 bufferSize, -+ int lc, int lp, int pb, -+ unsigned char *dictionary, UInt32 dictionarySize, -+ #ifdef _LZMA_IN_CB -+ ILzmaInCallback *inCallback -+ #else -+ unsigned char *inStream, UInt32 inSize -+ #endif -+); -+#endif -+ -+int LzmaDecode( -+ unsigned char *buffer, -+ #ifndef _LZMA_OUT_READ -+ UInt32 bufferSize, -+ int lc, int lp, int pb, -+ #ifdef _LZMA_IN_CB -+ ILzmaInCallback *inCallback, -+ #else -+ unsigned char *inStream, UInt32 inSize, -+ #endif -+ #endif -+ unsigned char *outStream, UInt32 outSize, -+ UInt32 *outSizeProcessed); -+ -+#endif -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 -+ * -+ * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994 -+ * puts by Nick Holloway 1993, better puts by Martin Mares 1995 -+ * High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996 -+ * -+ * Decompress LZMA compressed vmlinuz -+ * Version 0.9 Copyright (c) Ming-Ching Tiew mctiew@yahoo.com -+ * Program adapted from misc.c for 2.6 kernel -+ * Forward ported to latest 2.6 version of misc.c by -+ * Felix Fietkau <nbd@openwrt.org> -+ */ -+ -+#undef CONFIG_PARAVIRT -+#include <linux/linkage.h> -+#include <linux/vmalloc.h> -+#include <linux/screen_info.h> -+#include <asm/io.h> -+#include <asm/page.h> -+#include <asm/boot.h> -+ -+/* WARNING!! -+ * This code is compiled with -fPIC and it is relocated dynamically -+ * at run time, but no relocation processing is performed. -+ * This means that it is not safe to place pointers in static structures. -+ */ -+ -+/* -+ * Getting to provable safe in place decompression is hard. -+ * Worst case behaviours need to be analized. -+ * Background information: -+ * -+ * The file layout is: -+ * magic[2] -+ * method[1] -+ * flags[1] -+ * timestamp[4] -+ * extraflags[1] -+ * os[1] -+ * compressed data blocks[N] -+ * crc[4] orig_len[4] -+ * -+ * resulting in 18 bytes of non compressed data overhead. -+ * -+ * Files divided into blocks -+ * 1 bit (last block flag) -+ * 2 bits (block type) -+ * -+ * 1 block occurs every 32K -1 bytes or when there 50% compression has been achieved. -+ * The smallest block type encoding is always used. -+ * -+ * stored: -+ * 32 bits length in bytes. -+ * -+ * fixed: -+ * magic fixed tree. -+ * symbols. -+ * -+ * dynamic: -+ * dynamic tree encoding. -+ * symbols. -+ * -+ * -+ * The buffer for decompression in place is the length of the -+ * uncompressed data, plus a small amount extra to keep the algorithm safe. -+ * The compressed data is placed at the end of the buffer. The output -+ * pointer is placed at the start of the buffer and the input pointer -+ * is placed where the compressed data starts. Problems will occur -+ * when the output pointer overruns the input pointer. -+ * -+ * The output pointer can only overrun the input pointer if the input -+ * pointer is moving faster than the output pointer. A condition only -+ * triggered by data whose compressed form is larger than the uncompressed -+ * form. -+ * -+ * The worst case at the block level is a growth of the compressed data -+ * of 5 bytes per 32767 bytes. -+ * -+ * The worst case internal to a compressed block is very hard to figure. -+ * The worst case can at least be boundined by having one bit that represents -+ * 32764 bytes and then all of the rest of the bytes representing the very -+ * very last byte. -+ * -+ * All of which is enough to compute an amount of extra data that is required -+ * to be safe. To avoid problems at the block level allocating 5 extra bytes -+ * per 32767 bytes of data is sufficient. To avoind problems internal to a block -+ * adding an extra 32767 bytes (the worst case uncompressed block size) is -+ * sufficient, to ensure that in the worst case the decompressed data for -+ * block will stop the byte before the compressed data for a block begins. -+ * To avoid problems with the compressed data's meta information an extra 18 -+ * bytes are needed. Leading to the formula: -+ * -+ * extra_bytes = (uncompressed_size >> 12) + 32768 + 18 + decompressor_size. -+ * -+ * Adding 8 bytes per 32K is a bit excessive but much easier to calculate. -+ * Adding 32768 instead of 32767 just makes for round numbers. -+ * Adding the decompressor_size is necessary as it musht live after all -+ * of the data as well. Last I measured the decompressor is about 14K. -+ * 10K of actuall data and 4K of bss. -+ * -+ */ -+ -+/* -+ * gzip declarations -+ */ -+ -+#define OF(args) args -+#define STATIC static -+ -+#undef memcpy -+ -+typedef unsigned char uch; -+typedef unsigned short ush; -+typedef unsigned long ulg; -+ -+#define WSIZE 0x80000000 /* Window size must be at least 32k, -+ * and a power of two -+ * We don't actually have a window just -+ * a huge output buffer so I report -+ * a 2G windows size, as that should -+ * always be larger than our output buffer. -+ */ -+ -+static uch *inbuf; /* input buffer */ -+static uch *window; /* Sliding window buffer, (and final output buffer) */ -+ -+static unsigned insize; /* valid bytes in inbuf */ -+static unsigned inptr; /* index of next byte to be processed in inbuf */ -+static unsigned long workspace; -+ -+#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); -+ -+/* -+ * This is set up by the setup-routine at boot-time -+ */ -+static unsigned char *real_mode; /* Pointer to real-mode data */ -+extern unsigned char input_data[]; -+extern int input_len; -+ -+static void error(char *x); -+static void *memcpy(void *dest, const void *src, unsigned n); -+ -+#ifdef CONFIG_X86_NUMAQ -+void *xquad_portio; -+#endif -+ -+static void* memcpy(void* dest, const void* src, unsigned n) -+{ -+ int i; -+ char *d = (char *)dest, *s = (char *)src; -+ -+ for (i=0;i<n;i++) d[i] = s[i]; -+ return dest; -+} -+ -+/* =========================================================================== -+ * Fill the input buffer. This is called only when the buffer is empty -+ * and at least one byte is really needed. -+ */ -+static int fill_inbuf(void) -+{ -+ error("ran out of input data"); -+ return 0; -+} -+ -+ -+// When using LZMA in callback, the compressed length is not needed. -+// Otherwise you need a special version of lzma compression program -+// which will pad the compressed length in the header. -+#define _LZMA_IN_CB -+#include "LzmaDecode.h" -+#include "LzmaDecode.c" -+ -+static int read_byte(void *object, unsigned char **buffer, UInt32 *bufferSize); -+ -+ -+/* -+ * Do the lzma decompression -+ * When using LZMA in callback, the end of input stream is automatically determined -+ */ -+static int lzma_unzip(void) -+{ -+ -+ unsigned int i; /* temp value */ -+ unsigned int lc; /* literal context bits */ -+ unsigned int lp; /* literal pos state bits */ -+ unsigned int pb; /* pos state bits */ -+ unsigned int uncompressedSize = 0; -+ unsigned char* p; -+ -+ ILzmaInCallback callback; -+ callback.Read = read_byte; -+ -+ /* lzma args */ -+ i = get_byte(); -+ lc = i % 9, i = i / 9; -+ lp = i % 5, pb = i / 5; -+ -+ /* skip dictionary size */ -+ for (i = 0; i < 4; i++) -+ get_byte(); -+ // get uncompressedSize -+ p= (char*)&uncompressedSize; -+ for (i = 0; i < 4; i++) -+ *p++ = get_byte(); -+ -+ //get compressedSize -+ for (i = 0; i < 4; i++) -+ get_byte(); -+ -+ // point it beyond uncompresedSize -+ //workspace = window + uncompressedSize; -+ -+ /* decompress kernel */ -+ if (LzmaDecode((unsigned char*)workspace, ~0, lc, lp, pb, &callback, -+ (unsigned char*)window, uncompressedSize, &i) == LZMA_RESULT_OK) -+ return 0; -+ else -+ return 1; -+} -+ -+ -+#ifdef _LZMA_IN_CB -+static int read_byte(void *object, unsigned char **buffer, UInt32 *bufferSize) -+{ -+ static unsigned int i = 0; -+ static unsigned char val; -+ *bufferSize = 1; -+ val = get_byte(); -+ *buffer = &val; -+ return LZMA_RESULT_OK; -+} -+#endif -+ -+static void error(char *x) -+{ -+ while(1); /* Halt */ -+} -+ -+asmlinkage void decompress_kernel(void *rmode, unsigned long end, -+ uch *input_data, unsigned long input_len, uch *output) -+{ -+ real_mode = rmode; -+ -+ window = output; -+ inbuf = input_data; /* Input buffer */ -+ insize = input_len; -+ inptr = 0; -+ -+ if ((u32)output & (CONFIG_PHYSICAL_ALIGN -1)) -+ error("Destination address not CONFIG_PHYSICAL_ALIGN aligned"); -+ if ((workspace = end) > ((-__PAGE_OFFSET-(512 <<20)-1) & 0x7fffffff)) -+ error("Destination address too large"); -+#ifndef CONFIG_RELOCATABLE -+ if ((u32)output != LOAD_PHYSICAL_ADDR) -+ error("Wrong destination address"); -+#endif -+ -+ lzma_unzip(); -+ return; -+} -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,7 +4,7 @@ - # create a compressed vmlinux image from the original vmlinux - # - --targets := vmlinux vmlinux.bin vmlinux.bin.gz head.o misc.o piggy.o \ -+targets := vmlinux vmlinux.bin vmlinux.bin.lzma head.o lzma_misc.o piggy.o \ - vmlinux.bin.all vmlinux.relocs - EXTRA_AFLAGS := -traditional - -@@ -17,7 +17,7 @@ - $(call cc-option,-fno-stack-protector) - LDFLAGS := -m elf_i386 - --$(obj)/vmlinux: $(src)/vmlinux.lds $(obj)/head.o $(obj)/misc.o $(obj)/piggy.o FORCE -+$(obj)/vmlinux: $(src)/vmlinux.lds $(obj)/head.o $(obj)/lzma_misc.o $(obj)/piggy.o FORCE - $(call if_changed,ld) - @: - -@@ -37,14 +37,14 @@ - $(call if_changed,relocbin) - - ifdef CONFIG_RELOCATABLE --$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin.all FORCE -- $(call if_changed,gzip) -+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin.all FORCE -+ $(call if_changed,lzma) - else --$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE -- $(call if_changed,gzip) -+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE -+ $(call if_changed,lzma) - endif - - LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T - --$(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 -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 < $< > $@ - -- -+# LZMA -+# -+quiet_cmd_lzma = LZMA $@ -+cmd_lzma = bash -e scripts/lzma_kern $< $@ -lc7 -lp0 -pb0 -+# to use lzmacomp, -+# cmd_lzma = lzmacomp $< 700 > $@ -diff -u linux/scripts/lzma_kern linux/scripts/lzma_kern ---- linux/scripts/lzma_kern 2007-07-27 20:18:17.013014750 -0700 -+++ linux/scripts/lzma_kern 2007-07-27 20:18:17.013014750 -0700 -@@ -0,0 +1,4 @@ -+get-size() { echo "$5" ;} -+printf -v len '%.8x' "$(get-size $(ls -l "$1"))" -+lzma e "$@" -+echo -ne "\x$(echo $len | cut -c 7,8)\x$(echo $len | cut -c 5,6)\x$(echo $len | cut -c 3,4)\x$(echo $len | cut -c 1,2)" >> "$2" |