From 3eb68874919aaef3bf42a82324eb4676ac64d89e Mon Sep 17 00:00:00 2001
From: Florian Fainelli <florian@openwrt.org>
Date: Sat, 25 Apr 2009 09:58:58 +0000
Subject: [PATCH] nuke old files

SVN-Revision: 15402
---
 target/linux/rdc/config-2.6.24                |  294 --
 target/linux/rdc/config-2.6.25                |  373 --
 target/linux/rdc/config-2.6.27                |  330 --
 .../files-2.6.24/arch/i386/kernel/cpu/rdc.c   |   24 -
 .../files-2.6.24/arch/i386/mach-rdc/Makefile  |    5 -
 .../files-2.6.24/arch/i386/mach-rdc/gpio.c    |   91 -
 .../arch/i386/mach-rdc/platform.c             |  263 --
 .../files-2.6.24/arch/i386/mach-rdc/setup.c   |   14 -
 .../rdc/files-2.6.24/arch/i386/mach-rdc/wdt.c |  272 --
 .../arch/x86/boot/compressed/LzmaDecode.c     |  586 ---
 .../arch/x86/boot/compressed/LzmaDecode.h     |  100 -
 .../arch/x86/boot/compressed/lzma_misc.c      |  345 --
 .../files-2.6.24/arch/x86/kernel/cpu/rdc.c    |   24 -
 .../files-2.6.24/arch/x86/mach-rdc/Makefile   |    5 -
 .../rdc/files-2.6.24/arch/x86/mach-rdc/gpio.c |   91 -
 .../files-2.6.24/arch/x86/mach-rdc/platform.c |  263 --
 .../files-2.6.24/arch/x86/mach-rdc/setup.c    |   14 -
 .../rdc/files-2.6.24/arch/x86/mach-rdc/wdt.c  |  272 --
 .../files-2.6.24/drivers/mtd/maps/imghdr.h    |   25 -
 .../files-2.6.24/drivers/mtd/maps/rdc3210.c   |  392 --
 .../rdc/files-2.6.24/drivers/net/r6040.c      | 1412 --------
 .../rdc/files-2.6.24/include/asm-i386/gpio.h  |    6 -
 .../include/asm-i386/mach-generic/gpio.h      |   15 -
 .../include/asm-i386/mach-rdc/gpio.h          |   56 -
 .../include/asm-i386/mach-rdc/rdc321x_defs.h  |    6 -
 .../rdc/files-2.6.24/include/asm-x86/gpio.h   |    6 -
 .../include/asm-x86/mach-generic/gpio.h       |   15 -
 .../include/asm-x86/mach-rdc/gpio.h           |   56 -
 .../include/asm-x86/mach-rdc/rdc321x_defs.h   |    6 -
 .../001-rdc3210_flash_map.patch               |   63 -
 .../patches-2.6.24/001-x86_generic_gpio.patch |   13 -
 .../patches-2.6.24/002-r6040_ethernet.patch   |   37 -
 .../rdc/patches-2.6.24/003-rootfstype.patch   |   11 -
 .../rdc/patches-2.6.24/004-rdc_fixes.patch    |   73 -
 .../patches-2.6.24/004-yenta_mystery.patch    |   20 -
 .../patches-2.6.24/005-cmdline_setup.patch    |   10 -
 .../005-fix_amit_breakage.patch               |   40 -
 .../rdc/patches-2.6.24/006-pci_ids.patch      |   16 -
 .../rdc/patches-2.6.24/600-x86_lzma.patch     |   62 -
 .../001-rdc3210_flash_map.patch               |   63 -
 .../rdc/patches-2.6.25/003-rootfstype.patch   |   11 -
 .../patches-2.6.25/004-yenta_mystery.patch    |   20 -
 .../005-fix_amit_breakage.patch               |   42 -
 .../rdc/patches-2.6.25/600-x86_lzma.patch     |   63 -
 .../001-rdc3210_flash_map.patch               |   63 -
 .../patches-2.6.27/002-cmdline_setup.patch    |   10 -
 .../rdc/patches-2.6.27/003-rootfstype.patch   |   11 -
 .../patches-2.6.27/004-yenta_mystery.patch    |   20 -
 .../005-fix_amit_breakage.patch               |   42 -
 .../patches-2.6.27/006-bzip2_lzma_x86.patch   | 3139 -----------------
 50 files changed, 9190 deletions(-)
 delete mode 100644 target/linux/rdc/config-2.6.24
 delete mode 100644 target/linux/rdc/config-2.6.25
 delete mode 100644 target/linux/rdc/config-2.6.27
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/i386/kernel/cpu/rdc.c
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/Makefile
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/gpio.c
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/platform.c
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/setup.c
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/wdt.c
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.c
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.h
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/lzma_misc.c
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/x86/kernel/cpu/rdc.c
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/Makefile
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/gpio.c
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/platform.c
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/setup.c
 delete mode 100644 target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/wdt.c
 delete mode 100644 target/linux/rdc/files-2.6.24/drivers/mtd/maps/imghdr.h
 delete mode 100644 target/linux/rdc/files-2.6.24/drivers/mtd/maps/rdc3210.c
 delete mode 100644 target/linux/rdc/files-2.6.24/drivers/net/r6040.c
 delete mode 100644 target/linux/rdc/files-2.6.24/include/asm-i386/gpio.h
 delete mode 100644 target/linux/rdc/files-2.6.24/include/asm-i386/mach-generic/gpio.h
 delete mode 100644 target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/gpio.h
 delete mode 100644 target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/rdc321x_defs.h
 delete mode 100644 target/linux/rdc/files-2.6.24/include/asm-x86/gpio.h
 delete mode 100644 target/linux/rdc/files-2.6.24/include/asm-x86/mach-generic/gpio.h
 delete mode 100644 target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/gpio.h
 delete mode 100644 target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/rdc321x_defs.h
 delete mode 100644 target/linux/rdc/patches-2.6.24/001-rdc3210_flash_map.patch
 delete mode 100644 target/linux/rdc/patches-2.6.24/001-x86_generic_gpio.patch
 delete mode 100644 target/linux/rdc/patches-2.6.24/002-r6040_ethernet.patch
 delete mode 100644 target/linux/rdc/patches-2.6.24/003-rootfstype.patch
 delete mode 100644 target/linux/rdc/patches-2.6.24/004-rdc_fixes.patch
 delete mode 100644 target/linux/rdc/patches-2.6.24/004-yenta_mystery.patch
 delete mode 100644 target/linux/rdc/patches-2.6.24/005-cmdline_setup.patch
 delete mode 100644 target/linux/rdc/patches-2.6.24/005-fix_amit_breakage.patch
 delete mode 100644 target/linux/rdc/patches-2.6.24/006-pci_ids.patch
 delete mode 100644 target/linux/rdc/patches-2.6.24/600-x86_lzma.patch
 delete mode 100644 target/linux/rdc/patches-2.6.25/001-rdc3210_flash_map.patch
 delete mode 100644 target/linux/rdc/patches-2.6.25/003-rootfstype.patch
 delete mode 100644 target/linux/rdc/patches-2.6.25/004-yenta_mystery.patch
 delete mode 100644 target/linux/rdc/patches-2.6.25/005-fix_amit_breakage.patch
 delete mode 100644 target/linux/rdc/patches-2.6.25/600-x86_lzma.patch
 delete mode 100644 target/linux/rdc/patches-2.6.27/001-rdc3210_flash_map.patch
 delete mode 100644 target/linux/rdc/patches-2.6.27/002-cmdline_setup.patch
 delete mode 100644 target/linux/rdc/patches-2.6.27/003-rootfstype.patch
 delete mode 100644 target/linux/rdc/patches-2.6.27/004-yenta_mystery.patch
 delete mode 100644 target/linux/rdc/patches-2.6.27/005-fix_amit_breakage.patch
 delete mode 100644 target/linux/rdc/patches-2.6.27/006-bzip2_lzma_x86.patch

diff --git a/target/linux/rdc/config-2.6.24 b/target/linux/rdc/config-2.6.24
deleted file mode 100644
index f149a4cbe5..0000000000
--- a/target/linux/rdc/config-2.6.24
+++ /dev/null
@@ -1,294 +0,0 @@
-# CONFIG_60XX_WDT is not set
-# CONFIG_64BIT is not set
-# CONFIG_8139TOO is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_AGP is not set
-# CONFIG_ALIM1535_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_ARCH_SUPPORTS_OPROFILE=y
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BITREVERSE=y
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BOUNCE=y
-# CONFIG_BROADCOM_PHY is not set
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-# CONFIG_COMPAT_VDSO is not set
-# CONFIG_CPU5_WDT is not set
-# CONFIG_CPU_FREQ is not set
-# CONFIG_CPU_IDLE is not set
-# CONFIG_CRYPTO_AES_586 is not set
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_DCDBAS is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-# CONFIG_DELL_RBU is not set
-CONFIG_DEVPORT=y
-# CONFIG_DMADEVICES is not set
-CONFIG_DMI=y
-CONFIG_DMIID=y
-CONFIG_DOUBLEFAULT=y
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EDAC is not set
-# CONFIG_EDD is not set
-# CONFIG_ENABLE_WARN_DEPRECATED is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_FIXED_PHY is not set
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-# CONFIG_GENERIC_CPU is not set
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_ISA_DMA=y
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_HANGCHECK_TIMER is not set
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HIBERNATION_UP_POSSIBLE=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-# CONFIG_HPET_TIMER is not set
-CONFIG_HUGETLBFS=y
-CONFIG_HUGETLB_PAGE=y
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_AMD is not set
-# CONFIG_HW_RANDOM_GEODE is not set
-# CONFIG_HW_RANDOM_INTEL is not set
-# CONFIG_HW_RANDOM_VIA is not set
-CONFIG_HZ=250
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_I2C is not set
-# CONFIG_I6300ESB_WDT is not set
-# CONFIG_I8K is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_IBMASR is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-CONFIG_ICPLUS_PHY=y
-# CONFIG_IDE is not set
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_IOSCHED_DEADLINE is not set
-# CONFIG_ISA is not set
-CONFIG_ISA_DMA_API=y
-# CONFIG_IT8712F_WDT is not set
-# CONFIG_ITCO_WDT is not set
-CONFIG_KEXEC=y
-CONFIG_KTIME_SCALAR=y
-# CONFIG_KVM is not set
-CONFIG_LBD=y
-CONFIG_LEDS_GPIO=y
-# CONFIG_LGUEST is not set
-CONFIG_LSF=y
-# CONFIG_M386 is not set
-CONFIG_M486=y
-# CONFIG_M586 is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M686 is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_MATH_EMULATION=y
-# CONFIG_MCA is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MDIO_BITBANG is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPSC is not set
-CONFIG_MTD=y
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_MTD_BLOCK2MTD is not set
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-CONFIG_MTD_CHAR=y
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_CONCAT=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_NETSC520 is not set
-# CONFIG_MTD_ONENAND is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_PHRAM is not set
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_PHYSMAP_BANKWIDTH=2
-CONFIG_MTD_PHYSMAP_LEN=0
-CONFIG_MTD_PHYSMAP_START=0x8000000
-# CONFIG_MTD_PLATRAM is not set
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_PNC2000 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_RDC3210=y
-CONFIG_MTD_RDC3210_ALLOW_JFFS2=y
-CONFIG_MTD_RDC3210_BUSWIDTH=2
-# CONFIG_MTD_RDC3210_FACTORY_PRESENT is not set
-CONFIG_MTD_RDC3210_SIZE=0x400000
-# CONFIG_MTD_RDC3210_STATIC_MAP is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_SC520CDP is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_TS5500 is not set
-# CONFIG_MTRR is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-CONFIG_NF_CONNTRACK=y
-CONFIG_NOHIGHMEM=y
-CONFIG_NO_HZ=y
-CONFIG_NR_QUICK=1
-# CONFIG_NSC_GPIO is not set
-CONFIG_NVRAM=y
-CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_PARAVIRT_GUEST is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_PC87413_WDT is not set
-CONFIG_PCI=y
-# CONFIG_PCIEPORTBUS is not set
-# CONFIG_PCIPCWATCHDOG is not set
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_GOANY=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GODIRECT is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-CONFIG_PHYLIB=y
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_QSEMI_PHY is not set
-CONFIG_QUICKLIST=y
-# CONFIG_R6040 is not set
-# CONFIG_RELOCATABLE is not set
-# CONFIG_RTC is not set
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_SBC7240_WDT is not set
-# CONFIG_SBC8360_WDT is not set
-# CONFIG_SBC_EPX_C3_WATCHDOG is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SC520_WDT is not set
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SCx200 is not set
-CONFIG_SEMAPHORE_SLEEPERS=y
-# CONFIG_SERIAL_8250_EXTENDED is not set
-CONFIG_SLABINFO=y
-# CONFIG_SMP is not set
-# CONFIG_SMSC37B787_WDT is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SSB_POSSIBLE=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_TELCLOCK is not set
-CONFIG_TICK_ONESHOT=y
-# CONFIG_TOSHIBA is not set
-CONFIG_UID16=y
-# CONFIG_USER_NS is not set
-# CONFIG_VGASTATE is not set
-# CONFIG_VIA_RHINE is not set
-CONFIG_VIRTUALIZATION=y
-# CONFIG_VM86 is not set
-# CONFIG_VMSPLIT_1G is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-CONFIG_VM_EVENT_COUNTERS=y
-# CONFIG_WAFER_WDT is not set
-CONFIG_X86=y
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86_ALIGNMENT_16=y
-# CONFIG_X86_BIGSMP is not set
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_CPUID=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_ES7000 is not set
-CONFIG_X86_F00F_BUG=y
-# CONFIG_X86_GENERIC is not set
-# CONFIG_X86_GENERICARCH is not set
-CONFIG_X86_INVLPG=y
-CONFIG_X86_L1_CACHE_SHIFT=4
-# CONFIG_X86_MCE is not set
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-CONFIG_X86_MSR=y
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_PAE is not set
-# CONFIG_X86_PC is not set
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_RDC=y
-CONFIG_X86_REBOOTFIXUPS=y
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_UP_APIC is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_XADD=y
-# CONFIG_ZONE_DMA32 is not set
diff --git a/target/linux/rdc/config-2.6.25 b/target/linux/rdc/config-2.6.25
deleted file mode 100644
index 422b97f417..0000000000
--- a/target/linux/rdc/config-2.6.25
+++ /dev/null
@@ -1,373 +0,0 @@
-# CONFIG_60XX_WDT is not set
-# CONFIG_64BIT is not set
-# CONFIG_8139TOO is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_AGP is not set
-# CONFIG_ALIM1535_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_ARCH_HAS_CPU_RELAX=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_ARCH_SUPPORTS_AOUT=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-# CONFIG_ATA is not set
-# CONFIG_ATA_NONSTANDARD is not set
-# CONFIG_ATA_PIIX is not set
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-CONFIG_BITREVERSE=y
-# CONFIG_BLK_DEV_IDE is not set
-# CONFIG_BLK_DEV_IDEDISK is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-CONFIG_BOUNCE=y
-# CONFIG_BROADCOM_PHY is not set
-CONFIG_CLASSIC_RCU=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-# CONFIG_COMPAT_VDSO is not set
-# CONFIG_CPU5_WDT is not set
-# CONFIG_CPU_FREQ is not set
-# CONFIG_CPU_IDLE is not set
-# CONFIG_CRYPTO_AEAD is not set
-# CONFIG_CRYPTO_AES_586 is not set
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_SALSA20_586 is not set
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_DCDBAS is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-# CONFIG_DELL_RBU is not set
-CONFIG_DEVPORT=y
-# CONFIG_DMADEVICES is not set
-CONFIG_DMI=y
-CONFIG_DMIID=y
-CONFIG_DOUBLEFAULT=y
-# CONFIG_E100 is not set
-# CONFIG_E1000E_ENABLED is not set
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EDAC is not set
-# CONFIG_EDD is not set
-# CONFIG_EUROTECH_WDT is not set
-CONFIG_FAST_CMPXCHG_LOCAL=y
-# CONFIG_FIXED_PHY is not set
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_FS_POSIX_ACL=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-# CONFIG_GENERIC_CPU is not set
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_ISA_DMA=y
-# CONFIG_GENERIC_LOCKBREAK is not set
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_HANGCHECK_TIMER is not set
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAVE_IDE=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_KVM=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
-# CONFIG_HID is not set
-CONFIG_HID_SUPPORT=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-# CONFIG_HPET_TIMER is not set
-# CONFIG_HP_WATCHDOG is not set
-CONFIG_HUGETLBFS=y
-CONFIG_HUGETLB_PAGE=y
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_AMD is not set
-# CONFIG_HW_RANDOM_GEODE is not set
-# CONFIG_HW_RANDOM_INTEL is not set
-# CONFIG_HW_RANDOM_VIA is not set
-CONFIG_HZ=250
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_I2C is not set
-# CONFIG_I2C_ALGOBIT is not set
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I6300ESB_WDT is not set
-# CONFIG_I8K is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_IBMASR is not set
-# CONFIG_IBM_ASM is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-CONFIG_ICPLUS_PHY=y
-# CONFIG_IDE is not set
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_IDE_GENERIC is not set
-# CONFIG_IDE_PROC_FS is not set
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_INPUT is not set
-# CONFIG_INPUT_APANEL is not set
-# CONFIG_INPUT_GPIO_BUTTONS is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_YEALINK is not set
-# CONFIG_IOMMU_HELPER is not set
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_IOSCHED_DEADLINE is not set
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_IPWIRELESS is not set
-# CONFIG_ISA is not set
-CONFIG_ISA_DMA_API=y
-# CONFIG_IT8712F_WDT is not set
-# CONFIG_ITCO_WDT is not set
-# CONFIG_JFS_FS is not set
-CONFIG_KEXEC=y
-CONFIG_KTIME_SCALAR=y
-# CONFIG_KVM is not set
-# CONFIG_LATENCYTOP is not set
-CONFIG_LBD=y
-# CONFIG_LEDS_ALIX is not set
-CONFIG_LEDS_GPIO=y
-# CONFIG_LGUEST is not set
-CONFIG_LSF=y
-# CONFIG_LZO_COMPRESS is not set
-# CONFIG_LZO_DECOMPRESS is not set
-# CONFIG_M386 is not set
-CONFIG_M486=y
-# CONFIG_M586 is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M686 is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_MATH_EMULATION=y
-# CONFIG_MCA is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MDIO_BITBANG is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MEMSTICK is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPSC is not set
-CONFIG_MTD=y
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_MTD_BLOCK2MTD is not set
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_CONCAT=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_NETSC520 is not set
-# CONFIG_MTD_ONENAND is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_PLATRAM is not set
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_RDC3210=y
-CONFIG_MTD_RDC3210_ALLOW_JFFS2=y
-CONFIG_MTD_RDC3210_BUSWIDTH=2
-# CONFIG_MTD_RDC3210_FACTORY_PRESENT is not set
-CONFIG_MTD_RDC3210_SIZE=0x400000
-# CONFIG_MTD_RDC3210_STATIC_MAP is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_SC520CDP is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_TS5500 is not set
-# CONFIG_MTRR is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NLS_ISO8859_2 is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_NSC_GPIO is not set
-CONFIG_NVRAM=y
-CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_PARAVIRT_GUEST is not set
-# CONFIG_PATA_ARTOP is not set
-# CONFIG_PATA_CS5536 is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_PC87413_WDT is not set
-# CONFIG_PCCARD is not set
-# CONFIG_PCCARD_NONSTATIC is not set
-CONFIG_PCI=y
-# CONFIG_PCIEPORTBUS is not set
-# CONFIG_PCIPCWATCHDOG is not set
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_GOANY=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GODIRECT is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCMCIA is not set
-CONFIG_PHYLIB=y
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_R6040 is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_RELOCATABLE is not set
-# CONFIG_RTC is not set
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_SBC7240_WDT is not set
-# CONFIG_SBC8360_WDT is not set
-# CONFIG_SBC_EPX_C3_WATCHDOG is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_SCHED_HRTICK is not set
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_WAIT_SCAN is not set
-# CONFIG_SCx200 is not set
-# CONFIG_SCx200_ACB is not set
-CONFIG_SEMAPHORE_SLEEPERS=y
-# CONFIG_SERIAL_8250_EXTENDED is not set
-CONFIG_SLABINFO=y
-# CONFIG_SMP is not set
-# CONFIG_SMSC37B787_WDT is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_SND_SIS7019 is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_SONYPI is not set
-# CONFIG_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SSB_POSSIBLE=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_TELCLOCK is not set
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_TOSHIBA is not set
-CONFIG_UID16=y
-# CONFIG_USB is not set
-# CONFIG_USBPCWATCHDOG is not set
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_PWC_DEBUG is not set
-# CONFIG_USB_R8A66597_HCD is not set
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_OTI6858 is not set
-CONFIG_USB_SUPPORT=y
-# CONFIG_USB_UHCI_HCD is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_VGASTATE is not set
-# CONFIG_VIA_RHINE is not set
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_CPIA2 is not set
-CONFIG_VIDEO_V4L1=y
-# CONFIG_VIDEO_V4L2_COMMON is not set
-# CONFIG_VIRTIO_BALLOON is not set
-# CONFIG_VIRTIO_PCI is not set
-CONFIG_VIRTUALIZATION=y
-# CONFIG_VM86 is not set
-# CONFIG_VMSPLIT_1G is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-CONFIG_VM_EVENT_COUNTERS=y
-# CONFIG_WAFER_WDT is not set
-CONFIG_X86=y
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86_ALIGNMENT_16=y
-# CONFIG_X86_BIGSMP is not set
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_CPUID=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_ES7000 is not set
-CONFIG_X86_F00F_BUG=y
-# CONFIG_X86_GENERIC is not set
-# CONFIG_X86_GENERICARCH is not set
-CONFIG_X86_INVLPG=y
-CONFIG_X86_L1_CACHE_SHIFT=4
-# CONFIG_X86_MCE is not set
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-CONFIG_X86_MSR=y
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_PAE is not set
-# CONFIG_X86_PC is not set
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_RDC321X=y
-CONFIG_X86_REBOOTFIXUPS=y
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_UP_APIC is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_XADD=y
-# CONFIG_ZONE_DMA32 is not set
diff --git a/target/linux/rdc/config-2.6.27 b/target/linux/rdc/config-2.6.27
deleted file mode 100644
index cf8998d7d6..0000000000
--- a/target/linux/rdc/config-2.6.27
+++ /dev/null
@@ -1,330 +0,0 @@
-# CONFIG_4KSTACKS is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_64BIT is not set
-# CONFIG_8139TOO is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_AGP is not set
-# CONFIG_ALIM1535_WDT is not set
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
-CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_ARCH_HAS_CPU_RELAX=y
-CONFIG_ARCH_HAS_DEFAULT_IDLE=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SUPPORTS_AOUT=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BITREVERSE=y
-CONFIG_BOUNCE=y
-CONFIG_CLASSIC_RCU=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-# CONFIG_COMPAT_VDSO is not set
-# CONFIG_CPU5_WDT is not set
-# CONFIG_CPU_FREQ is not set
-# CONFIG_CPU_IDLE is not set
-# CONFIG_CRYPTO_AES_586 is not set
-# CONFIG_CRYPTO_SALSA20_586 is not set
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_DCDBAS is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-# CONFIG_DELL_RBU is not set
-CONFIG_DEVPORT=y
-CONFIG_DMI=y
-CONFIG_DMIID=y
-CONFIG_DOUBLEFAULT=y
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EDAC is not set
-# CONFIG_EDD is not set
-# CONFIG_EUROTECH_WDT is not set
-CONFIG_FAST_CMPXCHG_LOCAL=y
-CONFIG_FIRMWARE_MEMMAP=y
-# CONFIG_FIXED_PHY is not set
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-# CONFIG_GENERIC_CPU is not set
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-# CONFIG_GENERIC_GPIO is not set
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_ISA_DMA=y
-# CONFIG_GENERIC_LOCKBREAK is not set
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_HANGCHECK_TIMER is not set
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_HAVE_ARCH_TRACEHOOK is not set
-# CONFIG_HAVE_CLK is not set
-# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
-# CONFIG_HAVE_DMA_ATTRS is not set
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_HAVE_FTRACE=y
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_HAVE_IDE=y
-CONFIG_HAVE_IOREMAP_PROT=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_KVM=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
-CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-# CONFIG_HPET_TIMER is not set
-# CONFIG_HP_WATCHDOG is not set
-CONFIG_HUGETLBFS=y
-CONFIG_HUGETLB_PAGE=y
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_AMD is not set
-# CONFIG_HW_RANDOM_GEODE is not set
-# CONFIG_HW_RANDOM_INTEL is not set
-# CONFIG_HW_RANDOM_VIA is not set
-CONFIG_HZ=250
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_I2C is not set
-# CONFIG_I6300ESB_WDT is not set
-# CONFIG_I8K is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_IBMASR is not set
-CONFIG_ICPLUS_PHY=y
-# CONFIG_IDE is not set
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_IOMMU_HELPER is not set
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_IOSCHED_DEADLINE is not set
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_ISA is not set
-CONFIG_ISA_DMA_API=y
-# CONFIG_ISCSI_IBFT_FIND is not set
-# CONFIG_IT8712F_WDT is not set
-# CONFIG_ITCO_WDT is not set
-# CONFIG_KERNEL_BZIP2 is not set
-# CONFIG_KERNEL_GZIP is not set
-CONFIG_KERNEL_LZMA=y
-CONFIG_KEXEC=y
-CONFIG_KMOD=y
-CONFIG_KTIME_SCALAR=y
-# CONFIG_KVM is not set
-CONFIG_LBD=y
-# CONFIG_LEDS_ALIX is not set
-# CONFIG_LGUEST is not set
-CONFIG_LSF=y
-# CONFIG_M386 is not set
-CONFIG_M486=y
-# CONFIG_M586 is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M686 is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_MATH_EMULATION=y
-# CONFIG_MCA is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MEMTEST is not set
-# CONFIG_MFD_CORE is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPSC is not set
-CONFIG_MTD=y
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_MTD_BLOCK2MTD is not set
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_NETSC520 is not set
-# CONFIG_MTD_ONENAND is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_PLATRAM is not set
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_RDC3210=y
-CONFIG_MTD_RDC3210_ALLOW_JFFS2=y
-CONFIG_MTD_RDC3210_BUSWIDTH=2
-# CONFIG_MTD_RDC3210_FACTORY_PRESENT is not set
-CONFIG_MTD_RDC3210_SIZE=0x400000
-# CONFIG_MTD_RDC3210_STATIC_MAP is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_SC520CDP is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_TS5500 is not set
-# CONFIG_MTRR is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_NATSEMI is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_NSC_GPIO is not set
-CONFIG_NVRAM=y
-# CONFIG_OLPC is not set
-# CONFIG_OPTIMIZE_INLINING is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_PARAVIRT_GUEST is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_PC87413_WDT is not set
-CONFIG_PCI=y
-# CONFIG_PCIEPORTBUS is not set
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_GOANY=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GODIRECT is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GOOLPC is not set
-# CONFIG_PCSPKR_PLATFORM is not set
-CONFIG_PHYLIB=y
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_R6040 is not set
-CONFIG_RDC321X_WDT=y
-# CONFIG_RD_BZIP2 is not set
-CONFIG_RD_GZIP=y
-# CONFIG_RD_LZMA is not set
-# CONFIG_RELOCATABLE is not set
-# CONFIG_RTC is not set
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_SBC7240_WDT is not set
-# CONFIG_SBC8360_WDT is not set
-# CONFIG_SBC_EPX_C3_WATCHDOG is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_SCHED_HRTICK is not set
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SCx200 is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SMP is not set
-# CONFIG_SMSC37B787_WDT is not set
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_SPARSEMEM_STATIC=y
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_STRICT_DEVMEM is not set
-# CONFIG_SYSPROF_TRACER is not set
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_TELCLOCK is not set
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_TOSHIBA is not set
-CONFIG_UID16=y
-CONFIG_USB_SUPPORT=y
-# CONFIG_VGASTATE is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_VIRTIO_BALLOON is not set
-# CONFIG_VIRTIO_PCI is not set
-CONFIG_VIRTUALIZATION=y
-# CONFIG_VM86 is not set
-# CONFIG_VMSPLIT_1G is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-CONFIG_VM_EVENT_COUNTERS=y
-# CONFIG_WAFER_WDT is not set
-CONFIG_X86=y
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86_ALIGNMENT_16=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_CPU=y
-CONFIG_X86_CPUID=y
-# CONFIG_X86_ELAN is not set
-CONFIG_X86_F00F_BUG=y
-# CONFIG_X86_GENERIC is not set
-# CONFIG_X86_GENERICARCH is not set
-CONFIG_X86_INVLPG=y
-CONFIG_X86_L1_CACHE_SHIFT=4
-# CONFIG_X86_MCE is not set
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-CONFIG_X86_MSR=y
-# CONFIG_X86_PAE is not set
-CONFIG_X86_PC=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_RDC321X=y
-CONFIG_X86_REBOOTFIXUPS=y
-CONFIG_X86_RESERVE_LOW_64K=y
-# CONFIG_X86_UP_APIC is not set
-CONFIG_X86_VERBOSE_BOOTUP=y
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_XADD=y
-# CONFIG_ZONE_DMA32 is not set
diff --git a/target/linux/rdc/files-2.6.24/arch/i386/kernel/cpu/rdc.c b/target/linux/rdc/files-2.6.24/arch/i386/kernel/cpu/rdc.c
deleted file mode 100644
index f4b9083bfc..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/i386/kernel/cpu/rdc.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <linux/init.h>
-#include <linux/bitops.h>
-#include <linux/mm.h>
-#include <asm/io.h>
-#include <asm/processor.h>
-
-#include "cpu.h"
-
-static struct cpu_dev rdc_cpu_dev __cpuinitdata = {
-        .c_vendor       = "RDC",
-        .c_models = {
-                { .vendor = X86_VENDOR_RDC, .family = 4, .model_names =
-                  {
-                          [0] = "R861x(-G)",
-                  }
-                },
-        },
-};
-
-int __init rdc_init_cpu(void)
-{
-        cpu_devs[X86_VENDOR_RDC] = &rdc_cpu_dev;
-        return 0;
-}
diff --git a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/Makefile b/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/Makefile
deleted file mode 100644
index 5961bc7910..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Makefile for the RDC321x specific parts of the kernel
-#
-obj-$(CONFIG_X86_RDC)        := gpio.o platform.o wdt.o
-
diff --git a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/gpio.c b/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/gpio.c
deleted file mode 100644
index dbd03270f1..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/gpio.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- *  Copyright (C) 2007, OpenWrt.org, Florian Fainelli <florian@openwrt.org>
- *  	RDC321x architecture specific GPIO support
- *
- *  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.
- */
-
-#include <linux/autoconf.h>
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/types.h>
-#include <linux/module.h>
-#include <linux/delay.h>
-
-#include <asm/mach-rdc/rdc321x_defs.h>
-
-static inline int rdc_gpio_is_valid(unsigned gpio)
-{
-	return (gpio <= RDC_MAX_GPIO);
-}
-
-static unsigned int rdc_gpio_read(unsigned gpio)
-{
-	unsigned int val;
-
-	val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x84:0x48));
-        outl(val, RDC3210_CFGREG_ADDR);
-        udelay(10);
-        val = inl(RDC3210_CFGREG_DATA);
-        val |= (0x1 << (gpio & 0x1F));
-        outl(val, RDC3210_CFGREG_DATA);
-        udelay(10);
-        val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x88:0x4C));
-        outl(val, RDC3210_CFGREG_ADDR);
-        udelay(10);
-        val = inl(RDC3210_CFGREG_DATA);
-
-	return val;
-}
-
-static void rdc_gpio_write(unsigned int val)
-{
-	if (val) {
-		outl(val, RDC3210_CFGREG_DATA);
-		udelay(10);
-	}
-}
-
-int rdc_gpio_get_value(unsigned gpio)
-{
-	if (rdc_gpio_is_valid(gpio))
-		return (int)rdc_gpio_read(gpio);
-	else
-		return -EINVAL;
-}
-EXPORT_SYMBOL(rdc_gpio_get_value);
-
-void rdc_gpio_set_value(unsigned gpio, int value)
-{
-	unsigned int val;
-
-	if (!rdc_gpio_is_valid(gpio))
-		return;
-	
-	val = rdc_gpio_read(gpio);
-
-	if (value)
-		val &= ~(0x1 << (gpio & 0x1F));
-	else
-		val |= (0x1 << (gpio & 0x1F));
-
-	rdc_gpio_write(val);
-}
-EXPORT_SYMBOL(rdc_gpio_set_value);
-
-int rdc_gpio_direction_input(unsigned gpio)
-{
-	return 0;
-}
-EXPORT_SYMBOL(rdc_gpio_direction_input);
-
-int rdc_gpio_direction_output(unsigned gpio, int value)
-{
-	return 0;
-}
-EXPORT_SYMBOL(rdc_gpio_direction_output);
-
-
diff --git a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/platform.c b/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/platform.c
deleted file mode 100644
index 86981f8441..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/platform.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- *
- *  Generic RDC321x platform devices
- *
- *  Copyright (C) 2007-2008 OpenWrt.org
- *  Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
- *  Copyright (C) 2008 Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
- *
- *  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., 51 Franklin Street, Fifth Floor,
- *  Boston, MA  02110-1301, USA.
- *
- */
-
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/list.h>
-#include <linux/device.h>
-#include <linux/platform_device.h>
-#include <linux/version.h>
-#include <linux/leds.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/mtd/map.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/physmap.h>
-#include <linux/root_dev.h>
-#include <asm/gpio.h>
-
-/* Flash */
-#ifdef CONFIG_MTD_RDC3210
-static struct resource rdc_flash_resource[] = {
-	[0] = {
-		.start = (u32)-CONFIG_MTD_RDC3210_SIZE,
-		.end = (u32)-1,
-		.flags = IORESOURCE_MEM,
-	},
-};
-
-static struct platform_device rdc_flash_device = {
-	.name = "rdc321x-flash",
-	.id = -1,
-	.num_resources = ARRAY_SIZE(rdc_flash_resource),
-	.resource = rdc_flash_resource,
-};
-#else
-static struct mtd_partition rdc_flash_parts[15];
-
-static struct resource rdc_flash_resource = {
-	.end = (u32)-1,
-	.flags = IORESOURCE_MEM,
-};
-
-static struct physmap_flash_data rdc_flash_data = {
-	.parts = rdc_flash_parts,
-};
-
-static struct platform_device rdc_flash_device = {
-	.name = "physmap-flash",
-	.id = -1,
-	.resource = &rdc_flash_resource,
-	.num_resources = 1,
-	.dev.platform_data = &rdc_flash_data,
-};
-#endif
-
-/* LEDS */
-static struct gpio_led default_leds[] = {
-        { .name = "rdc321x:dmz", .gpio = 1, },
-};
-
-static struct gpio_led_platform_data rdc321x_led_data = {
-	.num_leds = ARRAY_SIZE(default_leds),
-	.leds = default_leds,
-};
-
-static struct platform_device rdc321x_leds = {
-	.name = "leds-gpio",
-	.id = -1,
-	.dev = {
-		.platform_data = &rdc321x_led_data,
-	}
-};
-
-/* Watchdog */
-static struct platform_device rdc321x_wdt = {
-	.name = "rdc321x-wdt",
-	.id = -1,
-	.num_resources = 0,
-};
-
-/* Button */
-static struct gpio_keys_button rdc321x_gpio_btn[] = {
-	{
-		.gpio = 0,
-		.code = BTN_0,
-		.desc = "Reset",
-		.active_low = 1,
-	}
-};
-
-static struct gpio_keys_platform_data rdc321x_gpio_btn_data = {
-	.buttons = rdc321x_gpio_btn,
-	.nbuttons = ARRAY_SIZE(rdc321x_gpio_btn),
-};
-
-static struct platform_device rdc321x_button = {
-	.name = "gpio-keys",
-	.id = -1,
-	.dev = {
-		.platform_data = &rdc321x_gpio_btn_data,
-	}
-};
-
-static struct platform_device *rdc321x_devs[] = {
-	&rdc_flash_device,
-	&rdc321x_leds,
-	&rdc321x_wdt,
-	&rdc321x_button
-};
-
-static int probe_flash_start(struct map_info *the_map)
-{
-	struct mtd_info *res;
-
-	the_map->virt = ioremap(the_map->phys, the_map->size);
-	if (the_map->virt == NULL)
-		return 1;
-	for (the_map->bankwidth = 32; the_map->bankwidth; the_map->bankwidth
-			>>= 1) {
-		res = do_map_probe("cfi_probe", the_map);
-		if (res == NULL)
-			res = do_map_probe("jedec_probe", the_map);
-		if (res != NULL)
-			break;
-	}
-	iounmap(the_map->virt);
-	if (res != NULL)
-		the_map->phys = (u32)-(s32)(the_map->size = res->size);
-	return res == NULL;
-}
-
-static __init int rdc_board_setup(void)
-{
-#ifndef CONFIG_MTD_RDC3210
-	struct map_info rdc_map_info;
-	u32 the_header[4];
-
-	ROOT_DEV = 0;
-	rdc_map_info.name = rdc_flash_device.name;
-	rdc_map_info.phys = 0xff000000;
-	rdc_map_info.size = 0x1000000;
-	rdc_map_info.bankwidth = 2;
-	rdc_map_info.set_vpp = NULL;
-	simple_map_init(&rdc_map_info);
-	while (probe_flash_start(&rdc_map_info)) {
-		rdc_map_info.phys++;
-		if (--rdc_map_info.size)
-			panic("Not to be or to be: That"
-				" is not the question.");
-	}
-	rdc_flash_resource.start = rdc_map_info.phys;
-	rdc_flash_data.width = rdc_map_info.bankwidth;
-	rdc_map_info.virt = (u32)ioremap_nocache(rdc_map_info.phys, 0x10);
-	if (rdc_map_info.virt == NULL)
-		panic("Something's rotten in Denmark!");
-	the_header[0] = ((u32 *)rdc_map_info.virt)[0];
-	the_header[1] = ((u32 *)rdc_map_info.virt)[1];
-	the_header[2] = ((u32 *)rdc_map_info.virt)[2];
-	the_header[3] = ((u32 *)rdc_map_info.virt)[3];
-	iounmap(rdc_map_info.virt);
-	if (!memcmp(the_header, "GMTK", 4)) {	/* Gemtek */
-		/* TODO */
-	} else if (!memcmp(the_header, "CSYS", 4)) {	/* Sitecom */
-		/* TODO */
-	} else if (!memcmp(((u8 *)the_header) + 14, "Li", 2)) {	/* AMIT */
-		rdc_flash_parts[0].name = "kernel_parthdr";
-		rdc_flash_parts[0].offset = 0;
-		rdc_flash_parts[0].size = 0x10;
-		rdc_flash_parts[1].name = "kernel";
-		rdc_flash_parts[1].offset = 0x10;
-		rdc_flash_parts[1].size = 0xffff0;
-		rdc_flash_parts[2].name = "rootfs_parthdr";
-		rdc_flash_parts[2].offset = 0x100000;
-		rdc_flash_parts[2].size = 0x10;
-		rdc_flash_parts[3].name = "rootfs";
-		rdc_flash_parts[3].offset = 0x100010;
-		rdc_flash_parts[3].size = rdc_map_info.size - 0x160010;
-		rdc_flash_parts[4].name = "config_parthdr";
-		rdc_flash_parts[4].offset = rdc_map_info.size - 0x60000;
-		rdc_flash_parts[4].size = 0x10;
-		rdc_flash_parts[5].name = "config";
-		rdc_flash_parts[5].offset = rdc_map_info.size - 0x5fff0;
-		rdc_flash_parts[5].size = 0xfff0;
-		rdc_flash_parts[6].name = "recoveryfs_parthdr";
-		rdc_flash_parts[6].offset = rdc_map_info.size - 0x50000;
-		rdc_flash_parts[6].size = 0x10;
-		rdc_flash_parts[7].name = "recoveryfs";
-		rdc_flash_parts[7].offset = rdc_map_info.size - 0x4fff0;
-		rdc_flash_parts[7].size = 0x3fff0;
-		rdc_flash_parts[8].name = "recovery_parthdr";
-		rdc_flash_parts[8].offset = rdc_map_info.size - 0x10000;
-		rdc_flash_parts[8].size = 0x10;
-		rdc_flash_parts[9].name = "recovery";
-		rdc_flash_parts[9].offset = rdc_map_info.size - 0xfff0;
-		rdc_flash_parts[9].size = 0x7ff0;
-		rdc_flash_parts[10].name = "productinfo_parthdr";
-		rdc_flash_parts[10].offset = rdc_map_info.size - 0x8000;
-		rdc_flash_parts[10].size = 0x10;
-		rdc_flash_parts[11].name = "productinfo";
-		rdc_flash_parts[11].offset = rdc_map_info.size - 0x7ff0;
-		rdc_flash_parts[11].size = 0x1ff0;
-		rdc_flash_parts[12].name = "bootloader_parthdr";
-		rdc_flash_parts[12].offset = rdc_map_info.size - 0x6000;
-		rdc_flash_parts[12].size = 0x10;
-		rdc_flash_parts[13].name = "bootloader";
-		rdc_flash_parts[13].offset = rdc_map_info.size - 0x5ff0;
-		rdc_flash_parts[13].size = 0x5ff0;
-		rdc_flash_parts[14].name = "everything";
-		rdc_flash_parts[14].offset = 0;
-		rdc_flash_parts[14].size = rdc_map_info.size;
-		rdc_flash_data.nr_parts = 15;
-	} else {	/* ZyXEL */
-		rdc_flash_parts[0].name = "kernel";
-		rdc_flash_parts[0].offset = 0;
-		rdc_flash_parts[0].size = 0x100000;
-		rdc_flash_parts[1].name = "rootfs";
-		rdc_flash_parts[1].offset = 0x100000;
-		rdc_flash_parts[1].size = rdc_map_info.size - 0x140000;
-		rdc_flash_parts[2].name = "linux";
-		rdc_flash_parts[2].offset = 0;
-		rdc_flash_parts[2].size = rdc_map_info.size - 0x40000;
-		rdc_flash_parts[3].name = "config";
-		rdc_flash_parts[3].offset = rdc_map_info.size - 0x40000;
-		rdc_flash_parts[3].size = 0x10000;
-		rdc_flash_parts[4].name = "productinfo";
-		rdc_flash_parts[4].offset = rdc_map_info.size - 0x30000;
-		rdc_flash_parts[4].size = 0x10000;
-		rdc_flash_parts[5].name = "bootloader";
-		rdc_flash_parts[5].offset = rdc_map_info.size - 0x20000;
-		rdc_flash_parts[5].size = 0x20000;
-		rdc_flash_data.nr_parts = 6;
-	}
-#endif
-	return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs));
-}
-
-#ifdef CONFIG_MTD_RDC3210
-arch_initcall(rdc_board_setup);
-#else
-late_initcall(rdc_board_setup);
-#endif
diff --git a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/setup.c b/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/setup.c
deleted file mode 100644
index ad206c3d05..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/setup.c
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- *	Machine specific setup for generic
- */
-
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <asm/arch_hooks.h>
-#include <asm/io.h>
-#include <asm/setup.h>
-
-char * __init machine_specific_memory_setup(void)
-{
-	return "RDC R-321x";
-}
diff --git a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/wdt.c b/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/wdt.c
deleted file mode 100644
index 13b69f68ab..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/wdt.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * RDC321x watchdog driver
- *
- * Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
- *
- * This driver is highly inspired from the cpu5_wdt driver
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <linux/module.h>
-#include <linux/moduleparam.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/miscdevice.h>
-#include <linux/fs.h>
-#include <linux/init.h>
-#include <linux/ioport.h>
-#include <linux/timer.h>
-#include <linux/completion.h>
-#include <linux/jiffies.h>
-#include <linux/platform_device.h>
-#include <linux/watchdog.h>
-
-#include <asm/io.h>
-#include <asm/uaccess.h>
-
-#include <asm/mach-rdc/rdc321x_defs.h>
-
-#define RDC_WDT_MASK		0x80000000	/* Mask */
-#define RDC_WDT_EN		0x00800000 	/* Enable bit */
-#define RDC_WDT_WTI		0x00200000	/* Generate a CPU reset/NMI/WDT irq when WDT timeout is reached */
-#define RDC_WDT_RST		0x00100000	/* Reset bit */
-#define RDC_WDT_WIF		0x00040000	/* WDT IRQ Flag */
-#define RDC_WDT_IRT		0x00000100	/* IRQ Routing table */
-#define RDC_WDT_CNT		0x00000001	/* WDT count */
-
-#define RDC_CLS_TMR		0x80003844	/* Clear timer */
-
-#define RDC_WDT_INTERVAL	(HZ/10+1)
-
-int nowayout = WATCHDOG_NOWAYOUT;
-module_param(nowayout, int, 0);
-MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
-
-static int ticks = 1000;
-
-/* some device data */
-
-static struct {
-	struct completion stop;
-	volatile int running;
-	struct timer_list timer;
-	volatile int queue;
-	int default_ticks;
-	unsigned long inuse;
-} rdc321x_wdt_device;
-
-/* generic helper functions */
-
-static void rdc321x_wdt_trigger(unsigned long unused)
-{
-	if( rdc321x_wdt_device.running )
-		ticks--;
-
-	/* keep watchdog alive */
-	outl(RDC_WDT_EN|inl(RDC3210_CFGREG_DATA), RDC3210_CFGREG_DATA);	
-	
-	/* requeue?? */
-	if (rdc321x_wdt_device.queue && ticks)
-		mod_timer(&rdc321x_wdt_device.timer, jiffies + RDC_WDT_INTERVAL);
-	else {
-		/* ticks doesn't matter anyway */
-		complete(&rdc321x_wdt_device.stop);
-	}
-
-}
-
-static void rdc321x_wdt_reset(void)
-{
-	ticks = rdc321x_wdt_device.default_ticks;
-}
-
-static void rdc321x_wdt_start(void)
-{
-	if (!rdc321x_wdt_device.queue) {
-		rdc321x_wdt_device.queue = 1;
-
-		/* Clear the timer */
-		outl(RDC_CLS_TMR, RDC3210_CFGREG_ADDR);
-		
-		/* Enable watchdog and set the timeout to 81.92 us */
-		outl(RDC_WDT_EN|RDC_WDT_CNT, RDC3210_CFGREG_DATA);
-
-		mod_timer(&rdc321x_wdt_device.timer, jiffies + RDC_WDT_INTERVAL);
-	}
-
-	/* if process dies, counter is not decremented */
-	rdc321x_wdt_device.running++;
-}
-
-static int rdc321x_wdt_stop(void)
-{
-	if (rdc321x_wdt_device.running)
-		rdc321x_wdt_device.running = 0;
-
-	ticks = rdc321x_wdt_device.default_ticks;
-
-	return -EIO;
-}
-
-/* filesystem operations */
-
-static int rdc321x_wdt_open(struct inode *inode, struct file *file)
-{
-	if (test_and_set_bit(0, &rdc321x_wdt_device.inuse))
-		return -EBUSY;
-
-	return nonseekable_open(inode, file);
-}
-
-static int rdc321x_wdt_release(struct inode *inode, struct file *file)
-{
-	clear_bit(0, &rdc321x_wdt_device.inuse);
-	return 0;
-}
-
-static int rdc321x_wdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
-{
-	void __user *argp = (void __user *)arg;
-	unsigned int value;
-	static struct watchdog_info ident =
-	{
-		.options = WDIOF_CARDRESET,
-		.identity = "RDC321x WDT",
-	};
-
-	switch(cmd) {
-		case WDIOC_KEEPALIVE:
-			rdc321x_wdt_reset();
-			break;
-		case WDIOC_GETSTATUS:
-			/* Read the value from the DATA register */
-			value = inl(RDC3210_CFGREG_DATA);
-			if ( copy_to_user(argp, &value, sizeof(int)) )
-				return -EFAULT;
-			break;
-		case WDIOC_GETSUPPORT:
-			if ( copy_to_user(argp, &ident, sizeof(ident)) )
-				return -EFAULT;
-			break;
-		case WDIOC_SETOPTIONS:
-			if ( copy_from_user(&value, argp, sizeof(int)) )
-				return -EFAULT;
-			switch(value) {
-				case WDIOS_ENABLECARD:
-					rdc321x_wdt_start();
-					break;
-				case WDIOS_DISABLECARD:
-					return rdc321x_wdt_stop();
-				default:
-					return -EINVAL;
-			}
-			break;
-		default:
-    			return -ENOTTY;
-	}
-	return 0;
-}
-
-static ssize_t rdc321x_wdt_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
-{
-	if ( !count )
-		return -EIO;
-
-	rdc321x_wdt_reset();
-
-	return count;
-}
-
-static const struct file_operations rdc321x_wdt_fops = {
-	.owner		= THIS_MODULE,
-	.llseek		= no_llseek,
-	.ioctl		= rdc321x_wdt_ioctl,
-	.open		= rdc321x_wdt_open,
-	.write		= rdc321x_wdt_write,
-	.release	= rdc321x_wdt_release,
-};
-
-static struct miscdevice rdc321x_wdt_misc = {
-	.minor	= WATCHDOG_MINOR,
-	.name	= "watchdog",
-	.fops	= &rdc321x_wdt_fops,
-};
-
-static int __devinit rdc321x_wdt_probe(struct platform_device *pdev)
-{
-	int err;
-
-	if ( (err = misc_register(&rdc321x_wdt_misc)) < 0 ) {
-		printk(KERN_ERR PFX "misc_register failed\n");
-		return err;
-	}
-
-	/* Reset the watchdog */
-	outl(RDC_WDT_RST, RDC3210_CFGREG_DATA);
-
-	init_completion(&rdc321x_wdt_device.stop);
-	rdc321x_wdt_device.queue = 0;
-
-	clear_bit(0, &rdc321x_wdt_device.inuse);
-
-	setup_timer(&rdc321x_wdt_device.timer, rdc321x_wdt_trigger, 0);
-
-	rdc321x_wdt_device.default_ticks = ticks;
-
-	printk(KERN_INFO PFX "init success\n");
-
-	return 0;
-}
-
-static int rdc321x_wdt_remove(struct platform_device *pdev)
-{
-	if (rdc321x_wdt_device.queue) {
-		rdc321x_wdt_device.queue = 0;
-		wait_for_completion(&rdc321x_wdt_device.stop);
-	}
-
-	misc_deregister(&rdc321x_wdt_misc);
-
-	return 0;
-}
-
-static struct platform_driver rdc321x_wdt_driver = {
-	.probe = rdc321x_wdt_probe,
-	.remove = rdc321x_wdt_remove,
-	.driver = {
-		.owner = THIS_MODULE,
-		.name = "rdc321x-wdt",
-	},
-};
-
-static int __init rdc321x_wdt_init(void)
-{
-	return platform_driver_register(&rdc321x_wdt_driver);
-}
-
-static void __exit rdc321x_wdt_exit(void)
-{
-	platform_driver_unregister(&rdc321x_wdt_driver);
-}
-
-module_init(rdc321x_wdt_init);
-module_exit(rdc321x_wdt_exit);
-
-MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");
-MODULE_DESCRIPTION("RDC321x watchdog driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.c b/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.c
deleted file mode 100644
index a17d6caabf..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.c
+++ /dev/null
@@ -1,586 +0,0 @@
-/*
-  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 --git a/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.h b/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.h
deleted file mode 100644
index 53677350ae..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* 
-  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 --git a/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/lzma_misc.c b/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/lzma_misc.c
deleted file mode 100644
index bd74cb7948..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/lzma_misc.c
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * 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 <linux/console.h>
-#include <linux/string.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);
-
-static int early_serial_base = 0x3f8;  /* ttyS0 */
-
-#define XMTRDY          0x20
-
-#define DLAB            0x80
-
-#define TXR             0       /*  Transmit register (WRITE) */
-#define RXR             0       /*  Receive register  (READ)  */
-#define IER             1       /*  Interrupt Enable          */
-#define IIR             2       /*  Interrupt ID              */
-#define FCR             2       /*  FIFO control              */
-#define LCR             3       /*  Line control              */
-#define MCR             4       /*  Modem control             */
-#define LSR             5       /*  Line Status               */
-#define MSR             6       /*  Modem Status              */
-#define DLL             0       /*  Divisor Latch Low         */
-#define DLH             1       /*  Divisor latch High        */
-
-static int early_serial_putc(unsigned char ch)
-{
-        unsigned timeout = 0xffff;
-        while ((inb(early_serial_base + LSR) & XMTRDY) == 0 && --timeout)
-                cpu_relax();
-        outb(ch, early_serial_base + TXR);
-        return timeout ? 0 : -1;
-}
-
-static void early_serial_write(const char *s, unsigned n)
-{
-        while (*s && n-- > 0) {
-                if (*s == '\n')
-                        early_serial_putc('\r');
-                early_serial_putc(*s);
-                s++;
-        }
-}
-
-#define DEFAULT_BAUD 38400
-
-static __init void early_serial_init(void)
-{
-        unsigned char c;
-        unsigned divisor;
-        unsigned baud = DEFAULT_BAUD;
-        char *e;
-
-        outb(0x3, early_serial_base + LCR);     /* 8n1 */
-        outb(0, early_serial_base + IER);       /* no interrupt */
-        outb(0, early_serial_base + FCR);       /* no fifo */
-        outb(0x3, early_serial_base + MCR);     /* DTR + RTS */
-
-	baud = DEFAULT_BAUD;
-
-        divisor = 115200 / baud;
-        c = inb(early_serial_base + LCR);
-        outb(c | DLAB, early_serial_base + LCR);
-        outb(divisor & 0xff, early_serial_base + DLL);
-        outb((divisor >> 8) & 0xff, early_serial_base + DLH);
-        outb(c & ~DLAB, early_serial_base + LCR);
-}
-
-/*
- * 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
-	early_serial_init();
-	early_serial_write("Uncompressing Linux\n", 512);
-	lzma_unzip();
-	early_serial_write("Done, booting\n", 512);
-	return;
-}
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/kernel/cpu/rdc.c b/target/linux/rdc/files-2.6.24/arch/x86/kernel/cpu/rdc.c
deleted file mode 100644
index f4b9083bfc..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/kernel/cpu/rdc.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <linux/init.h>
-#include <linux/bitops.h>
-#include <linux/mm.h>
-#include <asm/io.h>
-#include <asm/processor.h>
-
-#include "cpu.h"
-
-static struct cpu_dev rdc_cpu_dev __cpuinitdata = {
-        .c_vendor       = "RDC",
-        .c_models = {
-                { .vendor = X86_VENDOR_RDC, .family = 4, .model_names =
-                  {
-                          [0] = "R861x(-G)",
-                  }
-                },
-        },
-};
-
-int __init rdc_init_cpu(void)
-{
-        cpu_devs[X86_VENDOR_RDC] = &rdc_cpu_dev;
-        return 0;
-}
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/Makefile b/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/Makefile
deleted file mode 100644
index 5961bc7910..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Makefile for the RDC321x specific parts of the kernel
-#
-obj-$(CONFIG_X86_RDC)        := gpio.o platform.o wdt.o
-
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/gpio.c b/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/gpio.c
deleted file mode 100644
index dbd03270f1..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/gpio.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- *  Copyright (C) 2007, OpenWrt.org, Florian Fainelli <florian@openwrt.org>
- *  	RDC321x architecture specific GPIO support
- *
- *  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.
- */
-
-#include <linux/autoconf.h>
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/types.h>
-#include <linux/module.h>
-#include <linux/delay.h>
-
-#include <asm/mach-rdc/rdc321x_defs.h>
-
-static inline int rdc_gpio_is_valid(unsigned gpio)
-{
-	return (gpio <= RDC_MAX_GPIO);
-}
-
-static unsigned int rdc_gpio_read(unsigned gpio)
-{
-	unsigned int val;
-
-	val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x84:0x48));
-        outl(val, RDC3210_CFGREG_ADDR);
-        udelay(10);
-        val = inl(RDC3210_CFGREG_DATA);
-        val |= (0x1 << (gpio & 0x1F));
-        outl(val, RDC3210_CFGREG_DATA);
-        udelay(10);
-        val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x88:0x4C));
-        outl(val, RDC3210_CFGREG_ADDR);
-        udelay(10);
-        val = inl(RDC3210_CFGREG_DATA);
-
-	return val;
-}
-
-static void rdc_gpio_write(unsigned int val)
-{
-	if (val) {
-		outl(val, RDC3210_CFGREG_DATA);
-		udelay(10);
-	}
-}
-
-int rdc_gpio_get_value(unsigned gpio)
-{
-	if (rdc_gpio_is_valid(gpio))
-		return (int)rdc_gpio_read(gpio);
-	else
-		return -EINVAL;
-}
-EXPORT_SYMBOL(rdc_gpio_get_value);
-
-void rdc_gpio_set_value(unsigned gpio, int value)
-{
-	unsigned int val;
-
-	if (!rdc_gpio_is_valid(gpio))
-		return;
-	
-	val = rdc_gpio_read(gpio);
-
-	if (value)
-		val &= ~(0x1 << (gpio & 0x1F));
-	else
-		val |= (0x1 << (gpio & 0x1F));
-
-	rdc_gpio_write(val);
-}
-EXPORT_SYMBOL(rdc_gpio_set_value);
-
-int rdc_gpio_direction_input(unsigned gpio)
-{
-	return 0;
-}
-EXPORT_SYMBOL(rdc_gpio_direction_input);
-
-int rdc_gpio_direction_output(unsigned gpio, int value)
-{
-	return 0;
-}
-EXPORT_SYMBOL(rdc_gpio_direction_output);
-
-
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/platform.c b/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/platform.c
deleted file mode 100644
index 86981f8441..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/platform.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- *
- *  Generic RDC321x platform devices
- *
- *  Copyright (C) 2007-2008 OpenWrt.org
- *  Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
- *  Copyright (C) 2008 Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
- *
- *  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., 51 Franklin Street, Fifth Floor,
- *  Boston, MA  02110-1301, USA.
- *
- */
-
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/list.h>
-#include <linux/device.h>
-#include <linux/platform_device.h>
-#include <linux/version.h>
-#include <linux/leds.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/mtd/map.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/physmap.h>
-#include <linux/root_dev.h>
-#include <asm/gpio.h>
-
-/* Flash */
-#ifdef CONFIG_MTD_RDC3210
-static struct resource rdc_flash_resource[] = {
-	[0] = {
-		.start = (u32)-CONFIG_MTD_RDC3210_SIZE,
-		.end = (u32)-1,
-		.flags = IORESOURCE_MEM,
-	},
-};
-
-static struct platform_device rdc_flash_device = {
-	.name = "rdc321x-flash",
-	.id = -1,
-	.num_resources = ARRAY_SIZE(rdc_flash_resource),
-	.resource = rdc_flash_resource,
-};
-#else
-static struct mtd_partition rdc_flash_parts[15];
-
-static struct resource rdc_flash_resource = {
-	.end = (u32)-1,
-	.flags = IORESOURCE_MEM,
-};
-
-static struct physmap_flash_data rdc_flash_data = {
-	.parts = rdc_flash_parts,
-};
-
-static struct platform_device rdc_flash_device = {
-	.name = "physmap-flash",
-	.id = -1,
-	.resource = &rdc_flash_resource,
-	.num_resources = 1,
-	.dev.platform_data = &rdc_flash_data,
-};
-#endif
-
-/* LEDS */
-static struct gpio_led default_leds[] = {
-        { .name = "rdc321x:dmz", .gpio = 1, },
-};
-
-static struct gpio_led_platform_data rdc321x_led_data = {
-	.num_leds = ARRAY_SIZE(default_leds),
-	.leds = default_leds,
-};
-
-static struct platform_device rdc321x_leds = {
-	.name = "leds-gpio",
-	.id = -1,
-	.dev = {
-		.platform_data = &rdc321x_led_data,
-	}
-};
-
-/* Watchdog */
-static struct platform_device rdc321x_wdt = {
-	.name = "rdc321x-wdt",
-	.id = -1,
-	.num_resources = 0,
-};
-
-/* Button */
-static struct gpio_keys_button rdc321x_gpio_btn[] = {
-	{
-		.gpio = 0,
-		.code = BTN_0,
-		.desc = "Reset",
-		.active_low = 1,
-	}
-};
-
-static struct gpio_keys_platform_data rdc321x_gpio_btn_data = {
-	.buttons = rdc321x_gpio_btn,
-	.nbuttons = ARRAY_SIZE(rdc321x_gpio_btn),
-};
-
-static struct platform_device rdc321x_button = {
-	.name = "gpio-keys",
-	.id = -1,
-	.dev = {
-		.platform_data = &rdc321x_gpio_btn_data,
-	}
-};
-
-static struct platform_device *rdc321x_devs[] = {
-	&rdc_flash_device,
-	&rdc321x_leds,
-	&rdc321x_wdt,
-	&rdc321x_button
-};
-
-static int probe_flash_start(struct map_info *the_map)
-{
-	struct mtd_info *res;
-
-	the_map->virt = ioremap(the_map->phys, the_map->size);
-	if (the_map->virt == NULL)
-		return 1;
-	for (the_map->bankwidth = 32; the_map->bankwidth; the_map->bankwidth
-			>>= 1) {
-		res = do_map_probe("cfi_probe", the_map);
-		if (res == NULL)
-			res = do_map_probe("jedec_probe", the_map);
-		if (res != NULL)
-			break;
-	}
-	iounmap(the_map->virt);
-	if (res != NULL)
-		the_map->phys = (u32)-(s32)(the_map->size = res->size);
-	return res == NULL;
-}
-
-static __init int rdc_board_setup(void)
-{
-#ifndef CONFIG_MTD_RDC3210
-	struct map_info rdc_map_info;
-	u32 the_header[4];
-
-	ROOT_DEV = 0;
-	rdc_map_info.name = rdc_flash_device.name;
-	rdc_map_info.phys = 0xff000000;
-	rdc_map_info.size = 0x1000000;
-	rdc_map_info.bankwidth = 2;
-	rdc_map_info.set_vpp = NULL;
-	simple_map_init(&rdc_map_info);
-	while (probe_flash_start(&rdc_map_info)) {
-		rdc_map_info.phys++;
-		if (--rdc_map_info.size)
-			panic("Not to be or to be: That"
-				" is not the question.");
-	}
-	rdc_flash_resource.start = rdc_map_info.phys;
-	rdc_flash_data.width = rdc_map_info.bankwidth;
-	rdc_map_info.virt = (u32)ioremap_nocache(rdc_map_info.phys, 0x10);
-	if (rdc_map_info.virt == NULL)
-		panic("Something's rotten in Denmark!");
-	the_header[0] = ((u32 *)rdc_map_info.virt)[0];
-	the_header[1] = ((u32 *)rdc_map_info.virt)[1];
-	the_header[2] = ((u32 *)rdc_map_info.virt)[2];
-	the_header[3] = ((u32 *)rdc_map_info.virt)[3];
-	iounmap(rdc_map_info.virt);
-	if (!memcmp(the_header, "GMTK", 4)) {	/* Gemtek */
-		/* TODO */
-	} else if (!memcmp(the_header, "CSYS", 4)) {	/* Sitecom */
-		/* TODO */
-	} else if (!memcmp(((u8 *)the_header) + 14, "Li", 2)) {	/* AMIT */
-		rdc_flash_parts[0].name = "kernel_parthdr";
-		rdc_flash_parts[0].offset = 0;
-		rdc_flash_parts[0].size = 0x10;
-		rdc_flash_parts[1].name = "kernel";
-		rdc_flash_parts[1].offset = 0x10;
-		rdc_flash_parts[1].size = 0xffff0;
-		rdc_flash_parts[2].name = "rootfs_parthdr";
-		rdc_flash_parts[2].offset = 0x100000;
-		rdc_flash_parts[2].size = 0x10;
-		rdc_flash_parts[3].name = "rootfs";
-		rdc_flash_parts[3].offset = 0x100010;
-		rdc_flash_parts[3].size = rdc_map_info.size - 0x160010;
-		rdc_flash_parts[4].name = "config_parthdr";
-		rdc_flash_parts[4].offset = rdc_map_info.size - 0x60000;
-		rdc_flash_parts[4].size = 0x10;
-		rdc_flash_parts[5].name = "config";
-		rdc_flash_parts[5].offset = rdc_map_info.size - 0x5fff0;
-		rdc_flash_parts[5].size = 0xfff0;
-		rdc_flash_parts[6].name = "recoveryfs_parthdr";
-		rdc_flash_parts[6].offset = rdc_map_info.size - 0x50000;
-		rdc_flash_parts[6].size = 0x10;
-		rdc_flash_parts[7].name = "recoveryfs";
-		rdc_flash_parts[7].offset = rdc_map_info.size - 0x4fff0;
-		rdc_flash_parts[7].size = 0x3fff0;
-		rdc_flash_parts[8].name = "recovery_parthdr";
-		rdc_flash_parts[8].offset = rdc_map_info.size - 0x10000;
-		rdc_flash_parts[8].size = 0x10;
-		rdc_flash_parts[9].name = "recovery";
-		rdc_flash_parts[9].offset = rdc_map_info.size - 0xfff0;
-		rdc_flash_parts[9].size = 0x7ff0;
-		rdc_flash_parts[10].name = "productinfo_parthdr";
-		rdc_flash_parts[10].offset = rdc_map_info.size - 0x8000;
-		rdc_flash_parts[10].size = 0x10;
-		rdc_flash_parts[11].name = "productinfo";
-		rdc_flash_parts[11].offset = rdc_map_info.size - 0x7ff0;
-		rdc_flash_parts[11].size = 0x1ff0;
-		rdc_flash_parts[12].name = "bootloader_parthdr";
-		rdc_flash_parts[12].offset = rdc_map_info.size - 0x6000;
-		rdc_flash_parts[12].size = 0x10;
-		rdc_flash_parts[13].name = "bootloader";
-		rdc_flash_parts[13].offset = rdc_map_info.size - 0x5ff0;
-		rdc_flash_parts[13].size = 0x5ff0;
-		rdc_flash_parts[14].name = "everything";
-		rdc_flash_parts[14].offset = 0;
-		rdc_flash_parts[14].size = rdc_map_info.size;
-		rdc_flash_data.nr_parts = 15;
-	} else {	/* ZyXEL */
-		rdc_flash_parts[0].name = "kernel";
-		rdc_flash_parts[0].offset = 0;
-		rdc_flash_parts[0].size = 0x100000;
-		rdc_flash_parts[1].name = "rootfs";
-		rdc_flash_parts[1].offset = 0x100000;
-		rdc_flash_parts[1].size = rdc_map_info.size - 0x140000;
-		rdc_flash_parts[2].name = "linux";
-		rdc_flash_parts[2].offset = 0;
-		rdc_flash_parts[2].size = rdc_map_info.size - 0x40000;
-		rdc_flash_parts[3].name = "config";
-		rdc_flash_parts[3].offset = rdc_map_info.size - 0x40000;
-		rdc_flash_parts[3].size = 0x10000;
-		rdc_flash_parts[4].name = "productinfo";
-		rdc_flash_parts[4].offset = rdc_map_info.size - 0x30000;
-		rdc_flash_parts[4].size = 0x10000;
-		rdc_flash_parts[5].name = "bootloader";
-		rdc_flash_parts[5].offset = rdc_map_info.size - 0x20000;
-		rdc_flash_parts[5].size = 0x20000;
-		rdc_flash_data.nr_parts = 6;
-	}
-#endif
-	return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs));
-}
-
-#ifdef CONFIG_MTD_RDC3210
-arch_initcall(rdc_board_setup);
-#else
-late_initcall(rdc_board_setup);
-#endif
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/setup.c b/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/setup.c
deleted file mode 100644
index ad206c3d05..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/setup.c
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- *	Machine specific setup for generic
- */
-
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <asm/arch_hooks.h>
-#include <asm/io.h>
-#include <asm/setup.h>
-
-char * __init machine_specific_memory_setup(void)
-{
-	return "RDC R-321x";
-}
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/wdt.c b/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/wdt.c
deleted file mode 100644
index 13b69f68ab..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/wdt.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * RDC321x watchdog driver
- *
- * Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
- *
- * This driver is highly inspired from the cpu5_wdt driver
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <linux/module.h>
-#include <linux/moduleparam.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/miscdevice.h>
-#include <linux/fs.h>
-#include <linux/init.h>
-#include <linux/ioport.h>
-#include <linux/timer.h>
-#include <linux/completion.h>
-#include <linux/jiffies.h>
-#include <linux/platform_device.h>
-#include <linux/watchdog.h>
-
-#include <asm/io.h>
-#include <asm/uaccess.h>
-
-#include <asm/mach-rdc/rdc321x_defs.h>
-
-#define RDC_WDT_MASK		0x80000000	/* Mask */
-#define RDC_WDT_EN		0x00800000 	/* Enable bit */
-#define RDC_WDT_WTI		0x00200000	/* Generate a CPU reset/NMI/WDT irq when WDT timeout is reached */
-#define RDC_WDT_RST		0x00100000	/* Reset bit */
-#define RDC_WDT_WIF		0x00040000	/* WDT IRQ Flag */
-#define RDC_WDT_IRT		0x00000100	/* IRQ Routing table */
-#define RDC_WDT_CNT		0x00000001	/* WDT count */
-
-#define RDC_CLS_TMR		0x80003844	/* Clear timer */
-
-#define RDC_WDT_INTERVAL	(HZ/10+1)
-
-int nowayout = WATCHDOG_NOWAYOUT;
-module_param(nowayout, int, 0);
-MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
-
-static int ticks = 1000;
-
-/* some device data */
-
-static struct {
-	struct completion stop;
-	volatile int running;
-	struct timer_list timer;
-	volatile int queue;
-	int default_ticks;
-	unsigned long inuse;
-} rdc321x_wdt_device;
-
-/* generic helper functions */
-
-static void rdc321x_wdt_trigger(unsigned long unused)
-{
-	if( rdc321x_wdt_device.running )
-		ticks--;
-
-	/* keep watchdog alive */
-	outl(RDC_WDT_EN|inl(RDC3210_CFGREG_DATA), RDC3210_CFGREG_DATA);	
-	
-	/* requeue?? */
-	if (rdc321x_wdt_device.queue && ticks)
-		mod_timer(&rdc321x_wdt_device.timer, jiffies + RDC_WDT_INTERVAL);
-	else {
-		/* ticks doesn't matter anyway */
-		complete(&rdc321x_wdt_device.stop);
-	}
-
-}
-
-static void rdc321x_wdt_reset(void)
-{
-	ticks = rdc321x_wdt_device.default_ticks;
-}
-
-static void rdc321x_wdt_start(void)
-{
-	if (!rdc321x_wdt_device.queue) {
-		rdc321x_wdt_device.queue = 1;
-
-		/* Clear the timer */
-		outl(RDC_CLS_TMR, RDC3210_CFGREG_ADDR);
-		
-		/* Enable watchdog and set the timeout to 81.92 us */
-		outl(RDC_WDT_EN|RDC_WDT_CNT, RDC3210_CFGREG_DATA);
-
-		mod_timer(&rdc321x_wdt_device.timer, jiffies + RDC_WDT_INTERVAL);
-	}
-
-	/* if process dies, counter is not decremented */
-	rdc321x_wdt_device.running++;
-}
-
-static int rdc321x_wdt_stop(void)
-{
-	if (rdc321x_wdt_device.running)
-		rdc321x_wdt_device.running = 0;
-
-	ticks = rdc321x_wdt_device.default_ticks;
-
-	return -EIO;
-}
-
-/* filesystem operations */
-
-static int rdc321x_wdt_open(struct inode *inode, struct file *file)
-{
-	if (test_and_set_bit(0, &rdc321x_wdt_device.inuse))
-		return -EBUSY;
-
-	return nonseekable_open(inode, file);
-}
-
-static int rdc321x_wdt_release(struct inode *inode, struct file *file)
-{
-	clear_bit(0, &rdc321x_wdt_device.inuse);
-	return 0;
-}
-
-static int rdc321x_wdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
-{
-	void __user *argp = (void __user *)arg;
-	unsigned int value;
-	static struct watchdog_info ident =
-	{
-		.options = WDIOF_CARDRESET,
-		.identity = "RDC321x WDT",
-	};
-
-	switch(cmd) {
-		case WDIOC_KEEPALIVE:
-			rdc321x_wdt_reset();
-			break;
-		case WDIOC_GETSTATUS:
-			/* Read the value from the DATA register */
-			value = inl(RDC3210_CFGREG_DATA);
-			if ( copy_to_user(argp, &value, sizeof(int)) )
-				return -EFAULT;
-			break;
-		case WDIOC_GETSUPPORT:
-			if ( copy_to_user(argp, &ident, sizeof(ident)) )
-				return -EFAULT;
-			break;
-		case WDIOC_SETOPTIONS:
-			if ( copy_from_user(&value, argp, sizeof(int)) )
-				return -EFAULT;
-			switch(value) {
-				case WDIOS_ENABLECARD:
-					rdc321x_wdt_start();
-					break;
-				case WDIOS_DISABLECARD:
-					return rdc321x_wdt_stop();
-				default:
-					return -EINVAL;
-			}
-			break;
-		default:
-    			return -ENOTTY;
-	}
-	return 0;
-}
-
-static ssize_t rdc321x_wdt_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
-{
-	if ( !count )
-		return -EIO;
-
-	rdc321x_wdt_reset();
-
-	return count;
-}
-
-static const struct file_operations rdc321x_wdt_fops = {
-	.owner		= THIS_MODULE,
-	.llseek		= no_llseek,
-	.ioctl		= rdc321x_wdt_ioctl,
-	.open		= rdc321x_wdt_open,
-	.write		= rdc321x_wdt_write,
-	.release	= rdc321x_wdt_release,
-};
-
-static struct miscdevice rdc321x_wdt_misc = {
-	.minor	= WATCHDOG_MINOR,
-	.name	= "watchdog",
-	.fops	= &rdc321x_wdt_fops,
-};
-
-static int __devinit rdc321x_wdt_probe(struct platform_device *pdev)
-{
-	int err;
-
-	if ( (err = misc_register(&rdc321x_wdt_misc)) < 0 ) {
-		printk(KERN_ERR PFX "misc_register failed\n");
-		return err;
-	}
-
-	/* Reset the watchdog */
-	outl(RDC_WDT_RST, RDC3210_CFGREG_DATA);
-
-	init_completion(&rdc321x_wdt_device.stop);
-	rdc321x_wdt_device.queue = 0;
-
-	clear_bit(0, &rdc321x_wdt_device.inuse);
-
-	setup_timer(&rdc321x_wdt_device.timer, rdc321x_wdt_trigger, 0);
-
-	rdc321x_wdt_device.default_ticks = ticks;
-
-	printk(KERN_INFO PFX "init success\n");
-
-	return 0;
-}
-
-static int rdc321x_wdt_remove(struct platform_device *pdev)
-{
-	if (rdc321x_wdt_device.queue) {
-		rdc321x_wdt_device.queue = 0;
-		wait_for_completion(&rdc321x_wdt_device.stop);
-	}
-
-	misc_deregister(&rdc321x_wdt_misc);
-
-	return 0;
-}
-
-static struct platform_driver rdc321x_wdt_driver = {
-	.probe = rdc321x_wdt_probe,
-	.remove = rdc321x_wdt_remove,
-	.driver = {
-		.owner = THIS_MODULE,
-		.name = "rdc321x-wdt",
-	},
-};
-
-static int __init rdc321x_wdt_init(void)
-{
-	return platform_driver_register(&rdc321x_wdt_driver);
-}
-
-static void __exit rdc321x_wdt_exit(void)
-{
-	platform_driver_unregister(&rdc321x_wdt_driver);
-}
-
-module_init(rdc321x_wdt_init);
-module_exit(rdc321x_wdt_exit);
-
-MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");
-MODULE_DESCRIPTION("RDC321x watchdog driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
diff --git a/target/linux/rdc/files-2.6.24/drivers/mtd/maps/imghdr.h b/target/linux/rdc/files-2.6.24/drivers/mtd/maps/imghdr.h
deleted file mode 100644
index 7232b70615..0000000000
--- a/target/linux/rdc/files-2.6.24/drivers/mtd/maps/imghdr.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef GT_IMGHDR_H
-#define GT_IMGHDR_H
-
-#define GTIMG_MAGIC		"GMTK"
-
-/* Product ID */
-#define PID_RTL_AIRGO		1
-#define PID_RTL_RALINK		2
-#define PID_RDC_AIRGO		3
-#define PID_RDC_RALINK		5	/* White Lable */
-
-/* Gemtek */
-typedef struct
-{
-	u8		magic[4];		/* ASICII: GMTK */
-	u32		checksum;		/* CRC32 */
-	u32		version;		/* x.x.x.x */
-	u32		kernelsz;		/* The size of the kernel image */
-	u32		imagesz;		/* The length of this image file ( kernel + romfs + this header) */
-	u32		pid;			/* Product ID */
-	u32		fastcksum;		/* Partial CRC32 on (First(256), medium(256), last(512)) */
-	u32		reserved;
-}gt_imghdr_t;
-
-#endif
diff --git a/target/linux/rdc/files-2.6.24/drivers/mtd/maps/rdc3210.c b/target/linux/rdc/files-2.6.24/drivers/mtd/maps/rdc3210.c
deleted file mode 100644
index e04bb99f12..0000000000
--- a/target/linux/rdc/files-2.6.24/drivers/mtd/maps/rdc3210.c
+++ /dev/null
@@ -1,392 +0,0 @@
-/*******************************************************************
- * Simple Flash mapping for RDC3210                                *
- *                                                                 *
- *                                                     2005.03.23  *
- *                              Dante Su (dante_su@gemtek.com.tw)  *
- *                          Copyright (C) 2005 Gemtek Corporation  *
- *******************************************************************/
-
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <asm/io.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/map.h>
-#include <linux/mtd/partitions.h>
-#include <linux/autoconf.h>
-#include <linux/sched.h>
-#include <linux/squashfs_fs.h>
-
-static struct mtd_info		*rdc3210_mtd;
-
-struct map_info rdc3210_map = 
-{
-	.name =		"RDC3210 Flash",
-	.size =		CONFIG_MTD_RDC3210_SIZE,
-	.bankwidth =	CONFIG_MTD_RDC3210_BUSWIDTH,
-};
-
-/* Dante: This is the default static mapping, however this is nothing but a hint. (Say dynamic mapping) */
-static struct mtd_partition rdc3210_parts[] = 
-{
-#if CONFIG_MTD_RDC3210_SIZE == 0x400000
-	{ name: "linux",   offset:  0,          size: 0x003C0000 },	/* 3840 KB = (Kernel + ROMFS) = (768 KB + 3072 KB) */
-	{ name: "romfs",   offset:  0x000C0000, size: 0x00300000 },	/* 3072 KB */
-	{ name: "nvram",   offset:  0x003C0000, size: 0x00010000 },	/*   64 KB */
-#ifdef CONFIG_MTD_RDC3210_FACTORY_PRESENT
-	{ name: "factory", offset:  0x003D0000, size: 0x00010000 },	/*   64 KB */
-#endif
-	{ name: "bootldr", offset:  0x003E0000, size: 0x00020000 },	/*  128 KB */
-#elif CONFIG_MTD_RDC3210_SIZE == 0x200000
-	{ name: "linux",   offset:  0x00008000, size: 0x001E8000 },
-	{ name: "romfs",   offset:  0x000C8000, size: 0x00128000 },
-	{ name: "nvram",   offset:  0x00000000, size: 0x00008000 },	/*   64 KB */
-#ifdef CONFIG_MTD_RDC3210_FACTORY_PRESENT
-#error Unsupported configuration!
-#endif
-	{ name: "bootldr", offset:  0x001F0000, size: 0x00010000 },
-
-#elif CONFIG_MTD_RDC3210_SIZE == 0x800000
-        { name: "linux",   offset:  0,          size: 0x001F0000 },     /* 1984 KB */
-        { name: "config",  offset:  0x001F0000, size: 0x00010000 },     /*   64 KB */
-        { name: "romfs",   offset:  0x00200000, size: 0x005D0000 },     /* 5952 KB */
-#ifdef CONFIG_MTD_RDC3210_FACTORY_PRESENT
-        { name: "factory", offset:  0x007D0000, size: 0x00010000 },     /*   64 KB */
-#endif
-        { name: "bootldr", offset:  0x007E0000, size: 0x00010000 },     /*   64 KB */
-#else
-#error Unsupported configuration!
-#endif
-};
-
-static __u32 crctab[257] = {
-	0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
-	0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
-	0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
-	0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
-	0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
-	0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
-	0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
-	0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
-	0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
-	0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
-	0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
-	0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
-	0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
-	0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
-	0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
-	0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
-	0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
-	0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
-	0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
-	0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
-	0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
-	0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
-	0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
-	0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
-	0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
-	0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
-	0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
-	0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
-	0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
-	0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
-	0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
-	0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
-	0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
-	0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
-	0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
-	0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
-	0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
-	0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
-	0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
-	0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
-	0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
-	0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
-	0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
-	0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
-	0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
-	0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
-	0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
-	0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
-	0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
-	0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
-	0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
-	0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
-	0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
-	0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
-	0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
-	0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
-	0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
-	0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
-	0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
-	0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
-	0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
-	0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
-	0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
-	0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
-	0
-};
-
-static __u32 crc32(__u8 * buf, __u32 len)
-{
-	register int i;
-	__u32 sum;
-	register __u32 s0;
-	s0 = ~0;
-	for (i = 0; i < len; i++) {
-		s0 = (s0 >> 8) ^ crctab[(__u8) (s0 & 0xFF) ^ buf[i]];
-	}
-	sum = ~s0;
-	return sum;
-}
-
-static void erase_callback(struct erase_info *done)
-{
-	wait_queue_head_t *wait_q = (wait_queue_head_t *)done->priv;
-	wake_up(wait_q);
-}
-
-static int erase_write (struct mtd_info *mtd, unsigned long pos, 
-			int len, const char *buf)
-{
-	struct erase_info erase;
-	DECLARE_WAITQUEUE(wait, current);
-	wait_queue_head_t wait_q;
-	size_t retlen;
-	int ret;
-
-	/*
-	 * First, let's erase the flash block.
-	 */
-
-	init_waitqueue_head(&wait_q);
-	erase.mtd = mtd;
-	erase.callback = erase_callback;
-	erase.addr = pos;
-	erase.len = len;
-	erase.priv = (u_long)&wait_q;
-
-	set_current_state(TASK_INTERRUPTIBLE);
-	add_wait_queue(&wait_q, &wait);
-
-	ret = mtd->erase(mtd, &erase);
-	if (ret) {
-		set_current_state(TASK_RUNNING);
-		remove_wait_queue(&wait_q, &wait);
-		printk (KERN_WARNING "erase of region [0x%lx, 0x%x] "
-				     "on \"%s\" failed\n",
-			pos, len, mtd->name);
-		return ret;
-	}
-
-	schedule();  /* Wait for erase to finish. */
-	remove_wait_queue(&wait_q, &wait);
-
-	/*
-	 * Next, writhe data to flash.
-	 */
-
-	ret = mtd->write (mtd, pos, len, &retlen, buf);
-	if (ret)
-		return ret;
-	if (retlen != len)
-		return -EIO;
-	return 0;
-}
-
-static int __init init_rdc3210_map(void)
-{
-	rdc3210_map.phys = -rdc3210_map.size;
-       	printk(KERN_NOTICE "flash device: %x at %x\n", rdc3210_map.size, rdc3210_map.phys);
-
-#if CONFIG_MTD_RDC3210_SIZE == 0x800000
-	simple_map_init(&rdc3210_map);
-#endif
-       	
-	rdc3210_map.map_priv_1 = (unsigned long)(rdc3210_map.virt = ioremap_nocache(rdc3210_map.phys, rdc3210_map.size));
-
-	if (!rdc3210_map.map_priv_1) 
-	{
-		printk("Failed to ioremap\n");
-		return -EIO;
-	}
-	rdc3210_mtd = do_map_probe("cfi_probe", &rdc3210_map);
-#ifdef CONFIG_MTD_RDC3210_STATIC_MAP	/* Dante: This is for fixed map */
-	if (rdc3210_mtd) 
-	{
-		rdc3210_mtd->owner = THIS_MODULE;
-		add_mtd_partitions(rdc3210_mtd, rdc3210_parts, sizeof(rdc3210_parts)/sizeof(rdc3210_parts[0]));
-		return 0;
-	}
-#else	/* Dante: This is for dynamic mapping */
-
-#include "imghdr.h"
-
-	typedef struct {
-		u8	magic[4];
-		u32	kernelsz, ramdisksz;
-		u8	magic2[4];
-		u32	sz2;
-	}sc_imghdr_t;
-
-	if (rdc3210_mtd) 
-	{	// Dante
-		sc_imghdr_t	*hdr2= (sc_imghdr_t *)(rdc3210_map.map_priv_1);
-		gt_imghdr_t	*hdr = (gt_imghdr_t *)hdr2
-#ifdef CONFIG_MTD_RDC3210_ALLOW_JFFS2
-			, *ptmp
-#endif
-			;
-		int	len, tmp, tmp2, tmp3, tmp4, hdr_type = 0;
-		
-		if(!memcmp(hdr->magic, GTIMG_MAGIC, 4))
-		{
-			hdr_type = 1;
-			tmp = hdr->kernelsz + sizeof(gt_imghdr_t);
-			tmp2 = rdc3210_mtd->erasesize;
-			tmp3 = ((tmp / 32) + ((tmp % 32) ? 1 : 0)) * 32;
-			tmp4 = ((tmp / tmp2) + ((tmp % tmp2) ? 1 : 0)) * tmp2;
-		}
-#ifndef CONFIG_MTD_RDC3210_ALLOW_JFFS2
-		else if (!memcmp(hdr2->magic, "CSYS", 4))
-		{
-			hdr_type = 2;
-			tmp = hdr2->ramdisksz + hdr2->kernelsz + sizeof(sc_imghdr_t);
-			tmp2 = rdc3210_mtd->erasesize;
-			tmp3 = ((tmp / 32) + ((tmp % 32) ? 1 : 0)) * 32;
-			tmp4 = ((tmp / tmp2) + ((tmp % tmp2) ? 1 : 0)) * tmp2;
-		}
-#endif
-		else
-		{
-			iounmap((void *)rdc3210_map.map_priv_1);
-			rdc3210_map.map_priv_1 = 0L;
-			rdc3210_map.virt = NULL;
-			printk("Invalid MAGIC for Firmware Image!!!\n");
-			return -EIO;
-		}
-#ifdef CONFIG_MTD_RDC3210_ALLOW_JFFS2
-		tmp = (tmp3 == tmp4) ? tmp4 + tmp2 : tmp4;
-		if ((ptmp = (gt_imghdr_t *)vmalloc(tmp)) == NULL)
-		{
-			iounmap((void *)rdc3210_map.map_priv_1);
-			rdc3210_map.map_priv_1 = 0L;
-			rdc3210_map.virt = NULL;
-			printk("Can't allocate 0x%08x for flash-reading buffer!\n", tmp);
-			return -ENOMEM;
-		}
-		if (rdc3210_mtd->read(rdc3210_mtd, 0, tmp, &len, (__u8 *)ptmp) || len != tmp)
-		{
-			vfree(ptmp);
-			iounmap((void *)rdc3210_map.map_priv_1);
-			rdc3210_map.map_priv_1 = 0L;
-			rdc3210_map.virt = NULL;
-			printk("Can't read that much flash! Read 0x%08x of it.\n", len);
-			return -EIO;
-		}
-#endif
-#ifdef CONFIG_MTD_RDC3210_FACTORY_PRESENT
-		/* 1. Adjust Redboot */
-		tmp = rdc3210_mtd->size - rdc3210_parts[4].size;
-		rdc3210_parts[4].offset = tmp - (tmp % tmp2);
-		rdc3210_parts[4].size   = rdc3210_mtd->size - rdc3210_parts[4].offset;
-		
-		/* 2. Adjust Factory Default */
-		tmp -= rdc3210_parts[3].size;
-		rdc3210_parts[3].offset = tmp - (tmp % tmp2);
-		rdc3210_parts[3].size   = rdc3210_parts[4].offset - rdc3210_parts[3].offset;
-#else
-		/* 1. Adjust Redboot */
-		tmp = rdc3210_mtd->size - rdc3210_parts[3].size;
-		rdc3210_parts[3].offset = tmp - (tmp % tmp2);
-		rdc3210_parts[3].size   = rdc3210_mtd->size - rdc3210_parts[3].offset;
-#endif
-		if (hdr_type == 1) {
-		/* 3. Adjust NVRAM */
-#ifdef CONFIG_MTD_RDC3210_ALLOW_JFFS2
-		if (*(__u32 *)(((unsigned char *)ptmp)+tmp3) == SQUASHFS_MAGIC)
-		{
-			len = 1;
-			tmp4 = tmp3;
-			tmp = hdr->imagesz;
-		rdc3210_parts[2].name   = "rootfs_data";
-		rdc3210_parts[2].offset = rdc3210_parts[0].offset + (((tmp / tmp2) + ((tmp % tmp2) ? 1 : 0)) * tmp2);
-		}
-		else
-#else
-			tmp4 = tmp3;
-#endif
-		{
-			len = 0;
-		tmp -= rdc3210_parts[2].size;
-		rdc3210_parts[2].offset = tmp - (tmp % tmp2);
-		}
-		rdc3210_parts[2].size   = rdc3210_parts[3].offset - rdc3210_parts[2].offset;
-		}
-		else if (hdr_type == 2)
-		{
-			len = 0;
-			tmp4 = tmp3;
-		}
-		
-		/* 4. Adjust Linux (Kernel + ROMFS) */
-		rdc3210_parts[0].size   = rdc3210_parts[len + hdr_type + 1].offset - rdc3210_parts[0].offset;
-
-		/* 5. Adjust ROMFS */
-		rdc3210_parts[1].offset = rdc3210_parts[0].offset + tmp4;
-		rdc3210_parts[1].size   = rdc3210_parts[hdr_type + 1].offset - rdc3210_parts[1].offset;
-#ifdef CONFIG_MTD_RDC3210_ALLOW_JFFS2
-		if (!(hdr->reserved || len))
-		{
-			__u8	buf[1024];
-			ptmp->reserved = hdr->imagesz;
-			ptmp->imagesz  = tmp4;
-			ptmp->checksum = ptmp->fastcksum = 0;
-			memcpy(buf, ptmp, 0x100);
-			memcpy(buf + 0x100, ((__u8 *)ptmp) + ((tmp4 >> 1) - ((tmp4 & 0x6) >> 1)), 0x100);
-			memcpy(buf + 0x200, ((__u8 *)ptmp) + (tmp4 - 0x200), 0x200);
-			ptmp->fastcksum = crc32(buf, sizeof(buf));
-			ptmp->checksum = crc32((__u8 *)ptmp, tmp4);
-			if (rdc3210_mtd->unlock) rdc3210_mtd->unlock(rdc3210_mtd, 0, tmp2);
-			if ((len = erase_write(rdc3210_mtd, 0, tmp2, (char *)ptmp)))
-			{
-				vfree(ptmp);
-				iounmap((void *)rdc3210_map.map_priv_1);
-				rdc3210_map.map_priv_1 = 0L;
-				rdc3210_map.virt = NULL;
-				printk("Couldn't erase! Got %d.\n", len);
-				return len;
-			}
-			if (rdc3210_mtd->sync) rdc3210_mtd->sync(rdc3210_mtd);
-		}
-		vfree(ptmp);
-#endif
-		rdc3210_mtd->owner = THIS_MODULE;
-		add_mtd_partitions(rdc3210_mtd, rdc3210_parts, sizeof(rdc3210_parts)/sizeof(rdc3210_parts[0]));
-		return 0;
-	}
-#endif
-	iounmap((void *)rdc3210_map.map_priv_1);
-	rdc3210_map.map_priv_1 = 0L;
-	rdc3210_map.virt = NULL;
-	return -ENXIO;
-}
-
-static void __exit cleanup_rdc3210_map(void)
-{
-	if (rdc3210_mtd) 
-	{
-		del_mtd_partitions(rdc3210_mtd);
-		map_destroy(rdc3210_mtd);
-	}
-	
-	if (rdc3210_map.map_priv_1) 
-	{
-		iounmap((void *)rdc3210_map.map_priv_1);
-		rdc3210_map.map_priv_1 = 0L;
-		rdc3210_map.virt = NULL;
-	}
-}
-
-module_init(init_rdc3210_map);
-module_exit(cleanup_rdc3210_map);
diff --git a/target/linux/rdc/files-2.6.24/drivers/net/r6040.c b/target/linux/rdc/files-2.6.24/drivers/net/r6040.c
deleted file mode 100644
index 0096006197..0000000000
--- a/target/linux/rdc/files-2.6.24/drivers/net/r6040.c
+++ /dev/null
@@ -1,1412 +0,0 @@
-/*
- * RDC R6040 Fast Ethernet MAC support
- *
- * Copyright (C) 2004 Sten Wang <sten.wang@rdc.com.tw>
- * Copyright (C) 2007
- *	Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
- *	Florian Fainelli <florian@openwrt.org>
- *
- * 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02110-1301, USA.
-*/
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/version.h>
-#include <linux/moduleparam.h>
-#include <linux/string.h>
-#include <linux/timer.h>
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/slab.h>
-#include <linux/interrupt.h>
-#include <linux/pci.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/skbuff.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/mii.h>
-#include <linux/ethtool.h>
-#include <linux/crc32.h>
-#include <linux/spinlock.h>
-#include <linux/bitops.h>
-#include <linux/io.h>
-#include <linux/irq.h>
-#include <linux/uaccess.h>
-
-#include <asm/processor.h>
-
-#define DRV_NAME	"r6040"
-#define DRV_VERSION	"0.19"
-#define DRV_RELDATE	"16Jun2008"
-
-/* define bits of a debug mask */
-#define DBG_PHY           0x00000001 /*!< show PHY read/write */
-#define DBG_FREE_BUFS     0x00000002 /*!< show calls to r6040_free_*bufs */
-#define DBG_RING          0x00000004 /*!< debug init./freeing of descr rings */
-#define DBG_RX_BUF        0x00000008 /*!< show alloc. of new rx buf (in IRQ context !) */
-#define DBG_TX_BUF        0x00000010 /*!< show arrival of new tx buf */
-#define DBG_TX_DONE       0x00000020 /*!< debug TX done */
-#define DBG_RX_DESCR      0x00000040 /*!< debug rx descr to be processed */
-#define DBG_RX_DATA       0x00000080 /*!< show some user data of incoming packet */
-#define DBG_EXIT          0x00000100 /*!< show exit code calls */
-#define DBG_INIT          0x00000200 /*!< show init. code calls */
-#define DBG_TX_RING_DUMP  0x00000400 /*!< dump the tx ring after creation */
-#define DBG_RX_RING_DUMP  0x00000800 /*!< dump the rx ring after creation */
-#define DBG_TX_DESCR      0x00001000 /*!< dump the setting of a descr for tx */
-#define DBG_TX_DATA       0x00002000 /*!< dump some tx data */
-#define DBG_IRQ           0x00004000 /*!< print inside the irq handler */
-#define DBG_POLL          0x00008000 /*!< dump info on poll procedure */
-#define DBG_MAC_ADDR      0x00010000 /*!< debug mac address setting */
-#define DBG_OPEN          0x00020000 /*!< debug open proc. */
-
-static int debug = 0;
-module_param(debug, int, 0);
-MODULE_PARM_DESC(debug, "debug mask (-1 for all)");
-
-/* define which debugs are left in the code during compilation */
-#define DEBUG (-1) /* all debugs */
-
-#define dbg(l, f, ...)				\
-  do { \
-    if ((DEBUG & l) && (debug & l)) { \
-      printk(KERN_INFO DRV_NAME " %s: " f, __FUNCTION__, ## __VA_ARGS__); \
-    } \
-  } while (0)
-
-#define err(f, ...) printk(KERN_WARNING DRV_NAME " %s: " f, __FUNCTION__, ## __VA_ARGS__)
-
-/* PHY CHIP Address */
-#define PHY1_ADDR	1	/* For MAC1 */
-#define PHY2_ADDR	3	/* For MAC2 */
-#define PHY_MODE	0x3100	/* PHY CHIP Register 0 */
-#define PHY_CAP		0x01E1	/* PHY CHIP Register 4 */
-
-/* Time in jiffies before concluding the transmitter is hung. */
-#define TX_TIMEOUT	(6000 * HZ / 1000)
-
-/* RDC MAC I/O Size */
-#define R6040_IO_SIZE	256
-
-/* MAX RDC MAC */
-#define MAX_MAC		2
-
-/* MAC registers */
-#define MCR0		0x00	/* Control register 0 */
-#define MCR1		0x04	/* Control register 1 */
-#define  MAC_RST	0x0001	/* Reset the MAC */
-#define MBCR		0x08	/* Bus control */
-#define MT_ICR		0x0C	/* TX interrupt control */
-#define MR_ICR		0x10	/* RX interrupt control */
-#define MTPR		0x14	/* TX poll command register */
-#define MR_BSR		0x18	/* RX buffer size */
-#define MR_DCR		0x1A	/* RX descriptor control */
-#define MLSR		0x1C	/* Last status */
-#define MMDIO		0x20	/* MDIO control register */
-#define  MDIO_WRITE	0x4000	/* MDIO write */
-#define  MDIO_READ	0x2000	/* MDIO read */
-#define MMRD		0x24	/* MDIO read data register */
-#define MMWD		0x28	/* MDIO write data register */
-#define MTD_SA0		0x2C	/* TX descriptor start address 0 */
-#define MTD_SA1		0x30	/* TX descriptor start address 1 */
-#define MRD_SA0		0x34	/* RX descriptor start address 0 */
-#define MRD_SA1		0x38	/* RX descriptor start address 1 */
-#define MISR		0x3C	/* Status register */
-#define MIER		0x40	/* INT enable register */
-#define  MSK_INT	0x0000	/* Mask off interrupts */
-#define  RX_FINISH      0x0001  /* rx finished irq */
-#define  RX_NO_DESC     0x0002  /* rx no descr. avail. irq */
-#define  RX_FIFO_FULL   0x0004  /* rx fifo full irq */
-#define  RX_EARLY       0x0008  /* rx early irq */
-#define  TX_FINISH      0x0010  /* tx finished irq */
-#define  TX_EARLY       0x0080  /* tx early irq */
-#define  EVENT_OVRFL    0x0100  /* event counter overflow irq */
-#define  LINK_CHANGED   0x0200  /* PHY link changed irq */
-
-#define ME_CISR		0x44	/* Event counter INT status */
-#define ME_CIER		0x48	/* Event counter INT enable  */
-#define MR_CNT		0x50	/* Successfully received packet counter */
-#define ME_CNT0		0x52	/* Event counter 0 */
-#define ME_CNT1		0x54	/* Event counter 1 */
-#define ME_CNT2		0x56	/* Event counter 2 */
-#define ME_CNT3		0x58	/* Event counter 3 */
-#define MT_CNT		0x5A	/* Successfully transmit packet counter */
-#define ME_CNT4		0x5C	/* Event counter 4 */
-#define MP_CNT		0x5E	/* Pause frame counter register */
-#define MAR0		0x60	/* Hash table 0 */
-#define MAR1		0x62	/* Hash table 1 */
-#define MAR2		0x64	/* Hash table 2 */
-#define MAR3		0x66	/* Hash table 3 */
-#define MID_0L		0x68	/* Multicast address MID0 Low */
-#define MID_0M		0x6A	/* Multicast address MID0 Medium */
-#define MID_0H		0x6C	/* Multicast address MID0 High */
-#define MID_1L		0x70	/* MID1 Low */
-#define MID_1M		0x72	/* MID1 Medium */
-#define MID_1H		0x74	/* MID1 High */
-#define MID_2L		0x78	/* MID2 Low */
-#define MID_2M		0x7A	/* MID2 Medium */
-#define MID_2H		0x7C	/* MID2 High */
-#define MID_3L		0x80	/* MID3 Low */
-#define MID_3M		0x82	/* MID3 Medium */
-#define MID_3H		0x84	/* MID3 High */
-#define PHY_CC		0x88	/* PHY status change configuration register */
-#define PHY_ST		0x8A	/* PHY status register */
-#define MAC_SM		0xAC	/* MAC status machine */
-#define MAC_ID		0xBE	/* Identifier register */
-
-#define TX_DCNT		0x80	/* TX descriptor count */
-#define RX_DCNT		0x80	/* RX descriptor count */
-#define MAX_BUF_SIZE	0x600
-#define RX_DESC_SIZE	(RX_DCNT * sizeof(struct r6040_descriptor))
-#define TX_DESC_SIZE	(TX_DCNT * sizeof(struct r6040_descriptor))
-#define MBCR_DEFAULT	0x012A	/* MAC Bus Control Register: 
-				   - wait 1 host clock until SDRAM bus request
-				     becomes high priority
-				   - RX FIFO: 32 byte
-				   - TX FIFO: 64 byte
-				   - FIFO transfer length: 16 byte */
-#define MCAST_MAX	4	/* Max number multicast addresses to filter */
-
-/* PHY settings */
-#define ICPLUS_PHY_ID	0x0243
-
-MODULE_AUTHOR("Sten Wang <sten.wang@rdc.com.tw>,"
-	"Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>,"
-	"Florian Fainelli <florian@openwrt.org>");
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("RDC R6040 NAPI PCI FastEthernet driver");
-
-/*! which rx interrupts do we allow */
-#define RX_INTS                        (RX_FIFO_FULL|RX_NO_DESC|RX_FINISH)
-/*! which tx interrupts do we allow */
-#define TX_INTS                        (TX_FINISH)
-#define INT_MASK                 (RX_INTS | TX_INTS)
-
-struct r6040_descriptor {
-	u16	status, len;		/* 0-3 */
-	__le32	buf;			/* 4-7 */
-	__le32	ndesc;			/* 8-B */
-	u32	rev1;			/* C-F */
-	char	*vbufp;			/* 10-13 */
-	struct r6040_descriptor *vndescp;	/* 14-17 */
-	struct sk_buff *skb_ptr;	/* 18-1B */
-	u32	rev2;			/* 1C-1F */
-} __attribute__((aligned(32)));
-
-/*! defines for the status field in the r6040_descriptor */
-#define DESC_STATUS_OWNER_MAC       (1<<15) /*!< if set the MAC is the owner of this descriptor */
-#define DESC_STATUS_RX_OK           (1<<14) /*!< rx was successful */
-#define DESC_STATUS_RX_ERR          (1<<11) /*!< rx PHY error */
-#define DESC_STATUS_RX_ERR_DRIBBLE  (1<<10) /*!< rx dribble packet */
-#define DESC_STATUS_RX_ERR_BUFLEN   (1<< 9) /*!< rx length exceeded buffer size */
-#define DESC_STATUS_RX_ERR_LONG     (1<< 8) /*!< rx length > maximum packet length */
-#define DESC_STATUS_RX_ERR_RUNT     (1<< 7) /*!< rx: packet length < 64 byte */
-#define DESC_STATUS_RX_ERR_CRC      (1<< 6) /*!< rx: crc error */
-#define DESC_STATUS_RX_BROADCAST    (1<< 5) /*!< rx: broadcast (no error) */
-#define DESC_STATUS_RX_MULTICAST    (1<< 4) /*!< rx: multicast (no error) */
-#define DESC_STATUS_RX_MCH_HIT      (1<< 3) /*!< rx: multicast hit in hash table (no error) */
-#define DESC_STATUS_RX_MIDH_HIT     (1<< 2) /*!< rx: MID table hit (no error) */
-#define DESC_STATUS_RX_IDX_MID_MASK 3       /*!< rx: mask for the index of matched MIDx */
-
-struct r6040_private {
-	spinlock_t lock;		/* driver lock */
-	struct timer_list timer;
-	struct pci_dev *pdev;
-	struct r6040_descriptor *rx_insert_ptr;
-	struct r6040_descriptor *rx_remove_ptr;
-	struct r6040_descriptor *tx_insert_ptr;
-	struct r6040_descriptor *tx_remove_ptr;
-	struct r6040_descriptor *rx_ring;
-	struct r6040_descriptor *tx_ring;
-	dma_addr_t rx_ring_dma;
-	dma_addr_t tx_ring_dma;
-	u16	tx_free_desc, phy_addr, phy_mode;
-	u16	mcr0, mcr1;
-	u16	switch_sig;
-	struct net_device *dev;
-	struct mii_if_info mii_if;
-	struct napi_struct napi;
-	void __iomem *base;
-};
-
-static char *parent = "wlan0";
-module_param(parent, charp, 0444);
-MODULE_PARM_DESC(parent, "Parent network device name to get the MAC address from");
-
-static u8 mac_base[ETH_ALEN] = {0,0x50,0xfc,2,3,4};
-module_param_array(mac_base, byte, NULL, 0444);
-MODULE_PARM_DESC(mac_base, "Starting MAC address");
-
-static int reverse = 1;
-module_param(reverse, invbool, 0444);
-MODULE_PARM_DESC(reverse, "Reverse card indices");
-
-static char version[] __devinitdata = DRV_NAME
-	": RDC R6040 NAPI net driver,"
-	"version "DRV_VERSION " (" DRV_RELDATE ")";
-
-static int phy_table[] = { PHY1_ADDR, PHY2_ADDR };
-
-/* forward declarations */
-void r6040_multicast_list(struct net_device *dev);
-
-/* jal2: comment out to get more symbols for debugging */
-//#define STATIC static
-#define STATIC
-
-#if DEBUG
-/*! hexdump an memory area into a string. delim is taken as the delimiter between two bytes.
-    It is omitted if delim == '\0' */
-STATIC char *hex2str(void *addr, char *buf, int nr_bytes, int delim)
-{
-	unsigned char *src = addr;
-	char *outb = buf;
-
-#define BIN2HEXDIGIT(x) ((x) < 10 ? '0'+(x) : 'A'-10+(x))
-
-	while (nr_bytes > 0) {
-		*outb++ = BIN2HEXDIGIT(*src>>4);
-		*outb++ = BIN2HEXDIGIT(*src&0xf);
-		if (delim)
-			*outb++ = delim;
-		nr_bytes--;
-		src++;
-	}
-
-	if (delim)
-		outb--;
-	*outb = '\0';
-	return buf;
-}
-
-#endif /* #if DEBUG */
-
-/* Read a word data from PHY Chip */
-STATIC int phy_read(void __iomem *ioaddr, int phy_addr, int reg)
-{
-	int limit = 2048;
-	u16 cmd;
-	int rc;
-
-	iowrite16(MDIO_READ + reg + (phy_addr << 8), ioaddr + MMDIO);
-	/* Wait for the read bit to be cleared */
-	while (limit--) {
-		cmd = ioread16(ioaddr + MMDIO);
-		if (!(cmd & MDIO_READ))
-			break;
-	}
-
-	if (limit <= 0)
-		err("phy addr x%x reg x%x timed out\n",
-		    phy_addr, reg);
-
-	rc=ioread16(ioaddr + MMRD);
-
-	dbg(DBG_PHY, "phy addr x%x reg x%x val x%x\n", phy_addr, reg, rc);
-	return rc;
-}
-
-/* Write a word data from PHY Chip */
-STATIC void phy_write(void __iomem *ioaddr, int phy_addr, int reg, u16 val)
-{
-	int limit = 2048;
-	u16 cmd;
-
-	dbg(DBG_PHY, "phy addr x%x reg x%x val x%x\n", phy_addr, reg, val);
-
-	iowrite16(val, ioaddr + MMWD);
-	/* Write the command to the MDIO bus */
-	iowrite16(MDIO_WRITE + reg + (phy_addr << 8), ioaddr + MMDIO);
-	/* Wait for the write bit to be cleared */
-	while (limit--) {
-		cmd = ioread16(ioaddr + MMDIO);
-		if (!(cmd & MDIO_WRITE))
-			break;
-	}
-	if (limit <= 0)
-		err("phy addr x%x reg x%x val x%x timed out\n",
-		    phy_addr, reg, val);
-}
-
-STATIC int mdio_read(struct net_device *dev, int mii_id, int reg)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-	void __iomem *ioaddr = lp->base;
-
-	return (phy_read(ioaddr, lp->phy_addr, reg));
-}
-
-STATIC void mdio_write(struct net_device *dev, int mii_id, int reg, int val)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-	void __iomem *ioaddr = lp->base;
-
-	phy_write(ioaddr, lp->phy_addr, reg, val);
-}
-
-void r6040_free_txbufs(struct net_device *dev)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-	int i;
-
-	dbg(DBG_FREE_BUFS, "ENTER\n");
-	for (i = 0; i < TX_DCNT; i++) {
-		if (lp->tx_insert_ptr->skb_ptr) {
-			pci_unmap_single(lp->pdev,
-				le32_to_cpu(lp->tx_insert_ptr->buf),
-				MAX_BUF_SIZE, PCI_DMA_TODEVICE);
-			dev_kfree_skb(lp->tx_insert_ptr->skb_ptr);
-			lp->tx_insert_ptr->skb_ptr = NULL;
-		}
-		lp->tx_insert_ptr = lp->tx_insert_ptr->vndescp;
-	}
-	dbg(DBG_FREE_BUFS, "EXIT\n");
-}
-
-/*! unmap and free all rx skb */
-void r6040_free_rxbufs(struct net_device *dev)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-	int i;
-
-	dbg(DBG_FREE_BUFS, "ENTER\n");
-	for (i = 0; i < RX_DCNT; i++) {
-		if (lp->rx_insert_ptr->skb_ptr) {
-			pci_unmap_single(lp->pdev,
-				le32_to_cpu(lp->rx_insert_ptr->buf),
-				MAX_BUF_SIZE, PCI_DMA_FROMDEVICE);
-			dev_kfree_skb(lp->rx_insert_ptr->skb_ptr);
-			lp->rx_insert_ptr->skb_ptr = NULL;
-		}
-		lp->rx_insert_ptr = lp->rx_insert_ptr->vndescp;
-	}
-	dbg(DBG_FREE_BUFS, "EXIT\n");
-
-}
-
-void r6040_init_ring_desc(struct r6040_descriptor *desc_ring,
-				 dma_addr_t desc_dma, int size)
-{
-	struct r6040_descriptor *desc = desc_ring;
-	dma_addr_t mapping = desc_dma;
-
-	dbg(DBG_RING, "desc_ring %p desc_dma %08x size x%x\n",
-	    desc_ring, desc_dma, size);
-
-	
-	while (size-- > 0) {
-		mapping += sizeof(*desc);
-		memset(desc, 0, sizeof(*desc));
-		desc->ndesc = cpu_to_le32(mapping);
-		desc->vndescp = desc + 1;
-		desc++;
-	}
-
-	/* last descriptor points to first one to close the descriptor ring */
-	desc--;
-	desc->ndesc = cpu_to_le32(desc_dma);
-	desc->vndescp = desc_ring;
-}
-
-#if (DEBUG & DBG_TX_RING_DUMP)
-/*! dump the tx ring to syslog */
-STATIC void
-dump_tx_ring(struct r6040_private *lp)
-{
-	int i;
-	struct r6040_descriptor *ptr;
-
-	printk(KERN_INFO "%s: nr_desc x%x tx_ring %p tx_ring_dma %08x "
-	       "tx_insert %p tx_remove %p\n",
-	       DRV_NAME, TX_DCNT, lp->tx_ring, lp->tx_ring_dma,
-	       lp->tx_insert_ptr, lp->tx_remove_ptr);
-
-	if (lp->tx_ring) {
-		for(i=0, ptr=lp->tx_ring; i < TX_DCNT; i++, ptr++) {
-			printk(KERN_INFO "%s: %d. descr: status x%x len x%x "
-			       "ndesc %08x vbufp %p vndescp %p skb_ptr %p\n", 
-			       DRV_NAME, i, ptr->status, ptr->len,
-			       ptr->ndesc, ptr->vbufp, ptr->vndescp, ptr->skb_ptr);
-		}
-	}
-}
-#endif /* #if (DEBUG & DBG_TX_RING_DUMP) */
-
-void r6040_init_txbufs(struct net_device *dev)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-
-	lp->tx_free_desc = TX_DCNT;
-
-	lp->tx_remove_ptr = lp->tx_insert_ptr = lp->tx_ring;
-	r6040_init_ring_desc(lp->tx_ring, lp->tx_ring_dma, TX_DCNT);
-
-#if (DEBUG & DBG_TX_RING_DUMP)
-	if (debug & DBG_TX_RING_DUMP) {
-		dump_tx_ring(lp);
-	}
-#endif
-}
-
-#if (DEBUG & DBG_RX_RING_DUMP)
-/*! dump the rx ring to syslog */
-STATIC void
-dump_rx_ring(struct r6040_private *lp)
-{
-	int i;
-	struct r6040_descriptor *ptr;
-
-	printk(KERN_INFO "%s: nr_desc x%x rx_ring %p rx_ring_dma %08x "
-	       "rx_insert %p rx_remove %p\n",
-	       DRV_NAME, RX_DCNT, lp->rx_ring, lp->rx_ring_dma,
-	       lp->rx_insert_ptr, lp->rx_remove_ptr);
-
-	if (lp->rx_ring) {
-		for(i=0, ptr=lp->rx_ring; i < RX_DCNT; i++, ptr++) {
-			printk(KERN_INFO "%s: %d. descr: status x%x len x%x "
-			       "ndesc %08x vbufp %p vndescp %p skb_ptr %p\n", 
-			       DRV_NAME, i, ptr->status, ptr->len,
-			       ptr->ndesc, ptr->vbufp, ptr->vndescp, ptr->skb_ptr);
-		}
-	}
-}
-#endif /* #if (DEBUG & DBG_TX_RING_DUMP) */
-
-int r6040_alloc_rxbufs(struct net_device *dev)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-	struct r6040_descriptor *desc;
-	struct sk_buff *skb;
-	int rc;
-
-	lp->rx_remove_ptr = lp->rx_insert_ptr = lp->rx_ring;
-	r6040_init_ring_desc(lp->rx_ring, lp->rx_ring_dma, RX_DCNT);
-
-	/* alloc skbs for the rx descriptors */
-	desc = lp->rx_ring;
-	do {
-		if (!(skb=netdev_alloc_skb(dev, MAX_BUF_SIZE))) {
-			err("failed to alloc skb for rx\n");
-			rc = -ENOMEM;
-			goto err_exit;
-		}
-		desc->skb_ptr = skb;
-		desc->buf = cpu_to_le32(pci_map_single(lp->pdev,
-						       desc->skb_ptr->data,
-						       MAX_BUF_SIZE, PCI_DMA_FROMDEVICE));
-		desc->status = DESC_STATUS_OWNER_MAC;
-		desc = desc->vndescp;
-	} while (desc != lp->rx_ring);
-
-#if (DEBUG & DBG_RX_RING_DUMP)
-	if (debug & DBG_RX_RING_DUMP) {
-		dump_rx_ring(lp);
-	}
-#endif
-
-	return 0;
-
-err_exit:
-	/* dealloc all previously allocated skb */
-	r6040_free_rxbufs(dev);
-	return rc;
-}
-
-/*! reset MAC and set all registers */
-void r6040_init_mac_regs(struct r6040_private *lp)
-{
-	void __iomem *ioaddr = lp->base;
-	int limit;
-	char obuf[3*ETH_ALEN] __attribute__ ((unused));
-
-	/* Mask Off Interrupt */
-	iowrite16(MSK_INT, ioaddr + MIER);
-
-	/* reset MAC */
-	iowrite16(MAC_RST, ioaddr + MCR1);
-	udelay(100);
-	limit=2048;
-	while ((ioread16(ioaddr + MCR1) & MAC_RST) && limit-- > 0);
-
-	/* Reset internal state machine */
-	iowrite16(2, ioaddr + MAC_SM);
-	iowrite16(0, ioaddr + MAC_SM);
-	udelay(5000);
-
-	/* Restore MAC Addresses */
-	r6040_multicast_list(lp->dev);
-
-	/* TODO: restore multcast and hash table */
-
-	/* MAC Bus Control Register */
-	iowrite16(MBCR_DEFAULT, ioaddr + MBCR);
-
-	/* Buffer Size Register */
-	iowrite16(MAX_BUF_SIZE, ioaddr + MR_BSR);
-
-	/* write tx ring start address */
-	iowrite16(lp->tx_ring_dma, ioaddr + MTD_SA0);
-	iowrite16(lp->tx_ring_dma >> 16, ioaddr + MTD_SA1);
-
-	/* write rx ring start address */
-	iowrite16(lp->rx_ring_dma, ioaddr + MRD_SA0);
-	iowrite16(lp->rx_ring_dma >> 16, ioaddr + MRD_SA1);
-
-	/* set interrupt waiting time and packet numbers */
-	iowrite16(0, ioaddr + MT_ICR);
-	iowrite16(0, ioaddr + MR_ICR);
-
-	/* enable interrupts */
-	iowrite16(INT_MASK, ioaddr + MIER);
-
-	/* enable tx and rx */
-	iowrite16(lp->mcr0 | 0x0002, ioaddr);
-
-	/* let TX poll the descriptors - we may got called by r6040_tx_timeout which has left
-	   some unsent tx buffers */
-	iowrite16(0x01, ioaddr + MTPR);
-}
-
-void r6040_tx_timeout(struct net_device *dev)
-{
-	struct r6040_private *priv = netdev_priv(dev);
-	void __iomem *ioaddr = priv->base;
-
-	/* we read MISR, which clears on read (i.e. we may loose an RX interupt,
-	   but this is an error anyhow ... */
-	printk(KERN_WARNING "%s: transmit timed out, int enable %4.4x "
-	       "status %4.4x, PHY status %4.4x\n",
-	       dev->name, ioread16(ioaddr + MIER),
-	       ioread16(ioaddr + MISR),
-	       mdio_read(dev, priv->mii_if.phy_id, MII_BMSR));
-
-	dev->stats.tx_errors++;
-
-	/* Reset MAC and re-init all registers */
-	r6040_init_mac_regs(priv);
-}
-
-struct net_device_stats *r6040_get_stats(struct net_device *dev)
-{
-	struct r6040_private *priv = netdev_priv(dev);
-	void __iomem *ioaddr = priv->base;
-	unsigned long flags;
-
-	spin_lock_irqsave(&priv->lock, flags);
-	dev->stats.rx_crc_errors += ioread8(ioaddr + ME_CNT1);
-	dev->stats.multicast += ioread8(ioaddr + ME_CNT0);
-	spin_unlock_irqrestore(&priv->lock, flags);
-
-	return &dev->stats;
-}
-
-/* Stop RDC MAC and Free the allocated resource */
-void r6040_down(struct net_device *dev)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-	void __iomem *ioaddr = lp->base;
-	struct pci_dev *pdev = lp->pdev;
-	int limit = 2048;
-
-	dbg(DBG_EXIT, "ENTER\n");
-
-	/* Stop MAC */
-	iowrite16(MSK_INT, ioaddr + MIER);	/* Mask Off Interrupt */
-	iowrite16(MAC_RST, ioaddr + MCR1);	/* Reset RDC MAC */
-	udelay(100);
-	while ((ioread16(ioaddr+MCR1) & 1) && limit-- > 0);
-
-	if (limit <= 0)
-		err("timeout while waiting for reset done.\n");
-
-	free_irq(dev->irq, dev);
-
-	/* Free RX buffer */
-	r6040_free_rxbufs(dev);
-
-	/* Free TX buffer */
-	r6040_free_txbufs(dev);
-
-	/* Free Descriptor memory */
-	pci_free_consistent(pdev, RX_DESC_SIZE, lp->rx_ring, lp->rx_ring_dma);
-	pci_free_consistent(pdev, TX_DESC_SIZE, lp->tx_ring, lp->tx_ring_dma);
-
-	dbg(DBG_EXIT, "EXIT\n");
-}
-
-int r6040_close(struct net_device *dev)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-
-	dbg(DBG_EXIT, "ENTER\n");
-
-	/* deleted timer */
-	del_timer_sync(&lp->timer);
-	spin_lock_irq(&lp->lock);
-	napi_disable(&lp->napi);
-	netif_stop_queue(dev);
-	r6040_down(dev);
-	spin_unlock_irq(&lp->lock);
-
-	dbg(DBG_EXIT, "EXIT\n");
-	return 0;
-}
-
-/* Status of PHY CHIP. Returns 0x8000 for full duplex, 0 for half duplex */
-STATIC int phy_mode_chk(struct net_device *dev)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-	void __iomem *ioaddr = lp->base;
-	int phy_dat;
-
-	/* PHY Link Status Check */
-	phy_dat = phy_read(ioaddr, lp->phy_addr, 1);
-	if (!(phy_dat & 0x4))
-		phy_dat = 0x8000;	/* Link Failed, full duplex */
-
-	/* PHY Chip Auto-Negotiation Status */
-	phy_dat = phy_read(ioaddr, lp->phy_addr, 1);
-	if (phy_dat & 0x0020) {
-		/* Auto Negotiation Mode */
-		phy_dat = phy_read(ioaddr, lp->phy_addr, 5);
-		phy_dat &= phy_read(ioaddr, lp->phy_addr, 4);
-		if (phy_dat & 0x140)
-			/* Force full duplex */
-			phy_dat = 0x8000;
-		else
-			phy_dat = 0;
-	} else {
-		/* Force Mode */
-		phy_dat = phy_read(ioaddr, lp->phy_addr, 0);
-		if (phy_dat & 0x100)
-			phy_dat = 0x8000;
-		else
-			phy_dat = 0x0000;
-	}
-
-	dbg(DBG_PHY, "RETURN x%x\n", phy_dat);
-	return phy_dat;
-};
-
-void r6040_set_carrier(struct mii_if_info *mii)
-{
-	if (phy_mode_chk(mii->dev)) {
-		/* autoneg is off: Link is always assumed to be up */
-		if (!netif_carrier_ok(mii->dev))
-			netif_carrier_on(mii->dev);
-	} else
-		phy_mode_chk(mii->dev);
-}
-
-int r6040_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-	struct mii_ioctl_data *data = if_mii(rq);
-	int rc;
-
-	if (!netif_running(dev))
-		return -EINVAL;
-	spin_lock_irq(&lp->lock);
-	rc = generic_mii_ioctl(&lp->mii_if, data, cmd, NULL);
-	spin_unlock_irq(&lp->lock);
-	r6040_set_carrier(&lp->mii_if);
-	return rc;
-}
-
-int r6040_rx(struct net_device *dev, int limit)
-{
-	struct r6040_private *priv = netdev_priv(dev);
-	int count=0;
-	struct r6040_descriptor *descptr = priv->rx_remove_ptr;
-	struct sk_buff *skb_ptr, *new_skb;
-	char obuf[2*32+1] __attribute__ ((unused)); /* for debugging */
-
-	while (count < limit && !(descptr->status & DESC_STATUS_OWNER_MAC)) {
-		/* limit not reached and the descriptor belongs to the CPU */
-
-		dbg(DBG_RX_DESCR, "descptr %p status x%x data len x%x\n",
-		    descptr, descptr->status, descptr->len);
-		
-		/* Check for errors */
-		if (descptr->status & DESC_STATUS_RX_ERR) {
-		
-			dev->stats.rx_errors++;
-			
-			if (descptr->status & (DESC_STATUS_RX_ERR_DRIBBLE|
-					       DESC_STATUS_RX_ERR_BUFLEN|
-					       DESC_STATUS_RX_ERR_LONG|
-					       DESC_STATUS_RX_ERR_RUNT)) {
-				/* packet too long or too short*/
-				dev->stats.rx_length_errors++;
-			}
-
-			if (descptr->status & DESC_STATUS_RX_ERR_CRC) {
-				dev->stats.rx_crc_errors++;
-			}
-			goto next_descr;
-		}
-		
-		/* successful received packet */
-		
-		/* first try to allocate new skb. If this fails
-		   we drop the packet and leave the old skb there.*/
-		new_skb = netdev_alloc_skb(dev, MAX_BUF_SIZE);
-		if (!new_skb) {
-			dev->stats.rx_dropped++;
-			goto next_descr;
-		}
-		skb_ptr = descptr->skb_ptr;
-		skb_ptr->dev = priv->dev;
-		/* Do not count the CRC */
-		skb_put(skb_ptr, descptr->len - 4);
-		pci_unmap_single(priv->pdev, le32_to_cpu(descptr->buf),
-				 MAX_BUF_SIZE, PCI_DMA_FROMDEVICE);
-		skb_ptr->protocol = eth_type_trans(skb_ptr, priv->dev);
-
-		dbg(DBG_RX_DATA, "rx len x%x: %s...\n",
-		    descptr->len, 
-		    hex2str(skb_ptr->data, obuf, sizeof(obuf)/2, '\0'));
-
-		/* Send to upper layer */
-		netif_receive_skb(skb_ptr);
-		dev->last_rx = jiffies;
-		dev->stats.rx_packets++;
-		dev->stats.rx_bytes += (descptr->len-4);
-
-		/* put new skb into descriptor */
-		descptr->skb_ptr = new_skb;
-		descptr->buf = cpu_to_le32(pci_map_single(priv->pdev,
-			descptr->skb_ptr->data,
-			MAX_BUF_SIZE, PCI_DMA_FROMDEVICE));
-
-next_descr:		
-		/* put the descriptor back to the MAC */
-		descptr->status = DESC_STATUS_OWNER_MAC;
-		descptr = descptr->vndescp;
-		count++; /* shall we count errors and dropped packets as well? */
-	} /* while (limit && !(descptr->status & DESC_STATUS_OWNER_MAC)) */
-
-	/* remember next descriptor to check for rx */
-	priv->rx_remove_ptr = descptr;
-
-	return count;
-}
-
-void r6040_tx(struct net_device *dev)
-{
-	struct r6040_private *priv = netdev_priv(dev);
-	struct r6040_descriptor *descptr;
-	void __iomem *ioaddr = priv->base;
-	struct sk_buff *skb_ptr;
-	u16 err;
-
-	spin_lock(&priv->lock);
-	descptr = priv->tx_remove_ptr;
-	while (priv->tx_free_desc < TX_DCNT) {
-		/* Check for errors */
-		err = ioread16(ioaddr + MLSR);
-
-		if (err & 0x0200)
-			dev->stats.rx_fifo_errors++;
-		if (err & (0x2000 | 0x4000))
-			dev->stats.tx_carrier_errors++;
-
-		dbg(DBG_TX_DONE, "descptr %p status x%x err x%x jiffies %lu\n",
-		    descptr, descptr->status, err, jiffies);
-
-		if (descptr->status & 0x8000)
-			break; /* Not complete */
-		skb_ptr = descptr->skb_ptr;
-		pci_unmap_single(priv->pdev, le32_to_cpu(descptr->buf),
-			skb_ptr->len, PCI_DMA_TODEVICE);
-		/* Free buffer */
-		dev_kfree_skb_irq(skb_ptr);
-		descptr->skb_ptr = NULL;
-		/* To next descriptor */
-		descptr = descptr->vndescp;
-		priv->tx_free_desc++;
-	}
-	priv->tx_remove_ptr = descptr;
-
-	if (priv->tx_free_desc)
-		netif_wake_queue(dev);
-	spin_unlock(&priv->lock);
-}
-
-int r6040_poll(struct napi_struct *napi, int budget)
-{
-	struct r6040_private *priv =
-		container_of(napi, struct r6040_private, napi);
-	struct net_device *dev = priv->dev;
-	void __iomem *ioaddr = priv->base;
-	int work_done;
-
-	work_done = r6040_rx(dev, budget);
-
-	dbg(DBG_POLL, "budget x%x done x%x\n", budget, work_done);
-
-	if (work_done < budget) {
-		netif_rx_complete(dev, napi);
-		/* Enable RX interrupt */
-		iowrite16(ioread16(ioaddr + MIER) | RX_INTS, ioaddr + MIER);
-	}
-	return work_done;
-}
-
-/* The RDC interrupt handler. */
-irqreturn_t r6040_interrupt(int irq, void *dev_id)
-{
-	struct net_device *dev = dev_id;
-	struct r6040_private *lp = netdev_priv(dev);
-	void __iomem *ioaddr = lp->base;
-	u16 status;
-
-	/* Read MISR status and clear */
-	status = ioread16(ioaddr + MISR);
-
-	dbg(DBG_IRQ, "status x%x jiffies %lu\n", status, jiffies);
-
-	if (status == 0x0000 || status == 0xffff)
-		return IRQ_NONE;
-
-	/* rx early / rx finish interrupt
-	   or rx descriptor unavail. */
-	if (status & RX_INTS) {
-		if (status & RX_NO_DESC) {
-			/* rx descriptor unavail. */
-			dev->stats.rx_dropped++;
-			dev->stats.rx_missed_errors++;
-		}
-		/* Mask off RX interrupts */
-		iowrite16(ioread16(ioaddr + MIER) & ~RX_INTS, ioaddr + MIER);
-		netif_rx_schedule(dev, &lp->napi);
-	}
-
-	/* rx FIFO full */
-	if (status & RX_FIFO_FULL) {
-		dev->stats.rx_fifo_errors++;
-	}
-	
-	/* TX interrupt request */
-	if (status & 0x10)
-		r6040_tx(dev);
-
-	return IRQ_HANDLED;
-}
-
-#ifdef CONFIG_NET_POLL_CONTROLLER
-void r6040_poll_controller(struct net_device *dev)
-{
-	disable_irq(dev->irq);
-	r6040_interrupt(dev->irq, dev);
-	enable_irq(dev->irq);
-}
-#endif
-
-/* Init RDC MAC */
-int r6040_up(struct net_device *dev)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-	void __iomem *ioaddr = lp->base;
-	int rc;
-
-	dbg(DBG_INIT, "ENTER\n");
-
-	/* Initialise and alloc RX/TX buffers */
-	r6040_init_txbufs(dev);
-	if ((rc=r6040_alloc_rxbufs(dev)))
-		return rc;
-
-	/* Read the PHY ID */
-	lp->switch_sig = phy_read(ioaddr, 0, 2);
-
-	if (lp->switch_sig  == ICPLUS_PHY_ID) {
-		phy_write(ioaddr, 29, 31, 0x175C); /* Enable registers */
-		lp->phy_mode = 0x8000;
-	} else {
-		/* PHY Mode Check */
-		phy_write(ioaddr, lp->phy_addr, 4, PHY_CAP);
-		phy_write(ioaddr, lp->phy_addr, 0, PHY_MODE);
-
-		if (PHY_MODE == 0x3100)
-			lp->phy_mode = phy_mode_chk(dev);
-		else
-			lp->phy_mode = (PHY_MODE & 0x0100) ? 0x8000:0x0;
-	}
-	
-/* configure duplex mode */
-	lp->mcr0 |= lp->phy_mode;
-
-	/* improve performance (by RDC guys) */
-	phy_write(ioaddr, 30, 17, (phy_read(ioaddr, 30, 17) | 0x4000));
-	phy_write(ioaddr, 30, 17, ~((~phy_read(ioaddr, 30, 17)) | 0x2000));
-	phy_write(ioaddr, 0, 19, 0x0000);
-	phy_write(ioaddr, 0, 30, 0x01F0);
-
-	/* Reset MAC and init all registers */
-	r6040_init_mac_regs(lp);
-
-	return 0;
-}
-
-/*
-  A periodic timer routine
-	Polling PHY Chip Link Status
-*/
-void r6040_timer(unsigned long data)
-{
-	struct net_device *dev = (struct net_device *)data;
-	struct r6040_private *lp = netdev_priv(dev);
-	void __iomem *ioaddr = lp->base;
-	u16 phy_mode;
-
-	/* Polling PHY Chip Status */
-	if (PHY_MODE == 0x3100)
-		phy_mode = phy_mode_chk(dev);
-	else
-		phy_mode = (PHY_MODE & 0x0100) ? 0x8000:0x0;
-
-	if (phy_mode != lp->phy_mode) {
-		lp->phy_mode = phy_mode;
-		lp->mcr0 = (lp->mcr0 & 0x7fff) | phy_mode;
-		iowrite16(lp->mcr0, ioaddr);
-		printk(KERN_INFO "Link Change x%x \n", ioread16(ioaddr));
-	}
-
-	/* Timer active again */
-	mod_timer(&lp->timer, jiffies + round_jiffies(HZ));
-}
-
-int r6040_open(struct net_device *dev)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-	int ret;
-
-	dbg(DBG_OPEN, "ENTER\n");
-	/* Request IRQ and Register interrupt handler */
-	ret = request_irq(dev->irq, &r6040_interrupt,
-		IRQF_SHARED, dev->name, dev);
-	if (ret)
-		return ret;
-
-	dbg(DBG_OPEN, "got irq %d\n", dev->irq);
-
-	/* Allocate Descriptor memory */
-	lp->rx_ring =
-		pci_alloc_consistent(lp->pdev, RX_DESC_SIZE, &lp->rx_ring_dma);
-	if (!lp->rx_ring)
-		return -ENOMEM;
-
-	dbg(DBG_OPEN, "allocated rx ring\n");
-
-	lp->tx_ring =
-		pci_alloc_consistent(lp->pdev, TX_DESC_SIZE, &lp->tx_ring_dma);
-	if (!lp->tx_ring) {
-		pci_free_consistent(lp->pdev, RX_DESC_SIZE, lp->rx_ring,
-				     lp->rx_ring_dma);
-		return -ENOMEM;
-	}
-
-	dbg(DBG_OPEN, "allocated tx ring\n");
-
-	if ((ret=r6040_up(dev))) {
-		pci_free_consistent(lp->pdev, TX_DESC_SIZE, lp->tx_ring,
-				    lp->tx_ring_dma);
-		pci_free_consistent(lp->pdev, RX_DESC_SIZE, lp->rx_ring,
-				     lp->rx_ring_dma);
-		return ret;
-	}
-		
-	napi_enable(&lp->napi);
-	netif_start_queue(dev);
-
-	/* set and active a timer process */
-	setup_timer(&lp->timer, r6040_timer, (unsigned long) dev);
-	if (lp->switch_sig != ICPLUS_PHY_ID)
-		mod_timer(&lp->timer, jiffies + HZ);
-	return 0;
-}
-
-int r6040_start_xmit(struct sk_buff *skb, struct net_device *dev)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-	struct r6040_descriptor *descptr;
-	void __iomem *ioaddr = lp->base;
-	unsigned long flags;
-	int ret = NETDEV_TX_OK;
-
-	/* Critical Section */
-	spin_lock_irqsave(&lp->lock, flags);
-
-	/* TX resource check */
-	if (!lp->tx_free_desc) {
-		spin_unlock_irqrestore(&lp->lock, flags);
-		netif_stop_queue(dev);
-		printk(KERN_ERR DRV_NAME ": no tx descriptor\n");
-		ret = NETDEV_TX_BUSY;
-		return ret;
-	}
-
-	/* Statistic Counter */
-	dev->stats.tx_packets++;
-	dev->stats.tx_bytes += skb->len;
-	/* Set TX descriptor & Transmit it */
-	lp->tx_free_desc--;
-	descptr = lp->tx_insert_ptr;
-	if (skb->len < MISR)
-		descptr->len = MISR;
-	else
-		descptr->len = skb->len;
-
-	descptr->skb_ptr = skb;
-	descptr->buf = cpu_to_le32(pci_map_single(lp->pdev,
-		skb->data, skb->len, PCI_DMA_TODEVICE));
-
-	dbg(DBG_TX_DESCR, "desc @ %p: len x%x buf %08x skb->data %p skb->len x%x jiffies %lu\n",
-	    descptr, descptr->len, descptr->buf, skb->data, skb->len, jiffies);
-
-	{
-		char obuf[2*32+1];
-		dbg(DBG_TX_DATA, "tx len x%x: %s\n",
-		    descptr->len, hex2str(skb->data, obuf, sizeof(obuf)/2, '\0'));
-	}
-
-	descptr->status = 0x8000;
-	/* Trigger the MAC to check the TX descriptor */
-	iowrite16(0x01, ioaddr + MTPR);
-	lp->tx_insert_ptr = descptr->vndescp;
-
-	/* If no tx resource, stop */
-	if (!lp->tx_free_desc)
-		netif_stop_queue(dev);
-
-	dev->trans_start = jiffies;
-	spin_unlock_irqrestore(&lp->lock, flags);
-	return ret;
-}
-
-/*! set MAC addresses and promiscous mode */
-void r6040_multicast_list(struct net_device *dev)
-{
-	struct r6040_private *lp = netdev_priv(dev);
-	void __iomem *ioaddr = lp->base;
-	u16 *adrp;
-	u16 reg;
-	unsigned long flags;
-	struct dev_mc_list *dmi = dev->mc_list;
-	int i;
-	char obuf[3*ETH_ALEN] __attribute__ ((unused));
-
-	/* MAC Address */
-	adrp = (u16 *)dev->dev_addr;
-	iowrite16(adrp[0], ioaddr + MID_0L);
-	iowrite16(adrp[1], ioaddr + MID_0M);
-	iowrite16(adrp[2], ioaddr + MID_0H);
-
-	dbg(DBG_MAC_ADDR, "%s: set MAC addr %s\n", 
-	    dev->name, hex2str(dev->dev_addr, obuf, ETH_ALEN, ':'));
-
-	/* Promiscous Mode */
-	spin_lock_irqsave(&lp->lock, flags);
-
-	/* Clear AMCP & PROM bits */
-	reg = ioread16(ioaddr) & ~0x0120;
-	if (dev->flags & IFF_PROMISC) {
-		reg |= 0x0020;
-		lp->mcr0 |= 0x0020;
-	}
-	/* Too many multicast addresses
-	 * accept all traffic */
-	else if ((dev->mc_count > MCAST_MAX)
-		|| (dev->flags & IFF_ALLMULTI))
-		reg |= 0x0020;
-
-	iowrite16(reg, ioaddr);
-	spin_unlock_irqrestore(&lp->lock, flags);
-
-	/* Build the hash table */
-	if (dev->mc_count > MCAST_MAX) {
-		u16 hash_table[4];
-		u32 crc;
-
-		for (i = 0; i < 4; i++)
-			hash_table[i] = 0;
-
-		for (i = 0; i < dev->mc_count; i++) {
-			char *addrs = dmi->dmi_addr;
-
-			dmi = dmi->next;
-
-			if (!(*addrs & 1))
-				continue;
-
-			crc = ether_crc_le(6, addrs);
-			crc >>= 26;
-			hash_table[crc >> 4] |= 1 << (15 - (crc & 0xf));
-		}
-		/* Write the index of the hash table */
-		for (i = 0; i < 4; i++)
-			iowrite16(hash_table[i] << 14, ioaddr + MCR1);
-		/* Fill the MAC hash tables with their values */
-		iowrite16(hash_table[0], ioaddr + MAR0);
-		iowrite16(hash_table[1], ioaddr + MAR1);
-		iowrite16(hash_table[2], ioaddr + MAR2);
-		iowrite16(hash_table[3], ioaddr + MAR3);
-	}
-	/* Multicast Address 1~4 case */
-	for (i = 0, dmi; (i < dev->mc_count) && (i < MCAST_MAX); i++) {
-		adrp = (u16 *)dmi->dmi_addr;
-		iowrite16(adrp[0], ioaddr + MID_1L + 8*i);
-		iowrite16(adrp[1], ioaddr + MID_1M + 8*i);
-		iowrite16(adrp[2], ioaddr + MID_1H + 8*i);
-		dmi = dmi->next;
-	}
-	for (i = dev->mc_count; i < MCAST_MAX; i++) {
-		iowrite16(0xffff, ioaddr + MID_0L + 8*i);
-		iowrite16(0xffff, ioaddr + MID_0M + 8*i);
-		iowrite16(0xffff, ioaddr + MID_0H + 8*i);
-	}
-}
-
-STATIC void netdev_get_drvinfo(struct net_device *dev,
-			struct ethtool_drvinfo *info)
-{
-	struct r6040_private *rp = netdev_priv(dev);
-
-	strcpy(info->driver, DRV_NAME);
-	strcpy(info->version, DRV_VERSION);
-	strcpy(info->bus_info, pci_name(rp->pdev));
-}
-
-STATIC int netdev_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
-{
-	struct r6040_private *rp = netdev_priv(dev);
-	int rc;
-
-	spin_lock_irq(&rp->lock);
-	rc = mii_ethtool_gset(&rp->mii_if, cmd);
-	spin_unlock_irq(&rp->lock);
-
-	return rc;
-}
-
-STATIC int netdev_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
-{
-	struct r6040_private *rp = netdev_priv(dev);
-	int rc;
-
-	spin_lock_irq(&rp->lock);
-	rc = mii_ethtool_sset(&rp->mii_if, cmd);
-	spin_unlock_irq(&rp->lock);
-	r6040_set_carrier(&rp->mii_if);
-
-	return rc;
-}
-
-STATIC u32 netdev_get_link(struct net_device *dev)
-{
-	struct r6040_private *rp = netdev_priv(dev);
-
-	return mii_link_ok(&rp->mii_if);
-}
-
-static struct ethtool_ops netdev_ethtool_ops = {
-	.get_drvinfo		= netdev_get_drvinfo,
-	.get_settings		= netdev_get_settings,
-	.set_settings		= netdev_set_settings,
-	.get_link		= netdev_get_link,
-};
-
-int __devinit r6040_init_one(struct pci_dev *pdev,
-					 const struct pci_device_id *ent)
-{
-	struct net_device *dev, *parent_dev;
-	struct r6040_private *lp;
-	void __iomem *ioaddr;
-	int err, io_size = R6040_IO_SIZE;
-	static int card_idx = -1;
-	long pioaddr;
-
-	printk(KERN_INFO "%s\n", version);
-	printk(KERN_INFO DRV_NAME ": debug %x\n", debug);
-
-	err = pci_enable_device(pdev);
-	if (err)
-		return err;
-
-	/* this should always be supported */
-	if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
-		printk(KERN_ERR DRV_NAME "32-bit PCI DMA addresses"
-				"not supported by the card\n");
-		return -ENODEV;
-	}
-	if (pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK)) {
-		printk(KERN_ERR DRV_NAME "32-bit PCI DMA addresses"
-				"not supported by the card\n");
-		return -ENODEV;
-	}
-
-	/* IO Size check */
-	if (pci_resource_len(pdev, 0) < io_size) {
-		printk(KERN_ERR "Insufficient PCI resources, aborting\n");
-		return -EIO;
-	}
-
-	pioaddr = pci_resource_start(pdev, 0);	/* IO map base address */
-	pci_set_master(pdev);
-
-	dev = alloc_etherdev(sizeof(struct r6040_private));
-	if (!dev) {
-		printk(KERN_ERR "Failed to allocate etherdev\n");
-		return -ENOMEM;
-	}
-	SET_NETDEV_DEV(dev, &pdev->dev);
-	lp = netdev_priv(dev);
-
-	if (pci_request_regions(pdev, DRV_NAME)) {
-		printk(KERN_ERR DRV_NAME ": Failed to request PCI regions\n");
-		err = -ENODEV;
-		goto err_out_disable;
-	}
-
-	ioaddr = pci_iomap(pdev, 0, io_size);
-	if (!ioaddr) {
-		printk(KERN_ERR "ioremap failed for device %s\n",
-			pci_name(pdev));
-		return -EIO;
-	}
-
-	/* Init system & device */
-	lp->base = ioaddr;
-	dev->irq = pdev->irq;
-
-	spin_lock_init(&lp->lock);
-	pci_set_drvdata(pdev, dev);
-
-	card_idx++;
-
-	/* Link new device into r6040_root_dev */
-	lp->pdev = pdev;
-
-	lp->dev = dev;
-
-	/* Init RDC private data */
-	lp->mcr0 = 0x1002;
-	lp->phy_addr = phy_table[card_idx];
-	lp->switch_sig = 0;
-
-	/* The RDC-specific entries in the device structure. */
-	dev->open = &r6040_open;
-	dev->hard_start_xmit = &r6040_start_xmit;
-	dev->stop = &r6040_close;
-	dev->get_stats = r6040_get_stats;
-	dev->set_multicast_list = &r6040_multicast_list;
-	dev->do_ioctl = &r6040_ioctl;
-	dev->ethtool_ops = &netdev_ethtool_ops;
-	dev->tx_timeout = &r6040_tx_timeout;
-	dev->watchdog_timeo = TX_TIMEOUT;
-
-	/*
-	You must specify a netdevice with a "parent=" parameter, whose address
-	is copied, or an array of bytes comprising a literal address; otherwise
-	the (default) address of the Sitecom WL-153 bootloader is used.
-	*/
-	memcpy(dev->dev_addr, mac_base, ETH_ALEN);
-	if (parent) {
-		parent_dev = __dev_get_by_name(&init_net, parent);
-		if (parent_dev)
-			memcpy(dev->dev_addr, parent_dev->dev_addr, ETH_ALEN);
-	}
-	dev->dev_addr[ETH_ALEN-1] += card_idx ^ reverse; /* + 0 or 1 */
-
-#ifdef CONFIG_NET_POLL_CONTROLLER
-	dev->poll_controller = r6040_poll_controller;
-#endif
-	netif_napi_add(dev, &lp->napi, r6040_poll, 64);
-	lp->mii_if.dev = dev;
-	lp->mii_if.mdio_read = mdio_read;
-	lp->mii_if.mdio_write = mdio_write;
-	lp->mii_if.phy_id = lp->phy_addr;
-	lp->mii_if.phy_id_mask = 0x1f;
-	lp->mii_if.reg_num_mask = 0x1f;
-
-	if (reverse && ((card_idx & 1) == 0) && (dev_alloc_name(dev, dev->name)
-			>= 0))
-		for (err = strlen(dev->name); err; err--) {
-			if (dev->name[err - 1]++ != '9')
-				break;
-			dev->name[err - 1] = '0';
-		}
-
-	/* Register net device. After this dev->name assign */
-	err = register_netdev(dev);
-	if (err) {
-		printk(KERN_ERR DRV_NAME ": Failed to register net device\n");
-		goto err_out_res;
-	}
-
-	dbg(DBG_INIT, "%s successfully registered\n", dev->name);
-	return 0;
-
-err_out_res:
-	pci_release_regions(pdev);
-err_out_disable:
-	pci_disable_device(pdev);
-	pci_set_drvdata(pdev, NULL);
-	free_netdev(dev);
-
-	return err;
-}
-
-void __devexit r6040_remove_one(struct pci_dev *pdev)
-{
-	struct net_device *dev = pci_get_drvdata(pdev);
-
-	unregister_netdev(dev);
-	pci_release_regions(pdev);
-	free_netdev(dev);
-	pci_disable_device(pdev);
-	pci_set_drvdata(pdev, NULL);
-}
-
-
-static struct pci_device_id r6040_pci_tbl[] = {
-	{ PCI_DEVICE(PCI_VENDOR_ID_RDC, 0x6040) },
-	{ 0 }
-};
-MODULE_DEVICE_TABLE(pci, r6040_pci_tbl);
-
-static struct pci_driver r6040_driver = {
-	.name		= DRV_NAME,
-	.id_table	= r6040_pci_tbl,
-	.probe		= r6040_init_one,
-	.remove		= __devexit_p(r6040_remove_one),
-};
-
-
-static int __init r6040_init(void)
-{
-	return pci_register_driver(&r6040_driver);
-}
-
-
-static void __exit r6040_cleanup(void)
-{
-	pci_unregister_driver(&r6040_driver);
-}
-
-module_init(r6040_init);
-module_exit(r6040_cleanup);
diff --git a/target/linux/rdc/files-2.6.24/include/asm-i386/gpio.h b/target/linux/rdc/files-2.6.24/include/asm-i386/gpio.h
deleted file mode 100644
index ff87fca0ca..0000000000
--- a/target/linux/rdc/files-2.6.24/include/asm-i386/gpio.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _ASM_I386_GPIO_H
-#define _ASM_I386_GPIO_H
-
-#include <gpio.h>
-
-#endif /* _ASM_I386_GPIO_H */
diff --git a/target/linux/rdc/files-2.6.24/include/asm-i386/mach-generic/gpio.h b/target/linux/rdc/files-2.6.24/include/asm-i386/mach-generic/gpio.h
deleted file mode 100644
index 5305dcb96d..0000000000
--- a/target/linux/rdc/files-2.6.24/include/asm-i386/mach-generic/gpio.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef __ASM_MACH_GENERIC_GPIO_H
-#define __ASM_MACH_GENERIC_GPIO_H
-
-int gpio_request(unsigned gpio, const char *label);
-void gpio_free(unsigned gpio);
-int gpio_direction_input(unsigned gpio);
-int gpio_direction_output(unsigned gpio, int value);
-int gpio_get_value(unsigned gpio);
-void gpio_set_value(unsigned gpio, int value);
-int gpio_to_irq(unsigned gpio);
-int irq_to_gpio(unsigned irq);
-
-#include <asm-generic/gpio.h>           /* cansleep wrappers */
-
-#endif /* __ASM_MACH_GENERIC_GPIO_H */
diff --git a/target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/gpio.h b/target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/gpio.h
deleted file mode 100644
index 2368bd7583..0000000000
--- a/target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/gpio.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef _RDC_GPIO_H
-#define _RDC_GPIO_H
-
-extern int rdc_gpio_get_value(unsigned gpio);
-extern void rdc_gpio_set_value(unsigned gpio, int value);
-extern int rdc_gpio_direction_input(unsigned gpio);
-extern int rdc_gpio_direction_output(unsigned gpio, int value);
-
-
-/* Wrappers for the arch-neutral GPIO API */
-
-static inline int gpio_request(unsigned gpio, const char *label)
-{
-        /* Not yet implemented */
-        return 0;
-}
-
-static inline void gpio_free(unsigned gpio)
-{
-        /* Not yet implemented */
-}
-
-static inline int gpio_direction_input(unsigned gpio)
-{
-        return rdc_gpio_direction_input(gpio);
-}
-
-static inline int gpio_direction_output(unsigned gpio, int value)
-{
-        return rdc_gpio_direction_output(gpio, value);
-}
-
-static inline int gpio_get_value(unsigned gpio)
-{
-        return rdc_gpio_get_value(gpio);
-}
-
-static inline void gpio_set_value(unsigned gpio, int value)
-{
-        rdc_gpio_set_value(gpio, value);
-}
-
-static inline int gpio_to_irq(unsigned gpio)
-{
-        return gpio;
-}
-
-static inline int irq_to_gpio(unsigned irq)
-{
-        return irq;
-}
-
-/* For cansleep */
-#include <asm-generic/gpio.h>
-
-#endif /* _RDC_GPIO_H_ */
diff --git a/target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/rdc321x_defs.h b/target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/rdc321x_defs.h
deleted file mode 100644
index 838ba8f64f..0000000000
--- a/target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/rdc321x_defs.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#define PFX	"rdc321x: "
-
-/* General purpose configuration and data registers */
-#define RDC3210_CFGREG_ADDR     0x0CF8
-#define RDC3210_CFGREG_DATA     0x0CFC
-#define RDC_MAX_GPIO		0x3A
diff --git a/target/linux/rdc/files-2.6.24/include/asm-x86/gpio.h b/target/linux/rdc/files-2.6.24/include/asm-x86/gpio.h
deleted file mode 100644
index ff87fca0ca..0000000000
--- a/target/linux/rdc/files-2.6.24/include/asm-x86/gpio.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _ASM_I386_GPIO_H
-#define _ASM_I386_GPIO_H
-
-#include <gpio.h>
-
-#endif /* _ASM_I386_GPIO_H */
diff --git a/target/linux/rdc/files-2.6.24/include/asm-x86/mach-generic/gpio.h b/target/linux/rdc/files-2.6.24/include/asm-x86/mach-generic/gpio.h
deleted file mode 100644
index 5305dcb96d..0000000000
--- a/target/linux/rdc/files-2.6.24/include/asm-x86/mach-generic/gpio.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef __ASM_MACH_GENERIC_GPIO_H
-#define __ASM_MACH_GENERIC_GPIO_H
-
-int gpio_request(unsigned gpio, const char *label);
-void gpio_free(unsigned gpio);
-int gpio_direction_input(unsigned gpio);
-int gpio_direction_output(unsigned gpio, int value);
-int gpio_get_value(unsigned gpio);
-void gpio_set_value(unsigned gpio, int value);
-int gpio_to_irq(unsigned gpio);
-int irq_to_gpio(unsigned irq);
-
-#include <asm-generic/gpio.h>           /* cansleep wrappers */
-
-#endif /* __ASM_MACH_GENERIC_GPIO_H */
diff --git a/target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/gpio.h b/target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/gpio.h
deleted file mode 100644
index 2368bd7583..0000000000
--- a/target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/gpio.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef _RDC_GPIO_H
-#define _RDC_GPIO_H
-
-extern int rdc_gpio_get_value(unsigned gpio);
-extern void rdc_gpio_set_value(unsigned gpio, int value);
-extern int rdc_gpio_direction_input(unsigned gpio);
-extern int rdc_gpio_direction_output(unsigned gpio, int value);
-
-
-/* Wrappers for the arch-neutral GPIO API */
-
-static inline int gpio_request(unsigned gpio, const char *label)
-{
-        /* Not yet implemented */
-        return 0;
-}
-
-static inline void gpio_free(unsigned gpio)
-{
-        /* Not yet implemented */
-}
-
-static inline int gpio_direction_input(unsigned gpio)
-{
-        return rdc_gpio_direction_input(gpio);
-}
-
-static inline int gpio_direction_output(unsigned gpio, int value)
-{
-        return rdc_gpio_direction_output(gpio, value);
-}
-
-static inline int gpio_get_value(unsigned gpio)
-{
-        return rdc_gpio_get_value(gpio);
-}
-
-static inline void gpio_set_value(unsigned gpio, int value)
-{
-        rdc_gpio_set_value(gpio, value);
-}
-
-static inline int gpio_to_irq(unsigned gpio)
-{
-        return gpio;
-}
-
-static inline int irq_to_gpio(unsigned irq)
-{
-        return irq;
-}
-
-/* For cansleep */
-#include <asm-generic/gpio.h>
-
-#endif /* _RDC_GPIO_H_ */
diff --git a/target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/rdc321x_defs.h b/target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/rdc321x_defs.h
deleted file mode 100644
index 838ba8f64f..0000000000
--- a/target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/rdc321x_defs.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#define PFX	"rdc321x: "
-
-/* General purpose configuration and data registers */
-#define RDC3210_CFGREG_ADDR     0x0CF8
-#define RDC3210_CFGREG_DATA     0x0CFC
-#define RDC_MAX_GPIO		0x3A
diff --git a/target/linux/rdc/patches-2.6.24/001-rdc3210_flash_map.patch b/target/linux/rdc/patches-2.6.24/001-rdc3210_flash_map.patch
deleted file mode 100644
index 6da095df58..0000000000
--- a/target/linux/rdc/patches-2.6.24/001-rdc3210_flash_map.patch
+++ /dev/null
@@ -1,63 +0,0 @@
---- a/drivers/mtd/maps/Kconfig
-+++ b/drivers/mtd/maps/Kconfig
-@@ -117,6 +117,50 @@ config MTD_PNC2000
- 	  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
---- a/drivers/mtd/maps/Makefile
-+++ b/drivers/mtd/maps/Makefile
-@@ -30,6 +30,7 @@ obj-$(CONFIG_MTD_PMC_MSP_EVM)   += pmcms
- obj-$(CONFIG_MTD_PMC_MSP_RAMROOT)+= pmcmsp-ramroot.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/patches-2.6.24/001-x86_generic_gpio.patch b/target/linux/rdc/patches-2.6.24/001-x86_generic_gpio.patch
deleted file mode 100644
index 11c894bcf2..0000000000
--- a/target/linux/rdc/patches-2.6.24/001-x86_generic_gpio.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/arch/x86/Kconfig
-+++ b/arch/x86/Kconfig
-@@ -81,6 +81,10 @@ config GENERIC_BUG
- 	default y
- 	depends on BUG
- 
-+config GENERIC_GPIO
-+       bool
-+       default n
-+
- config GENERIC_HWEIGHT
- 	bool
- 	default y
diff --git a/target/linux/rdc/patches-2.6.24/002-r6040_ethernet.patch b/target/linux/rdc/patches-2.6.24/002-r6040_ethernet.patch
deleted file mode 100644
index 97d6e7d41f..0000000000
--- a/target/linux/rdc/patches-2.6.24/002-r6040_ethernet.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- a/drivers/net/Kconfig
-+++ b/drivers/net/Kconfig
-@@ -1449,6 +1449,24 @@ config APRICOT
- 	  To compile this driver as a module, choose M here. 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 440x/47xx ethernet support"
- 	depends on SSB_POSSIBLE
---- a/drivers/net/Makefile
-+++ b/drivers/net/Makefile
-@@ -116,6 +116,7 @@ obj-$(CONFIG_LNE390) += lne390.o 8390.o
- obj-$(CONFIG_NE3210) += ne3210.o 8390.o
- obj-$(CONFIG_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
- obj-$(CONFIG_AX88796) += ax88796.o
diff --git a/target/linux/rdc/patches-2.6.24/003-rootfstype.patch b/target/linux/rdc/patches-2.6.24/003-rootfstype.patch
deleted file mode 100644
index 3ad90472a8..0000000000
--- a/target/linux/rdc/patches-2.6.24/003-rootfstype.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/init/do_mounts.c
-+++ b/init/do_mounts.c
-@@ -256,6 +256,8 @@ static void __init get_fs_names(char *pa
- {
- 	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/patches-2.6.24/004-rdc_fixes.patch b/target/linux/rdc/patches-2.6.24/004-rdc_fixes.patch
deleted file mode 100644
index a42e5409c7..0000000000
--- a/target/linux/rdc/patches-2.6.24/004-rdc_fixes.patch
+++ /dev/null
@@ -1,73 +0,0 @@
---- a/arch/x86/Kconfig
-+++ b/arch/x86/Kconfig
-@@ -304,6 +304,17 @@ config X86_VSMP
- 	  supposed to run on these EM64T-based machines.  Only choose this option
- 	  if you have one of these machines.
- 
-+config X86_RDC
-+	bool "Support for RDC 3211 boards"
-+	select GENERIC_GPIO
-+	select LEDS_GPIO
-+	select LEDS_CLASS
-+	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 SCHED_NO_NO_OMIT_FRAME_POINTER
---- a/arch/x86/kernel/reboot_fixups_32.c
-+++ b/arch/x86/kernel/reboot_fixups_32.c
-@@ -30,6 +30,17 @@ static void cs5536_warm_reset(struct pci
- 	udelay(50); /* shouldn't get here but be safe and spin a while */
- }
- 
-+static void r8610_reset(struct pci_dev *dev)
-+{
-+       int i;
-+
-+       outl(0x80003840,0xCF8);
-+       i=inl(0xCFC);
-+       i |= 0x1600;
-+       outl(i,0xCFC);
-+       outb(1,0x92);
-+}
-+
- struct device_fixup {
- 	unsigned int vendor;
- 	unsigned int device;
-@@ -40,6 +51,7 @@ static struct device_fixup fixups_table[
- { 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 },
- { PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_SC1100_BRIDGE, cs5530a_warm_reset },
-+{ PCI_VENDOR_ID_RDC, PCI_DEVICE_ID_RDC_R6030, r8610_reset },
- };
- 
- /*
---- a/arch/x86/Makefile_32
-+++ b/arch/x86/Makefile_32
-@@ -99,6 +99,11 @@ mflags-$(CONFIG_X86_ES7000)	:= -Iinclude
- mcore-$(CONFIG_X86_ES7000)	:= arch/x86/mach-default
- core-$(CONFIG_X86_ES7000)	:= arch/x86/mach-es7000/
- 
-+# RDC subarch support
-+mflags-$(CONFIG_X86_RDC)       := -Iinclude/asm-x86/mach-rdc
-+mcore-$(CONFIG_X86_RDC)        := arch/x86/mach-default
-+core-$(CONFIG_X86_RDC)         += arch/x86/mach-rdc/
-+
- # Xen paravirtualization support
- core-$(CONFIG_XEN)		+= arch/x86/xen/
- 
---- a/include/asm-x86/timex.h
-+++ b/include/asm-x86/timex.h
-@@ -7,6 +7,8 @@
- 
- #ifdef CONFIG_X86_ELAN
- #  define PIT_TICK_RATE 1189200 /* AMD Elan has different frequency! */
-+#elif defined(CONFIG_X86_RDC)
-+#  define PIT_TICK_RATE 1041667 /* Underlying HZ for R8610 */
- #else
- #  define PIT_TICK_RATE 1193182 /* Underlying HZ */
- #endif
diff --git a/target/linux/rdc/patches-2.6.24/004-yenta_mystery.patch b/target/linux/rdc/patches-2.6.24/004-yenta_mystery.patch
deleted file mode 100644
index 7f202c6c77..0000000000
--- a/target/linux/rdc/patches-2.6.24/004-yenta_mystery.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/drivers/pcmcia/yenta_socket.c
-+++ b/drivers/pcmcia/yenta_socket.c
-@@ -1171,6 +1171,17 @@ static int __devinit yenta_probe (struct
- 
- 	/* We must finish initialization here */
- 
-+#ifdef CONFIG_X86_RDC
-+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044f044 */
-+#define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0844b060
-+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044d044 */
-+
-+	config_writel(socket, 32*4, YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK);
-+	config_writel(socket, 35*4, 0x00000022);
-+	config_writel(socket, 36*4, 0x60200000);
-+	config_writel(socket, 40*4, 0x7e020000);
-+#endif
-+
- 	if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, IRQF_SHARED, "yenta", socket)) {
- 		/* No IRQ or request_irq failed. Poll */
- 		socket->cb_irq = 0; /* But zero is a valid IRQ number. */
diff --git a/target/linux/rdc/patches-2.6.24/005-cmdline_setup.patch b/target/linux/rdc/patches-2.6.24/005-cmdline_setup.patch
deleted file mode 100644
index 934d36d67e..0000000000
--- a/target/linux/rdc/patches-2.6.24/005-cmdline_setup.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/arch/x86/kernel/setup_32.c
-+++ b/arch/x86/kernel/setup_32.c
-@@ -609,6 +609,7 @@ void __init setup_arch(char **cmdline_p)
- 		print_memory_map("user");
- 	}
- 
-+	strcat(boot_command_line, " init=/etc/preinit console=ttyS0,38400");
- 	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
- 	*cmdline_p = command_line;
- 
diff --git a/target/linux/rdc/patches-2.6.24/005-fix_amit_breakage.patch b/target/linux/rdc/patches-2.6.24/005-fix_amit_breakage.patch
deleted file mode 100644
index 5be29df356..0000000000
--- a/target/linux/rdc/patches-2.6.24/005-fix_amit_breakage.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- a/arch/x86/boot/boot.h
-+++ b/arch/x86/boot/boot.h
-@@ -60,7 +60,7 @@ static inline void outl(u32 v, u16 port)
- {
- 	asm volatile("outl %0,%1" : : "a" (v), "dN" (port));
- }
--static inline u32 inl(u32 port)
-+static inline u32 inl(u16 port)
- {
- 	u32 v;
- 	asm volatile("inl %1,%0" : "=a" (v) : "dN" (port));
---- a/arch/x86/boot/pm.c
-+++ b/arch/x86/boot/pm.c
-@@ -16,6 +16,9 @@
- 
- #include "boot.h"
- #include <asm/segment.h>
-+#ifdef CONFIG_X86_RDC
-+#include <asm/mach-rdc/rdc321x_defs.h>
-+#endif
- 
- /*
-  * Invoke the realmode switch hook if present; otherwise
-@@ -160,6 +163,16 @@ void go_to_protected_mode(void)
- 		die();
- 	}
- 
-+#ifdef CONFIG_X86_RDC
-+	{
-+		u32 bootctl;
-+
-+		outl(0x80003840, RDC3210_CFGREG_ADDR);
-+		bootctl = inl(RDC3210_CFGREG_DATA) | 0x07ff0000;
-+		outl(bootctl, RDC3210_CFGREG_DATA);
-+	}
-+#endif
-+
- 	/* Reset coprocessor (IGNNE#) */
- 	reset_coprocessor();
- 
diff --git a/target/linux/rdc/patches-2.6.24/006-pci_ids.patch b/target/linux/rdc/patches-2.6.24/006-pci_ids.patch
deleted file mode 100644
index 96ab2b14e2..0000000000
--- a/target/linux/rdc/patches-2.6.24/006-pci_ids.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- a/include/linux/pci_ids.h
-+++ b/include/linux/pci_ids.h
-@@ -2106,6 +2106,13 @@
- #define PCI_DEVICE_ID_HERC_WIN		0x5732
- #define PCI_DEVICE_ID_HERC_UNI		0x5832
- 
-+#define PCI_VENDOR_ID_RDC		0x17f3
-+#define PCI_DEVICE_ID_RDC_R6020		0x6020
-+#define PCI_DEVICE_ID_RDC_R6030		0x6030
-+#define PCI_DEVICE_ID_RDC_R6040		0x6040
-+#define PCI_DEVICE_ID_RDC_R6060		0x6060
-+#define PCI_DEVICE_ID_RDC_R6061		0x6061
-+
- #define PCI_VENDOR_ID_SITECOM		0x182d
- #define PCI_DEVICE_ID_SITECOM_DC105V2	0x3069
- 
diff --git a/target/linux/rdc/patches-2.6.24/600-x86_lzma.patch b/target/linux/rdc/patches-2.6.24/600-x86_lzma.patch
deleted file mode 100644
index 9d94950b5c..0000000000
--- a/target/linux/rdc/patches-2.6.24/600-x86_lzma.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- a/scripts/Makefile.lib
-+++ b/scripts/Makefile.lib
-@@ -166,4 +166,9 @@ cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS)
- 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 > $@
---- /dev/null
-+++ b/scripts/lzma_kern
-@@ -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"
---- a/arch/x86/boot/compressed/Makefile_32
-+++ b/arch/x86/boot/compressed/Makefile_32
-@@ -4,8 +4,8 @@
- # create a compressed vmlinux image from the original vmlinux
- #
- 
--targets		:= vmlinux vmlinux.bin vmlinux.bin.gz head_32.o misc_32.o piggy.o \
--			vmlinux.bin.all vmlinux.relocs
-+targets		:= vmlinux vmlinux.bin vmlinux.bin.lzma head_32.o piggy.o \
-+			vmlinux.bin.all vmlinux.relocs lzma_misc.o
- EXTRA_AFLAGS	:= -traditional
- 
- LDFLAGS_vmlinux := -T
-@@ -17,7 +17,7 @@ KBUILD_CFLAGS  := -m32 -D__KERNEL__ $(LI
- 	   $(call cc-option,-fno-stack-protector)
- LDFLAGS := -m elf_i386
- 
--$(obj)/vmlinux: $(src)/vmlinux_32.lds $(obj)/head_32.o $(obj)/misc_32.o $(obj)/piggy.o FORCE
-+$(obj)/vmlinux: $(src)/vmlinux_32.lds $(obj)/head_32.o $(obj)/lzma_misc.o $(obj)/piggy.o FORCE
- 	$(call if_changed,ld)
- 	@:
- 
-@@ -37,14 +37,14 @@ $(obj)/vmlinux.bin.all: $(vmlinux.bin.al
- 	$(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_32.scr $(obj)/vmlinux.bin.gz FORCE
-+$(obj)/piggy.o: $(src)/vmlinux_32.scr $(obj)/vmlinux.bin.lzma FORCE
- 	$(call if_changed,ld)
diff --git a/target/linux/rdc/patches-2.6.25/001-rdc3210_flash_map.patch b/target/linux/rdc/patches-2.6.25/001-rdc3210_flash_map.patch
deleted file mode 100644
index 4c12471ec3..0000000000
--- a/target/linux/rdc/patches-2.6.25/001-rdc3210_flash_map.patch
+++ /dev/null
@@ -1,63 +0,0 @@
---- a/drivers/mtd/maps/Kconfig
-+++ b/drivers/mtd/maps/Kconfig
-@@ -110,6 +110,50 @@
- 	  Sun Microsystems boardsets.  This driver will require CFI support
- 	  in the kernel, so if you did not enable CFI previously, do that now.
- 
-+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
---- a/drivers/mtd/maps/Makefile
-+++ b/drivers/mtd/maps/Makefile
-@@ -29,6 +29,7 @@
- obj-$(CONFIG_MTD_PMC_MSP_EVM)   += pmcmsp-flash.o
- obj-$(CONFIG_MTD_PMC_MSP_RAMROOT)+= pmcmsp-ramroot.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/patches-2.6.25/003-rootfstype.patch b/target/linux/rdc/patches-2.6.25/003-rootfstype.patch
deleted file mode 100644
index 55a4cd49f5..0000000000
--- a/target/linux/rdc/patches-2.6.25/003-rootfstype.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/init/do_mounts.c
-+++ b/init/do_mounts.c
-@@ -163,6 +163,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/patches-2.6.25/004-yenta_mystery.patch b/target/linux/rdc/patches-2.6.25/004-yenta_mystery.patch
deleted file mode 100644
index 7faabdf7a3..0000000000
--- a/target/linux/rdc/patches-2.6.25/004-yenta_mystery.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- linux-2.6.24.7.orig/drivers/pcmcia/yenta_socket.c	2008-10-26 08:30:07.000000000 -0700
-+++ linux-2.6.24.7/drivers/pcmcia/yenta_socket.c	2008-10-26 08:54:27.000000000 -0700
-@@ -1171,6 +1171,17 @@
- 
- 	/* We must finish initialization here */
- 
-+#ifdef CONFIG_X86_RDC
-+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044f044 */
-+#define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0844b060
-+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044d044 */
-+
-+	config_writel(socket, 32*4, YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK);
-+	config_writel(socket, 35*4, 0x00000022);
-+	config_writel(socket, 36*4, 0x60200000);
-+	config_writel(socket, 40*4, 0x7e020000);
-+#endif
-+
- 	if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, IRQF_SHARED, "yenta", socket)) {
- 		/* No IRQ or request_irq failed. Poll */
- 		socket->cb_irq = 0; /* But zero is a valid IRQ number. */
diff --git a/target/linux/rdc/patches-2.6.25/005-fix_amit_breakage.patch b/target/linux/rdc/patches-2.6.25/005-fix_amit_breakage.patch
deleted file mode 100644
index eabfd04ed3..0000000000
--- a/target/linux/rdc/patches-2.6.25/005-fix_amit_breakage.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -ru linux-2.6.24.7.orig/arch/x86/boot/boot.h linux-2.6.24.7/arch/x86/boot/boot.h
---- linux-2.6.24.7.orig/arch/x86/boot/boot.h	2008-10-26 20:18:14.000000000 -0700
-+++ linux-2.6.24.7/arch/x86/boot/boot.h	2008-10-26 20:18:36.000000000 -0700
-@@ -60,7 +60,7 @@
- {
- 	asm volatile("outl %0,%1" : : "a" (v), "dN" (port));
- }
--static inline u32 inl(u32 port)
-+static inline u32 inl(u16 port)
- {
- 	u32 v;
- 	asm volatile("inl %1,%0" : "=a" (v) : "dN" (port));
-diff -ru linux-2.6.24.7.orig/arch/x86/boot/pm.c linux-2.6.24.7/arch/x86/boot/pm.c
---- linux-2.6.24.7.orig/arch/x86/boot/pm.c	2008-10-26 19:55:50.000000000 -0700
-+++ linux-2.6.24.7/arch/x86/boot/pm.c	2008-10-26 21:38:12.000000000 -0700
-@@ -16,6 +16,9 @@
- 
- #include "boot.h"
- #include <asm/segment.h>
-+#ifdef CONFIG_X86_RDC
-+#include <asm/mach-rdc/rdc321x_defs.h>
-+#endif
- 
- /*
-  * Invoke the realmode switch hook if present; otherwise
-@@ -160,6 +163,16 @@
- 		die();
- 	}
- 
-+#ifdef CONFIG_X86_RDC
-+	{
-+		u32 bootctl;
-+
-+		outl(0x80003840, RDC3210_CFGREG_ADDR);
-+		bootctl = inl(RDC3210_CFGREG_DATA) | 0x07ff0000;
-+		outl(bootctl, RDC3210_CFGREG_DATA);
-+	}
-+#endif
-+
- 	/* Reset coprocessor (IGNNE#) */
- 	reset_coprocessor();
- 
diff --git a/target/linux/rdc/patches-2.6.25/600-x86_lzma.patch b/target/linux/rdc/patches-2.6.25/600-x86_lzma.patch
deleted file mode 100644
index 5e0c8d7fdb..0000000000
--- a/target/linux/rdc/patches-2.6.25/600-x86_lzma.patch
+++ /dev/null
@@ -1,63 +0,0 @@
---- a/scripts/Makefile.lib
-+++ b/scripts/Makefile.lib
-@@ -172,4 +172,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 > $@
---- /dev/null
-+++ b/scripts/lzma_kern
-@@ -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"
---- a/arch/x86/boot/compressed/Makefile
-+++ b/arch/x86/boot/compressed/Makefile
-@@ -4,7 +4,7 @@
- # create a compressed vmlinux image from the original vmlinux
- #
- 
--targets := vmlinux vmlinux.bin vmlinux.bin.gz head_$(BITS).o misc.o piggy.o
-+targets := vmlinux vmlinux.bin vmlinux.bin.lzma head_$(BITS).o lzma_misc.o piggy.o
- 
- KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2
- KBUILD_CFLAGS += -fno-strict-aliasing -fPIC
-@@ -18,7 +18,7 @@
- LDFLAGS := -m elf_$(UTS_MACHINE)
- LDFLAGS_vmlinux := -T
- 
--$(obj)/vmlinux: $(src)/vmlinux_$(BITS).lds $(obj)/head_$(BITS).o $(obj)/misc.o $(obj)/piggy.o FORCE
-+$(obj)/vmlinux: $(src)/vmlinux_$(BITS).lds $(obj)/head_$(BITS).o $(obj)/lzma_misc.o $(obj)/piggy.o FORCE
- 	$(call if_changed,ld)
- 	@:
- 
-@@ -44,11 +44,11 @@
- 	$(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
- 
-@@ -60,5 +60,5 @@
- endif
- 
- 
--$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE
-+$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.lzma FORCE
- 	$(call if_changed,ld)
diff --git a/target/linux/rdc/patches-2.6.27/001-rdc3210_flash_map.patch b/target/linux/rdc/patches-2.6.27/001-rdc3210_flash_map.patch
deleted file mode 100644
index 4c12471ec3..0000000000
--- a/target/linux/rdc/patches-2.6.27/001-rdc3210_flash_map.patch
+++ /dev/null
@@ -1,63 +0,0 @@
---- a/drivers/mtd/maps/Kconfig
-+++ b/drivers/mtd/maps/Kconfig
-@@ -110,6 +110,50 @@
- 	  Sun Microsystems boardsets.  This driver will require CFI support
- 	  in the kernel, so if you did not enable CFI previously, do that now.
- 
-+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
---- a/drivers/mtd/maps/Makefile
-+++ b/drivers/mtd/maps/Makefile
-@@ -29,6 +29,7 @@
- obj-$(CONFIG_MTD_PMC_MSP_EVM)   += pmcmsp-flash.o
- obj-$(CONFIG_MTD_PMC_MSP_RAMROOT)+= pmcmsp-ramroot.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/patches-2.6.27/002-cmdline_setup.patch b/target/linux/rdc/patches-2.6.27/002-cmdline_setup.patch
deleted file mode 100644
index ee36576d2c..0000000000
--- a/target/linux/rdc/patches-2.6.27/002-cmdline_setup.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/arch/x86/kernel/setup.c	2009-04-24 11:37:41.000000000 +0200
-+++ b/arch/x86/kernel/setup.c	2009-04-24 11:38:43.000000000 +0200
-@@ -701,6 +701,7 @@
- 	bss_resource.start = virt_to_phys(&__bss_start);
- 	bss_resource.end = virt_to_phys(&__bss_stop)-1;
- 
-+	strcat(boot_command_line, " init=/etc/preinit console=ttyS0,38400");
- 	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
- 	*cmdline_p = command_line;
- 
diff --git a/target/linux/rdc/patches-2.6.27/003-rootfstype.patch b/target/linux/rdc/patches-2.6.27/003-rootfstype.patch
deleted file mode 100644
index 55a4cd49f5..0000000000
--- a/target/linux/rdc/patches-2.6.27/003-rootfstype.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/init/do_mounts.c
-+++ b/init/do_mounts.c
-@@ -163,6 +163,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/patches-2.6.27/004-yenta_mystery.patch b/target/linux/rdc/patches-2.6.27/004-yenta_mystery.patch
deleted file mode 100644
index 7faabdf7a3..0000000000
--- a/target/linux/rdc/patches-2.6.27/004-yenta_mystery.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- linux-2.6.24.7.orig/drivers/pcmcia/yenta_socket.c	2008-10-26 08:30:07.000000000 -0700
-+++ linux-2.6.24.7/drivers/pcmcia/yenta_socket.c	2008-10-26 08:54:27.000000000 -0700
-@@ -1171,6 +1171,17 @@
- 
- 	/* We must finish initialization here */
- 
-+#ifdef CONFIG_X86_RDC
-+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044f044 */
-+#define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0844b060
-+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044d044 */
-+
-+	config_writel(socket, 32*4, YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK);
-+	config_writel(socket, 35*4, 0x00000022);
-+	config_writel(socket, 36*4, 0x60200000);
-+	config_writel(socket, 40*4, 0x7e020000);
-+#endif
-+
- 	if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, IRQF_SHARED, "yenta", socket)) {
- 		/* No IRQ or request_irq failed. Poll */
- 		socket->cb_irq = 0; /* But zero is a valid IRQ number. */
diff --git a/target/linux/rdc/patches-2.6.27/005-fix_amit_breakage.patch b/target/linux/rdc/patches-2.6.27/005-fix_amit_breakage.patch
deleted file mode 100644
index eabfd04ed3..0000000000
--- a/target/linux/rdc/patches-2.6.27/005-fix_amit_breakage.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -ru linux-2.6.24.7.orig/arch/x86/boot/boot.h linux-2.6.24.7/arch/x86/boot/boot.h
---- linux-2.6.24.7.orig/arch/x86/boot/boot.h	2008-10-26 20:18:14.000000000 -0700
-+++ linux-2.6.24.7/arch/x86/boot/boot.h	2008-10-26 20:18:36.000000000 -0700
-@@ -60,7 +60,7 @@
- {
- 	asm volatile("outl %0,%1" : : "a" (v), "dN" (port));
- }
--static inline u32 inl(u32 port)
-+static inline u32 inl(u16 port)
- {
- 	u32 v;
- 	asm volatile("inl %1,%0" : "=a" (v) : "dN" (port));
-diff -ru linux-2.6.24.7.orig/arch/x86/boot/pm.c linux-2.6.24.7/arch/x86/boot/pm.c
---- linux-2.6.24.7.orig/arch/x86/boot/pm.c	2008-10-26 19:55:50.000000000 -0700
-+++ linux-2.6.24.7/arch/x86/boot/pm.c	2008-10-26 21:38:12.000000000 -0700
-@@ -16,6 +16,9 @@
- 
- #include "boot.h"
- #include <asm/segment.h>
-+#ifdef CONFIG_X86_RDC
-+#include <asm/mach-rdc/rdc321x_defs.h>
-+#endif
- 
- /*
-  * Invoke the realmode switch hook if present; otherwise
-@@ -160,6 +163,16 @@
- 		die();
- 	}
- 
-+#ifdef CONFIG_X86_RDC
-+	{
-+		u32 bootctl;
-+
-+		outl(0x80003840, RDC3210_CFGREG_ADDR);
-+		bootctl = inl(RDC3210_CFGREG_DATA) | 0x07ff0000;
-+		outl(bootctl, RDC3210_CFGREG_DATA);
-+	}
-+#endif
-+
- 	/* Reset coprocessor (IGNNE#) */
- 	reset_coprocessor();
- 
diff --git a/target/linux/rdc/patches-2.6.27/006-bzip2_lzma_x86.patch b/target/linux/rdc/patches-2.6.27/006-bzip2_lzma_x86.patch
deleted file mode 100644
index f11693fc72..0000000000
--- a/target/linux/rdc/patches-2.6.27/006-bzip2_lzma_x86.patch
+++ /dev/null
@@ -1,3139 +0,0 @@
-diff -purN linux-2.6.27.6/arch/arm/boot/compressed/Makefile linux-2.6.27.6udpcast/arch/arm/boot/compressed/Makefile
---- linux-2.6.27.6/arch/arm/boot/compressed/Makefile	2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/arch/arm/boot/compressed/Makefile	2008-11-16 23:02:55.000000000 +0100
-@@ -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_FTRACE),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=
- 
-diff -purN linux-2.6.27.6/arch/arm/boot/compressed/misc.c linux-2.6.27.6udpcast/arch/arm/boot/compressed/misc.c
---- linux-2.6.27.6/arch/arm/boot/compressed/misc.c	2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/arch/arm/boot/compressed/misc.c	2008-11-16 23:02:55.000000000 +0100
-@@ -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;
- }
-diff -purN linux-2.6.27.6/arch/x86/boot/compressed/Makefile linux-2.6.27.6udpcast/arch/x86/boot/compressed/Makefile
---- linux-2.6.27.6/arch/x86/boot/compressed/Makefile	2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/arch/x86/boot/compressed/Makefile	2008-11-16 23:42:51.000000000 +0100
-@@ -4,7 +4,7 @@
- # create a compressed vmlinux image from the original vmlinux
- #
- 
--targets := vmlinux vmlinux.bin vmlinux.bin.gz head_$(BITS).o misc.o piggy.o
-+targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma head_$(BITS).o misc.o piggy.o
- 
- KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2
- KBUILD_CFLAGS += -fno-strict-aliasing -fPIC
-@@ -46,9 +46,17 @@ $(obj)/vmlinux.bin.all: $(vmlinux.bin.al
- ifdef CONFIG_RELOCATABLE
- $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin.all FORCE
- 	$(call if_changed,gzip)
-+$(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin.all FORCE
-+	$(call if_changed,bzip2)
-+$(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.bz2: $(obj)/vmlinux.bin FORCE
-+	$(call if_changed,bzip2)
-+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
-+	$(call if_changed,lzma)
- endif
- LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T
- 
-@@ -59,6 +67,9 @@ $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bi
- LDFLAGS_piggy.o := -r --format binary --oformat elf64-x86-64 -T
- endif
- 
-+suffix_$(CONFIG_KERNEL_GZIP)  = gz
-+suffix_$(CONFIG_KERNEL_BZIP2) = bz2
-+suffix_$(CONFIG_KERNEL_LZMA)  = lzma
- 
--$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE
-+$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.$(suffix_y) FORCE
- 	$(call if_changed,ld)
-diff -purN linux-2.6.27.6/arch/x86/boot/compressed/misc.c linux-2.6.27.6udpcast/arch/x86/boot/compressed/misc.c
---- linux-2.6.27.6/arch/x86/boot/compressed/misc.c	2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/arch/x86/boot/compressed/misc.c	2008-11-16 23:02:55.000000000 +0100
-@@ -116,71 +116,13 @@
- /*
-  * gzip declarations
-  */
--
--#define OF(args)	args
- #define STATIC		static
- 
- #undef memset
- #undef memcpy
- #define memzero(s, n)	memset((s), 0, (n))
- 
--typedef unsigned char	uch;
--typedef unsigned short	ush;
--typedef unsigned long	ulg;
--
--/*
-- * 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 we report a 2G window size, as that should always be
-- * larger than our output buffer:
-- */
--#define WSIZE		0x80000000
- 
--/* Input buffer: */
--static unsigned char	*inbuf;
--
--/* Sliding window buffer (and final output buffer): */
--static unsigned char	*window;
--
--/* Valid bytes in inbuf: */
--static unsigned		insize;
--
--/* Index of next byte to be processed in inbuf: */
--static unsigned		inptr;
--
--/* Bytes in output buffer: */
--static unsigned		outcnt;
--
--/* gzip flag byte */
--#define ASCII_FLAG	0x01 /* bit 0 set: file probably ASCII text */
--#define CONTINUATION	0x02 /* bit 1 set: continuation of multi-part gz file */
--#define EXTRA_FIELD	0x04 /* bit 2 set: extra field present */
--#define ORIG_NAM	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) do { if (!(cond)) error(msg); } while (0)
--#  define Trace(x)	do { fprintf x; } while (0)
--#  define Tracev(x)	do { if (verbose) fprintf x ; } while (0)
--#  define Tracevv(x)	do { if (verbose > 1) fprintf x ; } while (0)
--#  define Tracec(c, x)	do { if (verbose && (c)) fprintf x ; } while (0)
--#  define Tracecv(c, x)	do { if (verbose > 1 && (c)) fprintf x ; } while (0)
--#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);
- 
- /*
-@@ -189,11 +131,6 @@ static void error(char *m);
- static struct boot_params *real_mode;		/* Pointer to real-mode data */
- static int quiet;
- 
--extern unsigned char input_data[];
--extern int input_len;
--
--static long bytes_out;
--
- static void *memset(void *s, int c, unsigned n);
- static void *memcpy(void *dest, const void *src, unsigned n);
- 
-@@ -213,7 +150,19 @@ static char *vidmem;
- static int vidport;
- static int lines, cols;
- 
-+#define NEW_CODE
-+
-+#ifdef CONFIG_KERNEL_GZIP
- #include "../../../../lib/inflate.c"
-+#endif
-+
-+#ifdef CONFIG_KERNEL_BZIP2
-+#include "../../../../lib/decompress_bunzip2.c"
-+#endif
-+
-+#ifdef CONFIG_KERNEL_LZMA
-+#include "../../../../lib/decompress_unlzma.c"
-+#endif
- 
- static void scroll(void)
- {
-@@ -291,38 +240,6 @@ static void *memcpy(void *dest, const vo
- 	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;
--}
--
--/* ===========================================================================
-- * Write the output window window[0..outcnt-1] and update crc and bytes_out.
-- * (Used for the decompressed data only.)
-- */
--static void flush_window(void)
--{
--	/* With my window equal to my output buffer
--	 * I only need to compute the crc here.
--	 */
--	unsigned long c = crc;         /* temporary variable */
--	unsigned n;
--	unsigned char *in, ch;
--
--	in = window;
--	for (n = 0; n < outcnt; n++) {
--		ch = *in++;
--		c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
--	}
--	crc = c;
--	bytes_out += (unsigned long)outcnt;
--	outcnt = 0;
--}
- 
- static void error(char *x)
- {
-@@ -405,12 +322,8 @@ asmlinkage void decompress_kernel(void *
- 	lines = real_mode->screen_info.orig_video_lines;
- 	cols = real_mode->screen_info.orig_video_cols;
- 
--	window = output;		/* Output buffer (Normally at 1M) */
- 	free_mem_ptr     = heap;	/* Heap */
- 	free_mem_end_ptr = heap + BOOT_HEAP_SIZE;
--	inbuf  = input_data;		/* Input buffer */
--	insize = input_len;
--	inptr  = 0;
- 
- #ifdef CONFIG_X86_64
- 	if ((unsigned long)output & (__KERNEL_ALIGN - 1))
-@@ -428,10 +341,9 @@ asmlinkage void decompress_kernel(void *
- #endif
- #endif
- 
--	makecrc();
- 	if (!quiet)
- 		putstr("\nDecompressing Linux... ");
--	gunzip();
-+	decompress(input_data, input_len, NULL, NULL, output, NULL, error);
- 	parse_elf(output);
- 	if (!quiet)
- 		putstr("done.\nBooting the kernel.\n");
-diff -purN linux-2.6.27.6/drivers/block/Kconfig linux-2.6.27.6udpcast/drivers/block/Kconfig
---- linux-2.6.27.6/drivers/block/Kconfig	2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/drivers/block/Kconfig	2008-11-16 23:02:55.000000000 +0100
-@@ -357,6 +357,30 @@ config BLK_DEV_XIP
- 	  will prevent RAM block device backing store memory from being
- 	  allocated from highmem (only a problem for highmem systems).
- 
-+config RD_BZIP2
-+	bool "Initial ramdisk compressed using bzip2"
-+	default n
-+	depends on BLK_DEV_INITRD=y
-+	help
-+	  Support loading of a bzip2 encoded initial ramdisk or cpio buffer
-+	  If unsure, say N.
-+
-+config RD_LZMA
-+	bool "Initial ramdisk compressed using lzma"
-+	default n
-+	depends on BLK_DEV_INITRD=y
-+	help
-+	  Support loading of a lzma encoded initial ramdisk or cpio buffer
-+	  If unsure, say N.
-+
-+config RD_GZIP
-+	bool "Initial ramdisk compressed using gzip"
-+	default y
-+	depends on BLK_DEV_INITRD=y
-+	help
-+	  Support loading of a gzip encoded initial ramdisk or cpio buffer.
-+	  If unsure, say Y.
-+
- config CDROM_PKTCDVD
- 	tristate "Packet writing on CD/DVD media"
- 	depends on !UML
-diff -purN linux-2.6.27.6/include/asm-x86/boot.h linux-2.6.27.6udpcast/include/asm-x86/boot.h
---- linux-2.6.27.6/include/asm-x86/boot.h	2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/include/asm-x86/boot.h	2008-11-16 23:02:55.000000000 +0100
-@@ -17,11 +17,21 @@
- 				+ (CONFIG_PHYSICAL_ALIGN - 1)) \
- 				& ~(CONFIG_PHYSICAL_ALIGN - 1))
- 
-+#if (defined CONFIG_KERNEL_BZIP2)
-+#define BOOT_HEAP_SIZE             0x400000
-+#else
-+
- #ifdef CONFIG_X86_64
- #define BOOT_HEAP_SIZE	0x7000
--#define BOOT_STACK_SIZE	0x4000
- #else
- #define BOOT_HEAP_SIZE	0x4000
-+#endif
-+
-+#endif
-+
-+#ifdef CONFIG_X86_64
-+#define BOOT_STACK_SIZE	0x4000
-+#else
- #define BOOT_STACK_SIZE	0x1000
- #endif
- 
-diff -purN linux-2.6.27.6/include/linux/decompress/bunzip2.h linux-2.6.27.6udpcast/include/linux/decompress/bunzip2.h
---- linux-2.6.27.6/include/linux/decompress/bunzip2.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/include/linux/decompress/bunzip2.h	2008-11-16 23:34:15.000000000 +0100
-@@ -0,0 +1,10 @@
-+#ifndef DECOMPRESS_BUNZIP2_H
-+#define DECOMPRESS_BUNZIP2_H
-+
-+int bunzip2(unsigned char *inbuf, int len,
-+	    int(*fill)(void*, unsigned int),
-+	    int(*flush)(void*, unsigned int),
-+	    unsigned char *output,
-+	    int *pos,
-+	    void(*error)(char *x));
-+#endif
-diff -purN linux-2.6.27.6/include/linux/decompress/generic.h linux-2.6.27.6udpcast/include/linux/decompress/generic.h
---- linux-2.6.27.6/include/linux/decompress/generic.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/include/linux/decompress/generic.h	2008-11-16 23:34:15.000000000 +0100
-@@ -0,0 +1,30 @@
-+#ifndef DECOMPRESS_GENERIC_H
-+#define DECOMPRESS_GENERIC_H
-+
-+/* Minimal chunksize to be read.
-+ *Bzip2 prefers at least 4096
-+ *Lzma prefers 0x10000 */
-+#define COMPR_IOBUF_SIZE	4096
-+
-+typedef int (*decompress_fn) (unsigned char *inbuf, int len,
-+			      int(*fill)(void*, unsigned int),
-+			      int(*writebb)(void*, unsigned int),
-+			      unsigned char *output,
-+			      int *posp,
-+			      void(*error)(char *x));
-+
-+/* inbuf   - input buffer
-+ *len     - len of pre-read data in inbuf
-+ *fill    - function to fill inbuf if empty
-+ *writebb - function to write out outbug
-+ *posp    - if non-null, input position (number of bytes read) will be
-+ *	  returned here
-+ *
-+ *If len != 0, the inbuf is initialized (with as much data), and fill
-+ *should not be called
-+ *If len = 0, the inbuf is allocated, but empty. Its size is IOBUF_SIZE
-+ *fill should be called (repeatedly...) to read data, at most IOBUF_SIZE
-+ */
-+
-+
-+#endif
-diff -purN linux-2.6.27.6/include/linux/decompress/inflate.h linux-2.6.27.6udpcast/include/linux/decompress/inflate.h
---- linux-2.6.27.6/include/linux/decompress/inflate.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/include/linux/decompress/inflate.h	2008-11-16 23:34:15.000000000 +0100
-@@ -0,0 +1,13 @@
-+#ifndef INFLATE_H
-+#define INFLATE_H
-+
-+/* Other housekeeping constants */
-+#define INBUFSIZ 4096
-+
-+int gunzip(unsigned char *inbuf, int len,
-+	   int(*fill)(void*, unsigned int),
-+	   int(*flush)(void*, unsigned int),
-+	   unsigned char *output,
-+	   int *pos,
-+	   void(*error_fn)(char *x));
-+#endif
-diff -purN linux-2.6.27.6/include/linux/decompress/mm.h linux-2.6.27.6udpcast/include/linux/decompress/mm.h
---- linux-2.6.27.6/include/linux/decompress/mm.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/include/linux/decompress/mm.h	2008-11-16 23:34:15.000000000 +0100
-@@ -0,0 +1,89 @@
-+/*
-+ * 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: */
-+
-+/* A trivial malloc implementation, adapted from
-+ *  malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
-+ */
-+static unsigned long malloc_ptr;
-+static int malloc_count;
-+
-+static void *malloc(int size)
-+{
-+	void *p;
-+
-+	if (size < 0)
-+		error("Malloc error");
-+	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)
-+		error("Out of memory");
-+
-+	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 set_error_fn(x)
-+#define panic error
-+
-+#define INIT
-+
-+#else /* STATIC */
-+
-+/* Code active when compiled standalone for use when loading ramdisk: */
-+
-+#include <linux/kernel.h>
-+#include <linux/fs.h>
-+#include <linux/string.h>
-+#include <linux/vmalloc.h>
-+
-+/* Use defines rather than static inline in order to avoid spurious
-+ * warnings when not needed (indeed large_malloc / large_free are not
-+ * needed by inflate */
-+
-+#define malloc(a) kmalloc(a, GFP_KERNEL)
-+#define free(a) kfree(a)
-+
-+#define large_malloc(a) vmalloc(a)
-+#define large_free(a) vfree(a)
-+
-+static void(*error)(char *m);
-+#define set_error_fn(x) error = x;
-+#define NEW_CODE
-+
-+#define INIT __init
-+#define STATIC
-+
-+#include <linux/init.h>
-+
-+#endif /* STATIC */
-+
-+#endif /* DECOMPR_MM_H */
-diff -purN linux-2.6.27.6/include/linux/decompress/unlzma.h linux-2.6.27.6udpcast/include/linux/decompress/unlzma.h
---- linux-2.6.27.6/include/linux/decompress/unlzma.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/include/linux/decompress/unlzma.h	2008-11-16 23:34:15.000000000 +0100
-@@ -0,0 +1,12 @@
-+#ifndef DECOMPRESS_UNLZMA_H
-+#define DECOMPRESS_UNLZMA_H
-+
-+int unlzma(unsigned char *, int,
-+	   int(*fill)(void*, unsigned int),
-+	   int(*flush)(void*, unsigned int),
-+	   unsigned char *output,
-+	   int *posp,
-+	   void(*error)(char *x)
-+	);
-+
-+#endif
-diff -purN linux-2.6.27.6/init/do_mounts_rd.c linux-2.6.27.6udpcast/init/do_mounts_rd.c
---- linux-2.6.27.6/init/do_mounts_rd.c	2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/init/do_mounts_rd.c	2008-11-16 23:02:55.000000000 +0100
-@@ -10,6 +10,12 @@
- 
- #include "do_mounts.h"
- 
-+#include <linux/decompress/generic.h>
-+
-+#include <linux/decompress/bunzip2.h>
-+#include <linux/decompress/unlzma.h>
-+#include <linux/decompress/inflate.h>
-+
- int __initdata rd_prompt = 1;/* 1 = prompt for RAM disk, 0 = don't prompt */
- 
- static int __init prompt_ramdisk(char *str)
-@@ -28,7 +34,7 @@ static int __init ramdisk_start_setup(ch
- }
- __setup("ramdisk_start=", ramdisk_start_setup);
- 
--static int __init crd_load(int in_fd, int out_fd);
-+static int __init crd_load(int in_fd, int out_fd, decompress_fn deco);
- 
- /*
-  * This routine tries to find a RAM disk image to load, and returns the
-@@ -44,7 +50,7 @@ static int __init crd_load(int in_fd, in
-  * 	gzip
-  */
- static int __init 
--identify_ramdisk_image(int fd, int start_block)
-+identify_ramdisk_image(int fd, int start_block, decompress_fn *decompressor)
- {
- 	const int size = 512;
- 	struct minix_super_block *minixsb;
-@@ -70,6 +76,7 @@ identify_ramdisk_image(int fd, int start
- 	sys_lseek(fd, start_block * BLOCK_SIZE, 0);
- 	sys_read(fd, buf, size);
- 
-+#ifdef CONFIG_RD_GZIP
- 	/*
- 	 * If it matches the gzip magic numbers, return -1
- 	 */
-@@ -77,9 +84,39 @@ identify_ramdisk_image(int fd, int start
- 		printk(KERN_NOTICE
- 		       "RAMDISK: Compressed image found at block %d\n",
- 		       start_block);
-+		*decompressor = gunzip;
-+		nblocks = 0;
-+		goto done;
-+	}
-+#endif
-+
-+#ifdef CONFIG_RD_BZIP2
-+	/*
-+	 * If it matches the bzip2 magic numbers, return -1
-+	 */
-+	if (buf[0] == 0x42 && (buf[1] == 0x5a)) {
-+		printk(KERN_NOTICE
-+		       "RAMDISK: Bzipped image found at block %d\n",
-+		       start_block);
-+		*decompressor = bunzip2;
- 		nblocks = 0;
- 		goto done;
- 	}
-+#endif
-+
-+#ifdef CONFIG_RD_LZMA
-+	/*
-+	 * If it matches the lzma magic numbers, return -1
-+	 */
-+	if (buf[0] == 0x5d && (buf[1] == 0x00)) {
-+		printk(KERN_NOTICE
-+		       "RAMDISK: Lzma image found at block %d\n",
-+		       start_block);
-+		*decompressor = unlzma;
-+		nblocks = 0;
-+		goto done;
-+	}
-+#endif
- 
- 	/* romfs is at block zero too */
- 	if (romfsb->word0 == ROMSB_WORD0 &&
-@@ -143,6 +180,7 @@ int __init rd_load_image(char *from)
- 	int nblocks, i, disk;
- 	char *buf = NULL;
- 	unsigned short rotate = 0;
-+	decompress_fn decompressor = NULL;
- #if !defined(CONFIG_S390) && !defined(CONFIG_PPC_ISERIES)
- 	char rotator[4] = { '|' , '/' , '-' , '\\' };
- #endif
-@@ -155,12 +193,12 @@ int __init rd_load_image(char *from)
- 	if (in_fd < 0)
- 		goto noclose_input;
- 
--	nblocks = identify_ramdisk_image(in_fd, rd_image_start);
-+	nblocks = identify_ramdisk_image(in_fd, rd_image_start, &decompressor);
- 	if (nblocks < 0)
- 		goto done;
- 
- 	if (nblocks == 0) {
--		if (crd_load(in_fd, out_fd) == 0)
-+		if (crd_load(in_fd, out_fd, decompressor) == 0)
- 			goto successful_load;
- 		goto done;
- 	}
-@@ -259,138 +297,48 @@ int __init rd_load_disk(int n)
- 	return rd_load_image("/dev/root");
- }
- 
--/*
-- * gzip declarations
-- */
--
--#define OF(args)  args
--
--#ifndef memzero
--#define memzero(s, n)     memset ((s), 0, (n))
--#endif
--
--typedef unsigned char  uch;
--typedef unsigned short ush;
--typedef unsigned long  ulg;
--
--#define INBUFSIZ 4096
--#define WSIZE 0x8000    /* window size--must be a power of two, and */
--			/*  at least 32K for zip's deflate method */
--
--static uch *inbuf;
--static uch *window;
--
--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 */
- static int exit_code;
--static int unzip_error;
--static long bytes_out;
-+static int decompress_error;
- static int crd_infd, crd_outfd;
- 
--#define get_byte()  (inptr < insize ? inbuf[inptr++] : fill_inbuf())
--		
--/* Diagnostic functions (stubbed out) */
--#define Assert(cond,msg)
--#define Trace(x)
--#define Tracev(x)
--#define Tracevv(x)
--#define Tracec(c,x)
--#define Tracecv(c,x)
--
--#define STATIC static
--#define INIT __init
--
--static int  __init fill_inbuf(void);
--static void __init flush_window(void);
--static void __init error(char *m);
--
--#define NO_INFLATE_MALLOC
--
--#include "../lib/inflate.c"
--
--/* ===========================================================================
-- * Fill the input buffer. This is called only when the buffer is empty
-- * and at least one byte is really needed.
-- * Returning -1 does not guarantee that gunzip() will ever return.
-- */
--static int __init fill_inbuf(void)
-+static int __init compr_fill(void *buf, unsigned int len)
- {
--	if (exit_code) return -1;
--	
--	insize = sys_read(crd_infd, inbuf, INBUFSIZ);
--	if (insize == 0) {
--		error("RAMDISK: ran out of compressed data");
--		return -1;
--	}
--
--	inptr = 1;
--
--	return inbuf[0];
-+	int r = sys_read(crd_infd, buf, len);
-+	if (r < 0)
-+		printk(KERN_ERR "RAMDISK: error while reading compressed data");
-+	else if (r == 0)
-+		printk(KERN_ERR "RAMDISK: EOF while reading compressed data");
-+	return r;
- }
- 
--/* ===========================================================================
-- * Write the output window window[0..outcnt-1] and update crc and bytes_out.
-- * (Used for the decompressed data only.)
-- */
--static void __init flush_window(void)
-+static int __init compr_flush(void *window, unsigned int outcnt)
- {
--    ulg c = crc;         /* temporary variable */
--    unsigned n, written;
--    uch *in, ch;
--    
--    written = sys_write(crd_outfd, window, outcnt);
--    if (written != outcnt && unzip_error == 0) {
--	printk(KERN_ERR "RAMDISK: incomplete write (%d != %d) %ld\n",
--	       written, outcnt, bytes_out);
--	unzip_error = 1;
--    }
--    in = window;
--    for (n = 0; n < outcnt; n++) {
--	    ch = *in++;
--	    c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
--    }
--    crc = c;
--    bytes_out += (ulg)outcnt;
--    outcnt = 0;
-+	int written = sys_write(crd_outfd, window, outcnt);
-+	if (written != outcnt) {
-+		if (decompress_error == 0)
-+			printk(KERN_ERR
-+			       "RAMDISK: incomplete write (%d != %d)\n",
-+			       written, outcnt);
-+		decompress_error = 1;
-+		return -1;
-+	}
-+	return outcnt;
- }
- 
- static void __init error(char *x)
- {
- 	printk(KERN_ERR "%s\n", x);
- 	exit_code = 1;
--	unzip_error = 1;
-+	decompress_error = 1;
- }
- 
--static int __init crd_load(int in_fd, int out_fd)
-+static int __init crd_load(int in_fd, int out_fd, decompress_fn deco)
- {
- 	int result;
--
--	insize = 0;		/* valid bytes in inbuf */
--	inptr = 0;		/* index of next byte to be processed in inbuf */
--	outcnt = 0;		/* bytes in output buffer */
--	exit_code = 0;
--	bytes_out = 0;
--	crc = (ulg)0xffffffffL; /* shift register contents */
--
- 	crd_infd = in_fd;
- 	crd_outfd = out_fd;
--	inbuf = kmalloc(INBUFSIZ, GFP_KERNEL);
--	if (!inbuf) {
--		printk(KERN_ERR "RAMDISK: Couldn't allocate gzip buffer\n");
--		return -1;
--	}
--	window = kmalloc(WSIZE, GFP_KERNEL);
--	if (!window) {
--		printk(KERN_ERR "RAMDISK: Couldn't allocate gzip window\n");
--		kfree(inbuf);
--		return -1;
--	}
--	makecrc();
--	result = gunzip();
--	if (unzip_error)
-+	result = deco(NULL, 0, compr_fill, compr_flush, NULL, NULL, error);
-+	if (decompress_error)
- 		result = 1;
--	kfree(inbuf);
--	kfree(window);
- 	return result;
- }
-diff -purN linux-2.6.27.6/init/initramfs.c linux-2.6.27.6udpcast/init/initramfs.c
---- linux-2.6.27.6/init/initramfs.c	2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/init/initramfs.c	2008-11-16 23:02:55.000000000 +0100
-@@ -337,11 +337,14 @@ static int __init write_buffer(char *buf
- 	return len - count;
- }
- 
--static void __init flush_buffer(char *buf, unsigned len)
-+
-+static int __init flush_buffer(void *bufv, unsigned len)
- {
-+	char *buf = (char *) bufv;
- 	int written;
-+	int origLen = len;
- 	if (message)
--		return;
-+		return -1;
- 	while ((written = write_buffer(buf, len)) < len && !message) {
- 		char c = buf[written];
- 		if (c == '0') {
-@@ -355,73 +358,14 @@ static void __init flush_buffer(char *bu
- 		} else
- 			error("junk in compressed archive");
- 	}
-+	return origLen;
- }
- 
--/*
-- * gzip declarations
-- */
--
--#define OF(args)  args
--
--#ifndef memzero
--#define memzero(s, n)     memset ((s), 0, (n))
--#endif
-+static unsigned my_inptr;   /* index of next byte to be processed in inbuf */
- 
--typedef unsigned char  uch;
--typedef unsigned short ush;
--typedef unsigned long  ulg;
--
--#define WSIZE 0x8000    /* window size--must be a power of two, and */
--			/*  at least 32K for zip's deflate method */
--
--static uch *inbuf;
--static uch *window;
--
--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 */
--static long bytes_out;
--
--#define get_byte()  (inptr < insize ? inbuf[inptr++] : -1)
--		
--/* Diagnostic functions (stubbed out) */
--#define Assert(cond,msg)
--#define Trace(x)
--#define Tracev(x)
--#define Tracevv(x)
--#define Tracec(c,x)
--#define Tracecv(c,x)
--
--#define STATIC static
--#define INIT __init
--
--static void __init flush_window(void);
--static void __init error(char *m);
--
--#define NO_INFLATE_MALLOC
--
--#include "../lib/inflate.c"
--
--/* ===========================================================================
-- * Write the output window window[0..outcnt-1] and update crc and bytes_out.
-- * (Used for the decompressed data only.)
-- */
--static void __init flush_window(void)
--{
--	ulg c = crc;         /* temporary variable */
--	unsigned n;
--	uch *in, ch;
--
--	flush_buffer(window, outcnt);
--	in = window;
--	for (n = 0; n < outcnt; n++) {
--		ch = *in++;
--		c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
--	}
--	crc = c;
--	bytes_out += (ulg)outcnt;
--	outcnt = 0;
--}
-+#include <linux/decompress/bunzip2.h>
-+#include <linux/decompress/unlzma.h>
-+#include <linux/decompress/inflate.h>
- 
- static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only)
- {
-@@ -430,9 +374,10 @@ static char * __init unpack_to_rootfs(ch
- 	header_buf = kmalloc(110, GFP_KERNEL);
- 	symlink_buf = kmalloc(PATH_MAX + N_ALIGN(PATH_MAX) + 1, GFP_KERNEL);
- 	name_buf = kmalloc(N_ALIGN(PATH_MAX), GFP_KERNEL);
--	window = kmalloc(WSIZE, GFP_KERNEL);
--	if (!window || !header_buf || !symlink_buf || !name_buf)
-+
-+	if (!header_buf || !symlink_buf || !name_buf)
- 		panic("can't allocate buffers");
-+
- 	state = Start;
- 	this_header = 0;
- 	message = NULL;
-@@ -452,21 +397,39 @@ static char * __init unpack_to_rootfs(ch
- 			continue;
- 		}
- 		this_header = 0;
--		insize = len;
--		inbuf = buf;
--		inptr = 0;
--		outcnt = 0;		/* bytes in output buffer */
--		bytes_out = 0;
--		crc = (ulg)0xffffffffL; /* shift register contents */
--		makecrc();
--		gunzip();
-+		if (!gunzip(buf, len, NULL, flush_buffer, NULL,
-+			    &my_inptr, error) &&
-+		    message == NULL)
-+			goto ok;
-+
-+#ifdef CONFIG_RD_BZIP2
-+		message = NULL; /* Zero out message, or else cpio will
-+				   think an error has already occured */
-+		if (!bunzip2(buf, len, NULL, flush_buffer, NULL,
-+			     &my_inptr, error) < 0
-+		    &&
-+		    message == NULL) {
-+			goto ok;
-+		}
-+#endif
-+
-+#ifdef CONFIG_RD_LZMA
-+		message = NULL; /* Zero out message, or else cpio will
-+				   think an error has already occured */
-+		if (!unlzma(buf, len, NULL, flush_buffer, NULL,
-+			    &my_inptr, error) < 0
-+		    &&
-+		    message == NULL) {
-+			goto ok;
-+		}
-+#endif
-+ok:
- 		if (state != Reset)
--			error("junk in gzipped archive");
--		this_header = saved_offset + inptr;
--		buf += inptr;
--		len -= inptr;
-+			error("junk in compressed archive");
-+		this_header = saved_offset + my_inptr;
-+		buf += my_inptr;
-+		len -= my_inptr;
- 	}
--	kfree(window);
- 	kfree(name_buf);
- 	kfree(symlink_buf);
- 	kfree(header_buf);
-diff -purN linux-2.6.27.6/init/Kconfig linux-2.6.27.6udpcast/init/Kconfig
---- linux-2.6.27.6/init/Kconfig	2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/init/Kconfig	2008-11-16 23:02:55.000000000 +0100
-@@ -101,6 +101,56 @@ config LOCALVERSION_AUTO
- 
- 	  which is done within the script "scripts/setlocalversion".)
- 
-+choice
-+        prompt "Kernel compression mode"
-+        default KERNEL_GZIP
-+        help
-+	  The linux kernel is a kind of self-extracting executable.
-+	  Several compression algorithms are available, which differ
-+	  in efficiency, compression and decompression speed.
-+	  Compression speed is only relevant when building a kernel.
-+	  Decompression speed is relevant at each boot.
-+
-+	  If you have any problems with bzip2 or lzma compressed
-+	  kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
-+	  version of this functionality (bzip2 only), for 2.4, was
-+	  supplied by Christian Ludwig)
-+
-+	  High compression options are mostly useful for users, who
-+	  are low on disk space (embedded systems), but for whom ram
-+	  size matters less.
-+
-+	  If in doubt, select 'gzip'
-+
-+config KERNEL_GZIP
-+       bool "Gzip"
-+       help
-+         The old and tried gzip compression. Its compression ratio is
-+	 the poorest among the 3 choices; however its speed (both
-+	 compression and decompression) is the fastest.
-+
-+config KERNEL_BZIP2
-+	bool "Bzip2"
-+	help
-+	  Its compression ratio and speed is intermediate.
-+	  Decompression speed is slowest among the 3.
-+	  The kernel size is about 10 per cent smaller with bzip2,
-+	  in comparison to gzip.
-+	  Bzip2 uses a large amount of memory. For modern kernels
-+	  you will need at least 8MB RAM or more for booting.
-+
-+config KERNEL_LZMA
-+       bool "LZMA"
-+       help
-+         The most recent compression algorithm.
-+	 Its ratio is best, decompression speed is between the other
-+	 2. Compression is slowest.
-+	 The kernel size is about 33 per cent smaller with lzma,
-+	 in comparison to gzip.
-+
-+endchoice
-+
-+
- config SWAP
- 	bool "Support for paging of anonymous memory (swap)"
- 	depends on MMU && BLOCK
-diff -purN linux-2.6.27.6/lib/decompress_bunzip2.c linux-2.6.27.6udpcast/lib/decompress_bunzip2.c
---- linux-2.6.27.6/lib/decompress_bunzip2.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/lib/decompress_bunzip2.c	2008-11-16 23:40:21.000000000 +0100
-@@ -0,0 +1,735 @@
-+/* vi: set sw = 4 ts = 4: */
-+/*	Small bzip2 deflate implementation, by Rob Landley (rob@landley.net).
-+
-+	Based on bzip2 decompression code by Julian R Seward (jseward@acm.org),
-+	which also acknowledges contributions by Mike Burrows, David Wheeler,
-+	Peter Fenwick, Alistair Moffat, Radford Neal, Ian H. Witten,
-+	Robert Sedgewick, and Jon L. Bentley.
-+
-+	This code is licensed under the LGPLv2:
-+		LGPL (http://www.gnu.org/copyleft/lgpl.html
-+*/
-+
-+/*
-+	Size and speed optimizations by Manuel Novoa III  (mjn3@codepoet.org).
-+
-+	More efficient reading of Huffman codes, a streamlined read_bunzip()
-+	function, and various other tweaks.  In (limited) tests, approximately
-+	20% faster than bzcat on x86 and about 10% faster on arm.
-+
-+	Note that about 2/3 of the time is spent in read_unzip() reversing
-+	the Burrows-Wheeler transformation.  Much of that time is delay
-+	resulting from cache misses.
-+
-+	I would ask that anyone benefiting from this work, especially those
-+	using it in commercial products, consider making a donation to my local
-+	non-profit hospice organization in the name of the woman I loved, who
-+	passed away Feb. 12, 2003.
-+
-+		In memory of Toni W. Hagan
-+
-+		Hospice of Acadiana, Inc.
-+		2600 Johnston St., Suite 200
-+		Lafayette, LA 70503-3240
-+
-+		Phone (337) 232-1234 or 1-800-738-2226
-+		Fax   (337) 232-1297
-+
-+		http://www.hospiceacadiana.com/
-+
-+	Manuel
-+ */
-+
-+/*
-+	Made it fit for running in Linux Kernel by Alain Knaff (alain@knaff.lu)
-+*/
-+
-+
-+#ifndef STATIC
-+#include <linux/decompress/bunzip2.h>
-+#endif /* !STATIC */
-+
-+#include <linux/decompress/mm.h>
-+
-+#ifndef INT_MAX
-+#define INT_MAX 0x7fffffff
-+#endif
-+
-+/* Constants for Huffman coding */
-+#define MAX_GROUPS		6
-+#define GROUP_SIZE   		50	/* 64 would have been more efficient */
-+#define MAX_HUFCODE_BITS 	20	/* Longest Huffman code allowed */
-+#define MAX_SYMBOLS 		258	/* 256 literals + RUNA + RUNB */
-+#define SYMBOL_RUNA		0
-+#define SYMBOL_RUNB		1
-+
-+/* Status return values */
-+#define RETVAL_OK			0
-+#define RETVAL_LAST_BLOCK		(-1)
-+#define RETVAL_NOT_BZIP_DATA		(-2)
-+#define RETVAL_UNEXPECTED_INPUT_EOF	(-3)
-+#define RETVAL_UNEXPECTED_OUTPUT_EOF	(-4)
-+#define RETVAL_DATA_ERROR		(-5)
-+#define RETVAL_OUT_OF_MEMORY		(-6)
-+#define RETVAL_OBSOLETE_INPUT		(-7)
-+
-+/* Other housekeeping constants */
-+#define BZIP2_IOBUF_SIZE		4096
-+
-+/* This is what we know about each Huffman coding group */
-+struct group_data {
-+	/* We have an extra slot at the end of limit[] for a sentinal value. */
-+	int limit[MAX_HUFCODE_BITS+1];
-+	int base[MAX_HUFCODE_BITS];
-+	int permute[MAX_SYMBOLS];
-+	int minLen, maxLen;
-+};
-+
-+/* Structure holding all the housekeeping data, including IO buffers and
-+   memory that persists between calls to bunzip */
-+struct bunzip_data {
-+	/* State for interrupting output loop */
-+	int writeCopies, writePos, writeRunCountdown, writeCount, writeCurrent;
-+	/* I/O tracking data (file handles, buffers, positions, etc.) */
-+	int (*fill)(void*, unsigned int);
-+	int inbufCount, inbufPos /*, outbufPos*/;
-+	unsigned char *inbuf /*,*outbuf*/;
-+	unsigned int inbufBitCount, inbufBits;
-+	/* The CRC values stored in the block header and calculated from the
-+	data */
-+	unsigned int crc32Table[256], headerCRC, totalCRC, writeCRC;
-+	/* Intermediate buffer and its size (in bytes) */
-+	unsigned int *dbuf, dbufSize;
-+	/* These things are a bit too big to go on the stack */
-+	unsigned char selectors[32768];		/* nSelectors = 15 bits */
-+	struct group_data groups[MAX_GROUPS];	/* Huffman coding tables */
-+	int io_error;			/* non-zero if we have IO error */
-+};
-+
-+
-+/* Return the next nnn bits of input.  All reads from the compressed input
-+   are done through this function.  All reads are big endian */
-+static unsigned int INIT get_bits(struct bunzip_data *bd, char bits_wanted)
-+{
-+	unsigned int bits = 0;
-+
-+	/* If we need to get more data from the byte buffer, do so.
-+	   (Loop getting one byte at a time to enforce endianness and avoid
-+	   unaligned access.) */
-+	while (bd->inbufBitCount < bits_wanted) {
-+		/* If we need to read more data from file into byte buffer, do
-+		   so */
-+		if (bd->inbufPos == bd->inbufCount) {
-+			if (bd->io_error)
-+				return 0;
-+			bd->inbufCount = bd->fill(bd->inbuf, BZIP2_IOBUF_SIZE);
-+			if (bd->inbufCount <= 0) {
-+				bd->io_error = RETVAL_UNEXPECTED_INPUT_EOF;
-+				return 0;
-+			}
-+			bd->inbufPos = 0;
-+		}
-+		/* Avoid 32-bit overflow (dump bit buffer to top of output) */
-+		if (bd->inbufBitCount >= 24) {
-+			bits = bd->inbufBits&((1 << bd->inbufBitCount)-1);
-+			bits_wanted -= bd->inbufBitCount;
-+			bits <<= bits_wanted;
-+			bd->inbufBitCount = 0;
-+		}
-+		/* Grab next 8 bits of input from buffer. */
-+		bd->inbufBits = (bd->inbufBits << 8)|bd->inbuf[bd->inbufPos++];
-+		bd->inbufBitCount += 8;
-+	}
-+	/* Calculate result */
-+	bd->inbufBitCount -= bits_wanted;
-+	bits |= (bd->inbufBits >> bd->inbufBitCount)&((1 << bits_wanted)-1);
-+
-+	return bits;
-+}
-+
-+/* Unpacks the next block and sets up for the inverse burrows-wheeler step. */
-+
-+static int INIT get_next_block(struct bunzip_data *bd)
-+{
-+	struct group_data *hufGroup = NULL;
-+	int *base = NULL;
-+	int *limit = NULL;
-+	int dbufCount, nextSym, dbufSize, groupCount, selector,
-+		i, j, k, t, runPos, symCount, symTotal, nSelectors,
-+		byteCount[256];
-+	unsigned char uc, symToByte[256], mtfSymbol[256], *selectors;
-+	unsigned int *dbuf, origPtr;
-+
-+	dbuf = bd->dbuf;
-+	dbufSize = bd->dbufSize;
-+	selectors = bd->selectors;
-+
-+	/* Read in header signature and CRC, then validate signature.
-+	   (last block signature means CRC is for whole file, return now) */
-+	i = get_bits(bd, 24);
-+	j = get_bits(bd, 24);
-+	bd->headerCRC = get_bits(bd, 32);
-+	if ((i == 0x177245) && (j == 0x385090))
-+		return RETVAL_LAST_BLOCK;
-+	if ((i != 0x314159) || (j != 0x265359))
-+		return RETVAL_NOT_BZIP_DATA;
-+	/* We can add support for blockRandomised if anybody complains.
-+	   There was some code for this in busybox 1.0.0-pre3, but nobody ever
-+	   noticed that it didn't actually work. */
-+	if (get_bits(bd, 1))
-+		return RETVAL_OBSOLETE_INPUT;
-+	origPtr = get_bits(bd, 24);
-+	if (origPtr > dbufSize)
-+		return RETVAL_DATA_ERROR;
-+	/* mapping table: if some byte values are never used (encoding things
-+	   like ascii text), the compression code removes the gaps to have fewer
-+	   symbols to deal with, and writes a sparse bitfield indicating which
-+	   values were present.  We make a translation table to convert the
-+	   symbols back to the corresponding bytes. */
-+	t = get_bits(bd, 16);
-+	symTotal = 0;
-+	for (i = 0; i < 16; i++) {
-+		if (t&(1 << (15-i))) {
-+			k = get_bits(bd, 16);
-+			for (j = 0; j < 16; j++)
-+				if (k&(1 << (15-j)))
-+					symToByte[symTotal++] = (16*i)+j;
-+		}
-+	}
-+	/* How many different Huffman coding groups does this block use? */
-+	groupCount = get_bits(bd, 3);
-+	if (groupCount < 2 || groupCount > MAX_GROUPS)
-+		return RETVAL_DATA_ERROR;
-+	/* nSelectors: Every GROUP_SIZE many symbols we select a new
-+	   Huffman coding group.  Read in the group selector list,
-+	   which is stored as MTF encoded bit runs.  (MTF = Move To
-+	   Front, as each value is used it's moved to the start of the
-+	   list.) */
-+	nSelectors = get_bits(bd, 15);
-+	if (!nSelectors)
-+		return RETVAL_DATA_ERROR;
-+	for (i = 0; i < groupCount; i++)
-+		mtfSymbol[i] = i;
-+	for (i = 0; i < nSelectors; i++) {
-+		/* Get next value */
-+		for (j = 0; get_bits(bd, 1); j++)
-+			if (j >= groupCount)
-+				return RETVAL_DATA_ERROR;
-+		/* Decode MTF to get the next selector */
-+		uc = mtfSymbol[j];
-+		for (; j; j--)
-+			mtfSymbol[j] = mtfSymbol[j-1];
-+		mtfSymbol[0] = selectors[i] = uc;
-+	}
-+	/* Read the Huffman coding tables for each group, which code
-+	   for symTotal literal symbols, plus two run symbols (RUNA,
-+	   RUNB) */
-+	symCount = symTotal+2;
-+	for (j = 0; j < groupCount; j++) {
-+		unsigned char length[MAX_SYMBOLS], temp[MAX_HUFCODE_BITS+1];
-+		int	minLen,	maxLen, pp;
-+		/* Read Huffman code lengths for each symbol.  They're
-+		   stored in a way similar to mtf; record a starting
-+		   value for the first symbol, and an offset from the
-+		   previous value for everys symbol after that.
-+		   (Subtracting 1 before the loop and then adding it
-+		   back at the end is an optimization that makes the
-+		   test inside the loop simpler: symbol length 0
-+		   becomes negative, so an unsigned inequality catches
-+		   it.) */
-+		t = get_bits(bd, 5)-1;
-+		for (i = 0; i < symCount; i++) {
-+			for (;;) {
-+				if (((unsigned)t) > (MAX_HUFCODE_BITS-1))
-+					return RETVAL_DATA_ERROR;
-+
-+				/* If first bit is 0, stop.  Else
-+				   second bit indicates whether to
-+				   increment or decrement the value.
-+				   Optimization: grab 2 bits and unget
-+				   the second if the first was 0. */
-+
-+				k = get_bits(bd, 2);
-+				if (k < 2) {
-+					bd->inbufBitCount++;
-+					break;
-+				}
-+				/* Add one if second bit 1, else
-+				 * subtract 1.  Avoids if/else */
-+				t += (((k+1)&2)-1);
-+			}
-+			/* Correct for the initial -1, to get the
-+			 * final symbol length */
-+			length[i] = t+1;
-+		}
-+		/* Find largest and smallest lengths in this group */
-+		minLen = maxLen = length[0];
-+
-+		for (i = 1; i < symCount; i++) {
-+			if (length[i] > maxLen)
-+				maxLen = length[i];
-+			else if (length[i] < minLen)
-+				minLen = length[i];
-+		}
-+
-+		/* Calculate permute[], base[], and limit[] tables from
-+		 * length[].
-+		 *
-+		 * permute[] is the lookup table for converting
-+		 * Huffman coded symbols into decoded symbols.  base[]
-+		 * is the amount to subtract from the value of a
-+		 * Huffman symbol of a given length when using
-+		 * permute[].
-+		 *
-+		 * limit[] indicates the largest numerical value a
-+		 * symbol with a given number of bits can have.  This
-+		 * is how the Huffman codes can vary in length: each
-+		 * code with a value > limit[length] needs another
-+		 * bit.
-+		 */
-+		hufGroup = bd->groups+j;
-+		hufGroup->minLen = minLen;
-+		hufGroup->maxLen = maxLen;
-+		/* Note that minLen can't be smaller than 1, so we
-+		   adjust the base and limit array pointers so we're
-+		   not always wasting the first entry.  We do this
-+		   again when using them (during symbol decoding).*/
-+		base = hufGroup->base-1;
-+		limit = hufGroup->limit-1;
-+		/* Calculate permute[].  Concurently, initialize
-+		 * temp[] and limit[]. */
-+		pp = 0;
-+		for (i = minLen; i <= maxLen; i++) {
-+			temp[i] = limit[i] = 0;
-+			for (t = 0; t < symCount; t++)
-+				if (length[t] == i)
-+					hufGroup->permute[pp++] = t;
-+		}
-+		/* Count symbols coded for at each bit length */
-+		for (i = 0; i < symCount; i++)
-+			temp[length[i]]++;
-+		/* Calculate limit[] (the largest symbol-coding value
-+		 *at each bit length, which is (previous limit <<
-+		 *1)+symbols at this level), and base[] (number of
-+		 *symbols to ignore at each bit length, which is limit
-+		 *minus the cumulative count of symbols coded for
-+		 *already). */
-+		pp = t = 0;
-+		for (i = minLen; i < maxLen; i++) {
-+			pp += temp[i];
-+			/* We read the largest possible symbol size
-+			   and then unget bits after determining how
-+			   many we need, and those extra bits could be
-+			   set to anything.  (They're noise from
-+			   future symbols.)  At each level we're
-+			   really only interested in the first few
-+			   bits, so here we set all the trailing
-+			   to-be-ignored bits to 1 so they don't
-+			   affect the value > limit[length]
-+			   comparison. */
-+			limit[i] = (pp << (maxLen - i)) - 1;
-+			pp <<= 1;
-+			base[i+1] = pp-(t += temp[i]);
-+		}
-+		limit[maxLen+1] = INT_MAX; /* Sentinal value for
-+					    * reading next sym. */
-+		limit[maxLen] = pp+temp[maxLen]-1;
-+		base[minLen] = 0;
-+	}
-+	/* We've finished reading and digesting the block header.  Now
-+	   read this block's Huffman coded symbols from the file and
-+	   undo the Huffman coding and run length encoding, saving the
-+	   result into dbuf[dbufCount++] = uc */
-+
-+	/* Initialize symbol occurrence counters and symbol Move To
-+	 * Front table */
-+	for (i = 0; i < 256; i++) {
-+		byteCount[i] = 0;
-+		mtfSymbol[i] = (unsigned char)i;
-+	}
-+	/* Loop through compressed symbols. */
-+	runPos = dbufCount = symCount = selector = 0;
-+	for (;;) {
-+		/* Determine which Huffman coding group to use. */
-+		if (!(symCount--)) {
-+			symCount = GROUP_SIZE-1;
-+			if (selector >= nSelectors)
-+				return RETVAL_DATA_ERROR;
-+			hufGroup = bd->groups+selectors[selector++];
-+			base = hufGroup->base-1;
-+			limit = hufGroup->limit-1;
-+		}
-+		/* Read next Huffman-coded symbol. */
-+		/* Note: It is far cheaper to read maxLen bits and
-+		   back up than it is to read minLen bits and then an
-+		   additional bit at a time, testing as we go.
-+		   Because there is a trailing last block (with file
-+		   CRC), there is no danger of the overread causing an
-+		   unexpected EOF for a valid compressed file.  As a
-+		   further optimization, we do the read inline
-+		   (falling back to a call to get_bits if the buffer
-+		   runs dry).  The following (up to got_huff_bits:) is
-+		   equivalent to j = get_bits(bd, hufGroup->maxLen);
-+		 */
-+		while (bd->inbufBitCount < hufGroup->maxLen) {
-+			if (bd->inbufPos == bd->inbufCount) {
-+				j = get_bits(bd, hufGroup->maxLen);
-+				goto got_huff_bits;
-+			}
-+			bd->inbufBits =
-+				(bd->inbufBits << 8)|bd->inbuf[bd->inbufPos++];
-+			bd->inbufBitCount += 8;
-+		};
-+		bd->inbufBitCount -= hufGroup->maxLen;
-+		j = (bd->inbufBits >> bd->inbufBitCount)&
-+			((1 << hufGroup->maxLen)-1);
-+got_huff_bits:
-+		/* Figure how how many bits are in next symbol and
-+		 * unget extras */
-+		i = hufGroup->minLen;
-+		while (j > limit[i])
-+			++i;
-+		bd->inbufBitCount += (hufGroup->maxLen - i);
-+		/* Huffman decode value to get nextSym (with bounds checking) */
-+		if ((i > hufGroup->maxLen)
-+			|| (((unsigned)(j = (j>>(hufGroup->maxLen-i))-base[i]))
-+				>= MAX_SYMBOLS))
-+			return RETVAL_DATA_ERROR;
-+		nextSym = hufGroup->permute[j];
-+		/* We have now decoded the symbol, which indicates
-+		   either a new literal byte, or a repeated run of the
-+		   most recent literal byte.  First, check if nextSym
-+		   indicates a repeated run, and if so loop collecting
-+		   how many times to repeat the last literal. */
-+		if (((unsigned)nextSym) <= SYMBOL_RUNB) { /* RUNA or RUNB */
-+			/* If this is the start of a new run, zero out
-+			 * counter */
-+			if (!runPos) {
-+				runPos = 1;
-+				t = 0;
-+			}
-+			/* Neat trick that saves 1 symbol: instead of
-+			   or-ing 0 or 1 at each bit position, add 1
-+			   or 2 instead.  For example, 1011 is 1 << 0
-+			   + 1 << 1 + 2 << 2.  1010 is 2 << 0 + 2 << 1
-+			   + 1 << 2.  You can make any bit pattern
-+			   that way using 1 less symbol than the basic
-+			   or 0/1 method (except all bits 0, which
-+			   would use no symbols, but a run of length 0
-+			   doesn't mean anything in this context).
-+			   Thus space is saved. */
-+			t += (runPos << nextSym);
-+			/* +runPos if RUNA; +2*runPos if RUNB */
-+
-+			runPos <<= 1;
-+			continue;
-+		}
-+		/* When we hit the first non-run symbol after a run,
-+		   we now know how many times to repeat the last
-+		   literal, so append that many copies to our buffer
-+		   of decoded symbols (dbuf) now.  (The last literal
-+		   used is the one at the head of the mtfSymbol
-+		   array.) */
-+		if (runPos) {
-+			runPos = 0;
-+			if (dbufCount+t >= dbufSize)
-+				return RETVAL_DATA_ERROR;
-+
-+			uc = symToByte[mtfSymbol[0]];
-+			byteCount[uc] += t;
-+			while (t--)
-+				dbuf[dbufCount++] = uc;
-+		}
-+		/* Is this the terminating symbol? */
-+		if (nextSym > symTotal)
-+			break;
-+		/* At this point, nextSym indicates a new literal
-+		   character.  Subtract one to get the position in the
-+		   MTF array at which this literal is currently to be
-+		   found.  (Note that the result can't be -1 or 0,
-+		   because 0 and 1 are RUNA and RUNB.  But another
-+		   instance of the first symbol in the mtf array,
-+		   position 0, would have been handled as part of a
-+		   run above.  Therefore 1 unused mtf position minus 2
-+		   non-literal nextSym values equals -1.) */
-+		if (dbufCount >= dbufSize)
-+			return RETVAL_DATA_ERROR;
-+		i = nextSym - 1;
-+		uc = mtfSymbol[i];
-+		/* Adjust the MTF array.  Since we typically expect to
-+		 *move only a small number of symbols, and are bound
-+		 *by 256 in any case, using memmove here would
-+		 *typically be bigger and slower due to function call
-+		 *overhead and other assorted setup costs. */
-+		do {
-+			mtfSymbol[i] = mtfSymbol[i-1];
-+		} while (--i);
-+		mtfSymbol[0] = uc;
-+		uc = symToByte[uc];
-+		/* We have our literal byte.  Save it into dbuf. */
-+		byteCount[uc]++;
-+		dbuf[dbufCount++] = (unsigned int)uc;
-+	}
-+	/* At this point, we've read all the Huffman-coded symbols
-+	   (and repeated runs) for this block from the input stream,
-+	   and decoded them into the intermediate buffer.  There are
-+	   dbufCount many decoded bytes in dbuf[].  Now undo the
-+	   Burrows-Wheeler transform on dbuf.  See
-+	   http://dogma.net/markn/articles/bwt/bwt.htm
-+	 */
-+	/* Turn byteCount into cumulative occurrence counts of 0 to n-1. */
-+	j = 0;
-+	for (i = 0; i < 256; i++) {
-+		k = j+byteCount[i];
-+		byteCount[i] = j;
-+		j = k;
-+	}
-+	/* Figure out what order dbuf would be in if we sorted it. */
-+	for (i = 0; i < dbufCount; i++) {
-+		uc = (unsigned char)(dbuf[i] & 0xff);
-+		dbuf[byteCount[uc]] |= (i << 8);
-+		byteCount[uc]++;
-+	}
-+	/* Decode first byte by hand to initialize "previous" byte.
-+	   Note that it doesn't get output, and if the first three
-+	   characters are identical it doesn't qualify as a run (hence
-+	   writeRunCountdown = 5). */
-+	if (dbufCount) {
-+		if (origPtr >= dbufCount)
-+			return RETVAL_DATA_ERROR;
-+		bd->writePos = dbuf[origPtr];
-+		bd->writeCurrent = (unsigned char)(bd->writePos&0xff);
-+		bd->writePos >>= 8;
-+		bd->writeRunCountdown = 5;
-+	}
-+	bd->writeCount = dbufCount;
-+
-+	return RETVAL_OK;
-+}
-+
-+/* Undo burrows-wheeler transform on intermediate buffer to produce output.
-+   If start_bunzip was initialized with out_fd =-1, then up to len bytes of
-+   data are written to outbuf.  Return value is number of bytes written or
-+   error (all errors are negative numbers).  If out_fd!=-1, outbuf and len
-+   are ignored, data is written to out_fd and return is RETVAL_OK or error.
-+*/
-+
-+static int INIT read_bunzip(struct bunzip_data *bd, char *outbuf, int len)
-+{
-+	const unsigned int *dbuf;
-+	int pos, xcurrent, previous, gotcount;
-+
-+	/* If last read was short due to end of file, return last block now */
-+	if (bd->writeCount < 0)
-+		return bd->writeCount;
-+
-+	gotcount = 0;
-+	dbuf = bd->dbuf;
-+	pos = bd->writePos;
-+	xcurrent = bd->writeCurrent;
-+
-+	/* We will always have pending decoded data to write into the output
-+	   buffer unless this is the very first call (in which case we haven't
-+	   Huffman-decoded a block into the intermediate buffer yet). */
-+
-+	if (bd->writeCopies) {
-+		/* Inside the loop, writeCopies means extra copies (beyond 1) */
-+		--bd->writeCopies;
-+		/* Loop outputting bytes */
-+		for (;;) {
-+			/* If the output buffer is full, snapshot
-+			 * state and return */
-+			if (gotcount >= len) {
-+				bd->writePos = pos;
-+				bd->writeCurrent = xcurrent;
-+				bd->writeCopies++;
-+				return len;
-+			}
-+			/* Write next byte into output buffer, updating CRC */
-+			outbuf[gotcount++] = xcurrent;
-+			bd->writeCRC = (((bd->writeCRC) << 8)
-+				^bd->crc32Table[((bd->writeCRC) >> 24)
-+				^xcurrent]);
-+			/* Loop now if we're outputting multiple
-+			 * copies of this byte */
-+			if (bd->writeCopies) {
-+				--bd->writeCopies;
-+				continue;
-+			}
-+decode_next_byte:
-+			if (!bd->writeCount--)
-+				break;
-+			/* Follow sequence vector to undo
-+			 * Burrows-Wheeler transform */
-+			previous = xcurrent;
-+			pos = dbuf[pos];
-+			xcurrent = pos&0xff;
-+			pos >>= 8;
-+			/* After 3 consecutive copies of the same
-+			   byte, the 4th is a repeat count.  We count
-+			   down from 4 instead *of counting up because
-+			   testing for non-zero is faster */
-+			if (--bd->writeRunCountdown) {
-+				if (xcurrent != previous)
-+					bd->writeRunCountdown = 4;
-+			} else {
-+				/* We have a repeated run, this byte
-+				 * indicates the count */
-+				bd->writeCopies = xcurrent;
-+				xcurrent = previous;
-+				bd->writeRunCountdown = 5;
-+				/* Sometimes there are just 3 bytes
-+				 * (run length 0) */
-+				if (!bd->writeCopies)
-+					goto decode_next_byte;
-+				/* Subtract the 1 copy we'd output
-+				 * anyway to get extras */
-+				--bd->writeCopies;
-+			}
-+		}
-+		/* Decompression of this block completed successfully */
-+		bd->writeCRC = ~bd->writeCRC;
-+		bd->totalCRC = ((bd->totalCRC << 1) |
-+				(bd->totalCRC >> 31)) ^ bd->writeCRC;
-+		/* If this block had a CRC error, force file level CRC error. */
-+		if (bd->writeCRC != bd->headerCRC) {
-+			bd->totalCRC = bd->headerCRC+1;
-+			return RETVAL_LAST_BLOCK;
-+		}
-+	}
-+
-+	/* Refill the intermediate buffer by Huffman-decoding next
-+	 * block of input */
-+	/* (previous is just a convenient unused temp variable here) */
-+	previous = get_next_block(bd);
-+	if (previous) {
-+		bd->writeCount = previous;
-+		return (previous != RETVAL_LAST_BLOCK) ? previous : gotcount;
-+	}
-+	bd->writeCRC = 0xffffffffUL;
-+	pos = bd->writePos;
-+	xcurrent = bd->writeCurrent;
-+	goto decode_next_byte;
-+}
-+
-+static int INIT nofill(void *buf, unsigned int len)
-+{
-+	return -1;
-+}
-+
-+/* Allocate the structure, read file header.  If in_fd ==-1, inbuf must contain
-+   a complete bunzip file (len bytes long).  If in_fd!=-1, inbuf and len are
-+   ignored, and data is read from file handle into temporary buffer. */
-+static int INIT start_bunzip(struct bunzip_data **bdp, void *inbuf, int len,
-+			     int (*fill)(void*, unsigned int))
-+{
-+	struct bunzip_data *bd;
-+	unsigned int i, j, c;
-+	const unsigned int BZh0 =
-+		(((unsigned int)'B') << 24)+(((unsigned int)'Z') << 16)
-+		+(((unsigned int)'h') << 8)+(unsigned int)'0';
-+
-+	/* Figure out how much data to allocate */
-+	i = sizeof(struct bunzip_data);
-+
-+	/* Allocate bunzip_data.  Most fields initialize to zero. */
-+	bd = *bdp = malloc(i);
-+	memset(bd, 0, sizeof(struct bunzip_data));
-+	/* Setup input buffer */
-+	bd->inbuf = inbuf;
-+	bd->inbufCount = len;
-+	if (fill != NULL)
-+		bd->fill = fill;
-+	else
-+		bd->fill = nofill;
-+
-+	/* Init the CRC32 table (big endian) */
-+	for (i = 0; i < 256; i++) {
-+		c = i << 24;
-+		for (j = 8; j; j--)
-+			c = c&0x80000000 ? (c << 1)^0x04c11db7 : (c << 1);
-+		bd->crc32Table[i] = c;
-+	}
-+
-+	/* Ensure that file starts with "BZh['1'-'9']." */
-+	i = get_bits(bd, 32);
-+	if (((unsigned int)(i-BZh0-1)) >= 9)
-+		return RETVAL_NOT_BZIP_DATA;
-+
-+	/* Fourth byte (ascii '1'-'9'), indicates block size in units of 100k of
-+	   uncompressed data.  Allocate intermediate buffer for block. */
-+	bd->dbufSize = 100000*(i-BZh0);
-+
-+	bd->dbuf = large_malloc(bd->dbufSize * sizeof(int));
-+	return RETVAL_OK;
-+}
-+
-+/* Example usage: decompress src_fd to dst_fd.  (Stops at end of bzip2 data,
-+   not end of file.) */
-+STATIC int INIT bunzip2(unsigned char *buf, int len,
-+			int(*fill)(void*, unsigned int),
-+			int(*flush)(void*, unsigned int),
-+			unsigned char *outbuf,
-+			int *pos,
-+			void(*error_fn)(char *x))
-+{
-+	struct bunzip_data *bd;
-+	int i = -1;
-+	unsigned char *inbuf;
-+
-+	set_error_fn(error_fn);
-+	if (flush)
-+		outbuf = malloc(BZIP2_IOBUF_SIZE);
-+	else
-+		len -= 4; /* Uncompressed size hack active in pre-boot
-+			     environment */
-+	if (!outbuf) {
-+		error("Could not allocate output bufer");
-+		return -1;
-+	}
-+	if (buf)
-+		inbuf = buf;
-+	else
-+		inbuf = malloc(BZIP2_IOBUF_SIZE);
-+	if (!inbuf) {
-+		error("Could not allocate input bufer");
-+		goto exit_0;
-+	}
-+	i = start_bunzip(&bd, inbuf, len, fill);
-+	if (!i) {
-+		for (;;) {
-+			i = read_bunzip(bd, outbuf, BZIP2_IOBUF_SIZE);
-+			if (i <= 0)
-+				break;
-+			if (!flush)
-+				outbuf += i;
-+			else
-+				if (i != flush(outbuf, i)) {
-+					i = RETVAL_UNEXPECTED_OUTPUT_EOF;
-+					break;
-+				}
-+		}
-+	}
-+	/* Check CRC and release memory */
-+	if (i == RETVAL_LAST_BLOCK) {
-+		if (bd->headerCRC != bd->totalCRC)
-+			error("Data integrity error when decompressing.");
-+		else
-+			i = RETVAL_OK;
-+	} else if (i == RETVAL_UNEXPECTED_OUTPUT_EOF) {
-+		error("Compressed file ends unexpectedly");
-+	}
-+	if (bd->dbuf)
-+		large_free(bd->dbuf);
-+	if (pos)
-+		*pos = bd->inbufPos;
-+	free(bd);
-+	if (!buf)
-+		free(inbuf);
-+exit_0:
-+	if (flush)
-+		free(outbuf);
-+	return i;
-+}
-+
-+#define decompress bunzip2
-diff -purN linux-2.6.27.6/lib/decompress_unlzma.c linux-2.6.27.6udpcast/lib/decompress_unlzma.c
---- linux-2.6.27.6/lib/decompress_unlzma.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/lib/decompress_unlzma.c	2008-11-16 23:40:21.000000000 +0100
-@@ -0,0 +1,647 @@
-+/* Lzma decompressor for Linux kernel. Shamelessly snarfed
-+ *from busybox 1.1.1
-+ *
-+ *Linux kernel adaptation
-+ *Copyright (C) 2006  Alain < alain@knaff.lu >
-+ *
-+ *Based on small lzma deflate implementation/Small range coder
-+ *implementation for lzma.
-+ *Copyright (C) 2006  Aurelien Jacobs < aurel@gnuage.org >
-+ *
-+ *Based on LzmaDecode.c from the LZMA SDK 4.22 (http://www.7-zip.org/)
-+ *Copyright (C) 1999-2005  Igor Pavlov
-+ *
-+ *Copyrights of the parts, see headers below.
-+ *
-+ *
-+ *This program is free software; you can redistribute it and/or
-+ *modify it under the terms of the GNU Lesser General Public
-+ *License as published by the Free Software Foundation; either
-+ *version 2.1 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
-+ *Lesser General Public License for more details.
-+ *
-+ *You should have received a copy of the GNU Lesser General Public
-+ *License along with this library; if not, write to the Free Software
-+ *Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-+ */
-+
-+#ifndef STATIC
-+#include <linux/decompress/unlzma.h>
-+#endif /* STATIC */
-+
-+#include <linux/decompress/mm.h>
-+
-+#define	MIN(a, b) (((a) < (b)) ? (a) : (b))
-+
-+static long long INIT read_int(unsigned char *ptr, int size)
-+{
-+	int i;
-+	long long ret = 0;
-+
-+	for (i = 0; i < size; i++)
-+		ret = (ret << 8) | ptr[size-i-1];
-+	return ret;
-+}
-+
-+#define ENDIAN_CONVERT(x) \
-+  x = (typeof(x))read_int((unsigned char *)&x, sizeof(x))
-+
-+
-+/* Small range coder implementation for lzma.
-+ *Copyright (C) 2006  Aurelien Jacobs < aurel@gnuage.org >
-+ *
-+ *Based on LzmaDecode.c from the LZMA SDK 4.22 (http://www.7-zip.org/)
-+ *Copyright (c) 1999-2005  Igor Pavlov
-+ */
-+
-+#include <linux/compiler.h>
-+
-+#define LZMA_IOBUF_SIZE	0x10000
-+
-+struct rc {
-+	int (*fill)(void*, unsigned int);
-+	uint8_t *ptr;
-+	uint8_t *buffer;
-+	uint8_t *buffer_end;
-+	int buffer_size;
-+	uint32_t code;
-+	uint32_t range;
-+	uint32_t bound;
-+};
-+
-+
-+#define RC_TOP_BITS 24
-+#define RC_MOVE_BITS 5
-+#define RC_MODEL_TOTAL_BITS 11
-+
-+
-+/* Called twice: once at startup and once in rc_normalize() */
-+static void INIT rc_read(struct rc *rc)
-+{
-+	rc->buffer_size = rc->fill((char *)rc->buffer, LZMA_IOBUF_SIZE);
-+	if (rc->buffer_size <= 0)
-+		error("unexpected EOF");
-+	rc->ptr = rc->buffer;
-+	rc->buffer_end = rc->buffer + rc->buffer_size;
-+}
-+
-+/* Called once */
-+static inline void INIT rc_init(struct rc *rc,
-+				       int (*fill)(void*, unsigned int),
-+				       char *buffer, int buffer_size)
-+{
-+	rc->fill = fill;
-+	rc->buffer = (uint8_t *)buffer;
-+	rc->buffer_size = buffer_size;
-+	rc->buffer_end = rc->buffer + rc->buffer_size;
-+	rc->ptr = rc->buffer;
-+
-+	rc->code = 0;
-+	rc->range = 0xFFFFFFFF;
-+}
-+
-+static inline void INIT rc_init_code(struct rc *rc)
-+{
-+	int i;
-+
-+	for (i = 0; i < 5; i++) {
-+		if (rc->ptr >= rc->buffer_end)
-+			rc_read(rc);
-+		rc->code = (rc->code << 8) | *rc->ptr++;
-+	}
-+}
-+
-+
-+/* Called once. TODO: bb_maybe_free() */
-+static inline void INIT rc_free(struct rc *rc)
-+{
-+	free(rc->buffer);
-+}
-+
-+/* Called twice, but one callsite is in inline'd rc_is_bit_0_helper() */
-+static void INIT rc_do_normalize(struct rc *rc)
-+{
-+	if (rc->ptr >= rc->buffer_end)
-+		rc_read(rc);
-+	rc->range <<= 8;
-+	rc->code = (rc->code << 8) | *rc->ptr++;
-+}
-+static inline void INIT rc_normalize(struct rc *rc)
-+{
-+	if (rc->range < (1 << RC_TOP_BITS))
-+		rc_do_normalize(rc);
-+}
-+
-+/* Called 9 times */
-+/* Why rc_is_bit_0_helper exists?
-+ *Because we want to always expose (rc->code < rc->bound) to optimizer
-+ */
-+static inline uint32_t INIT rc_is_bit_0_helper(struct rc *rc, uint16_t *p)
-+{
-+	rc_normalize(rc);
-+	rc->bound = *p * (rc->range >> RC_MODEL_TOTAL_BITS);
-+	return rc->bound;
-+}
-+static inline int INIT rc_is_bit_0(struct rc *rc, uint16_t *p)
-+{
-+	uint32_t t = rc_is_bit_0_helper(rc, p);
-+	return rc->code < t;
-+}
-+
-+/* Called ~10 times, but very small, thus inlined */
-+static inline void INIT rc_update_bit_0(struct rc *rc, uint16_t *p)
-+{
-+	rc->range = rc->bound;
-+	*p += ((1 << RC_MODEL_TOTAL_BITS) - *p) >> RC_MOVE_BITS;
-+}
-+static inline void rc_update_bit_1(struct rc *rc, uint16_t *p)
-+{
-+	rc->range -= rc->bound;
-+	rc->code -= rc->bound;
-+	*p -= *p >> RC_MOVE_BITS;
-+}
-+
-+/* Called 4 times in unlzma loop */
-+static int INIT rc_get_bit(struct rc *rc, uint16_t *p, int *symbol)
-+{
-+	if (rc_is_bit_0(rc, p)) {
-+		rc_update_bit_0(rc, p);
-+		*symbol *= 2;
-+		return 0;
-+	} else {
-+		rc_update_bit_1(rc, p);
-+		*symbol = *symbol * 2 + 1;
-+		return 1;
-+	}
-+}
-+
-+/* Called once */
-+static inline int INIT rc_direct_bit(struct rc *rc)
-+{
-+	rc_normalize(rc);
-+	rc->range >>= 1;
-+	if (rc->code >= rc->range) {
-+		rc->code -= rc->range;
-+		return 1;
-+	}
-+	return 0;
-+}
-+
-+/* Called twice */
-+static inline void INIT
-+rc_bit_tree_decode(struct rc *rc, uint16_t *p, int num_levels, int *symbol)
-+{
-+	int i = num_levels;
-+
-+	*symbol = 1;
-+	while (i--)
-+		rc_get_bit(rc, p + *symbol, symbol);
-+	*symbol -= 1 << num_levels;
-+}
-+
-+
-+/*
-+ * Small lzma deflate implementation.
-+ * Copyright (C) 2006  Aurelien Jacobs < aurel@gnuage.org >
-+ *
-+ * Based on LzmaDecode.c from the LZMA SDK 4.22 (http://www.7-zip.org/)
-+ * Copyright (C) 1999-2005  Igor Pavlov
-+ */
-+
-+
-+struct lzma_header {
-+	uint8_t pos;
-+	uint32_t dict_size;
-+	uint64_t dst_size;
-+} __attribute__ ((packed)) ;
-+
-+
-+#define LZMA_BASE_SIZE 1846
-+#define LZMA_LIT_SIZE 768
-+
-+#define LZMA_NUM_POS_BITS_MAX 4
-+
-+#define LZMA_LEN_NUM_LOW_BITS 3
-+#define LZMA_LEN_NUM_MID_BITS 3
-+#define LZMA_LEN_NUM_HIGH_BITS 8
-+
-+#define LZMA_LEN_CHOICE 0
-+#define LZMA_LEN_CHOICE_2 (LZMA_LEN_CHOICE + 1)
-+#define LZMA_LEN_LOW (LZMA_LEN_CHOICE_2 + 1)
-+#define LZMA_LEN_MID (LZMA_LEN_LOW \
-+		      + (1 << (LZMA_NUM_POS_BITS_MAX + LZMA_LEN_NUM_LOW_BITS)))
-+#define LZMA_LEN_HIGH (LZMA_LEN_MID \
-+		       +(1 << (LZMA_NUM_POS_BITS_MAX + LZMA_LEN_NUM_MID_BITS)))
-+#define LZMA_NUM_LEN_PROBS (LZMA_LEN_HIGH + (1 << LZMA_LEN_NUM_HIGH_BITS))
-+
-+#define LZMA_NUM_STATES 12
-+#define LZMA_NUM_LIT_STATES 7
-+
-+#define LZMA_START_POS_MODEL_INDEX 4
-+#define LZMA_END_POS_MODEL_INDEX 14
-+#define LZMA_NUM_FULL_DISTANCES (1 << (LZMA_END_POS_MODEL_INDEX >> 1))
-+
-+#define LZMA_NUM_POS_SLOT_BITS 6
-+#define LZMA_NUM_LEN_TO_POS_STATES 4
-+
-+#define LZMA_NUM_ALIGN_BITS 4
-+
-+#define LZMA_MATCH_MIN_LEN 2
-+
-+#define LZMA_IS_MATCH 0
-+#define LZMA_IS_REP (LZMA_IS_MATCH + (LZMA_NUM_STATES << LZMA_NUM_POS_BITS_MAX))
-+#define LZMA_IS_REP_G0 (LZMA_IS_REP + LZMA_NUM_STATES)
-+#define LZMA_IS_REP_G1 (LZMA_IS_REP_G0 + LZMA_NUM_STATES)
-+#define LZMA_IS_REP_G2 (LZMA_IS_REP_G1 + LZMA_NUM_STATES)
-+#define LZMA_IS_REP_0_LONG (LZMA_IS_REP_G2 + LZMA_NUM_STATES)
-+#define LZMA_POS_SLOT (LZMA_IS_REP_0_LONG \
-+		       + (LZMA_NUM_STATES << LZMA_NUM_POS_BITS_MAX))
-+#define LZMA_SPEC_POS (LZMA_POS_SLOT \
-+		       +(LZMA_NUM_LEN_TO_POS_STATES << LZMA_NUM_POS_SLOT_BITS))
-+#define LZMA_ALIGN (LZMA_SPEC_POS \
-+		    + LZMA_NUM_FULL_DISTANCES - LZMA_END_POS_MODEL_INDEX)
-+#define LZMA_LEN_CODER (LZMA_ALIGN + (1 << LZMA_NUM_ALIGN_BITS))
-+#define LZMA_REP_LEN_CODER (LZMA_LEN_CODER + LZMA_NUM_LEN_PROBS)
-+#define LZMA_LITERAL (LZMA_REP_LEN_CODER + LZMA_NUM_LEN_PROBS)
-+
-+
-+struct writer {
-+	uint8_t *buffer;
-+	uint8_t previous_byte;
-+	size_t buffer_pos;
-+	int bufsize;
-+	size_t global_pos;
-+	int(*flush)(void*, unsigned int);
-+	struct lzma_header *header;
-+};
-+
-+struct cstate {
-+	int state;
-+	uint32_t rep0, rep1, rep2, rep3;
-+};
-+
-+static inline size_t INIT get_pos(struct writer *wr)
-+{
-+	return
-+		wr->global_pos + wr->buffer_pos;
-+}
-+
-+static inline uint8_t INIT peek_old_byte(struct writer *wr,
-+						uint32_t offs)
-+{
-+	if (!wr->flush) {
-+		int32_t pos;
-+		while (offs > wr->header->dict_size)
-+			offs -= wr->header->dict_size;
-+		pos = wr->buffer_pos - offs;
-+		return wr->buffer[pos];
-+	} else {
-+		uint32_t pos = wr->buffer_pos - offs;
-+		while (pos >= wr->header->dict_size)
-+			pos += wr->header->dict_size;
-+		return wr->buffer[pos];
-+	}
-+
-+}
-+
-+static inline void INIT write_byte(struct writer *wr, uint8_t byte)
-+{
-+	wr->buffer[wr->buffer_pos++] = wr->previous_byte = byte;
-+	if (wr->flush && wr->buffer_pos == wr->header->dict_size) {
-+		wr->buffer_pos = 0;
-+		wr->global_pos += wr->header->dict_size;
-+		wr->flush((char *)wr->buffer, wr->header->dict_size);
-+	}
-+}
-+
-+
-+static inline void INIT copy_byte(struct writer *wr, uint32_t offs)
-+{
-+	write_byte(wr, peek_old_byte(wr, offs));
-+}
-+
-+static inline void INIT copy_bytes(struct writer *wr,
-+					 uint32_t rep0, int len)
-+{
-+	do {
-+		copy_byte(wr, rep0);
-+		len--;
-+	} while (len != 0 && wr->buffer_pos < wr->header->dst_size);
-+}
-+
-+static inline void INIT process_bit0(struct writer *wr, struct rc *rc,
-+				     struct cstate *cst, uint16_t *p,
-+				     int pos_state, uint16_t *prob,
-+				     int lc, uint32_t literal_pos_mask) {
-+	int mi = 1;
-+	rc_update_bit_0(rc, prob);
-+	prob = (p + LZMA_LITERAL +
-+		(LZMA_LIT_SIZE
-+		 * (((get_pos(wr) & literal_pos_mask) << lc)
-+		    + (wr->previous_byte >> (8 - lc))))
-+		);
-+
-+	if (cst->state >= LZMA_NUM_LIT_STATES) {
-+		int match_byte = peek_old_byte(wr, cst->rep0);
-+		do {
-+			int bit;
-+			uint16_t *prob_lit;
-+
-+			match_byte <<= 1;
-+			bit = match_byte & 0x100;
-+			prob_lit = prob + 0x100 + bit + mi;
-+			if (rc_get_bit(rc, prob_lit, &mi)) {
-+				if (!bit)
-+					break;
-+			} else {
-+				if (bit)
-+					break;
-+			}
-+		} while (mi < 0x100);
-+	}
-+	while (mi < 0x100) {
-+		uint16_t *prob_lit = prob + mi;
-+		rc_get_bit(rc, prob_lit, &mi);
-+	}
-+	write_byte(wr, mi);
-+	if (cst->state < 4)
-+		cst->state = 0;
-+	else if (cst->state < 10)
-+		cst->state -= 3;
-+	else
-+		cst->state -= 6;
-+}
-+
-+static inline void INIT process_bit1(struct writer *wr, struct rc *rc,
-+					    struct cstate *cst, uint16_t *p,
-+					    int pos_state, uint16_t *prob) {
-+  int offset;
-+	uint16_t *prob_len;
-+	int num_bits;
-+	int len;
-+
-+	rc_update_bit_1(rc, prob);
-+	prob = p + LZMA_IS_REP + cst->state;
-+	if (rc_is_bit_0(rc, prob)) {
-+		rc_update_bit_0(rc, prob);
-+		cst->rep3 = cst->rep2;
-+		cst->rep2 = cst->rep1;
-+		cst->rep1 = cst->rep0;
-+		cst->state = cst->state < LZMA_NUM_LIT_STATES ? 0 : 3;
-+		prob = p + LZMA_LEN_CODER;
-+	} else {
-+		rc_update_bit_1(rc, prob);
-+		prob = p + LZMA_IS_REP_G0 + cst->state;
-+		if (rc_is_bit_0(rc, prob)) {
-+			rc_update_bit_0(rc, prob);
-+			prob = (p + LZMA_IS_REP_0_LONG
-+				+ (cst->state <<
-+				   LZMA_NUM_POS_BITS_MAX) +
-+				pos_state);
-+			if (rc_is_bit_0(rc, prob)) {
-+				rc_update_bit_0(rc, prob);
-+
-+				cst->state = cst->state < LZMA_NUM_LIT_STATES ?
-+					9 : 11;
-+				copy_byte(wr, cst->rep0);
-+				return;
-+			} else {
-+				rc_update_bit_1(rc, prob);
-+			}
-+		} else {
-+			uint32_t distance;
-+
-+			rc_update_bit_1(rc, prob);
-+			prob = p + LZMA_IS_REP_G1 + cst->state;
-+			if (rc_is_bit_0(rc, prob)) {
-+				rc_update_bit_0(rc, prob);
-+				distance = cst->rep1;
-+			} else {
-+				rc_update_bit_1(rc, prob);
-+				prob = p + LZMA_IS_REP_G2 + cst->state;
-+				if (rc_is_bit_0(rc, prob)) {
-+					rc_update_bit_0(rc, prob);
-+					distance = cst->rep2;
-+				} else {
-+					rc_update_bit_1(rc, prob);
-+					distance = cst->rep3;
-+					cst->rep3 = cst->rep2;
-+				}
-+				cst->rep2 = cst->rep1;
-+			}
-+			cst->rep1 = cst->rep0;
-+			cst->rep0 = distance;
-+		}
-+		cst->state = cst->state < LZMA_NUM_LIT_STATES ? 8 : 11;
-+		prob = p + LZMA_REP_LEN_CODER;
-+	}
-+
-+	prob_len = prob + LZMA_LEN_CHOICE;
-+	if (rc_is_bit_0(rc, prob_len)) {
-+		rc_update_bit_0(rc, prob_len);
-+		prob_len = (prob + LZMA_LEN_LOW
-+			    + (pos_state <<
-+			       LZMA_LEN_NUM_LOW_BITS));
-+		offset = 0;
-+		num_bits = LZMA_LEN_NUM_LOW_BITS;
-+	} else {
-+		rc_update_bit_1(rc, prob_len);
-+		prob_len = prob + LZMA_LEN_CHOICE_2;
-+		if (rc_is_bit_0(rc, prob_len)) {
-+			rc_update_bit_0(rc, prob_len);
-+			prob_len = (prob + LZMA_LEN_MID
-+				    + (pos_state <<
-+				       LZMA_LEN_NUM_MID_BITS));
-+			offset = 1 << LZMA_LEN_NUM_LOW_BITS;
-+			num_bits = LZMA_LEN_NUM_MID_BITS;
-+		} else {
-+			rc_update_bit_1(rc, prob_len);
-+			prob_len = prob + LZMA_LEN_HIGH;
-+			offset = ((1 << LZMA_LEN_NUM_LOW_BITS)
-+				  + (1 << LZMA_LEN_NUM_MID_BITS));
-+			num_bits = LZMA_LEN_NUM_HIGH_BITS;
-+		}
-+	}
-+
-+	rc_bit_tree_decode(rc, prob_len, num_bits, &len);
-+	len += offset;
-+
-+	if (cst->state < 4) {
-+		int pos_slot;
-+
-+		cst->state += LZMA_NUM_LIT_STATES;
-+		prob =
-+			p + LZMA_POS_SLOT +
-+			((len <
-+			  LZMA_NUM_LEN_TO_POS_STATES ? len :
-+			  LZMA_NUM_LEN_TO_POS_STATES - 1)
-+			 << LZMA_NUM_POS_SLOT_BITS);
-+		rc_bit_tree_decode(rc, prob,
-+				   LZMA_NUM_POS_SLOT_BITS,
-+				   &pos_slot);
-+		if (pos_slot >= LZMA_START_POS_MODEL_INDEX) {
-+			int i, mi;
-+			num_bits = (pos_slot >> 1) - 1;
-+			cst->rep0 = 2 | (pos_slot & 1);
-+			if (pos_slot < LZMA_END_POS_MODEL_INDEX) {
-+				cst->rep0 <<= num_bits;
-+				prob = p + LZMA_SPEC_POS +
-+					cst->rep0 - pos_slot - 1;
-+			} else {
-+				num_bits -= LZMA_NUM_ALIGN_BITS;
-+				while (num_bits--)
-+					cst->rep0 = (cst->rep0 << 1) |
-+						rc_direct_bit(rc);
-+				prob = p + LZMA_ALIGN;
-+				cst->rep0 <<= LZMA_NUM_ALIGN_BITS;
-+				num_bits = LZMA_NUM_ALIGN_BITS;
-+			}
-+			i = 1;
-+			mi = 1;
-+			while (num_bits--) {
-+				if (rc_get_bit(rc, prob + mi, &mi))
-+					cst->rep0 |= i;
-+				i <<= 1;
-+			}
-+		} else
-+			cst->rep0 = pos_slot;
-+		if (++(cst->rep0) == 0)
-+			return;
-+	}
-+
-+	len += LZMA_MATCH_MIN_LEN;
-+
-+	copy_bytes(wr, cst->rep0, len);
-+}
-+
-+
-+
-+STATIC inline int INIT unlzma(unsigned char *buf, int in_len,
-+			      int(*fill)(void*, unsigned int),
-+			      int(*flush)(void*, unsigned int),
-+			      unsigned char *output,
-+			      int *posp,
-+			      void(*error_fn)(char *x)
-+	)
-+{
-+	struct lzma_header header;
-+	int lc, pb, lp;
-+	uint32_t pos_state_mask;
-+	uint32_t literal_pos_mask;
-+	uint16_t *p;
-+	int num_probs;
-+	struct rc rc;
-+	int i, mi;
-+	struct writer wr;
-+	struct cstate cst;
-+	unsigned char *inbuf;
-+	int ret = -1;
-+
-+	set_error_fn(error_fn);
-+	if (!flush)
-+		in_len -= 4; /* Uncompressed size hack active in pre-boot
-+				environment */
-+	if (buf)
-+		inbuf = buf;
-+	else
-+		inbuf = malloc(LZMA_IOBUF_SIZE);
-+	if (!inbuf) {
-+		error("Could not allocate input bufer");
-+		goto exit_0;
-+	}
-+
-+	cst.state = 0;
-+	cst.rep0 = cst.rep1 = cst.rep2 = cst.rep3 = 1;
-+
-+	wr.header = &header;
-+	wr.flush = flush;
-+	wr.global_pos = 0;
-+	wr.previous_byte = 0;
-+	wr.buffer_pos = 0;
-+
-+	rc_init(&rc, fill, inbuf, in_len);
-+
-+	for (i = 0; i < sizeof(header); i++) {
-+		if (rc.ptr >= rc.buffer_end)
-+			rc_read(&rc);
-+		((unsigned char *)&header)[i] = *rc.ptr++;
-+	}
-+
-+	if (header.pos >= (9 * 5 * 5))
-+		error("bad header");
-+
-+	mi = 0;
-+	lc = header.pos;
-+	while (lc >= 9) {
-+		mi++;
-+		lc -= 9;
-+	}
-+	pb = 0;
-+	lp = mi;
-+	while (lp >= 5) {
-+		pb++;
-+		lp -= 5;
-+	}
-+	pos_state_mask = (1 << pb) - 1;
-+	literal_pos_mask = (1 << lp) - 1;
-+
-+	ENDIAN_CONVERT(header.dict_size);
-+	ENDIAN_CONVERT(header.dst_size);
-+
-+	if (header.dict_size == 0)
-+		header.dict_size = 1;
-+
-+	if (output)
-+		wr.buffer = output;
-+	else {
-+		wr.bufsize = MIN(header.dst_size, header.dict_size);
-+		wr.buffer = large_malloc(wr.bufsize);
-+	}
-+	if (wr.buffer == NULL)
-+		goto exit_1;
-+
-+	num_probs = LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp));
-+	p = (uint16_t *) large_malloc(num_probs * sizeof(*p));
-+	if (p == 0)
-+		goto exit_2;
-+	num_probs = LZMA_LITERAL + (LZMA_LIT_SIZE << (lc + lp));
-+	for (i = 0; i < num_probs; i++)
-+		p[i] = (1 << RC_MODEL_TOTAL_BITS) >> 1;
-+
-+	rc_init_code(&rc);
-+
-+	while (get_pos(&wr) < header.dst_size) {
-+		int pos_state =	get_pos(&wr) & pos_state_mask;
-+		uint16_t *prob = p + LZMA_IS_MATCH +
-+			(cst.state << LZMA_NUM_POS_BITS_MAX) + pos_state;
-+		if (rc_is_bit_0(&rc, prob))
-+			process_bit0(&wr, &rc, &cst, p, pos_state, prob,
-+				     lc, literal_pos_mask);
-+		else {
-+			process_bit1(&wr, &rc, &cst, p, pos_state, prob);
-+			if (cst.rep0 == 0)
-+				break;
-+		}
-+	}
-+
-+	if (posp)
-+		*posp = rc.ptr-rc.buffer;
-+	if (wr.flush)
-+		wr.flush(wr.buffer, wr.buffer_pos);
-+	ret = 0;
-+	large_free(p);
-+exit_2:
-+	if (!output)
-+		large_free(wr.buffer);
-+exit_1:
-+	if (!buf)
-+		free(inbuf);
-+exit_0:
-+	return ret;
-+}
-+
-+#define decompress unlzma
-diff -purN linux-2.6.27.6/lib/inflate.c linux-2.6.27.6udpcast/lib/inflate.c
---- linux-2.6.27.6/lib/inflate.c	2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/lib/inflate.c	2008-11-16 23:02:55.000000000 +0100
-@@ -109,20 +109,78 @@ static char rcsid[] = "#Id: inflate.c,v 
- #endif
- 
- #ifndef STATIC
-+#include <linux/decompress/inflate.h>
-+#endif /* ! STATIC */
- 
--#if defined(STDC_HEADERS) || defined(HAVE_STDLIB_H)
--#  include <sys/types.h>
--#  include <stdlib.h>
-+#include <linux/decompress/mm.h>
-+
-+#include <linux/string.h>
-+
-+#ifdef NEW_CODE
-+static int(*flush_cb)(void*, unsigned int);
-+static int(*fill_cb)(void*, unsigned int);
-+
-+/* Begin stuff copied from initramfs */
-+/*
-+ * gzip declarations
-+ */
-+
-+#define OF(args)  args
-+
-+#ifndef memzero
-+#define memzero(s, n)     memset((s), 0, (n))
- #endif
- 
--#include "gzip.h"
--#define STATIC
--#endif /* !STATIC */
-+#define INBUFSIZ 4096
-+
-+#define WSIZE 0x8000    /* window size--must be a power of two, and */
-+			/*  at least 32K for zip's deflate method */
-+
-+static uint8_t *inbuf;
-+static uint8_t *window;
-+
-+static unsigned insize;  /* valid bytes in inbuf */
-+static unsigned outcnt;  /* bytes in output buffer */
-+static long bytes_out;
-+
-+/* --- */
-+
-+static unsigned inptr;   /* index of next byte to be processed in inbuf */
-+
-+/* --- */
-+
-+/* ===========================================================================
-+ * Fill the input buffer. This is called only when the buffer is empty
-+ * and at least one byte is really needed.
-+ * Returning -1 does not guarantee that gunzip() will ever return.
-+ */
-+static int INIT fill_inbuf(void)
-+{
-+	insize = fill_cb(inbuf, INBUFSIZ);
-+	if (insize <= 0) {
-+		error("RAMDISK: ran out of compressed data");
-+		return -1;
-+	}
-+
-+	inptr = 1;
-+
-+	return inbuf[0];
-+}
-+
-+#define get_byte()  (inptr < insize ? inbuf[inptr++] : fill_inbuf())
-+
-+/* Diagnostic functions (stubbed out) */
-+#define Assert(cond, msg)
-+#define Trace(x)
-+#define Tracev(x)
-+#define Tracevv(x)
-+#define Tracec(c, x)
-+#define Tracecv(c, x)
- 
--#ifndef INIT
--#define INIT
-+static void flush_window(void);
-+/* End stuff copied from initramfs */
- #endif
--	
-+
- #define slide window
- 
- /* Huffman code lookup table entry--this entry is four bytes for machines
-@@ -133,10 +191,10 @@ static char rcsid[] = "#Id: inflate.c,v 
-    an unused code.  If a code with e == 99 is looked up, this implies an
-    error in the data. */
- struct huft {
--  uch e;                /* number of extra bits or operation */
--  uch b;                /* number of bits in this code or subcode */
-+  uint8_t e;                /* number of extra bits or operation */
-+  uint8_t b;                /* number of bits in this code or subcode */
-   union {
--    ush n;              /* literal, length base, or distance base */
-+    uint16_t n;              /* literal, length base, or distance base */
-     struct huft *t;     /* pointer to next level of table */
-   } v;
- };
-@@ -144,7 +202,7 @@ struct huft {
- 
- /* Function prototypes */
- STATIC int INIT huft_build OF((unsigned *, unsigned, unsigned, 
--		const ush *, const ush *, struct huft **, int *));
-+		const uint16_t *, const uint16_t *, struct huft **, int *));
- STATIC int INIT huft_free OF((struct huft *));
- STATIC int INIT inflate_codes OF((struct huft *, struct huft *, int, int));
- STATIC int INIT inflate_stored OF((void));
-@@ -159,28 +217,28 @@ STATIC int INIT inflate OF((void));
-    circular buffer.  The index is updated simply by incrementing and then
-    ANDing with 0x7fff (32K-1). */
- /* It is left to other modules to supply the 32 K area.  It is assumed
--   to be usable as if it were declared "uch slide[32768];" or as just
--   "uch *slide;" and then malloc'ed in the latter case.  The definition
-+   to be usable as if it were declared "uint8_t slide[32768];" or as just
-+   "uint8_t *slide;" and then malloc'ed in the latter case.  The definition
-    must be in unzip.h, included above. */
- /* unsigned wp;             current position in slide */
- #define wp outcnt
- #define flush_output(w) (wp=(w),flush_window())
- 
- /* Tables for deflate from PKZIP's appnote.txt. */
--static const unsigned border[] = {    /* Order of the bit length code lengths */
-+static const unsigned border[] = {   /* Order of the bit length code lengths */
-         16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
--static const ush cplens[] = {         /* Copy lengths for literal codes 257..285 */
-+static const uint16_t cplens[] = { /* Copy lengths for literal codes 257..285 */
-         3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
-         35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
-         /* note: see note #13 above about the 258 in this list. */
--static const ush cplext[] = {         /* Extra bits for literal codes 257..285 */
-+static const uint16_t cplext[] = {   /* Extra bits for literal codes 257..285 */
-         0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
-         3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99}; /* 99==invalid */
--static const ush cpdist[] = {         /* Copy offsets for distance codes 0..29 */
-+static const uint16_t cpdist[] = {   /* Copy offsets for distance codes 0..29 */
-         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
-         257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
-         8193, 12289, 16385, 24577};
--static const ush cpdext[] = {         /* Extra bits for distance codes */
-+static const uint16_t cpdext[] = {   /* Extra bits for distance codes */
-         0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
-         7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
-         12, 12, 13, 13};
-@@ -217,59 +275,21 @@ static const ush cpdext[] = {         /*
-    the stream.
-  */
- 
--STATIC ulg bb;                         /* bit buffer */
-+STATIC uint32_t bb;                         /* bit buffer */
- STATIC unsigned bk;                    /* bits in bit buffer */
- 
--STATIC const ush mask_bits[] = {
-+STATIC const uint16_t mask_bits[] = {
-     0x0000,
-     0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
-     0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
- };
- 
--#define NEXTBYTE()  ({ int v = get_byte(); if (v < 0) goto underrun; (uch)v; })
--#define NEEDBITS(n) {while(k<(n)){b|=((ulg)NEXTBYTE())<<k;k+=8;}}
-+#define NEXTBYTE()  ({ int v = get_byte(); if (v < 0) goto underrun; \
-+			(uint8_t)v; })
-+#define NEEDBITS(n) {while (k < (n)) \
-+			{b |= ((uint32_t)NEXTBYTE())<<k; k += 8; } }
- #define DUMPBITS(n) {b>>=(n);k-=(n);}
- 
--#ifndef NO_INFLATE_MALLOC
--/* A trivial malloc implementation, adapted from
-- *  malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
-- */
--
--static unsigned long malloc_ptr;
--static int malloc_count;
--
--static void *malloc(int size)
--{
--       void *p;
--
--       if (size < 0)
--		error("Malloc error");
--       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)
--		error("Out of memory");
--
--       malloc_count++;
--       return p;
--}
--
--static void free(void *where)
--{
--       malloc_count--;
--       if (!malloc_count)
--		malloc_ptr = free_mem_ptr;
--}
--#else
--#define malloc(a) kmalloc(a, GFP_KERNEL)
--#define free(a) kfree(a)
--#endif
--
- /*
-    Huffman code decoding is performed using a multi-level table lookup.
-    The fastest way to decode is to simply build a lookup table whose
-@@ -307,7 +327,7 @@ STATIC const int lbits = 9;          /* 
- STATIC const int dbits = 6;          /* bits in base distance lookup table */
- 
- 
--/* If BMAX needs to be larger than 16, then h and x[] should be ulg. */
-+/* If BMAX needs to be larger than 16, then h and x[] should be uint32_t. */
- #define BMAX 16         /* maximum bit length of any code (16 for explode) */
- #define N_MAX 288       /* maximum number of codes in any set */
- 
-@@ -319,8 +339,8 @@ STATIC int INIT huft_build(
- 	unsigned *b,            /* code lengths in bits (all assumed <= BMAX) */
- 	unsigned n,             /* number of codes (assumed <= N_MAX) */
- 	unsigned s,             /* number of simple-valued codes (0..s-1) */
--	const ush *d,           /* list of base values for non-simple codes */
--	const ush *e,           /* list of extra bits for non-simple codes */
-+	const uint16_t *d,      /* list of base values for non-simple codes */
-+	const uint16_t *e,      /* list of extra bits for non-simple codes */
- 	struct huft **t,        /* result: starting table */
- 	int *m                  /* maximum lookup bits, returns actual */
- 	)
-@@ -500,8 +520,8 @@ DEBG1("5 ");
-         if (h)
-         {
-           x[h] = i;             /* save pattern for backing up */
--          r.b = (uch)l;         /* bits to dump before this table */
--          r.e = (uch)(16 + j);  /* bits in this table */
-+	  r.b = (uint8_t)l;         /* bits to dump before this table */
-+	  r.e = (uint8_t)(16 + j);  /* bits in this table */
-           r.v.t = q;            /* pointer to this table */
-           j = i >> (w - l);     /* (get around Turbo C bug) */
-           u[h-1][j] = r;        /* connect to last table */
-@@ -511,18 +531,18 @@ DEBG1("6 ");
- DEBG("h6c ");
- 
-       /* set up table entry in r */
--      r.b = (uch)(k - w);
-+      r.b = (uint8_t)(k - w);
-       if (p >= v + n)
-         r.e = 99;               /* out of values--invalid code */
-       else if (*p < s)
-       {
--        r.e = (uch)(*p < 256 ? 16 : 15);    /* 256 is end-of-block code */
--        r.v.n = (ush)(*p);             /* simple code is just the value */
-+	r.e = (uint8_t)(*p < 256 ? 16 : 15);    /* 256 is end-of-block code */
-+	r.v.n = (uint16_t)(*p);             /* simple code is just the value */
- 	p++;                           /* one compiler does not like *p++ */
-       }
-       else
-       {
--        r.e = (uch)e[*p - s];   /* non-simple--look up in lists */
-+	r.e = (uint8_t)e[*p - s];   /* non-simple--look up in lists */
-         r.v.n = d[*p++ - s];
-       }
- DEBG("h6d ");
-@@ -592,11 +612,12 @@ STATIC int INIT inflate_codes(
-    Return an error code or zero if it all goes ok. */
- {
-   register unsigned e;  /* table entry flag/number of extra bits */
--  unsigned n, d;        /* length and index for copy */
-+  unsigned n;
-+  int d;              /* source index for copy */
-   unsigned w;           /* current window position */
-   struct huft *t;       /* pointer to table entry */
-   unsigned ml, md;      /* masks for bl and bd bits */
--  register ulg b;       /* bit buffer */
-+  register uint32_t b;       /* bit buffer */
-   register unsigned k;  /* number of bits in bit buffer */
- 
- 
-@@ -622,7 +643,7 @@ STATIC int INIT inflate_codes(
-     DUMPBITS(t->b)
-     if (e == 16)                /* then it's a literal */
-     {
--      slide[w++] = (uch)t->v.n;
-+      slide[w++] = (uint8_t)t->v.n;
-       Tracevv((stderr, "%c", slide[w-1]));
-       if (w == WSIZE)
-       {
-@@ -659,11 +680,25 @@ STATIC int INIT inflate_codes(
- 
-       /* do the copy */
-       do {
--        n -= (e = (e = WSIZE - ((d &= WSIZE-1) > w ? d : w)) > n ? n : e);
-+#ifdef NEW_CODE
-+	if (flush_cb) {
-+#endif
-+		/* Sliding window emulated using circular buffer:
-+		 * manage wrap-around */
-+		e = WSIZE - ((d &= WSIZE-1) > w ? d : w);
-+		if (e > n)
-+			e = n;
-+#ifdef NEW_CODE
-+	} else {
-+		e = n;
-+	}
-+#endif
-+	n -= e;
-+
- #if !defined(NOMEMCPY) && !defined(DEBUG)
-         if (w - d >= e)         /* (this test assumes unsigned comparison) */
-         {
--          memcpy(slide + w, slide + d, e);
-+		memcpy(slide + w, slide + d, e);
-           w += e;
-           d += e;
-         }
-@@ -673,9 +708,8 @@ STATIC int INIT inflate_codes(
-             slide[w++] = slide[d++];
- 	    Tracevv((stderr, "%c", slide[w-1]));
-           } while (--e);
--        if (w == WSIZE)
--        {
--          flush_output(w);
-+	if (w == WSIZE) {
-+	  flush_output(w);
-           w = 0;
-         }
-       } while (n);
-@@ -702,7 +736,7 @@ STATIC int INIT inflate_stored(void)
- {
-   unsigned n;           /* number of bytes in block */
-   unsigned w;           /* current window position */
--  register ulg b;       /* bit buffer */
-+  register uint32_t b;       /* bit buffer */
-   register unsigned k;  /* number of bits in bit buffer */
- 
- DEBG("<stor");
-@@ -732,7 +766,7 @@ DEBG("<stor");
-   while (n--)
-   {
-     NEEDBITS(8)
--    slide[w++] = (uch)b;
-+    slide[w++] = (uint8_t)b;
-     if (w == WSIZE)
-     {
-       flush_output(w);
-@@ -838,7 +872,7 @@ STATIC int noinline INIT inflate_dynamic
-   unsigned nl;          /* number of literal/length codes */
-   unsigned nd;          /* number of distance codes */
-   unsigned *ll;         /* literal/length and distance code lengths */
--  register ulg b;       /* bit buffer */
-+  register uint32_t b;       /* bit buffer */
-   register unsigned k;  /* number of bits in bit buffer */
-   int ret;
- 
-@@ -1033,7 +1067,7 @@ STATIC int INIT inflate_block(
- /* decompress an inflated block */
- {
-   unsigned t;           /* block type */
--  register ulg b;       /* bit buffer */
-+  register uint32_t b;       /* bit buffer */
-   register unsigned k;  /* number of bits in bit buffer */
- 
-   DEBG("<blk");
-@@ -1130,8 +1164,8 @@ STATIC int INIT inflate(void)
-  *
-  **********************************************************************/
- 
--static ulg crc_32_tab[256];
--static ulg crc;		/* initialized in makecrc() so it'll reside in bss */
-+static uint32_t crc_32_tab[256];
-+static uint32_t crc;	/* initialized in makecrc() so it'll reside in bss */
- #define CRC_VALUE (crc ^ 0xffffffffUL)
- 
- /*
-@@ -1172,7 +1206,7 @@ makecrc(void)
-   }
- 
-   /* this is initialized here so this code could reside in ROM */
--  crc = (ulg)0xffffffffUL; /* shift register contents */
-+  crc = (uint32_t)0xffffffffUL; /* shift register contents */
- }
- 
- /* gzip flag byte */
-@@ -1184,18 +1218,89 @@ makecrc(void)
- #define ENCRYPTED    0x20 /* bit 5 set: file is encrypted */
- #define RESERVED     0xC0 /* bit 6,7:   reserved */
- 
-+#ifdef NEW_CODE
-+/* ===========================================================================
-+ * Write the output window window[0..outcnt-1] and update crc and bytes_out.
-+ * (Used for the decompressed data only.)
-+ */
-+static void INIT flush_window(void)
-+{
-+	uint32_t c = crc;         /* temporary variable */
-+	unsigned n;
-+	uint8_t *in, ch;
-+
-+	in = window;
-+	for (n = 0; n < outcnt; n++) {
-+		ch = *in++;
-+		c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
-+	}
-+	crc = c;
-+	bytes_out += (uint32_t)outcnt;
-+	if (flush_cb != NULL)
-+		flush_cb(window, outcnt); /* TODO: handle unzip_error */
-+	else
-+		window += outcnt;
-+	outcnt = 0;
-+}
-+
-+static int empty_fill(void *buf, unsigned int len)
-+{
-+	return 0;
-+}
-+#endif
-+
-+
- /*
-  * Do the uncompression!
-  */
--static int INIT gunzip(void)
-+STATIC int INIT gunzip(
-+#ifdef NEW_CODE
-+		       unsigned char *buf, int len,
-+		       int(*fill)(void*, unsigned int),
-+		       int(*flush)(void*, unsigned int),
-+		       unsigned char *output,
-+		       int *posp,
-+		       void(*error_fn)(char *x)
-+#else
-+		       void
-+#endif
-+  )
- {
--    uch flags;
-+    uint8_t flags;
-     unsigned char magic[2]; /* magic header */
-     char method;
--    ulg orig_crc = 0;       /* original crc */
--    ulg orig_len = 0;       /* original uncompressed length */
-+    uint32_t orig_crc = 0;       /* original crc */
-+    uint32_t orig_len = 0;       /* original uncompressed length */
-     int res;
- 
-+#ifdef NEW_CODE
-+    set_error_fn(error_fn);
-+    if (fill == NULL)
-+	    fill_cb = empty_fill;
-+    else
-+	    fill_cb = fill;
-+    if (output)
-+	    window = output;
-+    else {
-+	    window = malloc(0x8000);
-+	    if (!window)
-+		    panic("can't allocate buffers");
-+	    flush_cb = flush;
-+    }
-+
-+    insize = len;
-+    if (buf)
-+	    inbuf = buf;
-+    else
-+	    inbuf = malloc(INBUFSIZ);
-+#endif
-+
-+    inptr = 0;
-+    outcnt = 0;		/* bytes in output buffer */
-+    bytes_out = 0;
-+    crc = (uint32_t)0xffffffffL; /* shift register contents */
-+    makecrc();
-+
-     magic[0] = NEXTBYTE();
-     magic[1] = NEXTBYTE();
-     method   = NEXTBYTE();
-@@ -1212,7 +1317,7 @@ static int INIT gunzip(void)
- 	    return -1;
-     }
- 
--    flags  = (uch)get_byte();
-+    flags  = (uint8_t)get_byte();
-     if ((flags & ENCRYPTED) != 0) {
- 	    error("Input is encrypted");
- 	    return -1;
-@@ -1277,15 +1382,15 @@ static int INIT gunzip(void)
-     /* crc32  (see algorithm.doc)
-      * uncompressed input size modulo 2^32
-      */
--    orig_crc = (ulg) NEXTBYTE();
--    orig_crc |= (ulg) NEXTBYTE() << 8;
--    orig_crc |= (ulg) NEXTBYTE() << 16;
--    orig_crc |= (ulg) NEXTBYTE() << 24;
-+    orig_crc = (uint32_t) NEXTBYTE();
-+    orig_crc |= (uint32_t) NEXTBYTE() << 8;
-+    orig_crc |= (uint32_t) NEXTBYTE() << 16;
-+    orig_crc |= (uint32_t) NEXTBYTE() << 24;
-     
--    orig_len = (ulg) NEXTBYTE();
--    orig_len |= (ulg) NEXTBYTE() << 8;
--    orig_len |= (ulg) NEXTBYTE() << 16;
--    orig_len |= (ulg) NEXTBYTE() << 24;
-+    orig_len = (uint32_t) NEXTBYTE();
-+    orig_len |= (uint32_t) NEXTBYTE() << 8;
-+    orig_len |= (uint32_t) NEXTBYTE() << 16;
-+    orig_len |= (uint32_t) NEXTBYTE() << 24;
-     
-     /* Validate decompression */
-     if (orig_crc != CRC_VALUE) {
-@@ -1296,11 +1401,22 @@ static int INIT gunzip(void)
- 	    error("length error");
- 	    return -1;
-     }
-+#ifdef NEW_CODE
-+    if (!output)
-+	    free(window);
-+    if (posp)
-+	    *posp = inptr;
-+#endif
-     return 0;
- 
-  underrun:			/* NEXTBYTE() goto's here if needed */
-+    free(window);
-+#ifdef NEW_CODE
-+    if (!buf)
-+	    free(inbuf);
-+#endif
-     error("out of input data");
-     return -1;
- }
- 
--
-+#define decompress gunzip
-diff -purN linux-2.6.27.6/lib/Makefile linux-2.6.27.6udpcast/lib/Makefile
---- linux-2.6.27.6/lib/Makefile	2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/lib/Makefile	2008-11-16 23:07:34.000000000 +0100
-@@ -11,7 +11,8 @@ lib-y := ctype.o string.o vsprintf.o cmd
- 	 rbtree.o radix-tree.o dump_stack.o \
- 	 idr.o int_sqrt.o extable.o prio_tree.o \
- 	 sha1.o irq_regs.o reciprocal_div.o argv_split.o \
--	 proportions.o prio_heap.o ratelimit.o show_mem.o
-+	 proportions.o prio_heap.o ratelimit.o show_mem.o \
-+	 inflate.o decompress_bunzip2.o decompress_unlzma.o
- 
- lib-$(CONFIG_MMU) += ioremap.o
- lib-$(CONFIG_SMP) += cpumask.o
-diff -purN linux-2.6.27.6/scripts/bin_size linux-2.6.27.6udpcast/scripts/bin_size
---- linux-2.6.27.6/scripts/bin_size	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/scripts/bin_size	2008-11-16 23:43:34.000000000 +0100
-@@ -0,0 +1,10 @@
-+#!/bin/sh
-+
-+if [ $# = 0 ] ; then
-+   echo Usage: $0 file
-+fi
-+
-+size_dec=`stat -c "%s" $1`
-+size_hex_echo_string=`printf "%08x" $size_dec |
-+     sed 's/\(..\)\(..\)\(..\)\(..\)/\\\\x\4\\\\x\3\\\\x\2\\\\x\1/g'`
-+/bin/echo -ne $size_hex_echo_string
-diff -purN linux-2.6.27.6/scripts/Makefile.lib linux-2.6.27.6udpcast/scripts/Makefile.lib
---- linux-2.6.27.6/scripts/Makefile.lib	2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/scripts/Makefile.lib	2008-11-16 23:02:55.000000000 +0100
-@@ -174,3 +174,17 @@ quiet_cmd_gzip = GZIP    $@
- cmd_gzip = gzip -f -9 < $< > $@
- 
- 
-+# Bzip2
-+# ---------------------------------------------------------------------------
-+
-+# Bzip2 does not include size in file... so we have to fake that
-+size_append=$(CONFIG_SHELL) $(srctree)/scripts/bin_size
-+
-+quiet_cmd_bzip2 = BZIP2    $@
-+cmd_bzip2 = (bzip2 -9 < $< ; $(size_append) $<) > $@ || (rm -f $@ ; false)
-+
-+# Lzma
-+# ---------------------------------------------------------------------------
-+
-+quiet_cmd_lzma = LZMA    $@
-+cmd_lzma = (lzma e $< $@; $(size_append) $<) > $@ || (rm -f $@ ; false)
-- 
2.25.1