wok-current rev 3
Add 'linux' Kernel config + patches
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Thu Dec 13 11:30:29 2007 +0100 (2007-12-13) |
parents | 47ae9d067aef |
children | bc07037253c6 |
files | linux/receipt linux/stuff/boot-kernel.u linux/stuff/decompress_unlzma.u linux/stuff/gztazmod.sh linux/stuff/linux-2.6.22.9-slitaz.config linux/stuff/linux-lzma-2.6.22.9.u |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/linux/receipt Thu Dec 13 11:30:29 2007 +0100 1.3 @@ -0,0 +1,53 @@ 1.4 +# SliTaz package receipt. 1.5 + 1.6 +PACKAGE="linux" 1.7 +VERSION="2.6.22.9" 1.8 +CATEGORY="base-system" 1.9 +SHORT_DESC="The Linux kernel and modules." 1.10 +MAINTAINER="pankso@slitaz.org" 1.11 +TARBALL="$PACKAGE-$VERSION.tar.bz2" 1.12 +WEB_SITE="http://www.kernel.org/" 1.13 +WGET_URL="http://www.eu.kernel.org/pub/linux/kernel/v2.6/$TARBALL" 1.14 + 1.15 +# Rules to configure and make the package. 1.16 +compile_rules() 1.17 +{ 1.18 + cd $src 1.19 + # lzma and boot patch from pascal 1.20 + patch -p1 < ../stuff/boot-kernel.u 1.21 + patch -p1 < ../stuff/$PACKAGE-lzma-$VERSION.u 1.22 + patch -p1 < ../stuff/decompress_unlzma.u 1.23 + make mrproper 1.24 + cp ../stuff/$PACKAGE-$VERSION-slitaz.config .config 1.25 + make oldconfig 1.26 + make bzImage 1.27 + make modules 1.28 + make INSTALL_MOD_PATH=$PWD/_pkg modules_install 1.29 +} 1.30 + 1.31 +# Rules to gen a SliTaz package suitable for Tazpkg. 1.32 +genpkg_rules() 1.33 +{ 1.34 + mkdir $fs/boot 1.35 + cp -a $src/arch/i386/boot/bzImage $fs/boot/vmlinuz-$VERSION-slitaz 1.36 + cp -a $_pkg/* $fs 1.37 + # Compress all modules. 1.38 + # Package module-init-tools is compiled with zlib support. 1.39 + # 1.40 + ./stuff/gztazmod.sh $fs/lib/modules/$VERSION-slitaz 1.41 +} 1.42 + 1.43 +# Pre and post install commands for Tazpkg. 1.44 +# GRUB stuf. 1.45 +post_install() 1.46 +{ 1.47 + echo "Processing post-install commands..." 1.48 + echo "----" 1.49 + echo "If you have GRUB installed, you can add tree lines to boot SliTaz." 1.50 + echo "Example /boot/grub/menu.lst" 1.51 + echo -e " 1.52 +title SliTaz GNU/Linux (Kernel $VERSION-slitaz) 1.53 + root(hd0,0) 1.54 + kernel /boot/vmlinuz-$VERSION-slitaz root=/dev/hda1 vga=771\n" 1.55 + echo "----" 1.56 +}
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/linux/stuff/boot-kernel.u Thu Dec 13 11:30:29 2007 +0100 2.3 @@ -0,0 +1,11 @@ 2.4 +--- linux-2.6.22.9/init/initramfs.c 2.5 ++++ linux-2.6.22.9/init/initramfs.c 2.6 +@@ -549,7 +549,7 @@ 2.7 + panic(err); 2.8 + #ifdef CONFIG_BLK_DEV_INITRD 2.9 + if (initrd_start) { 2.10 +-#ifdef CONFIG_BLK_DEV_RAM 2.11 ++#ifdef NOT_IN_SLITAZ_CONFIG_BLK_DEV_RAM 2.12 + int fd; 2.13 + printk(KERN_INFO "checking if image is initramfs..."); 2.14 + err = unpack_to_rootfs((char *)initrd_start,
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/linux/stuff/decompress_unlzma.u Thu Dec 13 11:30:29 2007 +0100 3.3 @@ -0,0 +1,10 @@ 3.4 +--- linux-2.6.22.9/lib/decompress_unlzma.c 3.5 ++++ linux-2.6.22.9/lib/decompress_unlzma.c 3.6 +@@ -73,6 +73,7 @@ 3.7 + 3.8 + #endif 3.9 + 3.10 ++#define CONFIG_FEATURE_LZMA_FAST 3.11 + #include <linux/decompress_unlzma.h> 3.12 + 3.13 + #define MIN(a,b) (((a)<(b))?(a):(b))
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/linux/stuff/gztazmod.sh Thu Dec 13 11:30:29 2007 +0100 4.3 @@ -0,0 +1,64 @@ 4.4 +#!/bin/sh 4.5 +# gztazmod.sh: Compress Linux kernel modules for SliTaz GNU/Linux. 4.6 +# 2007/10/04 <pankso@slitaz.org> - GNU General Public License. 4.7 +# 4.8 + 4.9 +# We do our work in the kernel version modules directory. 4.10 +if [ -z "$1" ] ; then 4.11 + echo "" 4.12 + echo -e "\033[1musage:\033[0m `basename $0` path/to/kernel-version" 4.13 + echo "" 4.14 + exit 1 4.15 +fi 4.16 + 4.17 +if [ ! -r "$1" ] ; then 4.18 + echo "" 4.19 + echo -e "Error : $1 does not exist." 4.20 + echo "" 4.21 + exit 1 4.22 +fi 4.23 + 4.24 +cd $1 4.25 + 4.26 +# Status functions. 4.27 +status() 4.28 +{ 4.29 + local CHECK=$? 4.30 + echo -en "\\033[70G[ " 4.31 + if [ $CHECK = 0 ]; then 4.32 + echo -en "\\033[1;33mOK" 4.33 + else 4.34 + echo -en "\\033[1;31mFailed" 4.35 + fi 4.36 + echo -e "\\033[0;39m ]" 4.37 +} 4.38 + 4.39 +# Script start. 4.40 +echo "" 4.41 +echo "Starting gztazmod.sh to build compressed kernel modules... " 4.42 +echo "" 4.43 + 4.44 +# Find all modules. 4.45 +echo -n "Searching all modules to gzip them... " 4.46 +find . -name "*.ko" -exec gzip '{}' \; 4.47 +status 4.48 + 4.49 +# Build a new temporary modules.dep. 4.50 +echo -n "Building tmp.dep... " 4.51 +sed 's/\.ko/.ko.gz/g' modules.dep > tmp.dep 4.52 +status 4.53 + 4.54 +# Destroy original modules.dep 4.55 +echo -n "Destroying modules.dep... " 4.56 +rm modules.dep 4.57 +status 4.58 + 4.59 +# Remove tmp.dep to modules.dep. 4.60 +echo -n "Removing tmp.dep to modules.dep... " 4.61 +mv tmp.dep modules.dep 4.62 +status 4.63 + 4.64 +# Script end. 4.65 +echo "" 4.66 +echo "Kernel modules `basename $1` are ready." 4.67 +echo ""
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 5.2 +++ b/linux/stuff/linux-2.6.22.9-slitaz.config Thu Dec 13 11:30:29 2007 +0100 5.3 @@ -0,0 +1,1828 @@ 5.4 +# 5.5 +# Automatically generated make config: don't edit 5.6 +# Linux kernel version: 2.6.22.9 5.7 +# Sat Dec 1 11:06:26 2007 5.8 +# 5.9 +CONFIG_X86_32=y 5.10 +CONFIG_GENERIC_TIME=y 5.11 +CONFIG_CLOCKSOURCE_WATCHDOG=y 5.12 +CONFIG_GENERIC_CLOCKEVENTS=y 5.13 +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y 5.14 +CONFIG_LOCKDEP_SUPPORT=y 5.15 +CONFIG_STACKTRACE_SUPPORT=y 5.16 +CONFIG_SEMAPHORE_SLEEPERS=y 5.17 +CONFIG_X86=y 5.18 +CONFIG_MMU=y 5.19 +CONFIG_ZONE_DMA=y 5.20 +CONFIG_QUICKLIST=y 5.21 +CONFIG_GENERIC_ISA_DMA=y 5.22 +CONFIG_GENERIC_IOMAP=y 5.23 +CONFIG_GENERIC_BUG=y 5.24 +CONFIG_GENERIC_HWEIGHT=y 5.25 +CONFIG_ARCH_MAY_HAVE_PC_FDC=y 5.26 +CONFIG_DMI=y 5.27 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 5.28 + 5.29 +# 5.30 +# Code maturity level options 5.31 +# 5.32 +CONFIG_EXPERIMENTAL=y 5.33 +CONFIG_LOCK_KERNEL=y 5.34 +CONFIG_INIT_ENV_ARG_LIMIT=32 5.35 + 5.36 +# 5.37 +# General setup 5.38 +# 5.39 +CONFIG_LOCALVERSION="-slitaz" 5.40 +# CONFIG_LOCALVERSION_AUTO is not set 5.41 +# CONFIG_KERNEL_GZIP is not set 5.42 +# CONFIG_KERNEL_BZIP2 is not set 5.43 +CONFIG_KERNEL_LZMA=y 5.44 +CONFIG_SWAP=y 5.45 +CONFIG_SYSVIPC=y 5.46 +# CONFIG_IPC_NS is not set 5.47 +CONFIG_SYSVIPC_SYSCTL=y 5.48 +CONFIG_POSIX_MQUEUE=y 5.49 +CONFIG_BSD_PROCESS_ACCT=y 5.50 +# CONFIG_BSD_PROCESS_ACCT_V3 is not set 5.51 +# CONFIG_TASKSTATS is not set 5.52 +# CONFIG_UTS_NS is not set 5.53 +# CONFIG_AUDIT is not set 5.54 +CONFIG_IKCONFIG=y 5.55 +CONFIG_IKCONFIG_PROC=y 5.56 +CONFIG_LOG_BUF_SHIFT=14 5.57 +# CONFIG_CPUSETS is not set 5.58 +# CONFIG_SYSFS_DEPRECATED is not set 5.59 +# CONFIG_RELAY is not set 5.60 +CONFIG_BLK_DEV_INITRD=y 5.61 +CONFIG_INITRAMFS_SOURCE="" 5.62 +CONFIG_CC_OPTIMIZE_FOR_SIZE=y 5.63 +CONFIG_SYSCTL=y 5.64 +# CONFIG_EMBEDDED is not set 5.65 +CONFIG_UID16=y 5.66 +CONFIG_SYSCTL_SYSCALL=y 5.67 +CONFIG_KALLSYMS=y 5.68 +# CONFIG_KALLSYMS_EXTRA_PASS is not set 5.69 +CONFIG_HOTPLUG=y 5.70 +CONFIG_PRINTK=y 5.71 +CONFIG_BUG=y 5.72 +CONFIG_ELF_CORE=y 5.73 +CONFIG_BASE_FULL=y 5.74 +CONFIG_FUTEX=y 5.75 +CONFIG_ANON_INODES=y 5.76 +CONFIG_EPOLL=y 5.77 +CONFIG_SIGNALFD=y 5.78 +CONFIG_EVENTFD=y 5.79 +CONFIG_SHMEM=y 5.80 +CONFIG_VM_EVENT_COUNTERS=y 5.81 +CONFIG_SLAB=y 5.82 +# CONFIG_SLUB is not set 5.83 +# CONFIG_SLOB is not set 5.84 +CONFIG_RT_MUTEXES=y 5.85 +# CONFIG_TINY_SHMEM is not set 5.86 +CONFIG_BASE_SMALL=0 5.87 + 5.88 +# 5.89 +# Loadable module support 5.90 +# 5.91 +CONFIG_MODULES=y 5.92 +CONFIG_MODULE_UNLOAD=y 5.93 +# CONFIG_MODULE_FORCE_UNLOAD is not set 5.94 +# CONFIG_MODVERSIONS is not set 5.95 +# CONFIG_MODULE_SRCVERSION_ALL is not set 5.96 +CONFIG_KMOD=y 5.97 +CONFIG_STOP_MACHINE=y 5.98 + 5.99 +# 5.100 +# Block layer 5.101 +# 5.102 +CONFIG_BLOCK=y 5.103 +# CONFIG_LBD is not set 5.104 +# CONFIG_BLK_DEV_IO_TRACE is not set 5.105 +# CONFIG_LSF is not set 5.106 + 5.107 +# 5.108 +# IO Schedulers 5.109 +# 5.110 +CONFIG_IOSCHED_NOOP=y 5.111 +# CONFIG_IOSCHED_AS is not set 5.112 +CONFIG_IOSCHED_DEADLINE=y 5.113 +# CONFIG_IOSCHED_CFQ is not set 5.114 +# CONFIG_DEFAULT_AS is not set 5.115 +CONFIG_DEFAULT_DEADLINE=y 5.116 +# CONFIG_DEFAULT_CFQ is not set 5.117 +# CONFIG_DEFAULT_NOOP is not set 5.118 +CONFIG_DEFAULT_IOSCHED="deadline" 5.119 + 5.120 +# 5.121 +# Processor type and features 5.122 +# 5.123 +# CONFIG_TICK_ONESHOT is not set 5.124 +# CONFIG_NO_HZ is not set 5.125 +# CONFIG_HIGH_RES_TIMERS is not set 5.126 +CONFIG_SMP=y 5.127 +CONFIG_X86_PC=y 5.128 +# CONFIG_X86_ELAN is not set 5.129 +# CONFIG_X86_VOYAGER is not set 5.130 +# CONFIG_X86_NUMAQ is not set 5.131 +# CONFIG_X86_SUMMIT is not set 5.132 +# CONFIG_X86_BIGSMP is not set 5.133 +# CONFIG_X86_VISWS is not set 5.134 +# CONFIG_X86_GENERICARCH is not set 5.135 +# CONFIG_X86_ES7000 is not set 5.136 +# CONFIG_PARAVIRT is not set 5.137 +CONFIG_M386=y 5.138 +# CONFIG_M486 is not set 5.139 +# CONFIG_M586 is not set 5.140 +# CONFIG_M586TSC is not set 5.141 +# CONFIG_M586MMX is not set 5.142 +# CONFIG_M686 is not set 5.143 +# CONFIG_MPENTIUMII is not set 5.144 +# CONFIG_MPENTIUMIII is not set 5.145 +# CONFIG_MPENTIUMM is not set 5.146 +# CONFIG_MCORE2 is not set 5.147 +# CONFIG_MPENTIUM4 is not set 5.148 +# CONFIG_MK6 is not set 5.149 +# CONFIG_MK7 is not set 5.150 +# CONFIG_MK8 is not set 5.151 +# CONFIG_MCRUSOE is not set 5.152 +# CONFIG_MEFFICEON is not set 5.153 +# CONFIG_MWINCHIPC6 is not set 5.154 +# CONFIG_MWINCHIP2 is not set 5.155 +# CONFIG_MWINCHIP3D is not set 5.156 +# CONFIG_MGEODEGX1 is not set 5.157 +# CONFIG_MGEODE_LX is not set 5.158 +# CONFIG_MCYRIXIII is not set 5.159 +# CONFIG_MVIAC3_2 is not set 5.160 +# CONFIG_MVIAC7 is not set 5.161 +CONFIG_X86_GENERIC=y 5.162 +CONFIG_X86_L1_CACHE_SHIFT=7 5.163 +CONFIG_RWSEM_GENERIC_SPINLOCK=y 5.164 +# CONFIG_ARCH_HAS_ILOG2_U32 is not set 5.165 +# CONFIG_ARCH_HAS_ILOG2_U64 is not set 5.166 +CONFIG_GENERIC_CALIBRATE_DELAY=y 5.167 +CONFIG_X86_PPRO_FENCE=y 5.168 +CONFIG_X86_F00F_BUG=y 5.169 +CONFIG_X86_INTEL_USERCOPY=y 5.170 +CONFIG_X86_MINIMUM_CPU_MODEL=0 5.171 +# CONFIG_HPET_TIMER is not set 5.172 +CONFIG_NR_CPUS=8 5.173 +# CONFIG_SCHED_SMT is not set 5.174 +CONFIG_SCHED_MC=y 5.175 +CONFIG_PREEMPT_NONE=y 5.176 +# CONFIG_PREEMPT_VOLUNTARY is not set 5.177 +# CONFIG_PREEMPT is not set 5.178 +CONFIG_PREEMPT_BKL=y 5.179 +CONFIG_X86_LOCAL_APIC=y 5.180 +CONFIG_X86_IO_APIC=y 5.181 +# CONFIG_X86_MCE is not set 5.182 +CONFIG_VM86=y 5.183 +# CONFIG_TOSHIBA is not set 5.184 +# CONFIG_I8K is not set 5.185 +# CONFIG_X86_REBOOTFIXUPS is not set 5.186 +# CONFIG_MICROCODE is not set 5.187 +# CONFIG_X86_MSR is not set 5.188 +# CONFIG_X86_CPUID is not set 5.189 + 5.190 +# 5.191 +# Firmware Drivers 5.192 +# 5.193 +# CONFIG_EDD is not set 5.194 +# CONFIG_DELL_RBU is not set 5.195 +# CONFIG_DCDBAS is not set 5.196 +# CONFIG_NOHIGHMEM is not set 5.197 +CONFIG_HIGHMEM4G=y 5.198 +# CONFIG_HIGHMEM64G is not set 5.199 +CONFIG_PAGE_OFFSET=0xC0000000 5.200 +CONFIG_HIGHMEM=y 5.201 +CONFIG_ARCH_FLATMEM_ENABLE=y 5.202 +CONFIG_ARCH_SPARSEMEM_ENABLE=y 5.203 +CONFIG_ARCH_SELECT_MEMORY_MODEL=y 5.204 +CONFIG_ARCH_POPULATES_NODE_MAP=y 5.205 +CONFIG_SELECT_MEMORY_MODEL=y 5.206 +CONFIG_FLATMEM_MANUAL=y 5.207 +# CONFIG_DISCONTIGMEM_MANUAL is not set 5.208 +# CONFIG_SPARSEMEM_MANUAL is not set 5.209 +CONFIG_FLATMEM=y 5.210 +CONFIG_FLAT_NODE_MEM_MAP=y 5.211 +CONFIG_SPARSEMEM_STATIC=y 5.212 +CONFIG_SPLIT_PTLOCK_CPUS=4 5.213 +# CONFIG_RESOURCES_64BIT is not set 5.214 +CONFIG_ZONE_DMA_FLAG=1 5.215 +CONFIG_NR_QUICK=1 5.216 +# CONFIG_HIGHPTE is not set 5.217 +CONFIG_MATH_EMULATION=y 5.218 +CONFIG_MTRR=y 5.219 +CONFIG_IRQBALANCE=y 5.220 +# CONFIG_SECCOMP is not set 5.221 +# CONFIG_HZ_100 is not set 5.222 +# CONFIG_HZ_250 is not set 5.223 +CONFIG_HZ_300=y 5.224 +# CONFIG_HZ_1000 is not set 5.225 +CONFIG_HZ=300 5.226 +# CONFIG_KEXEC is not set 5.227 +# CONFIG_CRASH_DUMP is not set 5.228 +CONFIG_PHYSICAL_START=0x100000 5.229 +# CONFIG_RELOCATABLE is not set 5.230 +CONFIG_PHYSICAL_ALIGN=0x100000 5.231 +# CONFIG_HOTPLUG_CPU is not set 5.232 +CONFIG_COMPAT_VDSO=y 5.233 +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 5.234 + 5.235 +# 5.236 +# Power management options (ACPI, APM) 5.237 +# 5.238 +# CONFIG_PM is not set 5.239 + 5.240 +# 5.241 +# CPU Frequency scaling 5.242 +# 5.243 +# CONFIG_CPU_FREQ is not set 5.244 + 5.245 +# 5.246 +# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 5.247 +# 5.248 +CONFIG_PCI=y 5.249 +# CONFIG_PCI_GOBIOS is not set 5.250 +# CONFIG_PCI_GOMMCONFIG is not set 5.251 +# CONFIG_PCI_GODIRECT is not set 5.252 +CONFIG_PCI_GOANY=y 5.253 +CONFIG_PCI_BIOS=y 5.254 +CONFIG_PCI_DIRECT=y 5.255 +# CONFIG_PCIEPORTBUS is not set 5.256 +CONFIG_ARCH_SUPPORTS_MSI=y 5.257 +# CONFIG_PCI_MSI is not set 5.258 +CONFIG_HT_IRQ=y 5.259 +CONFIG_ISA_DMA_API=y 5.260 +CONFIG_ISA=y 5.261 +# CONFIG_EISA is not set 5.262 +# CONFIG_MCA is not set 5.263 +# CONFIG_SCx200 is not set 5.264 + 5.265 +# 5.266 +# PCCARD (PCMCIA/CardBus) support 5.267 +# 5.268 +CONFIG_PCCARD=m 5.269 +# CONFIG_PCMCIA_DEBUG is not set 5.270 +CONFIG_PCMCIA=m 5.271 +CONFIG_PCMCIA_LOAD_CIS=y 5.272 +CONFIG_PCMCIA_IOCTL=y 5.273 +CONFIG_CARDBUS=y 5.274 + 5.275 +# 5.276 +# PC-card bridges 5.277 +# 5.278 +CONFIG_YENTA=m 5.279 +CONFIG_YENTA_O2=y 5.280 +CONFIG_YENTA_RICOH=y 5.281 +CONFIG_YENTA_TI=y 5.282 +CONFIG_YENTA_ENE_TUNE=y 5.283 +CONFIG_YENTA_TOSHIBA=y 5.284 +CONFIG_PD6729=m 5.285 +CONFIG_I82092=m 5.286 +CONFIG_I82365=m 5.287 +# CONFIG_TCIC is not set 5.288 +CONFIG_PCMCIA_PROBE=y 5.289 +CONFIG_PCCARD_NONSTATIC=m 5.290 +# CONFIG_HOTPLUG_PCI is not set 5.291 + 5.292 +# 5.293 +# Executable file formats 5.294 +# 5.295 +CONFIG_BINFMT_ELF=y 5.296 +# CONFIG_BINFMT_AOUT is not set 5.297 +# CONFIG_BINFMT_MISC is not set 5.298 + 5.299 +# 5.300 +# Networking 5.301 +# 5.302 +CONFIG_NET=y 5.303 + 5.304 +# 5.305 +# Networking options 5.306 +# 5.307 +CONFIG_PACKET=y 5.308 +# CONFIG_PACKET_MMAP is not set 5.309 +CONFIG_UNIX=y 5.310 +CONFIG_XFRM=y 5.311 +# CONFIG_XFRM_USER is not set 5.312 +# CONFIG_XFRM_SUB_POLICY is not set 5.313 +# CONFIG_XFRM_MIGRATE is not set 5.314 +CONFIG_NET_KEY=y 5.315 +# CONFIG_NET_KEY_MIGRATE is not set 5.316 +CONFIG_INET=y 5.317 +# CONFIG_IP_MULTICAST is not set 5.318 +# CONFIG_IP_ADVANCED_ROUTER is not set 5.319 +CONFIG_IP_FIB_HASH=y 5.320 +# CONFIG_IP_PNP is not set 5.321 +# CONFIG_NET_IPIP is not set 5.322 +# CONFIG_NET_IPGRE is not set 5.323 +# CONFIG_ARPD is not set 5.324 +CONFIG_SYN_COOKIES=y 5.325 +CONFIG_INET_AH=y 5.326 +CONFIG_INET_ESP=y 5.327 +CONFIG_INET_IPCOMP=y 5.328 +CONFIG_INET_XFRM_TUNNEL=y 5.329 +CONFIG_INET_TUNNEL=y 5.330 +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 5.331 +# CONFIG_INET_XFRM_MODE_TUNNEL is not set 5.332 +# CONFIG_INET_XFRM_MODE_BEET is not set 5.333 +CONFIG_INET_DIAG=y 5.334 +CONFIG_INET_TCP_DIAG=y 5.335 +# CONFIG_TCP_CONG_ADVANCED is not set 5.336 +CONFIG_TCP_CONG_CUBIC=y 5.337 +CONFIG_DEFAULT_TCP_CONG="cubic" 5.338 +# CONFIG_TCP_MD5SIG is not set 5.339 +# CONFIG_IP_VS is not set 5.340 +# CONFIG_IPV6 is not set 5.341 +# CONFIG_INET6_XFRM_TUNNEL is not set 5.342 +# CONFIG_INET6_TUNNEL is not set 5.343 +# CONFIG_NETWORK_SECMARK is not set 5.344 +CONFIG_NETFILTER=y 5.345 +# CONFIG_NETFILTER_DEBUG is not set 5.346 + 5.347 +# 5.348 +# Core Netfilter Configuration 5.349 +# 5.350 +CONFIG_NETFILTER_NETLINK=y 5.351 +# CONFIG_NETFILTER_NETLINK_QUEUE is not set 5.352 +CONFIG_NETFILTER_NETLINK_LOG=m 5.353 +# CONFIG_NF_CONNTRACK_ENABLED is not set 5.354 +# CONFIG_NF_CONNTRACK is not set 5.355 +CONFIG_NETFILTER_XTABLES=y 5.356 +# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set 5.357 +# CONFIG_NETFILTER_XT_TARGET_MARK is not set 5.358 +# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set 5.359 +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set 5.360 +# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set 5.361 +# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set 5.362 +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set 5.363 +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set 5.364 +# CONFIG_NETFILTER_XT_MATCH_ESP is not set 5.365 +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set 5.366 +# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set 5.367 +# CONFIG_NETFILTER_XT_MATCH_MAC is not set 5.368 +# CONFIG_NETFILTER_XT_MATCH_MARK is not set 5.369 +# CONFIG_NETFILTER_XT_MATCH_POLICY is not set 5.370 +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set 5.371 +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set 5.372 +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 5.373 +# CONFIG_NETFILTER_XT_MATCH_REALM is not set 5.374 +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set 5.375 +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set 5.376 +# CONFIG_NETFILTER_XT_MATCH_STRING is not set 5.377 +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set 5.378 +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set 5.379 + 5.380 +# 5.381 +# IP: Netfilter Configuration 5.382 +# 5.383 +# CONFIG_IP_NF_QUEUE is not set 5.384 +CONFIG_IP_NF_IPTABLES=y 5.385 +# CONFIG_IP_NF_MATCH_IPRANGE is not set 5.386 +# CONFIG_IP_NF_MATCH_TOS is not set 5.387 +# CONFIG_IP_NF_MATCH_RECENT is not set 5.388 +# CONFIG_IP_NF_MATCH_ECN is not set 5.389 +# CONFIG_IP_NF_MATCH_AH is not set 5.390 +# CONFIG_IP_NF_MATCH_TTL is not set 5.391 +# CONFIG_IP_NF_MATCH_OWNER is not set 5.392 +# CONFIG_IP_NF_MATCH_ADDRTYPE is not set 5.393 +CONFIG_IP_NF_FILTER=y 5.394 +CONFIG_IP_NF_TARGET_REJECT=m 5.395 +# CONFIG_IP_NF_TARGET_LOG is not set 5.396 +# CONFIG_IP_NF_TARGET_ULOG is not set 5.397 +# CONFIG_IP_NF_MANGLE is not set 5.398 +# CONFIG_IP_NF_RAW is not set 5.399 +# CONFIG_IP_NF_ARPTABLES is not set 5.400 +# CONFIG_IP_DCCP is not set 5.401 +# CONFIG_IP_SCTP is not set 5.402 +# CONFIG_TIPC is not set 5.403 +# CONFIG_ATM is not set 5.404 +# CONFIG_BRIDGE is not set 5.405 +# CONFIG_VLAN_8021Q is not set 5.406 +# CONFIG_DECNET is not set 5.407 +# CONFIG_LLC2 is not set 5.408 +# CONFIG_IPX is not set 5.409 +# CONFIG_ATALK is not set 5.410 +# CONFIG_X25 is not set 5.411 +# CONFIG_LAPB is not set 5.412 +# CONFIG_ECONET is not set 5.413 +# CONFIG_WAN_ROUTER is not set 5.414 + 5.415 +# 5.416 +# QoS and/or fair queueing 5.417 +# 5.418 +# CONFIG_NET_SCHED is not set 5.419 + 5.420 +# 5.421 +# Network testing 5.422 +# 5.423 +# CONFIG_NET_PKTGEN is not set 5.424 +# CONFIG_HAMRADIO is not set 5.425 +# CONFIG_IRDA is not set 5.426 +# CONFIG_BT is not set 5.427 +# CONFIG_AF_RXRPC is not set 5.428 + 5.429 +# 5.430 +# Wireless 5.431 +# 5.432 +# CONFIG_CFG80211 is not set 5.433 +# CONFIG_WIRELESS_EXT is not set 5.434 +# CONFIG_MAC80211 is not set 5.435 +# CONFIG_IEEE80211 is not set 5.436 +# CONFIG_RFKILL is not set 5.437 + 5.438 +# 5.439 +# Device Drivers 5.440 +# 5.441 + 5.442 +# 5.443 +# Generic Driver Options 5.444 +# 5.445 +CONFIG_STANDALONE=y 5.446 +CONFIG_PREVENT_FIRMWARE_BUILD=y 5.447 +CONFIG_FW_LOADER=m 5.448 +# CONFIG_SYS_HYPERVISOR is not set 5.449 + 5.450 +# 5.451 +# Connector - unified userspace <-> kernelspace linker 5.452 +# 5.453 +# CONFIG_CONNECTOR is not set 5.454 +# CONFIG_MTD is not set 5.455 + 5.456 +# 5.457 +# Parallel port support 5.458 +# 5.459 +# CONFIG_PARPORT is not set 5.460 + 5.461 +# 5.462 +# Plug and Play support 5.463 +# 5.464 +CONFIG_PNP=y 5.465 +# CONFIG_PNP_DEBUG is not set 5.466 + 5.467 +# 5.468 +# Protocols 5.469 +# 5.470 +CONFIG_ISAPNP=y 5.471 +# CONFIG_PNPBIOS is not set 5.472 +# CONFIG_PNPACPI is not set 5.473 + 5.474 +# 5.475 +# Block devices 5.476 +# 5.477 +CONFIG_BLK_DEV_FD=y 5.478 +# CONFIG_BLK_DEV_XD is not set 5.479 +# CONFIG_BLK_CPQ_DA is not set 5.480 +# CONFIG_BLK_CPQ_CISS_DA is not set 5.481 +# CONFIG_BLK_DEV_DAC960 is not set 5.482 +# CONFIG_BLK_DEV_UMEM is not set 5.483 +# CONFIG_BLK_DEV_COW_COMMON is not set 5.484 +CONFIG_BLK_DEV_LOOP=y 5.485 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set 5.486 +# CONFIG_BLK_DEV_NBD is not set 5.487 +# CONFIG_BLK_DEV_SX8 is not set 5.488 +# CONFIG_BLK_DEV_UB is not set 5.489 +CONFIG_BLK_DEV_RAM=y 5.490 +CONFIG_BLK_DEV_RAM_COUNT=16 5.491 +CONFIG_BLK_DEV_RAM_SIZE=4096 5.492 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 5.493 +# CONFIG_RD_BZIP2 is not set 5.494 +CONFIG_RD_LZMA=y 5.495 +CONFIG_RD_GZIP=y 5.496 +# CONFIG_CDROM_PKTCDVD is not set 5.497 +# CONFIG_ATA_OVER_ETH is not set 5.498 + 5.499 +# 5.500 +# Misc devices 5.501 +# 5.502 +# CONFIG_IBM_ASM is not set 5.503 +# CONFIG_PHANTOM is not set 5.504 +# CONFIG_SGI_IOC4 is not set 5.505 +# CONFIG_TIFM_CORE is not set 5.506 +CONFIG_IDE=y 5.507 +CONFIG_BLK_DEV_IDE=y 5.508 + 5.509 +# 5.510 +# Please see Documentation/ide.txt for help/info on IDE drives 5.511 +# 5.512 +# CONFIG_BLK_DEV_IDE_SATA is not set 5.513 +# CONFIG_BLK_DEV_HD_IDE is not set 5.514 +CONFIG_BLK_DEV_IDEDISK=y 5.515 +CONFIG_IDEDISK_MULTI_MODE=y 5.516 +# CONFIG_BLK_DEV_IDECS is not set 5.517 +# CONFIG_BLK_DEV_DELKIN is not set 5.518 +CONFIG_BLK_DEV_IDECD=y 5.519 +# CONFIG_BLK_DEV_IDETAPE is not set 5.520 +CONFIG_BLK_DEV_IDEFLOPPY=y 5.521 +# CONFIG_BLK_DEV_IDESCSI is not set 5.522 +# CONFIG_IDE_TASK_IOCTL is not set 5.523 +CONFIG_IDE_PROC_FS=y 5.524 + 5.525 +# 5.526 +# IDE chipset support/bugfixes 5.527 +# 5.528 +CONFIG_IDE_GENERIC=y 5.529 +CONFIG_BLK_DEV_CMD640=y 5.530 +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set 5.531 +# CONFIG_BLK_DEV_IDEPNP is not set 5.532 +CONFIG_BLK_DEV_IDEPCI=y 5.533 +CONFIG_IDEPCI_SHARE_IRQ=y 5.534 +CONFIG_IDEPCI_PCIBUS_ORDER=y 5.535 +# CONFIG_BLK_DEV_OFFBOARD is not set 5.536 +CONFIG_BLK_DEV_GENERIC=y 5.537 +# CONFIG_BLK_DEV_OPTI621 is not set 5.538 +CONFIG_BLK_DEV_RZ1000=y 5.539 +CONFIG_BLK_DEV_IDEDMA_PCI=y 5.540 +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 5.541 +# CONFIG_IDEDMA_ONLYDISK is not set 5.542 +CONFIG_BLK_DEV_AEC62XX=y 5.543 +CONFIG_BLK_DEV_ALI15X3=y 5.544 +# CONFIG_WDC_ALI15X3 is not set 5.545 +CONFIG_BLK_DEV_AMD74XX=y 5.546 +CONFIG_BLK_DEV_ATIIXP=y 5.547 +CONFIG_BLK_DEV_CMD64X=y 5.548 +CONFIG_BLK_DEV_TRIFLEX=y 5.549 +CONFIG_BLK_DEV_CY82C693=y 5.550 +# CONFIG_BLK_DEV_CS5520 is not set 5.551 +CONFIG_BLK_DEV_CS5530=y 5.552 +CONFIG_BLK_DEV_CS5535=y 5.553 +# CONFIG_BLK_DEV_HPT34X is not set 5.554 +# CONFIG_BLK_DEV_HPT366 is not set 5.555 +CONFIG_BLK_DEV_JMICRON=y 5.556 +# CONFIG_BLK_DEV_SC1200 is not set 5.557 +CONFIG_BLK_DEV_PIIX=y 5.558 +CONFIG_BLK_DEV_IT8213=y 5.559 +CONFIG_BLK_DEV_IT821X=y 5.560 +CONFIG_BLK_DEV_NS87415=y 5.561 +# CONFIG_BLK_DEV_PDC202XX_OLD is not set 5.562 +CONFIG_BLK_DEV_PDC202XX_NEW=y 5.563 +CONFIG_BLK_DEV_SVWKS=y 5.564 +CONFIG_BLK_DEV_SIIMAGE=y 5.565 +CONFIG_BLK_DEV_SIS5513=y 5.566 +CONFIG_BLK_DEV_SLC90E66=y 5.567 +CONFIG_BLK_DEV_TRM290=y 5.568 +CONFIG_BLK_DEV_VIA82CXXX=y 5.569 +# CONFIG_BLK_DEV_TC86C001 is not set 5.570 +# CONFIG_IDE_ARM is not set 5.571 +# CONFIG_IDE_CHIPSETS is not set 5.572 +CONFIG_BLK_DEV_IDEDMA=y 5.573 +# CONFIG_IDEDMA_IVB is not set 5.574 +# CONFIG_BLK_DEV_HD is not set 5.575 + 5.576 +# 5.577 +# SCSI device support 5.578 +# 5.579 +# CONFIG_RAID_ATTRS is not set 5.580 +CONFIG_SCSI=y 5.581 +# CONFIG_SCSI_TGT is not set 5.582 +# CONFIG_SCSI_NETLINK is not set 5.583 +CONFIG_SCSI_PROC_FS=y 5.584 + 5.585 +# 5.586 +# SCSI support type (disk, tape, CD-ROM) 5.587 +# 5.588 +CONFIG_BLK_DEV_SD=y 5.589 +# CONFIG_CHR_DEV_ST is not set 5.590 +# CONFIG_CHR_DEV_OSST is not set 5.591 +# CONFIG_BLK_DEV_SR is not set 5.592 +# CONFIG_CHR_DEV_SG is not set 5.593 +# CONFIG_CHR_DEV_SCH is not set 5.594 + 5.595 +# 5.596 +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 5.597 +# 5.598 +# CONFIG_SCSI_MULTI_LUN is not set 5.599 +# CONFIG_SCSI_CONSTANTS is not set 5.600 +# CONFIG_SCSI_LOGGING is not set 5.601 +# CONFIG_SCSI_SCAN_ASYNC is not set 5.602 +CONFIG_SCSI_WAIT_SCAN=m 5.603 + 5.604 +# 5.605 +# SCSI Transports 5.606 +# 5.607 +# CONFIG_SCSI_SPI_ATTRS is not set 5.608 +# CONFIG_SCSI_FC_ATTRS is not set 5.609 +# CONFIG_SCSI_ISCSI_ATTRS is not set 5.610 +# CONFIG_SCSI_SAS_ATTRS is not set 5.611 +# CONFIG_SCSI_SAS_LIBSAS is not set 5.612 + 5.613 +# 5.614 +# SCSI low-level drivers 5.615 +# 5.616 +# CONFIG_ISCSI_TCP is not set 5.617 +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 5.618 +# CONFIG_SCSI_3W_9XXX is not set 5.619 +# CONFIG_SCSI_7000FASST is not set 5.620 +# CONFIG_SCSI_ACARD is not set 5.621 +# CONFIG_SCSI_AHA152X is not set 5.622 +# CONFIG_SCSI_AHA1542 is not set 5.623 +# CONFIG_SCSI_AACRAID is not set 5.624 +# CONFIG_SCSI_AIC7XXX is not set 5.625 +# CONFIG_SCSI_AIC7XXX_OLD is not set 5.626 +# CONFIG_SCSI_AIC79XX is not set 5.627 +# CONFIG_SCSI_AIC94XX is not set 5.628 +# CONFIG_SCSI_DPT_I2O is not set 5.629 +# CONFIG_SCSI_ADVANSYS is not set 5.630 +# CONFIG_SCSI_IN2000 is not set 5.631 +# CONFIG_SCSI_ARCMSR is not set 5.632 +# CONFIG_MEGARAID_NEWGEN is not set 5.633 +# CONFIG_MEGARAID_LEGACY is not set 5.634 +# CONFIG_MEGARAID_SAS is not set 5.635 +# CONFIG_SCSI_HPTIOP is not set 5.636 +# CONFIG_SCSI_BUSLOGIC is not set 5.637 +# CONFIG_SCSI_DMX3191D is not set 5.638 +# CONFIG_SCSI_DTC3280 is not set 5.639 +# CONFIG_SCSI_EATA is not set 5.640 +# CONFIG_SCSI_FUTURE_DOMAIN is not set 5.641 +# CONFIG_SCSI_GDTH is not set 5.642 +# CONFIG_SCSI_GENERIC_NCR5380 is not set 5.643 +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set 5.644 +# CONFIG_SCSI_IPS is not set 5.645 +# CONFIG_SCSI_INITIO is not set 5.646 +# CONFIG_SCSI_INIA100 is not set 5.647 +# CONFIG_SCSI_NCR53C406A is not set 5.648 +# CONFIG_SCSI_STEX is not set 5.649 +# CONFIG_SCSI_SYM53C8XX_2 is not set 5.650 +# CONFIG_SCSI_IPR is not set 5.651 +# CONFIG_SCSI_PAS16 is not set 5.652 +# CONFIG_SCSI_PSI240I is not set 5.653 +# CONFIG_SCSI_QLOGIC_FAS is not set 5.654 +# CONFIG_SCSI_QLOGIC_1280 is not set 5.655 +# CONFIG_SCSI_QLA_FC is not set 5.656 +# CONFIG_SCSI_QLA_ISCSI is not set 5.657 +# CONFIG_SCSI_LPFC is not set 5.658 +# CONFIG_SCSI_SEAGATE is not set 5.659 +# CONFIG_SCSI_SYM53C416 is not set 5.660 +# CONFIG_SCSI_DC395x is not set 5.661 +# CONFIG_SCSI_DC390T is not set 5.662 +# CONFIG_SCSI_T128 is not set 5.663 +# CONFIG_SCSI_U14_34F is not set 5.664 +# CONFIG_SCSI_ULTRASTOR is not set 5.665 +# CONFIG_SCSI_NSP32 is not set 5.666 +# CONFIG_SCSI_DEBUG is not set 5.667 +# CONFIG_SCSI_SRP is not set 5.668 + 5.669 +# 5.670 +# PCMCIA SCSI adapter support 5.671 +# 5.672 +# CONFIG_PCMCIA_AHA152X is not set 5.673 +# CONFIG_PCMCIA_FDOMAIN is not set 5.674 +# CONFIG_PCMCIA_NINJA_SCSI is not set 5.675 +# CONFIG_PCMCIA_QLOGIC is not set 5.676 +# CONFIG_PCMCIA_SYM53C500 is not set 5.677 +CONFIG_ATA=y 5.678 +# CONFIG_ATA_NONSTANDARD is not set 5.679 +CONFIG_SATA_AHCI=y 5.680 +# CONFIG_SATA_SVW is not set 5.681 +CONFIG_ATA_PIIX=y 5.682 +# CONFIG_SATA_MV is not set 5.683 +CONFIG_SATA_NV=y 5.684 +# CONFIG_PDC_ADMA is not set 5.685 +# CONFIG_SATA_QSTOR is not set 5.686 +# CONFIG_SATA_PROMISE is not set 5.687 +# CONFIG_SATA_SX4 is not set 5.688 +# CONFIG_SATA_SIL is not set 5.689 +# CONFIG_SATA_SIL24 is not set 5.690 +CONFIG_SATA_SIS=y 5.691 +# CONFIG_SATA_ULI is not set 5.692 +CONFIG_SATA_VIA=y 5.693 +# CONFIG_SATA_VITESSE is not set 5.694 +# CONFIG_SATA_INIC162X is not set 5.695 +# CONFIG_PATA_ALI is not set 5.696 +# CONFIG_PATA_AMD is not set 5.697 +# CONFIG_PATA_ARTOP is not set 5.698 +# CONFIG_PATA_ATIIXP is not set 5.699 +# CONFIG_PATA_CMD640_PCI is not set 5.700 +# CONFIG_PATA_CMD64X is not set 5.701 +# CONFIG_PATA_CS5520 is not set 5.702 +# CONFIG_PATA_CS5530 is not set 5.703 +# CONFIG_PATA_CS5535 is not set 5.704 +# CONFIG_PATA_CYPRESS is not set 5.705 +# CONFIG_PATA_EFAR is not set 5.706 +# CONFIG_ATA_GENERIC is not set 5.707 +# CONFIG_PATA_HPT366 is not set 5.708 +# CONFIG_PATA_HPT37X is not set 5.709 +# CONFIG_PATA_HPT3X2N is not set 5.710 +# CONFIG_PATA_HPT3X3 is not set 5.711 +# CONFIG_PATA_ISAPNP is not set 5.712 +# CONFIG_PATA_IT821X is not set 5.713 +# CONFIG_PATA_IT8213 is not set 5.714 +# CONFIG_PATA_JMICRON is not set 5.715 +# CONFIG_PATA_LEGACY is not set 5.716 +# CONFIG_PATA_TRIFLEX is not set 5.717 +# CONFIG_PATA_MARVELL is not set 5.718 +# CONFIG_PATA_MPIIX is not set 5.719 +# CONFIG_PATA_OLDPIIX is not set 5.720 +# CONFIG_PATA_NETCELL is not set 5.721 +# CONFIG_PATA_NS87410 is not set 5.722 +# CONFIG_PATA_OPTI is not set 5.723 +# CONFIG_PATA_OPTIDMA is not set 5.724 +# CONFIG_PATA_PCMCIA is not set 5.725 +# CONFIG_PATA_PDC_OLD is not set 5.726 +# CONFIG_PATA_QDI is not set 5.727 +# CONFIG_PATA_RADISYS is not set 5.728 +# CONFIG_PATA_RZ1000 is not set 5.729 +# CONFIG_PATA_SC1200 is not set 5.730 +# CONFIG_PATA_SERVERWORKS is not set 5.731 +# CONFIG_PATA_PDC2027X is not set 5.732 +# CONFIG_PATA_SIL680 is not set 5.733 +CONFIG_PATA_SIS=y 5.734 +# CONFIG_PATA_VIA is not set 5.735 +# CONFIG_PATA_WINBOND is not set 5.736 +# CONFIG_PATA_WINBOND_VLB is not set 5.737 + 5.738 +# 5.739 +# Old CD-ROM drivers (not SCSI, not IDE) 5.740 +# 5.741 +# CONFIG_CD_NO_IDESCSI is not set 5.742 + 5.743 +# 5.744 +# Multi-device support (RAID and LVM) 5.745 +# 5.746 +# CONFIG_MD is not set 5.747 + 5.748 +# 5.749 +# Fusion MPT device support 5.750 +# 5.751 +# CONFIG_FUSION is not set 5.752 +# CONFIG_FUSION_SPI is not set 5.753 +# CONFIG_FUSION_FC is not set 5.754 +# CONFIG_FUSION_SAS is not set 5.755 + 5.756 +# 5.757 +# IEEE 1394 (FireWire) support 5.758 +# 5.759 +# CONFIG_FIREWIRE is not set 5.760 +# CONFIG_IEEE1394 is not set 5.761 + 5.762 +# 5.763 +# I2O device support 5.764 +# 5.765 +# CONFIG_I2O is not set 5.766 +# CONFIG_MACINTOSH_DRIVERS is not set 5.767 + 5.768 +# 5.769 +# Network device support 5.770 +# 5.771 +CONFIG_NETDEVICES=y 5.772 +CONFIG_DUMMY=y 5.773 +# CONFIG_BONDING is not set 5.774 +# CONFIG_EQUALIZER is not set 5.775 +# CONFIG_TUN is not set 5.776 +# CONFIG_NET_SB1000 is not set 5.777 +CONFIG_ARCNET=m 5.778 +CONFIG_ARCNET_1201=m 5.779 +# CONFIG_ARCNET_1051 is not set 5.780 +# CONFIG_ARCNET_RAW is not set 5.781 +# CONFIG_ARCNET_CAP is not set 5.782 +CONFIG_ARCNET_COM90xx=m 5.783 +# CONFIG_ARCNET_COM90xxIO is not set 5.784 +# CONFIG_ARCNET_RIM_I is not set 5.785 +# CONFIG_ARCNET_COM20020 is not set 5.786 +CONFIG_PHYLIB=m 5.787 + 5.788 +# 5.789 +# MII PHY device drivers 5.790 +# 5.791 +CONFIG_MARVELL_PHY=m 5.792 +CONFIG_DAVICOM_PHY=m 5.793 +CONFIG_QSEMI_PHY=m 5.794 +CONFIG_LXT_PHY=m 5.795 +CONFIG_CICADA_PHY=m 5.796 +# CONFIG_VITESSE_PHY is not set 5.797 +# CONFIG_SMSC_PHY is not set 5.798 +CONFIG_BROADCOM_PHY=m 5.799 +# CONFIG_FIXED_PHY is not set 5.800 + 5.801 +# 5.802 +# Ethernet (10 or 100Mbit) 5.803 +# 5.804 +CONFIG_NET_ETHERNET=y 5.805 +CONFIG_MII=y 5.806 +CONFIG_HAPPYMEAL=m 5.807 +CONFIG_SUNGEM=m 5.808 +CONFIG_CASSINI=m 5.809 +CONFIG_NET_VENDOR_3COM=y 5.810 +CONFIG_EL1=m 5.811 +CONFIG_EL2=m 5.812 +CONFIG_ELPLUS=m 5.813 +# CONFIG_EL16 is not set 5.814 +CONFIG_EL3=m 5.815 +CONFIG_3C515=m 5.816 +CONFIG_VORTEX=m 5.817 +CONFIG_TYPHOON=m 5.818 +CONFIG_LANCE=m 5.819 +CONFIG_NET_VENDOR_SMC=y 5.820 +CONFIG_WD80x3=m 5.821 +CONFIG_ULTRA=m 5.822 +CONFIG_SMC9194=m 5.823 +CONFIG_NET_VENDOR_RACAL=y 5.824 +CONFIG_NI52=m 5.825 +CONFIG_NI65=m 5.826 + 5.827 +# 5.828 +# Tulip family network device support 5.829 +# 5.830 +CONFIG_NET_TULIP=y 5.831 +# CONFIG_DE2104X is not set 5.832 +CONFIG_TULIP=m 5.833 +# CONFIG_TULIP_MWI is not set 5.834 +# CONFIG_TULIP_MMIO is not set 5.835 +# CONFIG_TULIP_NAPI is not set 5.836 +CONFIG_DE4X5=y 5.837 +CONFIG_WINBOND_840=y 5.838 +CONFIG_DM9102=y 5.839 +CONFIG_ULI526X=m 5.840 +CONFIG_PCMCIA_XIRCOM=y 5.841 +# CONFIG_AT1700 is not set 5.842 +CONFIG_DEPCA=m 5.843 +CONFIG_HP100=m 5.844 +CONFIG_NET_ISA=y 5.845 +CONFIG_E2100=m 5.846 +CONFIG_EWRK3=m 5.847 +CONFIG_EEXPRESS=m 5.848 +CONFIG_EEXPRESS_PRO=m 5.849 +CONFIG_HPLAN_PLUS=m 5.850 +CONFIG_HPLAN=m 5.851 +CONFIG_LP486E=m 5.852 +CONFIG_ETH16I=m 5.853 +CONFIG_NE2000=m 5.854 +# CONFIG_ZNET is not set 5.855 +# CONFIG_SEEQ8005 is not set 5.856 +CONFIG_NET_PCI=y 5.857 +CONFIG_PCNET32=y 5.858 +# CONFIG_PCNET32_NAPI is not set 5.859 +CONFIG_AMD8111_ETH=m 5.860 +# CONFIG_AMD8111E_NAPI is not set 5.861 +CONFIG_ADAPTEC_STARFIRE=m 5.862 +# CONFIG_ADAPTEC_STARFIRE_NAPI is not set 5.863 +# CONFIG_AC3200 is not set 5.864 +CONFIG_APRICOT=m 5.865 +CONFIG_B44=y 5.866 +CONFIG_FORCEDETH=y 5.867 +# CONFIG_FORCEDETH_NAPI is not set 5.868 +CONFIG_CS89x0=m 5.869 +CONFIG_DGRS=y 5.870 +CONFIG_EEPRO100=y 5.871 +CONFIG_E100=y 5.872 +CONFIG_FEALNX=m 5.873 +CONFIG_NATSEMI=y 5.874 +CONFIG_NE2K_PCI=y 5.875 +# CONFIG_8139CP is not set 5.876 +CONFIG_8139TOO=y 5.877 +# CONFIG_8139TOO_PIO is not set 5.878 +CONFIG_8139TOO_TUNE_TWISTER=y 5.879 +CONFIG_8139TOO_8129=y 5.880 +# CONFIG_8139_OLD_RX_RESET is not set 5.881 +CONFIG_SIS900=y 5.882 +CONFIG_EPIC100=y 5.883 +CONFIG_SUNDANCE=y 5.884 +# CONFIG_SUNDANCE_MMIO is not set 5.885 +CONFIG_TLAN=y 5.886 +CONFIG_VIA_RHINE=y 5.887 +CONFIG_VIA_RHINE_MMIO=y 5.888 +# CONFIG_VIA_RHINE_NAPI is not set 5.889 +# CONFIG_SC92031 is not set 5.890 +CONFIG_NETDEV_1000=y 5.891 +# CONFIG_ACENIC is not set 5.892 +CONFIG_DL2K=m 5.893 +CONFIG_E1000=m 5.894 +# CONFIG_E1000_NAPI is not set 5.895 +# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 5.896 +# CONFIG_NS83820 is not set 5.897 +# CONFIG_HAMACHI is not set 5.898 +# CONFIG_YELLOWFIN is not set 5.899 +CONFIG_R8169=y 5.900 +# CONFIG_R8169_NAPI is not set 5.901 +CONFIG_SIS190=m 5.902 +# CONFIG_SKGE is not set 5.903 +# CONFIG_SKY2 is not set 5.904 +# CONFIG_SK98LIN is not set 5.905 +CONFIG_VIA_VELOCITY=m 5.906 +CONFIG_TIGON3=m 5.907 +CONFIG_BNX2=m 5.908 +# CONFIG_QLA3XXX is not set 5.909 +# CONFIG_ATL1 is not set 5.910 +# CONFIG_NETDEV_10000 is not set 5.911 +# CONFIG_TR is not set 5.912 + 5.913 +# 5.914 +# Wireless LAN 5.915 +# 5.916 +# CONFIG_WLAN_PRE80211 is not set 5.917 +# CONFIG_WLAN_80211 is not set 5.918 + 5.919 +# 5.920 +# USB Network Adapters 5.921 +# 5.922 +# CONFIG_USB_CATC is not set 5.923 +# CONFIG_USB_KAWETH is not set 5.924 +# CONFIG_USB_PEGASUS is not set 5.925 +# CONFIG_USB_RTL8150 is not set 5.926 +# CONFIG_USB_USBNET_MII is not set 5.927 +# CONFIG_USB_USBNET is not set 5.928 +CONFIG_NET_PCMCIA=y 5.929 +CONFIG_PCMCIA_3C589=m 5.930 +CONFIG_PCMCIA_3C574=m 5.931 +CONFIG_PCMCIA_FMVJ18X=m 5.932 +CONFIG_PCMCIA_PCNET=m 5.933 +CONFIG_PCMCIA_NMCLAN=m 5.934 +CONFIG_PCMCIA_SMC91C92=m 5.935 +CONFIG_PCMCIA_XIRC2PS=m 5.936 +CONFIG_PCMCIA_AXNET=m 5.937 +# CONFIG_WAN is not set 5.938 +# CONFIG_FDDI is not set 5.939 +# CONFIG_HIPPI is not set 5.940 +CONFIG_PPP=y 5.941 +# CONFIG_PPP_MULTILINK is not set 5.942 +# CONFIG_PPP_FILTER is not set 5.943 +CONFIG_PPP_ASYNC=y 5.944 +# CONFIG_PPP_SYNC_TTY is not set 5.945 +# CONFIG_PPP_DEFLATE is not set 5.946 +# CONFIG_PPP_BSDCOMP is not set 5.947 +# CONFIG_PPP_MPPE is not set 5.948 +CONFIG_PPPOE=y 5.949 +# CONFIG_SLIP is not set 5.950 +CONFIG_SLHC=y 5.951 +# CONFIG_NET_FC is not set 5.952 +# CONFIG_SHAPER is not set 5.953 +# CONFIG_NETCONSOLE is not set 5.954 +# CONFIG_NETPOLL is not set 5.955 +# CONFIG_NET_POLL_CONTROLLER is not set 5.956 + 5.957 +# 5.958 +# ISDN subsystem 5.959 +# 5.960 +# CONFIG_ISDN is not set 5.961 + 5.962 +# 5.963 +# Telephony Support 5.964 +# 5.965 +# CONFIG_PHONE is not set 5.966 + 5.967 +# 5.968 +# Input device support 5.969 +# 5.970 +CONFIG_INPUT=y 5.971 +# CONFIG_INPUT_FF_MEMLESS is not set 5.972 +# CONFIG_INPUT_POLLDEV is not set 5.973 + 5.974 +# 5.975 +# Userland interfaces 5.976 +# 5.977 +CONFIG_INPUT_MOUSEDEV=y 5.978 +CONFIG_INPUT_MOUSEDEV_PSAUX=y 5.979 +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 5.980 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 5.981 +# CONFIG_INPUT_JOYDEV is not set 5.982 +# CONFIG_INPUT_TSDEV is not set 5.983 +CONFIG_INPUT_EVDEV=y 5.984 +# CONFIG_INPUT_EVBUG is not set 5.985 + 5.986 +# 5.987 +# Input Device Drivers 5.988 +# 5.989 +CONFIG_INPUT_KEYBOARD=y 5.990 +CONFIG_KEYBOARD_ATKBD=y 5.991 +# CONFIG_KEYBOARD_SUNKBD is not set 5.992 +# CONFIG_KEYBOARD_LKKBD is not set 5.993 +# CONFIG_KEYBOARD_XTKBD is not set 5.994 +# CONFIG_KEYBOARD_NEWTON is not set 5.995 +# CONFIG_KEYBOARD_STOWAWAY is not set 5.996 +CONFIG_INPUT_MOUSE=y 5.997 +CONFIG_MOUSE_PS2=y 5.998 +CONFIG_MOUSE_PS2_ALPS=y 5.999 +CONFIG_MOUSE_PS2_LOGIPS2PP=y 5.1000 +CONFIG_MOUSE_PS2_SYNAPTICS=y 5.1001 +CONFIG_MOUSE_PS2_LIFEBOOK=y 5.1002 +CONFIG_MOUSE_PS2_TRACKPOINT=y 5.1003 +# CONFIG_MOUSE_PS2_TOUCHKIT is not set 5.1004 +CONFIG_MOUSE_SERIAL=y 5.1005 +# CONFIG_MOUSE_APPLETOUCH is not set 5.1006 +CONFIG_MOUSE_INPORT=m 5.1007 +# CONFIG_MOUSE_ATIXL is not set 5.1008 +CONFIG_MOUSE_LOGIBM=m 5.1009 +CONFIG_MOUSE_PC110PAD=m 5.1010 +# CONFIG_MOUSE_VSXXXAA is not set 5.1011 +# CONFIG_INPUT_JOYSTICK is not set 5.1012 +# CONFIG_INPUT_TABLET is not set 5.1013 +# CONFIG_INPUT_TOUCHSCREEN is not set 5.1014 +CONFIG_INPUT_MISC=y 5.1015 +CONFIG_INPUT_PCSPKR=y 5.1016 +# CONFIG_INPUT_WISTRON_BTNS is not set 5.1017 +# CONFIG_INPUT_ATI_REMOTE is not set 5.1018 +# CONFIG_INPUT_ATI_REMOTE2 is not set 5.1019 +# CONFIG_INPUT_KEYSPAN_REMOTE is not set 5.1020 +# CONFIG_INPUT_POWERMATE is not set 5.1021 +# CONFIG_INPUT_YEALINK is not set 5.1022 +# CONFIG_INPUT_UINPUT is not set 5.1023 + 5.1024 +# 5.1025 +# Hardware I/O ports 5.1026 +# 5.1027 +CONFIG_SERIO=y 5.1028 +CONFIG_SERIO_I8042=y 5.1029 +CONFIG_SERIO_SERPORT=y 5.1030 +# CONFIG_SERIO_CT82C710 is not set 5.1031 +CONFIG_SERIO_PCIPS2=y 5.1032 +CONFIG_SERIO_LIBPS2=y 5.1033 +CONFIG_SERIO_RAW=y 5.1034 +# CONFIG_GAMEPORT is not set 5.1035 + 5.1036 +# 5.1037 +# Character devices 5.1038 +# 5.1039 +CONFIG_VT=y 5.1040 +CONFIG_VT_CONSOLE=y 5.1041 +CONFIG_HW_CONSOLE=y 5.1042 +# CONFIG_VT_HW_CONSOLE_BINDING is not set 5.1043 +# CONFIG_SERIAL_NONSTANDARD is not set 5.1044 + 5.1045 +# 5.1046 +# Serial drivers 5.1047 +# 5.1048 +CONFIG_SERIAL_8250=y 5.1049 +# CONFIG_SERIAL_8250_CONSOLE is not set 5.1050 +CONFIG_SERIAL_8250_PCI=y 5.1051 +CONFIG_SERIAL_8250_PNP=y 5.1052 +# CONFIG_SERIAL_8250_CS is not set 5.1053 +CONFIG_SERIAL_8250_NR_UARTS=4 5.1054 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 5.1055 +# CONFIG_SERIAL_8250_EXTENDED is not set 5.1056 + 5.1057 +# 5.1058 +# Non-8250 serial port support 5.1059 +# 5.1060 +CONFIG_SERIAL_CORE=y 5.1061 +# CONFIG_SERIAL_JSM is not set 5.1062 +CONFIG_UNIX98_PTYS=y 5.1063 +# CONFIG_LEGACY_PTYS is not set 5.1064 + 5.1065 +# 5.1066 +# IPMI 5.1067 +# 5.1068 +# CONFIG_IPMI_HANDLER is not set 5.1069 +# CONFIG_WATCHDOG is not set 5.1070 +CONFIG_HW_RANDOM=y 5.1071 +CONFIG_HW_RANDOM_INTEL=y 5.1072 +CONFIG_HW_RANDOM_AMD=y 5.1073 +CONFIG_HW_RANDOM_GEODE=y 5.1074 +CONFIG_HW_RANDOM_VIA=y 5.1075 +CONFIG_NVRAM=y 5.1076 +CONFIG_RTC=m 5.1077 +CONFIG_GEN_RTC=m 5.1078 +# CONFIG_GEN_RTC_X is not set 5.1079 +# CONFIG_DTLK is not set 5.1080 +# CONFIG_R3964 is not set 5.1081 +# CONFIG_APPLICOM is not set 5.1082 +# CONFIG_SONYPI is not set 5.1083 +# CONFIG_AGP is not set 5.1084 +# CONFIG_DRM is not set 5.1085 + 5.1086 +# 5.1087 +# PCMCIA character devices 5.1088 +# 5.1089 +# CONFIG_SYNCLINK_CS is not set 5.1090 +# CONFIG_CARDMAN_4000 is not set 5.1091 +# CONFIG_CARDMAN_4040 is not set 5.1092 +# CONFIG_MWAVE is not set 5.1093 +# CONFIG_PC8736x_GPIO is not set 5.1094 +# CONFIG_NSC_GPIO is not set 5.1095 +# CONFIG_CS5535_GPIO is not set 5.1096 +# CONFIG_RAW_DRIVER is not set 5.1097 +# CONFIG_HANGCHECK_TIMER is not set 5.1098 + 5.1099 +# 5.1100 +# TPM devices 5.1101 +# 5.1102 +# CONFIG_TCG_TPM is not set 5.1103 +# CONFIG_TELCLOCK is not set 5.1104 +CONFIG_DEVPORT=y 5.1105 +# CONFIG_I2C is not set 5.1106 + 5.1107 +# 5.1108 +# SPI support 5.1109 +# 5.1110 +# CONFIG_SPI is not set 5.1111 +# CONFIG_SPI_MASTER is not set 5.1112 + 5.1113 +# 5.1114 +# Dallas's 1-wire bus 5.1115 +# 5.1116 +# CONFIG_W1 is not set 5.1117 +# CONFIG_HWMON is not set 5.1118 + 5.1119 +# 5.1120 +# Multifunction device drivers 5.1121 +# 5.1122 +# CONFIG_MFD_SM501 is not set 5.1123 + 5.1124 +# 5.1125 +# Multimedia devices 5.1126 +# 5.1127 +# CONFIG_VIDEO_DEV is not set 5.1128 +# CONFIG_DVB_CORE is not set 5.1129 +CONFIG_DAB=y 5.1130 +# CONFIG_USB_DABUSB is not set 5.1131 + 5.1132 +# 5.1133 +# Graphics support 5.1134 +# 5.1135 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 5.1136 + 5.1137 +# 5.1138 +# Display device support 5.1139 +# 5.1140 +# CONFIG_DISPLAY_SUPPORT is not set 5.1141 +# CONFIG_VGASTATE is not set 5.1142 +CONFIG_FB=y 5.1143 +# CONFIG_FIRMWARE_EDID is not set 5.1144 +# CONFIG_FB_DDC is not set 5.1145 +CONFIG_FB_CFB_FILLRECT=y 5.1146 +CONFIG_FB_CFB_COPYAREA=y 5.1147 +CONFIG_FB_CFB_IMAGEBLIT=y 5.1148 +# CONFIG_FB_SYS_FILLRECT is not set 5.1149 +# CONFIG_FB_SYS_COPYAREA is not set 5.1150 +# CONFIG_FB_SYS_IMAGEBLIT is not set 5.1151 +# CONFIG_FB_SYS_FOPS is not set 5.1152 +CONFIG_FB_DEFERRED_IO=y 5.1153 +# CONFIG_FB_SVGALIB is not set 5.1154 +# CONFIG_FB_MACMODES is not set 5.1155 +# CONFIG_FB_BACKLIGHT is not set 5.1156 +# CONFIG_FB_MODE_HELPERS is not set 5.1157 +# CONFIG_FB_TILEBLITTING is not set 5.1158 + 5.1159 +# 5.1160 +# Frame buffer hardware drivers 5.1161 +# 5.1162 +# CONFIG_FB_CIRRUS is not set 5.1163 +# CONFIG_FB_PM2 is not set 5.1164 +# CONFIG_FB_CYBER2000 is not set 5.1165 +# CONFIG_FB_ARC is not set 5.1166 +# CONFIG_FB_ASILIANT is not set 5.1167 +# CONFIG_FB_IMSTT is not set 5.1168 +# CONFIG_FB_VGA16 is not set 5.1169 +CONFIG_FB_VESA=y 5.1170 +# CONFIG_FB_HECUBA is not set 5.1171 +# CONFIG_FB_HGA is not set 5.1172 +# CONFIG_FB_S1D13XXX is not set 5.1173 +# CONFIG_FB_NVIDIA is not set 5.1174 +# CONFIG_FB_RIVA is not set 5.1175 +# CONFIG_FB_I810 is not set 5.1176 +# CONFIG_FB_LE80578 is not set 5.1177 +# CONFIG_FB_INTEL is not set 5.1178 +# CONFIG_FB_MATROX is not set 5.1179 +# CONFIG_FB_RADEON is not set 5.1180 +# CONFIG_FB_ATY128 is not set 5.1181 +# CONFIG_FB_ATY is not set 5.1182 +# CONFIG_FB_S3 is not set 5.1183 +# CONFIG_FB_SAVAGE is not set 5.1184 +# CONFIG_FB_SIS is not set 5.1185 +# CONFIG_FB_NEOMAGIC is not set 5.1186 +# CONFIG_FB_KYRO is not set 5.1187 +# CONFIG_FB_3DFX is not set 5.1188 +# CONFIG_FB_VOODOO1 is not set 5.1189 +# CONFIG_FB_VT8623 is not set 5.1190 +# CONFIG_FB_CYBLA is not set 5.1191 +# CONFIG_FB_TRIDENT is not set 5.1192 +# CONFIG_FB_ARK is not set 5.1193 +# CONFIG_FB_PM3 is not set 5.1194 +# CONFIG_FB_GEODE is not set 5.1195 +# CONFIG_FB_VIRTUAL is not set 5.1196 + 5.1197 +# 5.1198 +# Console display driver support 5.1199 +# 5.1200 +CONFIG_VGA_CONSOLE=y 5.1201 +# CONFIG_VGACON_SOFT_SCROLLBACK is not set 5.1202 +CONFIG_VIDEO_SELECT=y 5.1203 +# CONFIG_MDA_CONSOLE is not set 5.1204 +CONFIG_DUMMY_CONSOLE=y 5.1205 +CONFIG_FRAMEBUFFER_CONSOLE=y 5.1206 +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 5.1207 +# CONFIG_FONTS is not set 5.1208 +CONFIG_FONT_8x8=y 5.1209 +CONFIG_FONT_8x16=y 5.1210 +CONFIG_LOGO=y 5.1211 +CONFIG_LOGO_LINUX_MONO=y 5.1212 +CONFIG_LOGO_LINUX_VGA16=y 5.1213 +CONFIG_LOGO_LINUX_CLUT224=y 5.1214 + 5.1215 +# 5.1216 +# Sound 5.1217 +# 5.1218 +CONFIG_SOUND=m 5.1219 + 5.1220 +# 5.1221 +# Advanced Linux Sound Architecture 5.1222 +# 5.1223 +CONFIG_SND=m 5.1224 +CONFIG_SND_TIMER=m 5.1225 +CONFIG_SND_PCM=m 5.1226 +CONFIG_SND_HWDEP=m 5.1227 +CONFIG_SND_RAWMIDI=m 5.1228 +CONFIG_SND_SEQUENCER=m 5.1229 +# CONFIG_SND_SEQ_DUMMY is not set 5.1230 +CONFIG_SND_OSSEMUL=y 5.1231 +CONFIG_SND_MIXER_OSS=m 5.1232 +CONFIG_SND_PCM_OSS=m 5.1233 +CONFIG_SND_PCM_OSS_PLUGINS=y 5.1234 +CONFIG_SND_SEQUENCER_OSS=y 5.1235 +CONFIG_SND_RTCTIMER=m 5.1236 +CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y 5.1237 +# CONFIG_SND_DYNAMIC_MINORS is not set 5.1238 +CONFIG_SND_SUPPORT_OLD_API=y 5.1239 +# CONFIG_SND_VERBOSE_PROCFS is not set 5.1240 +# CONFIG_SND_VERBOSE_PRINTK is not set 5.1241 +# CONFIG_SND_DEBUG is not set 5.1242 + 5.1243 +# 5.1244 +# Generic devices 5.1245 +# 5.1246 +CONFIG_SND_MPU401_UART=m 5.1247 +CONFIG_SND_OPL3_LIB=m 5.1248 +CONFIG_SND_OPL4_LIB=m 5.1249 +CONFIG_SND_VX_LIB=m 5.1250 +CONFIG_SND_AC97_CODEC=m 5.1251 +# CONFIG_SND_DUMMY is not set 5.1252 +# CONFIG_SND_VIRMIDI is not set 5.1253 +# CONFIG_SND_MTPAV is not set 5.1254 +# CONFIG_SND_SERIAL_U16550 is not set 5.1255 +# CONFIG_SND_MPU401 is not set 5.1256 + 5.1257 +# 5.1258 +# ISA devices 5.1259 +# 5.1260 +CONFIG_SND_AD1848_LIB=m 5.1261 +CONFIG_SND_CS4231_LIB=m 5.1262 +CONFIG_SND_ADLIB=m 5.1263 +CONFIG_SND_AD1816A=m 5.1264 +CONFIG_SND_AD1848=m 5.1265 +CONFIG_SND_ALS100=m 5.1266 +CONFIG_SND_AZT2320=m 5.1267 +CONFIG_SND_CMI8330=m 5.1268 +CONFIG_SND_CS4231=m 5.1269 +CONFIG_SND_CS4232=m 5.1270 +CONFIG_SND_CS4236=m 5.1271 +CONFIG_SND_DT019X=m 5.1272 +CONFIG_SND_ES968=m 5.1273 +CONFIG_SND_ES1688=m 5.1274 +CONFIG_SND_ES18XX=m 5.1275 +CONFIG_SND_GUS_SYNTH=m 5.1276 +CONFIG_SND_GUSCLASSIC=m 5.1277 +CONFIG_SND_GUSEXTREME=m 5.1278 +CONFIG_SND_GUSMAX=m 5.1279 +CONFIG_SND_INTERWAVE=m 5.1280 +CONFIG_SND_INTERWAVE_STB=m 5.1281 +CONFIG_SND_OPL3SA2=m 5.1282 +CONFIG_SND_OPTI92X_AD1848=m 5.1283 +CONFIG_SND_OPTI92X_CS4231=m 5.1284 +CONFIG_SND_OPTI93X=m 5.1285 +CONFIG_SND_MIRO=m 5.1286 +CONFIG_SND_SB8=m 5.1287 +CONFIG_SND_SB16=m 5.1288 +CONFIG_SND_SBAWE=m 5.1289 +# CONFIG_SND_SB16_CSP is not set 5.1290 +CONFIG_SND_SGALAXY=m 5.1291 +CONFIG_SND_SSCAPE=m 5.1292 +CONFIG_SND_WAVEFRONT=m 5.1293 +CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL=y 5.1294 + 5.1295 +# 5.1296 +# PCI devices 5.1297 +# 5.1298 +CONFIG_SND_AD1889=m 5.1299 +CONFIG_SND_ALS300=m 5.1300 +CONFIG_SND_ALS4000=m 5.1301 +CONFIG_SND_ALI5451=m 5.1302 +CONFIG_SND_ATIIXP=m 5.1303 +CONFIG_SND_ATIIXP_MODEM=m 5.1304 +CONFIG_SND_AU8810=m 5.1305 +CONFIG_SND_AU8820=m 5.1306 +CONFIG_SND_AU8830=m 5.1307 +CONFIG_SND_AZT3328=m 5.1308 +CONFIG_SND_BT87X=m 5.1309 +# CONFIG_SND_BT87X_OVERCLOCK is not set 5.1310 +CONFIG_SND_CA0106=m 5.1311 +CONFIG_SND_CMIPCI=m 5.1312 +CONFIG_SND_CS4281=m 5.1313 +CONFIG_SND_CS46XX=m 5.1314 +CONFIG_SND_CS46XX_NEW_DSP=y 5.1315 +CONFIG_SND_CS5535AUDIO=m 5.1316 +CONFIG_SND_DARLA20=m 5.1317 +CONFIG_SND_GINA20=m 5.1318 +CONFIG_SND_LAYLA20=m 5.1319 +CONFIG_SND_DARLA24=m 5.1320 +CONFIG_SND_GINA24=m 5.1321 +CONFIG_SND_LAYLA24=m 5.1322 +CONFIG_SND_MONA=m 5.1323 +CONFIG_SND_MIA=m 5.1324 +CONFIG_SND_ECHO3G=m 5.1325 +CONFIG_SND_INDIGO=m 5.1326 +CONFIG_SND_INDIGOIO=m 5.1327 +CONFIG_SND_INDIGODJ=m 5.1328 +CONFIG_SND_EMU10K1=m 5.1329 +CONFIG_SND_EMU10K1X=m 5.1330 +CONFIG_SND_ENS1370=m 5.1331 +CONFIG_SND_ENS1371=m 5.1332 +CONFIG_SND_ES1938=m 5.1333 +CONFIG_SND_ES1968=m 5.1334 +CONFIG_SND_FM801=m 5.1335 +# CONFIG_SND_FM801_TEA575X_BOOL is not set 5.1336 +CONFIG_SND_HDA_INTEL=m 5.1337 +CONFIG_SND_HDSP=m 5.1338 +CONFIG_SND_HDSPM=m 5.1339 +CONFIG_SND_ICE1712=m 5.1340 +CONFIG_SND_ICE1724=m 5.1341 +CONFIG_SND_INTEL8X0=m 5.1342 +CONFIG_SND_INTEL8X0M=m 5.1343 +CONFIG_SND_KORG1212=m 5.1344 +CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL=y 5.1345 +CONFIG_SND_MAESTRO3=m 5.1346 +CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL=y 5.1347 +CONFIG_SND_MIXART=m 5.1348 +CONFIG_SND_NM256=m 5.1349 +CONFIG_SND_PCXHR=m 5.1350 +CONFIG_SND_RIPTIDE=m 5.1351 +CONFIG_SND_RME32=m 5.1352 +CONFIG_SND_RME96=m 5.1353 +CONFIG_SND_RME9652=m 5.1354 +CONFIG_SND_SONICVIBES=m 5.1355 +CONFIG_SND_TRIDENT=m 5.1356 +CONFIG_SND_VIA82XX=m 5.1357 +CONFIG_SND_VIA82XX_MODEM=m 5.1358 +CONFIG_SND_VX222=m 5.1359 +CONFIG_SND_YMFPCI=m 5.1360 +CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y 5.1361 +# CONFIG_SND_AC97_POWER_SAVE is not set 5.1362 + 5.1363 +# 5.1364 +# USB devices 5.1365 +# 5.1366 +# CONFIG_SND_USB_AUDIO is not set 5.1367 +# CONFIG_SND_USB_USX2Y is not set 5.1368 +# CONFIG_SND_USB_CAIAQ is not set 5.1369 + 5.1370 +# 5.1371 +# PCMCIA devices 5.1372 +# 5.1373 +# CONFIG_SND_VXPOCKET is not set 5.1374 +# CONFIG_SND_PDAUDIOCF is not set 5.1375 + 5.1376 +# 5.1377 +# System on Chip audio support 5.1378 +# 5.1379 +# CONFIG_SND_SOC is not set 5.1380 + 5.1381 +# 5.1382 +# Open Sound System 5.1383 +# 5.1384 +# CONFIG_SOUND_PRIME is not set 5.1385 +CONFIG_AC97_BUS=m 5.1386 + 5.1387 +# 5.1388 +# HID Devices 5.1389 +# 5.1390 +CONFIG_HID=y 5.1391 +# CONFIG_HID_DEBUG is not set 5.1392 + 5.1393 +# 5.1394 +# USB Input Devices 5.1395 +# 5.1396 +CONFIG_USB_HID=y 5.1397 +# CONFIG_USB_HIDINPUT_POWERBOOK is not set 5.1398 +# CONFIG_HID_FF is not set 5.1399 +CONFIG_USB_HIDDEV=y 5.1400 + 5.1401 +# 5.1402 +# USB support 5.1403 +# 5.1404 +CONFIG_USB_ARCH_HAS_HCD=y 5.1405 +CONFIG_USB_ARCH_HAS_OHCI=y 5.1406 +CONFIG_USB_ARCH_HAS_EHCI=y 5.1407 +CONFIG_USB=y 5.1408 +# CONFIG_USB_DEBUG is not set 5.1409 + 5.1410 +# 5.1411 +# Miscellaneous USB options 5.1412 +# 5.1413 +CONFIG_USB_DEVICEFS=y 5.1414 +CONFIG_USB_DEVICE_CLASS=y 5.1415 +# CONFIG_USB_DYNAMIC_MINORS is not set 5.1416 +# CONFIG_USB_OTG is not set 5.1417 + 5.1418 +# 5.1419 +# USB Host Controller Drivers 5.1420 +# 5.1421 +CONFIG_USB_EHCI_HCD=y 5.1422 +# CONFIG_USB_EHCI_SPLIT_ISO is not set 5.1423 +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 5.1424 +# CONFIG_USB_EHCI_TT_NEWSCHED is not set 5.1425 +# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set 5.1426 +# CONFIG_USB_ISP116X_HCD is not set 5.1427 +CONFIG_USB_OHCI_HCD=m 5.1428 +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 5.1429 +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 5.1430 +CONFIG_USB_OHCI_LITTLE_ENDIAN=y 5.1431 +CONFIG_USB_UHCI_HCD=y 5.1432 +# CONFIG_USB_SL811_HCD is not set 5.1433 + 5.1434 +# 5.1435 +# USB Device Class drivers 5.1436 +# 5.1437 +# CONFIG_USB_ACM is not set 5.1438 +# CONFIG_USB_PRINTER is not set 5.1439 + 5.1440 +# 5.1441 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 5.1442 +# 5.1443 + 5.1444 +# 5.1445 +# may also be needed; see USB_STORAGE Help for more information 5.1446 +# 5.1447 +CONFIG_USB_STORAGE=y 5.1448 +# CONFIG_USB_STORAGE_DEBUG is not set 5.1449 +# CONFIG_USB_STORAGE_DATAFAB is not set 5.1450 +# CONFIG_USB_STORAGE_FREECOM is not set 5.1451 +# CONFIG_USB_STORAGE_ISD200 is not set 5.1452 +# CONFIG_USB_STORAGE_DPCM is not set 5.1453 +# CONFIG_USB_STORAGE_USBAT is not set 5.1454 +# CONFIG_USB_STORAGE_SDDR09 is not set 5.1455 +# CONFIG_USB_STORAGE_SDDR55 is not set 5.1456 +# CONFIG_USB_STORAGE_JUMPSHOT is not set 5.1457 +# CONFIG_USB_STORAGE_ALAUDA is not set 5.1458 +# CONFIG_USB_STORAGE_ONETOUCH is not set 5.1459 +# CONFIG_USB_STORAGE_KARMA is not set 5.1460 +# CONFIG_USB_LIBUSUAL is not set 5.1461 + 5.1462 +# 5.1463 +# USB Imaging devices 5.1464 +# 5.1465 +# CONFIG_USB_MDC800 is not set 5.1466 +# CONFIG_USB_MICROTEK is not set 5.1467 +# CONFIG_USB_MON is not set 5.1468 + 5.1469 +# 5.1470 +# USB port drivers 5.1471 +# 5.1472 + 5.1473 +# 5.1474 +# USB Serial Converter support 5.1475 +# 5.1476 +# CONFIG_USB_SERIAL is not set 5.1477 + 5.1478 +# 5.1479 +# USB Miscellaneous drivers 5.1480 +# 5.1481 +# CONFIG_USB_EMI62 is not set 5.1482 +# CONFIG_USB_EMI26 is not set 5.1483 +# CONFIG_USB_ADUTUX is not set 5.1484 +# CONFIG_USB_AUERSWALD is not set 5.1485 +# CONFIG_USB_RIO500 is not set 5.1486 +# CONFIG_USB_LEGOTOWER is not set 5.1487 +# CONFIG_USB_LCD is not set 5.1488 +# CONFIG_USB_BERRY_CHARGE is not set 5.1489 +# CONFIG_USB_LED is not set 5.1490 +# CONFIG_USB_CYPRESS_CY7C63 is not set 5.1491 +# CONFIG_USB_CYTHERM is not set 5.1492 +# CONFIG_USB_PHIDGET is not set 5.1493 +# CONFIG_USB_IDMOUSE is not set 5.1494 +# CONFIG_USB_FTDI_ELAN is not set 5.1495 +# CONFIG_USB_APPLEDISPLAY is not set 5.1496 +# CONFIG_USB_SISUSBVGA is not set 5.1497 +# CONFIG_USB_LD is not set 5.1498 +# CONFIG_USB_TRANCEVIBRATOR is not set 5.1499 +# CONFIG_USB_IOWARRIOR is not set 5.1500 +# CONFIG_USB_TEST is not set 5.1501 + 5.1502 +# 5.1503 +# USB DSL modem support 5.1504 +# 5.1505 + 5.1506 +# 5.1507 +# USB Gadget Support 5.1508 +# 5.1509 +# CONFIG_USB_GADGET is not set 5.1510 +# CONFIG_MMC is not set 5.1511 + 5.1512 +# 5.1513 +# LED devices 5.1514 +# 5.1515 +# CONFIG_NEW_LEDS is not set 5.1516 + 5.1517 +# 5.1518 +# LED drivers 5.1519 +# 5.1520 + 5.1521 +# 5.1522 +# LED Triggers 5.1523 +# 5.1524 + 5.1525 +# 5.1526 +# InfiniBand support 5.1527 +# 5.1528 +# CONFIG_INFINIBAND is not set 5.1529 + 5.1530 +# 5.1531 +# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 5.1532 +# 5.1533 +# CONFIG_EDAC is not set 5.1534 + 5.1535 +# 5.1536 +# Real Time Clock 5.1537 +# 5.1538 +# CONFIG_RTC_CLASS is not set 5.1539 + 5.1540 +# 5.1541 +# DMA Engine support 5.1542 +# 5.1543 +CONFIG_DMA_ENGINE=y 5.1544 + 5.1545 +# 5.1546 +# DMA Clients 5.1547 +# 5.1548 +CONFIG_NET_DMA=y 5.1549 + 5.1550 +# 5.1551 +# DMA Devices 5.1552 +# 5.1553 +CONFIG_INTEL_IOATDMA=y 5.1554 + 5.1555 +# 5.1556 +# Virtualization 5.1557 +# 5.1558 +# CONFIG_KVM is not set 5.1559 + 5.1560 +# 5.1561 +# File systems 5.1562 +# 5.1563 +CONFIG_EXT2_FS=y 5.1564 +# CONFIG_EXT2_FS_XATTR is not set 5.1565 +# CONFIG_EXT2_FS_XIP is not set 5.1566 +CONFIG_EXT3_FS=y 5.1567 +# CONFIG_EXT3_FS_XATTR is not set 5.1568 +# CONFIG_EXT4DEV_FS is not set 5.1569 +CONFIG_JBD=y 5.1570 +# CONFIG_JBD_DEBUG is not set 5.1571 +# CONFIG_REISERFS_FS is not set 5.1572 +# CONFIG_JFS_FS is not set 5.1573 +# CONFIG_FS_POSIX_ACL is not set 5.1574 +# CONFIG_XFS_FS is not set 5.1575 +# CONFIG_GFS2_FS is not set 5.1576 +# CONFIG_OCFS2_FS is not set 5.1577 +# CONFIG_MINIX_FS is not set 5.1578 +# CONFIG_ROMFS_FS is not set 5.1579 +CONFIG_INOTIFY=y 5.1580 +CONFIG_INOTIFY_USER=y 5.1581 +# CONFIG_QUOTA is not set 5.1582 +CONFIG_DNOTIFY=y 5.1583 +# CONFIG_AUTOFS_FS is not set 5.1584 +# CONFIG_AUTOFS4_FS is not set 5.1585 +CONFIG_FUSE_FS=y 5.1586 + 5.1587 +# 5.1588 +# CD-ROM/DVD Filesystems 5.1589 +# 5.1590 +CONFIG_ISO9660_FS=y 5.1591 +CONFIG_JOLIET=y 5.1592 +# CONFIG_ZISOFS is not set 5.1593 +# CONFIG_UDF_FS is not set 5.1594 + 5.1595 +# 5.1596 +# DOS/FAT/NT Filesystems 5.1597 +# 5.1598 +CONFIG_FAT_FS=m 5.1599 +CONFIG_MSDOS_FS=m 5.1600 +CONFIG_VFAT_FS=m 5.1601 +CONFIG_FAT_DEFAULT_CODEPAGE=437 5.1602 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 5.1603 +# CONFIG_NTFS_FS is not set 5.1604 + 5.1605 +# 5.1606 +# Pseudo filesystems 5.1607 +# 5.1608 +CONFIG_PROC_FS=y 5.1609 +CONFIG_PROC_KCORE=y 5.1610 +CONFIG_PROC_SYSCTL=y 5.1611 +CONFIG_SYSFS=y 5.1612 +CONFIG_TMPFS=y 5.1613 +# CONFIG_TMPFS_POSIX_ACL is not set 5.1614 +# CONFIG_HUGETLBFS is not set 5.1615 +# CONFIG_HUGETLB_PAGE is not set 5.1616 +CONFIG_RAMFS=y 5.1617 +# CONFIG_CONFIGFS_FS is not set 5.1618 + 5.1619 +# 5.1620 +# Miscellaneous filesystems 5.1621 +# 5.1622 +# CONFIG_ADFS_FS is not set 5.1623 +# CONFIG_AFFS_FS is not set 5.1624 +# CONFIG_HFS_FS is not set 5.1625 +# CONFIG_HFSPLUS_FS is not set 5.1626 +# CONFIG_BEFS_FS is not set 5.1627 +# CONFIG_BFS_FS is not set 5.1628 +# CONFIG_EFS_FS is not set 5.1629 +CONFIG_CRAMFS=y 5.1630 +# CONFIG_VXFS_FS is not set 5.1631 +# CONFIG_HPFS_FS is not set 5.1632 +# CONFIG_QNX4FS_FS is not set 5.1633 +# CONFIG_SYSV_FS is not set 5.1634 +# CONFIG_UFS_FS is not set 5.1635 + 5.1636 +# 5.1637 +# Network File Systems 5.1638 +# 5.1639 +CONFIG_NFS_FS=y 5.1640 +CONFIG_NFS_V3=y 5.1641 +# CONFIG_NFS_V3_ACL is not set 5.1642 +# CONFIG_NFS_V4 is not set 5.1643 +# CONFIG_NFS_DIRECTIO is not set 5.1644 +# CONFIG_NFSD is not set 5.1645 +CONFIG_LOCKD=y 5.1646 +CONFIG_LOCKD_V4=y 5.1647 +CONFIG_NFS_COMMON=y 5.1648 +CONFIG_SUNRPC=y 5.1649 +# CONFIG_SUNRPC_BIND34 is not set 5.1650 +# CONFIG_RPCSEC_GSS_KRB5 is not set 5.1651 +# CONFIG_RPCSEC_GSS_SPKM3 is not set 5.1652 +# CONFIG_SMB_FS is not set 5.1653 +# CONFIG_CIFS is not set 5.1654 +# CONFIG_NCP_FS is not set 5.1655 +# CONFIG_CODA_FS is not set 5.1656 +# CONFIG_AFS_FS is not set 5.1657 +# CONFIG_9P_FS is not set 5.1658 + 5.1659 +# 5.1660 +# Partition Types 5.1661 +# 5.1662 +CONFIG_PARTITION_ADVANCED=y 5.1663 +# CONFIG_ACORN_PARTITION is not set 5.1664 +# CONFIG_OSF_PARTITION is not set 5.1665 +# CONFIG_AMIGA_PARTITION is not set 5.1666 +# CONFIG_ATARI_PARTITION is not set 5.1667 +# CONFIG_MAC_PARTITION is not set 5.1668 +CONFIG_MSDOS_PARTITION=y 5.1669 +# CONFIG_BSD_DISKLABEL is not set 5.1670 +# CONFIG_MINIX_SUBPARTITION is not set 5.1671 +# CONFIG_SOLARIS_X86_PARTITION is not set 5.1672 +# CONFIG_UNIXWARE_DISKLABEL is not set 5.1673 +# CONFIG_LDM_PARTITION is not set 5.1674 +# CONFIG_SGI_PARTITION is not set 5.1675 +# CONFIG_ULTRIX_PARTITION is not set 5.1676 +# CONFIG_SUN_PARTITION is not set 5.1677 +# CONFIG_KARMA_PARTITION is not set 5.1678 +# CONFIG_EFI_PARTITION is not set 5.1679 +# CONFIG_SYSV68_PARTITION is not set 5.1680 + 5.1681 +# 5.1682 +# Native Language Support 5.1683 +# 5.1684 +CONFIG_NLS=y 5.1685 +CONFIG_NLS_DEFAULT="iso8859-1" 5.1686 +CONFIG_NLS_CODEPAGE_437=y 5.1687 +# CONFIG_NLS_CODEPAGE_737 is not set 5.1688 +# CONFIG_NLS_CODEPAGE_775 is not set 5.1689 +CONFIG_NLS_CODEPAGE_850=y 5.1690 +CONFIG_NLS_CODEPAGE_852=y 5.1691 +# CONFIG_NLS_CODEPAGE_855 is not set 5.1692 +# CONFIG_NLS_CODEPAGE_857 is not set 5.1693 +# CONFIG_NLS_CODEPAGE_860 is not set 5.1694 +# CONFIG_NLS_CODEPAGE_861 is not set 5.1695 +# CONFIG_NLS_CODEPAGE_862 is not set 5.1696 +CONFIG_NLS_CODEPAGE_863=y 5.1697 +# CONFIG_NLS_CODEPAGE_864 is not set 5.1698 +CONFIG_NLS_CODEPAGE_865=y 5.1699 +# CONFIG_NLS_CODEPAGE_866 is not set 5.1700 +# CONFIG_NLS_CODEPAGE_869 is not set 5.1701 +# CONFIG_NLS_CODEPAGE_936 is not set 5.1702 +# CONFIG_NLS_CODEPAGE_950 is not set 5.1703 +# CONFIG_NLS_CODEPAGE_932 is not set 5.1704 +# CONFIG_NLS_CODEPAGE_949 is not set 5.1705 +# CONFIG_NLS_CODEPAGE_874 is not set 5.1706 +# CONFIG_NLS_ISO8859_8 is not set 5.1707 +# CONFIG_NLS_CODEPAGE_1250 is not set 5.1708 +# CONFIG_NLS_CODEPAGE_1251 is not set 5.1709 +CONFIG_NLS_ASCII=y 5.1710 +CONFIG_NLS_ISO8859_1=y 5.1711 +CONFIG_NLS_ISO8859_2=y 5.1712 +# CONFIG_NLS_ISO8859_3 is not set 5.1713 +# CONFIG_NLS_ISO8859_4 is not set 5.1714 +# CONFIG_NLS_ISO8859_5 is not set 5.1715 +# CONFIG_NLS_ISO8859_6 is not set 5.1716 +# CONFIG_NLS_ISO8859_7 is not set 5.1717 +# CONFIG_NLS_ISO8859_9 is not set 5.1718 +# CONFIG_NLS_ISO8859_13 is not set 5.1719 +# CONFIG_NLS_ISO8859_14 is not set 5.1720 +CONFIG_NLS_ISO8859_15=y 5.1721 +# CONFIG_NLS_KOI8_R is not set 5.1722 +# CONFIG_NLS_KOI8_U is not set 5.1723 +CONFIG_NLS_UTF8=m 5.1724 + 5.1725 +# 5.1726 +# Distributed Lock Manager 5.1727 +# 5.1728 +# CONFIG_DLM is not set 5.1729 + 5.1730 +# 5.1731 +# Instrumentation Support 5.1732 +# 5.1733 +# CONFIG_PROFILING is not set 5.1734 +# CONFIG_KPROBES is not set 5.1735 + 5.1736 +# 5.1737 +# Kernel hacking 5.1738 +# 5.1739 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y 5.1740 +# CONFIG_PRINTK_TIME is not set 5.1741 +CONFIG_ENABLE_MUST_CHECK=y 5.1742 +# CONFIG_MAGIC_SYSRQ is not set 5.1743 +CONFIG_UNUSED_SYMBOLS=y 5.1744 +# CONFIG_DEBUG_FS is not set 5.1745 +# CONFIG_HEADERS_CHECK is not set 5.1746 +# CONFIG_DEBUG_KERNEL is not set 5.1747 +CONFIG_DEBUG_BUGVERBOSE=y 5.1748 +CONFIG_EARLY_PRINTK=y 5.1749 +CONFIG_X86_FIND_SMP_CONFIG=y 5.1750 +CONFIG_X86_MPPARSE=y 5.1751 +CONFIG_DOUBLEFAULT=y 5.1752 + 5.1753 +# 5.1754 +# Security options 5.1755 +# 5.1756 +# CONFIG_KEYS is not set 5.1757 +# CONFIG_SECURITY is not set 5.1758 + 5.1759 +# 5.1760 +# Cryptographic options 5.1761 +# 5.1762 +CONFIG_CRYPTO=y 5.1763 +CONFIG_CRYPTO_ALGAPI=y 5.1764 +CONFIG_CRYPTO_BLKCIPHER=y 5.1765 +CONFIG_CRYPTO_HASH=y 5.1766 +CONFIG_CRYPTO_MANAGER=y 5.1767 +CONFIG_CRYPTO_HMAC=y 5.1768 +# CONFIG_CRYPTO_XCBC is not set 5.1769 +# CONFIG_CRYPTO_NULL is not set 5.1770 +# CONFIG_CRYPTO_MD4 is not set 5.1771 +CONFIG_CRYPTO_MD5=y 5.1772 +CONFIG_CRYPTO_SHA1=y 5.1773 +# CONFIG_CRYPTO_SHA256 is not set 5.1774 +# CONFIG_CRYPTO_SHA512 is not set 5.1775 +# CONFIG_CRYPTO_WP512 is not set 5.1776 +# CONFIG_CRYPTO_TGR192 is not set 5.1777 +# CONFIG_CRYPTO_GF128MUL is not set 5.1778 +# CONFIG_CRYPTO_ECB is not set 5.1779 +CONFIG_CRYPTO_CBC=y 5.1780 +CONFIG_CRYPTO_PCBC=m 5.1781 +# CONFIG_CRYPTO_LRW is not set 5.1782 +# CONFIG_CRYPTO_CRYPTD is not set 5.1783 +CONFIG_CRYPTO_DES=y 5.1784 +# CONFIG_CRYPTO_FCRYPT is not set 5.1785 +# CONFIG_CRYPTO_BLOWFISH is not set 5.1786 +# CONFIG_CRYPTO_TWOFISH is not set 5.1787 +# CONFIG_CRYPTO_TWOFISH_586 is not set 5.1788 +# CONFIG_CRYPTO_SERPENT is not set 5.1789 +# CONFIG_CRYPTO_AES is not set 5.1790 +# CONFIG_CRYPTO_AES_586 is not set 5.1791 +# CONFIG_CRYPTO_CAST5 is not set 5.1792 +# CONFIG_CRYPTO_CAST6 is not set 5.1793 +# CONFIG_CRYPTO_TEA is not set 5.1794 +# CONFIG_CRYPTO_ARC4 is not set 5.1795 +# CONFIG_CRYPTO_KHAZAD is not set 5.1796 +# CONFIG_CRYPTO_ANUBIS is not set 5.1797 +CONFIG_CRYPTO_DEFLATE=y 5.1798 +# CONFIG_CRYPTO_MICHAEL_MIC is not set 5.1799 +# CONFIG_CRYPTO_CRC32C is not set 5.1800 +# CONFIG_CRYPTO_CAMELLIA is not set 5.1801 +# CONFIG_CRYPTO_TEST is not set 5.1802 + 5.1803 +# 5.1804 +# Hardware crypto devices 5.1805 +# 5.1806 +# CONFIG_CRYPTO_DEV_PADLOCK is not set 5.1807 +# CONFIG_CRYPTO_DEV_GEODE is not set 5.1808 + 5.1809 +# 5.1810 +# Library routines 5.1811 +# 5.1812 +CONFIG_BITREVERSE=y 5.1813 +CONFIG_CRC_CCITT=y 5.1814 +# CONFIG_CRC16 is not set 5.1815 +# CONFIG_CRC_ITU_T is not set 5.1816 +CONFIG_CRC32=y 5.1817 +# CONFIG_LIBCRC32C is not set 5.1818 +CONFIG_ZLIB_INFLATE=y 5.1819 +CONFIG_ZLIB_DEFLATE=y 5.1820 +CONFIG_PLIST=y 5.1821 +CONFIG_HAS_IOMEM=y 5.1822 +CONFIG_HAS_IOPORT=y 5.1823 +CONFIG_HAS_DMA=y 5.1824 +CONFIG_GENERIC_HARDIRQS=y 5.1825 +CONFIG_GENERIC_IRQ_PROBE=y 5.1826 +CONFIG_GENERIC_PENDING_IRQ=y 5.1827 +CONFIG_X86_SMP=y 5.1828 +CONFIG_X86_HT=y 5.1829 +CONFIG_X86_BIOS_REBOOT=y 5.1830 +CONFIG_X86_TRAMPOLINE=y 5.1831 +CONFIG_KTIME_SCALAR=y
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 6.2 +++ b/linux/stuff/linux-lzma-2.6.22.9.u Thu Dec 13 11:30:29 2007 +0100 6.3 @@ -0,0 +1,2075 @@ 6.4 +--- linux-2.6.22.9/arch/i386/boot/compressed/Makefile 6.5 ++++ linux-2.6.22.9/arch/i386/boot/compressed/Makefile 6.6 +@@ -4,7 +4,7 @@ 6.7 + # create a compressed vmlinux image from the original vmlinux 6.8 + # 6.9 + 6.10 +-targets := vmlinux vmlinux.bin vmlinux.bin.gz head.o misc.o piggy.o \ 6.11 ++targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma head.o misc.o piggy.o \ 6.12 + vmlinux.bin.all vmlinux.relocs 6.13 + EXTRA_AFLAGS := -traditional 6.14 + 6.15 +@@ -39,7 +39,27 @@ $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bi 6.16 + $(call if_changed,gzip) 6.17 + endif 6.18 + 6.19 ++ifdef CONFIG_RELOCATABLE 6.20 ++$(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin.all FORCE 6.21 ++ $(call if_changed,bzip2) 6.22 ++else 6.23 ++$(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE 6.24 ++ $(call if_changed,bzip2) 6.25 ++endif 6.26 ++ 6.27 ++ifdef CONFIG_RELOCATABLE 6.28 ++$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin.all FORCE 6.29 ++ $(call if_changed,lzma) 6.30 ++else 6.31 ++$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE 6.32 ++ $(call if_changed,lzma) 6.33 ++endif 6.34 ++ 6.35 + LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T 6.36 + 6.37 +-$(obj)/piggy.o: $(src)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE 6.38 ++suffix_$(CONFIG_KERNEL_GZIP) = gz 6.39 ++suffix_$(CONFIG_KERNEL_BZIP2) = bz2 6.40 ++suffix_$(CONFIG_KERNEL_LZMA) = lzma 6.41 ++ 6.42 ++$(obj)/piggy.o: $(src)/vmlinux.scr $(obj)/vmlinux.bin.$(suffix_y) FORCE 6.43 + $(call if_changed,ld) 6.44 + 6.45 +--- linux-2.6.22.9/arch/i386/boot/compressed/misc.c 6.46 ++++ linux-2.6.22.9/arch/i386/boot/compressed/misc.c 6.47 +@@ -121,9 +121,12 @@ 6.48 + * always be larger than our output buffer. 6.49 + */ 6.50 + 6.51 ++#ifdef CONFIG_KERNEL_GZIP 6.52 + static uch *inbuf; /* input buffer */ 6.53 ++#endif 6.54 + static uch *window; /* Sliding window buffer, (and final output buffer) */ 6.55 + 6.56 ++#ifdef CONFIG_KERNEL_GZIP 6.57 + static unsigned insize; /* valid bytes in inbuf */ 6.58 + static unsigned inptr; /* index of next byte to be processed in inbuf */ 6.59 + static unsigned outcnt; /* bytes in output buffer */ 6.60 +@@ -158,9 +161,14 @@ static unsigned outcnt; /* bytes in out 6.61 + 6.62 + static int fill_inbuf(void); 6.63 + static void flush_window(void); 6.64 ++#endif 6.65 ++ 6.66 + static void error(char *m); 6.67 ++ 6.68 ++#ifdef CONFIG_KERNEL_GZIP 6.69 + static void gzip_mark(void **); 6.70 + static void gzip_release(void **); 6.71 ++#endif 6.72 + 6.73 + /* 6.74 + * This is set up by the setup-routine at boot-time 6.75 +@@ -181,7 +189,9 @@ static long bytes_out = 0; 6.76 + static void *malloc(int size); 6.77 + static void free(void *where); 6.78 + 6.79 ++#if (defined CONFIG_KERNEL_GZIP || defined CONFIG_KERNEL_BZIP2) 6.80 + static void *memset(void *s, int c, unsigned n); 6.81 ++#endif 6.82 + static void *memcpy(void *dest, const void *src, unsigned n); 6.83 + 6.84 + static void putstr(const char *); 6.85 +@@ -189,7 +199,11 @@ static void putstr(const char *); 6.86 + static unsigned long free_mem_ptr; 6.87 + static unsigned long free_mem_end_ptr; 6.88 + 6.89 ++#if (defined CONFIG_KERNEL_BZIP2 || defined CONFIG_KERNEL_LZMA) 6.90 ++#define HEAP_SIZE 0x400000 6.91 ++#else 6.92 + #define HEAP_SIZE 0x4000 6.93 ++#endif 6.94 + 6.95 + static char *vidmem = (char *)0xb8000; 6.96 + static int vidport; 6.97 +@@ -199,7 +213,29 @@ static int lines, cols; 6.98 + void *xquad_portio; 6.99 + #endif 6.100 + 6.101 ++#if (defined CONFIG_KERNEL_BZIP2 || defined CONFIG_KERNEL_LZMA) 6.102 ++ 6.103 ++#define large_malloc malloc 6.104 ++#define large_free free 6.105 ++ 6.106 ++#ifdef current 6.107 ++#undef current 6.108 ++#endif 6.109 ++ 6.110 ++#define INCLUDED 6.111 ++#endif 6.112 ++ 6.113 ++#ifdef CONFIG_KERNEL_GZIP 6.114 + #include "../../../../lib/inflate.c" 6.115 ++#endif 6.116 ++ 6.117 ++#ifdef CONFIG_KERNEL_BZIP2 6.118 ++#include "../../../../lib/decompress_bunzip2.c" 6.119 ++#endif 6.120 ++ 6.121 ++#ifdef CONFIG_KERNEL_LZMA 6.122 ++#include "../../../../lib/decompress_unlzma.c" 6.123 ++#endif 6.124 + 6.125 + static void *malloc(int size) 6.126 + { 6.127 +@@ -223,6 +259,7 @@ static void free(void *where) 6.128 + { /* Don't care */ 6.129 + } 6.130 + 6.131 ++#ifdef CONFIG_KERNEL_GZIP 6.132 + static void gzip_mark(void **ptr) 6.133 + { 6.134 + *ptr = (void *) free_mem_ptr; 6.135 +@@ -232,6 +269,7 @@ static void gzip_release(void **ptr) 6.136 + { 6.137 + free_mem_ptr = (unsigned long) *ptr; 6.138 + } 6.139 ++#endif 6.140 + 6.141 + static void scroll(void) 6.142 + { 6.143 +@@ -279,6 +317,7 @@ static void putstr(const char *s) 6.144 + outb_p(0xff & (pos >> 1), vidport+1); 6.145 + } 6.146 + 6.147 ++#if (defined CONFIG_KERNEL_GZIP || defined CONFIG_KERNEL_BZIP2) 6.148 + static void* memset(void* s, int c, unsigned n) 6.149 + { 6.150 + int i; 6.151 +@@ -287,6 +326,7 @@ static void* memset(void* s, int c, unsi 6.152 + for (i=0;i<n;i++) ss[i] = c; 6.153 + return s; 6.154 + } 6.155 ++#endif 6.156 + 6.157 + static void* memcpy(void* dest, const void* src, unsigned n) 6.158 + { 6.159 +@@ -297,6 +337,26 @@ static void* memcpy(void* dest, const vo 6.160 + return dest; 6.161 + } 6.162 + 6.163 ++#ifndef CONFIG_KERNEL_GZIP 6.164 ++/* =========================================================================== 6.165 ++ * Write the output window window[0..outcnt-1] and update bytes_out. 6.166 ++ * (Used for the decompressed data only.) 6.167 ++ */ 6.168 ++static int compr_flush(char *data, unsigned int len) 6.169 ++{ 6.170 ++ unsigned n; 6.171 ++ uch *out; 6.172 ++ 6.173 ++ out = window; 6.174 ++ for (n = 0; n < len; n++) { 6.175 ++ *out++ = *data++; 6.176 ++ } 6.177 ++ bytes_out += (ulg)len; 6.178 ++ window += (ulg)len; 6.179 ++ return len; 6.180 ++} 6.181 ++ 6.182 ++#else 6.183 + /* =========================================================================== 6.184 + * Fill the input buffer. This is called only when the buffer is empty 6.185 + * and at least one byte is really needed. 6.186 +@@ -329,6 +389,7 @@ static void flush_window(void) 6.187 + bytes_out += (ulg)outcnt; 6.188 + outcnt = 0; 6.189 + } 6.190 ++#endif 6.191 + 6.192 + static void error(char *x) 6.193 + { 6.194 +@@ -358,9 +419,11 @@ asmlinkage void decompress_kernel(void * 6.195 + window = output; /* Output buffer (Normally at 1M) */ 6.196 + free_mem_ptr = end; /* Heap */ 6.197 + free_mem_end_ptr = end + HEAP_SIZE; 6.198 ++#ifdef CONFIG_KERNEL_GZIP 6.199 + inbuf = input_data; /* Input buffer */ 6.200 + insize = input_len; 6.201 + inptr = 0; 6.202 ++#endif 6.203 + 6.204 + if ((u32)output & (CONFIG_PHYSICAL_ALIGN -1)) 6.205 + error("Destination address not CONFIG_PHYSICAL_ALIGN aligned"); 6.206 +@@ -371,9 +434,21 @@ asmlinkage void decompress_kernel(void * 6.207 + error("Wrong destination address"); 6.208 + #endif 6.209 + 6.210 ++#ifdef CONFIG_KERNEL_BZIP2 6.211 ++ putstr("Bunzipping Linux... "); 6.212 ++ bunzip2(input_data, input_len-4, NULL, compr_flush, NULL); 6.213 ++#endif 6.214 ++ 6.215 ++#ifdef CONFIG_KERNEL_LZMA 6.216 ++ putstr("Unlzmaing Linux... "); 6.217 ++ unlzma(input_data, input_len-4, NULL, compr_flush, NULL); 6.218 ++#endif 6.219 ++ 6.220 ++#ifdef CONFIG_KERNEL_GZIP 6.221 + makecrc(); 6.222 + putstr("Uncompressing Linux... "); 6.223 + gunzip(); 6.224 ++#endif 6.225 + putstr("Ok, booting the kernel.\n"); 6.226 + return; 6.227 + } 6.228 + 6.229 +--- linux-2.6.22.9/drivers/block/Kconfig 6.230 ++++ linux-2.6.22.9/drivers/block/Kconfig 6.231 +@@ -406,6 +406,30 @@ 6.232 + setups function - apparently needed by the rd_load_image routine 6.233 + that supposes the filesystem in the image uses a 1024 blocksize. 6.234 + 6.235 ++config RD_BZIP2 6.236 ++ bool "Initial ramdisk compressed using bzip2" 6.237 ++ default n 6.238 ++ depends on BLK_DEV_INITRD=y 6.239 ++ help 6.240 ++ Support loading of a bzip2 encoded initial ramdisk or cpio buffer 6.241 ++ If unsure, say N. 6.242 ++ 6.243 ++config RD_LZMA 6.244 ++ bool "Initial ramdisk compressed using lzma" 6.245 ++ default n 6.246 ++ depends on BLK_DEV_INITRD=y 6.247 ++ help 6.248 ++ Support loading of a lzma encoded initial ramdisk or cpio buffer 6.249 ++ If unsure, say N. 6.250 ++ 6.251 ++config RD_GZIP 6.252 ++ bool "Initial ramdisk compressed using gzip" 6.253 ++ default y 6.254 ++ depends on BLK_DEV_INITRD=y 6.255 ++ help 6.256 ++ Support loading of a gzip encoded initial ramdisk or cpio buffer. 6.257 ++ If unsure, say Y. 6.258 ++ 6.259 + config CDROM_PKTCDVD 6.260 + tristate "Packet writing on CD/DVD media" 6.261 + depends on !UML 6.262 + 6.263 +--- linux-2.6.22.9/include/linux/decompress_bunzip2.h 6.264 ++++ linux-2.6.22.9/include/linux/decompress_bunzip2.h 6.265 +@@ -0,0 +1,16 @@ 6.266 ++#ifndef DECOMPRESS_BUNZIP2_H 6.267 ++#define DECOMPRESS_BUNZIP2_H 6.268 ++ 6.269 ++/* Other housekeeping constants */ 6.270 ++#define BZIP2_IOBUF_SIZE 4096 6.271 ++ 6.272 ++#ifndef STATIC 6.273 ++#define STATIC /**/ 6.274 ++#endif 6.275 ++ 6.276 ++STATIC int bunzip2(char *inbuf, int len, 6.277 ++ int(*fill)(void*,unsigned int), 6.278 ++ int(*writebb)(char*,unsigned int), 6.279 ++ int *pos); 6.280 ++ 6.281 ++#endif 6.282 + 6.283 +--- linux-2.6.22.9/include/linux/decompress_generic.h 6.284 ++++ linux-2.6.22.9/include/linux/decompress_generic.h 6.285 +@@ -0,0 +1,28 @@ 6.286 ++#ifndef DECOMPRESS_GENERIC_H 6.287 ++#define DECOMPRESS_GENERIC_H 6.288 ++ 6.289 ++/* Minimal chunksize to be read. 6.290 ++ * Bzip2 prefers at least 4096 6.291 ++ * Lzma prefers 0x10000 */ 6.292 ++#define COMPR_IOBUF_SIZE 4096 6.293 ++ 6.294 ++typedef int (*uncompress_fn) (char *inbuf, int len, 6.295 ++ int(*fill)(char*,unsigned int), 6.296 ++ int(*writebb)(char*,unsigned int), 6.297 ++ int *posp); 6.298 ++ 6.299 ++/* inbuf - input buffer 6.300 ++ * len - len of pre-read data in inbuf 6.301 ++ * fill - function to fill inbuf if empty 6.302 ++ * writebb - function to write out outbug 6.303 ++ * posp - if non-null, input position (number of bytes read) will be 6.304 ++ * returned here 6.305 ++ * 6.306 ++ * If len != 0, the inbuf is initialized (with as much data), and fill 6.307 ++ * should not be called 6.308 ++ * If len = 0, the inbuf is allocated, but empty. Its size is IOBUF_SIZE 6.309 ++ * fill should be called (repeatedly...) to read data, at most IOBUF_SIZE 6.310 ++ */ 6.311 ++ 6.312 ++ 6.313 ++#endif 6.314 + 6.315 +--- linux-2.6.22.9/include/linux/decompress_unlzma.h 6.316 ++++ linux-2.6.22.9/include/linux/decompress_unlzma.h 6.317 +@@ -0,0 +1,15 @@ 6.318 ++#ifndef DECOMPRESS_UNLZMA_H 6.319 ++#define DECOMPRESS_UNLZMA_H 6.320 ++ 6.321 ++#define LZMA_IOBUF_SIZE 0x10000 6.322 ++ 6.323 ++#ifndef STATIC 6.324 ++#define STATIC /**/ 6.325 ++#endif 6.326 ++ 6.327 ++STATIC int unlzma(char *inbuf, int len, 6.328 ++ int(*fill)(void*,unsigned int), 6.329 ++ int(*writebb)(char*,unsigned int), 6.330 ++ int *pos); 6.331 ++ 6.332 ++#endif 6.333 + 6.334 +--- linux-2.6.22.9/init/do_mounts_rd.c 6.335 ++++ linux-2.6.22.9/init/do_mounts_rd.c 6.336 +@@ -8,6 +8,16 @@ 6.337 + #include <linux/initrd.h> 6.338 + #include <linux/string.h> 6.339 + 6.340 ++#ifdef CONFIG_RD_BZIP2 6.341 ++#include <linux/decompress_bunzip2.h> 6.342 ++#undef STATIC 6.343 ++#endif 6.344 ++ 6.345 ++#ifdef CONFIG_RD_LZMA 6.346 ++#include <linux/decompress_unlzma.h> 6.347 ++#undef STATIC 6.348 ++#endif 6.349 ++ 6.350 + #include "do_mounts.h" 6.351 + 6.352 + #define BUILD_CRAMDISK 6.353 +@@ -30,7 +40,15 @@ static int __init ramdisk_start_setup(ch 6.354 + } 6.355 + __setup("ramdisk_start=", ramdisk_start_setup); 6.356 + 6.357 ++#ifdef CONFIG_RD_GZIP 6.358 + static int __init crd_load(int in_fd, int out_fd); 6.359 ++#endif 6.360 ++#ifdef CONFIG_RD_BZIP2 6.361 ++static int __init crd_load_bzip2(int in_fd, int out_fd); 6.362 ++#endif 6.363 ++#ifdef CONFIG_RD_LZMA 6.364 ++static int __init crd_load_lzma(int in_fd, int out_fd); 6.365 ++#endif 6.366 + 6.367 + /* 6.368 + * This routine tries to find a RAM disk image to load, and returns the 6.369 +@@ -46,7 +64,7 @@ static int __init crd_load(int in_fd, in 6.370 + * gzip 6.371 + */ 6.372 + static int __init 6.373 +-identify_ramdisk_image(int fd, int start_block) 6.374 ++identify_ramdisk_image(int fd, int start_block, int *ztype) 6.375 + { 6.376 + const int size = 512; 6.377 + struct minix_super_block *minixsb; 6.378 +@@ -72,6 +90,7 @@ identify_ramdisk_image(int fd, int start 6.379 + sys_lseek(fd, start_block * BLOCK_SIZE, 0); 6.380 + sys_read(fd, buf, size); 6.381 + 6.382 ++#ifdef CONFIG_RD_GZIP 6.383 + /* 6.384 + * If it matches the gzip magic numbers, return -1 6.385 + */ 6.386 +@@ -79,9 +98,40 @@ identify_ramdisk_image(int fd, int start 6.387 + printk(KERN_NOTICE 6.388 + "RAMDISK: Compressed image found at block %d\n", 6.389 + start_block); 6.390 ++ *ztype = 0; 6.391 ++ nblocks = 0; 6.392 ++ goto done; 6.393 ++ } 6.394 ++#endif 6.395 ++ 6.396 ++#ifdef CONFIG_RD_BZIP2 6.397 ++ /* 6.398 ++ * If it matches the bzip magic numbers, return -1 6.399 ++ */ 6.400 ++ if (buf[0] == 0x42 && (buf[1] == 0x5a)) { 6.401 ++ printk(KERN_NOTICE 6.402 ++ "RAMDISK: Bzipped image found at block %d\n", 6.403 ++ start_block); 6.404 ++ *ztype = 1; 6.405 + nblocks = 0; 6.406 + goto done; 6.407 + } 6.408 ++#endif 6.409 ++ 6.410 ++#ifdef CONFIG_RD_LZMA 6.411 ++ /* 6.412 ++ * If it matches the bzip magic numbers, return -1 6.413 ++ */ 6.414 ++ if (buf[0] == 0x5d && (buf[1] == 0x00)) { 6.415 ++ printk(KERN_NOTICE 6.416 ++ "RAMDISK: Lzma image found at block %d\n", 6.417 ++ start_block); 6.418 ++ *ztype = 2; 6.419 ++ nblocks = 0; 6.420 ++ goto done; 6.421 ++ } 6.422 ++#endif 6.423 ++ 6.424 + 6.425 + /* romfs is at block zero too */ 6.426 + if (romfsb->word0 == ROMSB_WORD0 && 6.427 +@@ -145,6 +195,7 @@ int __init rd_load_image(char *from) 6.428 + int nblocks, i, disk; 6.429 + char *buf = NULL; 6.430 + unsigned short rotate = 0; 6.431 ++ int ztype=-1; 6.432 + #if !defined(CONFIG_S390) && !defined(CONFIG_PPC_ISERIES) 6.433 + char rotator[4] = { '|' , '/' , '-' , '\\' }; 6.434 + #endif 6.435 +@@ -157,14 +208,38 @@ int __init rd_load_image(char *from) 6.436 + if (in_fd < 0) 6.437 + goto noclose_input; 6.438 + 6.439 +- nblocks = identify_ramdisk_image(in_fd, rd_image_start); 6.440 ++ nblocks = identify_ramdisk_image(in_fd, rd_image_start, &ztype); 6.441 + if (nblocks < 0) 6.442 + goto done; 6.443 + 6.444 + if (nblocks == 0) { 6.445 + #ifdef BUILD_CRAMDISK 6.446 +- if (crd_load(in_fd, out_fd) == 0) 6.447 +- goto successful_load; 6.448 ++ switch(ztype) { 6.449 ++ 6.450 ++#ifdef CONFIG_RD_GZIP 6.451 ++ case 0: 6.452 ++ if (crd_load(in_fd, out_fd) == 0) 6.453 ++ goto successful_load; 6.454 ++ break; 6.455 ++#endif 6.456 ++ 6.457 ++#ifdef CONFIG_RD_BZIP2 6.458 ++ case 1: 6.459 ++ if (crd_load_bzip2(in_fd, out_fd) == 0) 6.460 ++ goto successful_load; 6.461 ++ break; 6.462 ++#endif 6.463 ++ 6.464 ++#ifdef CONFIG_RD_LZMA 6.465 ++ case 2: 6.466 ++ if (crd_load_lzma(in_fd, out_fd) == 0) 6.467 ++ goto successful_load; 6.468 ++ break; 6.469 ++#endif 6.470 ++ 6.471 ++ default: 6.472 ++ break; 6.473 ++ } 6.474 + #else 6.475 + printk(KERN_NOTICE 6.476 + "RAMDISK: Kernel does not support compressed " 6.477 +@@ -269,6 +344,7 @@ int __init rd_load_disk(int n) 6.478 + 6.479 + #ifdef BUILD_CRAMDISK 6.480 + 6.481 ++#ifdef CONFIG_RD_GZIP 6.482 + /* 6.483 + * gzip declarations 6.484 + */ 6.485 +@@ -296,8 +372,11 @@ static unsigned outcnt; /* bytes in out 6.486 + static int exit_code; 6.487 + static int unzip_error; 6.488 + static long bytes_out; 6.489 ++#endif 6.490 ++ 6.491 + static int crd_infd, crd_outfd; 6.492 + 6.493 ++#ifdef CONFIG_RD_GZIP 6.494 + #define get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf()) 6.495 + 6.496 + /* Diagnostic functions (stubbed out) */ 6.497 +@@ -359,7 +438,22 @@ static int __init fill_inbuf(void) 6.498 + 6.499 + return inbuf[0]; 6.500 + } 6.501 ++#endif 6.502 + 6.503 ++#if (defined CONFIG_RD_BZIP2 || defined CONFIG_RD_LZMA) 6.504 ++static int __init compr_fill(void *buf, unsigned int len) 6.505 ++{ 6.506 ++ int r = sys_read(crd_infd, buf, len); 6.507 ++ if(r < 0) { 6.508 ++ printk(KERN_ERR "RAMDISK: error while reading compressed data"); 6.509 ++ } else if(r == 0) { 6.510 ++ printk(KERN_ERR "RAMDISK: EOF while reading compressed data"); 6.511 ++ } 6.512 ++ return r; 6.513 ++} 6.514 ++#endif 6.515 ++ 6.516 ++#ifdef CONFIG_RD_GZIP 6.517 + /* =========================================================================== 6.518 + * Write the output window window[0..outcnt-1] and update crc and bytes_out. 6.519 + * (Used for the decompressed data only.) 6.520 +@@ -385,7 +479,24 @@ static void __init flush_window(void) 6.521 + bytes_out += (ulg)outcnt; 6.522 + outcnt = 0; 6.523 + } 6.524 ++#endif 6.525 + 6.526 ++#if (defined CONFIG_RD_BZIP2 || defined CONFIG_RD_LZMA) 6.527 ++static int __init compr_flush(void *window, unsigned int outcnt) { 6.528 ++ static int progressDots=0; 6.529 ++ int written = sys_write(crd_outfd, window, outcnt); 6.530 ++ if (written != outcnt) { 6.531 ++ printk(KERN_ERR "RAMDISK: incomplete write (%d != %d)\n", 6.532 ++ written, outcnt); 6.533 ++ } 6.534 ++ progressDots = (progressDots+1)%10; 6.535 ++ if(!progressDots) 6.536 ++ printk("."); 6.537 ++ return outcnt; 6.538 ++} 6.539 ++#endif 6.540 ++ 6.541 ++#ifdef CONFIG_RD_GZIP 6.542 + static void __init error(char *x) 6.543 + { 6.544 + printk(KERN_ERR "%s\n", x); 6.545 +@@ -425,5 +536,43 @@ static int __init crd_load(int in_fd, in 6.546 + kfree(window); 6.547 + return result; 6.548 + } 6.549 ++#endif 6.550 ++ 6.551 ++#if (defined CONFIG_RD_BZIP2 || defined CONFIG_RD_LZMA) 6.552 ++static int __init crd_load_compr(int in_fd, int out_fd, int size, 6.553 ++ int (*deco)(char *,int, 6.554 ++ int(*fill)(void*,unsigned int), 6.555 ++ int(*flush)(void*,unsigned int), 6.556 ++ int *)) 6.557 ++{ 6.558 ++ int result; 6.559 ++ char *inbuf = kmalloc(size, GFP_KERNEL); 6.560 ++ crd_infd = in_fd; 6.561 ++ crd_outfd = out_fd; 6.562 ++ if (inbuf == 0) { 6.563 ++ printk(KERN_ERR "RAMDISK: Couldn't allocate decompression buffer\n"); 6.564 ++ return -1; 6.565 ++ } 6.566 ++ result=deco(inbuf, 0, compr_fill, compr_flush, NULL); 6.567 ++ kfree(inbuf); 6.568 ++ printk("\n"); 6.569 ++ return result; 6.570 ++} 6.571 ++#endif 6.572 ++ 6.573 ++#ifdef CONFIG_RD_BZIP2 6.574 ++static int __init crd_load_bzip2(int in_fd, int out_fd) 6.575 ++{ 6.576 ++ return crd_load_compr(in_fd, out_fd, BZIP2_IOBUF_SIZE, bunzip2); 6.577 ++} 6.578 ++#endif 6.579 ++ 6.580 ++#ifdef CONFIG_RD_LZMA 6.581 ++static int __init crd_load_lzma(int in_fd, int out_fd) 6.582 ++{ 6.583 ++ return crd_load_compr(in_fd, out_fd, LZMA_IOBUF_SIZE, unlzma); 6.584 ++} 6.585 ++ 6.586 ++#endif 6.587 + 6.588 + #endif /* BUILD_CRAMDISK */ 6.589 + 6.590 +--- linux-2.6.22.9/init/initramfs.c 6.591 ++++ linux-2.6.22.9/init/initramfs.c 6.592 +@@ -7,6 +7,15 @@ 6.593 + #include <linux/string.h> 6.594 + #include <linux/syscalls.h> 6.595 + 6.596 ++/* We need to enable RD_GZIP unconditionnally, as the built-in 6.597 ++ * initramfs is gzip-compressed, alas! 6.598 ++ * We can only wonder why, though, as the whole kernel (which contains 6.599 ++ * built-in initramfs) is gzip (or bzip) compressed anyways afterwards... 6.600 ++ */ 6.601 ++#ifndef CONFIG_RD_GZIP 6.602 ++#define CONFIG_RD_GZIP 6.603 ++#endif 6.604 ++ 6.605 + static __initdata char *message; 6.606 + static void __init error(char *x) 6.607 + { 6.608 +@@ -347,11 +356,13 @@ static int __init write_buffer(char *buf 6.609 + return len - count; 6.610 + } 6.611 + 6.612 +-static void __init flush_buffer(char *buf, unsigned len) 6.613 ++ 6.614 ++static int __init flush_buffer(char *buf, unsigned len) 6.615 + { 6.616 + int written; 6.617 ++ int origLen = len; 6.618 + if (message) 6.619 +- return; 6.620 ++ return -1; 6.621 + while ((written = write_buffer(buf, len)) < len && !message) { 6.622 + char c = buf[written]; 6.623 + if (c == '0') { 6.624 +@@ -365,8 +376,24 @@ static void __init flush_buffer(char *bu 6.625 + } else 6.626 + error("junk in compressed archive"); 6.627 + } 6.628 ++ return origLen; 6.629 + } 6.630 + 6.631 ++#ifdef CONFIG_RD_BZIP2 6.632 ++#include <linux/decompress_bunzip2.h> 6.633 ++#undef STATIC 6.634 ++ 6.635 ++#endif 6.636 ++ 6.637 ++#ifdef CONFIG_RD_LZMA 6.638 ++#include <linux/decompress_unlzma.h> 6.639 ++#undef STATIC 6.640 ++ 6.641 ++#endif 6.642 ++ 6.643 ++static unsigned inptr; /* index of next byte to be processed in inbuf */ 6.644 ++ 6.645 ++#ifdef CONFIG_RD_GZIP 6.646 + /* 6.647 + * gzip declarations 6.648 + */ 6.649 +@@ -388,7 +415,6 @@ static uch *inbuf; 6.650 + static uch *window; 6.651 + 6.652 + static unsigned insize; /* valid bytes in inbuf */ 6.653 +-static unsigned inptr; /* index of next byte to be processed in inbuf */ 6.654 + static unsigned outcnt; /* bytes in output buffer */ 6.655 + static long bytes_out; 6.656 + 6.657 +@@ -440,6 +466,7 @@ static void __init flush_window(void) 6.658 + bytes_out += (ulg)outcnt; 6.659 + outcnt = 0; 6.660 + } 6.661 ++#endif 6.662 + 6.663 + static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only) 6.664 + { 6.665 +@@ -448,9 +475,11 @@ static char * __init unpack_to_rootfs(ch 6.666 + header_buf = malloc(110); 6.667 + symlink_buf = malloc(PATH_MAX + N_ALIGN(PATH_MAX) + 1); 6.668 + name_buf = malloc(N_ALIGN(PATH_MAX)); 6.669 ++#ifdef CONFIG_RD_GZIP 6.670 + window = malloc(WSIZE); 6.671 + if (!window || !header_buf || !symlink_buf || !name_buf) 6.672 + panic("can't allocate buffers"); 6.673 ++#endif 6.674 + state = Start; 6.675 + this_header = 0; 6.676 + message = NULL; 6.677 +@@ -470,6 +499,7 @@ static char * __init unpack_to_rootfs(ch 6.678 + continue; 6.679 + } 6.680 + this_header = 0; 6.681 ++#ifdef CONFIG_RD_GZIP 6.682 + insize = len; 6.683 + inbuf = buf; 6.684 + inptr = 0; 6.685 +@@ -477,14 +507,38 @@ static char * __init unpack_to_rootfs(ch 6.686 + bytes_out = 0; 6.687 + crc = (ulg)0xffffffffL; /* shift register contents */ 6.688 + makecrc(); 6.689 +- gunzip(); 6.690 ++ if(!gunzip() && message == NULL) 6.691 ++ goto ok; 6.692 ++#endif 6.693 ++ 6.694 ++#ifdef CONFIG_RD_BZIP2 6.695 ++ message = NULL; /* Zero out message, or else cpio will 6.696 ++ think an error has already occured */ 6.697 ++ if(!bunzip2(buf, len, NULL, flush_buffer, &inptr) < 0 && 6.698 ++ message == NULL) { 6.699 ++ goto ok; 6.700 ++ } 6.701 ++#endif 6.702 ++ 6.703 ++#ifdef CONFIG_RD_LZMA 6.704 ++ message = NULL; /* Zero out message, or else cpio will 6.705 ++ think an error has already occured */ 6.706 ++ if(!unlzma(buf, len, NULL, flush_buffer, &inptr) < 0 && 6.707 ++ message == NULL) { 6.708 ++ goto ok; 6.709 ++ } 6.710 ++#endif 6.711 ++ ok: 6.712 ++ 6.713 + if (state != Reset) 6.714 +- error("junk in gzipped archive"); 6.715 ++ error("junk in compressed archive"); 6.716 + this_header = saved_offset + inptr; 6.717 + buf += inptr; 6.718 + len -= inptr; 6.719 + } 6.720 ++#ifdef CONFIG_RD_GZIP 6.721 + free(window); 6.722 ++#endif 6.723 + free(name_buf); 6.724 + free(symlink_buf); 6.725 + free(header_buf); 6.726 + 6.727 +--- linux-2.6.22.9/init/Kconfig 6.728 ++++ linux-2.6.22.9/init/Kconfig 6.729 +@@ -95,6 +95,56 @@ 6.730 + 6.731 + which is done within the script "scripts/setlocalversion".) 6.732 + 6.733 ++choice 6.734 ++ prompt "Kernel compression mode" 6.735 ++ default KERNEL_GZIP 6.736 ++ help 6.737 ++ The linux kernel is a kind of self-extracting executable. 6.738 ++ Several compression algorithms are available, which differ 6.739 ++ in efficiency, compression and decompression speed. 6.740 ++ Compression speed is only relevant when building a kernel. 6.741 ++ Decompression speed is relevant at each boot. 6.742 ++ 6.743 ++ If you have any problems with bzip2 or lzma compressed 6.744 ++ kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older 6.745 ++ version of this functionality (bzip2 only), for 2.4, was 6.746 ++ supplied by Christian Ludwig) 6.747 ++ 6.748 ++ High compression options are mostly useful for users, who 6.749 ++ are low on disk space (embedded systems), but for whom ram 6.750 ++ size matters less. 6.751 ++ 6.752 ++ If in doubt, select 'gzip' 6.753 ++ 6.754 ++config KERNEL_GZIP 6.755 ++ bool "Gzip" 6.756 ++ help 6.757 ++ The old and tries gzip compression. Its compression ratio is 6.758 ++ the poorest among the 3 choices; however its speed (both 6.759 ++ compression and decompression) is the fastest. 6.760 ++ 6.761 ++config KERNEL_BZIP2 6.762 ++ bool "Bzip2" 6.763 ++ help 6.764 ++ Its compression ratio and speed is intermediate. 6.765 ++ Decompression speed is slowest among the 3. 6.766 ++ The kernel size is about 10 per cent smaller with bzip2, 6.767 ++ in comparison to gzip. 6.768 ++ Bzip2 uses a large amount of memory. For modern kernels 6.769 ++ you will need at least 8MB RAM or more for booting. 6.770 ++ 6.771 ++config KERNEL_LZMA 6.772 ++ bool "LZMA" 6.773 ++ help 6.774 ++ The most recent compression algorithm. 6.775 ++ Its ratio is best, decompression speed is between the other 6.776 ++ 2. Compression is slowest. 6.777 ++ The kernel size is about 33 per cent smaller with lzma, 6.778 ++ in comparison to gzip. 6.779 ++ 6.780 ++endchoice 6.781 ++ 6.782 ++ 6.783 + config SWAP 6.784 + bool "Support for paging of anonymous memory (swap)" 6.785 + depends on MMU && BLOCK 6.786 + 6.787 +--- linux-2.6.22.9/lib/decompress_bunzip2.c 6.788 ++++ linux-2.6.22.9/lib/decompress_bunzip2.c 6.789 +@@ -0,0 +1,645 @@ 6.790 ++/* vi: set sw=4 ts=4: */ 6.791 ++/* Small bzip2 deflate implementation, by Rob Landley (rob@landley.net). 6.792 ++ 6.793 ++ Based on bzip2 decompression code by Julian R Seward (jseward@acm.org), 6.794 ++ which also acknowledges contributions by Mike Burrows, David Wheeler, 6.795 ++ Peter Fenwick, Alistair Moffat, Radford Neal, Ian H. Witten, 6.796 ++ Robert Sedgewick, and Jon L. Bentley. 6.797 ++ 6.798 ++ This code is licensed under the LGPLv2: 6.799 ++ LGPL (http://www.gnu.org/copyleft/lgpl.html 6.800 ++*/ 6.801 ++ 6.802 ++/* 6.803 ++ Size and speed optimizations by Manuel Novoa III (mjn3@codepoet.org). 6.804 ++ 6.805 ++ More efficient reading of Huffman codes, a streamlined read_bunzip() 6.806 ++ function, and various other tweaks. In (limited) tests, approximately 6.807 ++ 20% faster than bzcat on x86 and about 10% faster on arm. 6.808 ++ 6.809 ++ Note that about 2/3 of the time is spent in read_unzip() reversing 6.810 ++ the Burrows-Wheeler transformation. Much of that time is delay 6.811 ++ resulting from cache misses. 6.812 ++ 6.813 ++ I would ask that anyone benefiting from this work, especially those 6.814 ++ using it in commercial products, consider making a donation to my local 6.815 ++ non-profit hospice organization in the name of the woman I loved, who 6.816 ++ passed away Feb. 12, 2003. 6.817 ++ 6.818 ++ In memory of Toni W. Hagan 6.819 ++ 6.820 ++ Hospice of Acadiana, Inc. 6.821 ++ 2600 Johnston St., Suite 200 6.822 ++ Lafayette, LA 70503-3240 6.823 ++ 6.824 ++ Phone (337) 232-1234 or 1-800-738-2226 6.825 ++ Fax (337) 232-1297 6.826 ++ 6.827 ++ http://www.hospiceacadiana.com/ 6.828 ++ 6.829 ++ Manuel 6.830 ++ */ 6.831 ++ 6.832 ++/* 6.833 ++ Made it fit for running in Linux Kernel by Alain Knaff (alain@knaff.lu) 6.834 ++*/ 6.835 ++ 6.836 ++ 6.837 ++#ifndef STATIC 6.838 ++ 6.839 ++#include <linux/kernel.h> 6.840 ++#include <linux/fs.h> 6.841 ++#include <linux/string.h> 6.842 ++ 6.843 ++#ifdef TEST 6.844 ++#include "test.h" 6.845 ++#else 6.846 ++#include <linux/vmalloc.h> 6.847 ++#endif 6.848 ++ 6.849 ++static void __init *large_malloc(size_t size) 6.850 ++{ 6.851 ++ return vmalloc(size); 6.852 ++} 6.853 ++ 6.854 ++static void __init large_free(void *where) 6.855 ++{ 6.856 ++ vfree(where); 6.857 ++} 6.858 ++ 6.859 ++#ifndef TEST 6.860 ++static void __init *malloc(size_t size) 6.861 ++{ 6.862 ++ return kmalloc(size, GFP_KERNEL); 6.863 ++} 6.864 ++ 6.865 ++static void __init free(void *where) 6.866 ++{ 6.867 ++ kfree(where); 6.868 ++} 6.869 ++ 6.870 ++static void __init error(char *x) 6.871 ++{ 6.872 ++ printk(KERN_ERR "%s\n", x); 6.873 ++} 6.874 ++#endif 6.875 ++ 6.876 ++#define STATIC /**/ 6.877 ++ 6.878 ++#endif 6.879 ++ 6.880 ++#include <linux/decompress_bunzip2.h> 6.881 ++ 6.882 ++ 6.883 ++/* Constants for Huffman coding */ 6.884 ++#define MAX_GROUPS 6 6.885 ++#define GROUP_SIZE 50 /* 64 would have been more efficient */ 6.886 ++#define MAX_HUFCODE_BITS 20 /* Longest Huffman code allowed */ 6.887 ++#define MAX_SYMBOLS 258 /* 256 literals + RUNA + RUNB */ 6.888 ++#define SYMBOL_RUNA 0 6.889 ++#define SYMBOL_RUNB 1 6.890 ++ 6.891 ++/* Status return values */ 6.892 ++#define RETVAL_OK 0 6.893 ++#define RETVAL_LAST_BLOCK (-1) 6.894 ++#define RETVAL_NOT_BZIP_DATA (-2) 6.895 ++#define RETVAL_UNEXPECTED_INPUT_EOF (-3) 6.896 ++#define RETVAL_UNEXPECTED_OUTPUT_EOF (-4) 6.897 ++#define RETVAL_DATA_ERROR (-5) 6.898 ++#define RETVAL_OUT_OF_MEMORY (-6) 6.899 ++#define RETVAL_OBSOLETE_INPUT (-7) 6.900 ++ 6.901 ++ 6.902 ++/* This is what we know about each Huffman coding group */ 6.903 ++struct group_data { 6.904 ++ /* We have an extra slot at the end of limit[] for a sentinal value. */ 6.905 ++ int limit[MAX_HUFCODE_BITS+1],base[MAX_HUFCODE_BITS],permute[MAX_SYMBOLS]; 6.906 ++ int minLen, maxLen; 6.907 ++}; 6.908 ++ 6.909 ++/* Structure holding all the housekeeping data, including IO buffers and 6.910 ++ memory that persists between calls to bunzip */ 6.911 ++typedef struct { 6.912 ++ /* State for interrupting output loop */ 6.913 ++ int writeCopies,writePos,writeRunCountdown,writeCount,writeCurrent; 6.914 ++ /* I/O tracking data (file handles, buffers, positions, etc.) */ 6.915 ++ int (*fill)(void*,unsigned int); 6.916 ++ int inbufCount,inbufPos /*,outbufPos*/; 6.917 ++ unsigned char *inbuf /*,*outbuf*/; 6.918 ++ unsigned int inbufBitCount, inbufBits; 6.919 ++ /* The CRC values stored in the block header and calculated from the data */ 6.920 ++ unsigned int crc32Table[256],headerCRC, totalCRC, writeCRC; 6.921 ++ /* Intermediate buffer and its size (in bytes) */ 6.922 ++ unsigned int *dbuf, dbufSize; 6.923 ++ /* These things are a bit too big to go on the stack */ 6.924 ++ unsigned char selectors[32768]; /* nSelectors=15 bits */ 6.925 ++ struct group_data groups[MAX_GROUPS]; /* Huffman coding tables */ 6.926 ++ int io_error; /* non-zero if we have IO error */ 6.927 ++} bunzip_data; 6.928 ++ 6.929 ++ 6.930 ++/* Return the next nnn bits of input. All reads from the compressed input 6.931 ++ are done through this function. All reads are big endian */ 6.932 ++static unsigned int get_bits(bunzip_data *bd, char bits_wanted) 6.933 ++{ 6.934 ++ unsigned int bits=0; 6.935 ++ 6.936 ++ /* If we need to get more data from the byte buffer, do so. (Loop getting 6.937 ++ one byte at a time to enforce endianness and avoid unaligned access.) */ 6.938 ++ while (bd->inbufBitCount<bits_wanted) { 6.939 ++ /* If we need to read more data from file into byte buffer, do so */ 6.940 ++ if(bd->inbufPos==bd->inbufCount) { 6.941 ++ if(bd->io_error) 6.942 ++ return 0; 6.943 ++ if((bd->inbufCount = bd->fill(bd->inbuf, BZIP2_IOBUF_SIZE)) <= 0) { 6.944 ++ bd->io_error=RETVAL_UNEXPECTED_INPUT_EOF; 6.945 ++ return 0; 6.946 ++ } 6.947 ++ bd->inbufPos=0; 6.948 ++ } 6.949 ++ /* Avoid 32-bit overflow (dump bit buffer to top of output) */ 6.950 ++ if(bd->inbufBitCount>=24) { 6.951 ++ bits=bd->inbufBits&((1<<bd->inbufBitCount)-1); 6.952 ++ bits_wanted-=bd->inbufBitCount; 6.953 ++ bits<<=bits_wanted; 6.954 ++ bd->inbufBitCount=0; 6.955 ++ } 6.956 ++ /* Grab next 8 bits of input from buffer. */ 6.957 ++ bd->inbufBits=(bd->inbufBits<<8)|bd->inbuf[bd->inbufPos++]; 6.958 ++ bd->inbufBitCount+=8; 6.959 ++ } 6.960 ++ /* Calculate result */ 6.961 ++ bd->inbufBitCount-=bits_wanted; 6.962 ++ bits|=(bd->inbufBits>>bd->inbufBitCount)&((1<<bits_wanted)-1); 6.963 ++ 6.964 ++ return bits; 6.965 ++} 6.966 ++ 6.967 ++/* Unpacks the next block and sets up for the inverse burrows-wheeler step. */ 6.968 ++ 6.969 ++static int get_next_block(bunzip_data *bd) 6.970 ++{ 6.971 ++ struct group_data *hufGroup=NULL; 6.972 ++ int *base=NULL; 6.973 ++ int *limit=NULL; 6.974 ++ int dbufCount,nextSym,dbufSize,groupCount,selector, 6.975 ++ i,j,k,t,runPos,symCount,symTotal,nSelectors,byteCount[256]; 6.976 ++ unsigned char uc, symToByte[256], mtfSymbol[256], *selectors; 6.977 ++ unsigned int *dbuf,origPtr; 6.978 ++ 6.979 ++ dbuf=bd->dbuf; 6.980 ++ dbufSize=bd->dbufSize; 6.981 ++ selectors=bd->selectors; 6.982 ++ 6.983 ++ /* Read in header signature and CRC, then validate signature. 6.984 ++ (last block signature means CRC is for whole file, return now) */ 6.985 ++ i = get_bits(bd,24); 6.986 ++ j = get_bits(bd,24); 6.987 ++ bd->headerCRC=get_bits(bd,32); 6.988 ++ if ((i == 0x177245) && (j == 0x385090)) return RETVAL_LAST_BLOCK; 6.989 ++ if ((i != 0x314159) || (j != 0x265359)) return RETVAL_NOT_BZIP_DATA; 6.990 ++ /* We can add support for blockRandomised if anybody complains. There was 6.991 ++ some code for this in busybox 1.0.0-pre3, but nobody ever noticed that 6.992 ++ it didn't actually work. */ 6.993 ++ if(get_bits(bd,1)) return RETVAL_OBSOLETE_INPUT; 6.994 ++ if((origPtr=get_bits(bd,24)) > dbufSize) return RETVAL_DATA_ERROR; 6.995 ++ /* mapping table: if some byte values are never used (encoding things 6.996 ++ like ascii text), the compression code removes the gaps to have fewer 6.997 ++ symbols to deal with, and writes a sparse bitfield indicating which 6.998 ++ values were present. We make a translation table to convert the symbols 6.999 ++ back to the corresponding bytes. */ 6.1000 ++ t=get_bits(bd, 16); 6.1001 ++ symTotal=0; 6.1002 ++ for (i=0;i<16;i++) { 6.1003 ++ if(t&(1<<(15-i))) { 6.1004 ++ k=get_bits(bd,16); 6.1005 ++ for(j=0;j<16;j++) 6.1006 ++ if(k&(1<<(15-j))) symToByte[symTotal++]=(16*i)+j; 6.1007 ++ } 6.1008 ++ } 6.1009 ++ /* How many different Huffman coding groups does this block use? */ 6.1010 ++ groupCount=get_bits(bd,3); 6.1011 ++ if (groupCount<2 || groupCount>MAX_GROUPS) return RETVAL_DATA_ERROR; 6.1012 ++ /* nSelectors: Every GROUP_SIZE many symbols we select a new Huffman coding 6.1013 ++ group. Read in the group selector list, which is stored as MTF encoded 6.1014 ++ bit runs. (MTF=Move To Front, as each value is used it's moved to the 6.1015 ++ start of the list.) */ 6.1016 ++ if(!(nSelectors=get_bits(bd, 15))) return RETVAL_DATA_ERROR; 6.1017 ++ for(i=0; i<groupCount; i++) mtfSymbol[i] = i; 6.1018 ++ for(i=0; i<nSelectors; i++) { 6.1019 ++ /* Get next value */ 6.1020 ++ for(j=0;get_bits(bd,1);j++) if (j>=groupCount) return RETVAL_DATA_ERROR; 6.1021 ++ /* Decode MTF to get the next selector */ 6.1022 ++ uc = mtfSymbol[j]; 6.1023 ++ for(;j;j--) mtfSymbol[j] = mtfSymbol[j-1]; 6.1024 ++ mtfSymbol[0]=selectors[i]=uc; 6.1025 ++ } 6.1026 ++ /* Read the Huffman coding tables for each group, which code for symTotal 6.1027 ++ literal symbols, plus two run symbols (RUNA, RUNB) */ 6.1028 ++ symCount=symTotal+2; 6.1029 ++ for (j=0; j<groupCount; j++) { 6.1030 ++ unsigned char length[MAX_SYMBOLS],temp[MAX_HUFCODE_BITS+1]; 6.1031 ++ int minLen, maxLen, pp; 6.1032 ++ /* Read Huffman code lengths for each symbol. They're stored in 6.1033 ++ a way similar to mtf; record a starting value for the first symbol, 6.1034 ++ and an offset from the previous value for everys symbol after that. 6.1035 ++ (Subtracting 1 before the loop and then adding it back at the end is 6.1036 ++ an optimization that makes the test inside the loop simpler: symbol 6.1037 ++ length 0 becomes negative, so an unsigned inequality catches it.) */ 6.1038 ++ t=get_bits(bd, 5)-1; 6.1039 ++ for (i = 0; i < symCount; i++) { 6.1040 ++ for(;;) { 6.1041 ++ if (((unsigned)t) > (MAX_HUFCODE_BITS-1)) 6.1042 ++ return RETVAL_DATA_ERROR; 6.1043 ++ /* If first bit is 0, stop. Else second bit indicates whether 6.1044 ++ to increment or decrement the value. Optimization: grab 2 6.1045 ++ bits and unget the second if the first was 0. */ 6.1046 ++ k = get_bits(bd,2); 6.1047 ++ if (k < 2) { 6.1048 ++ bd->inbufBitCount++; 6.1049 ++ break; 6.1050 ++ } 6.1051 ++ /* Add one if second bit 1, else subtract 1. Avoids if/else */ 6.1052 ++ t+=(((k+1)&2)-1); 6.1053 ++ } 6.1054 ++ /* Correct for the initial -1, to get the final symbol length */ 6.1055 ++ length[i]=t+1; 6.1056 ++ } 6.1057 ++ /* Find largest and smallest lengths in this group */ 6.1058 ++ minLen=maxLen=length[0]; 6.1059 ++ for(i = 1; i < symCount; i++) { 6.1060 ++ if(length[i] > maxLen) maxLen = length[i]; 6.1061 ++ else if(length[i] < minLen) minLen = length[i]; 6.1062 ++ } 6.1063 ++ /* Calculate permute[], base[], and limit[] tables from length[]. 6.1064 ++ * 6.1065 ++ * permute[] is the lookup table for converting Huffman coded symbols 6.1066 ++ * into decoded symbols. base[] is the amount to subtract from the 6.1067 ++ * value of a Huffman symbol of a given length when using permute[]. 6.1068 ++ * 6.1069 ++ * limit[] indicates the largest numerical value a symbol with a given 6.1070 ++ * number of bits can have. This is how the Huffman codes can vary in 6.1071 ++ * length: each code with a value>limit[length] needs another bit. 6.1072 ++ */ 6.1073 ++ hufGroup=bd->groups+j; 6.1074 ++ hufGroup->minLen = minLen; 6.1075 ++ hufGroup->maxLen = maxLen; 6.1076 ++ /* Note that minLen can't be smaller than 1, so we adjust the base 6.1077 ++ and limit array pointers so we're not always wasting the first 6.1078 ++ entry. We do this again when using them (during symbol decoding).*/ 6.1079 ++ base=hufGroup->base-1; 6.1080 ++ limit=hufGroup->limit-1; 6.1081 ++ /* Calculate permute[]. Concurently, initialize temp[] and limit[]. */ 6.1082 ++ pp=0; 6.1083 ++ for(i=minLen;i<=maxLen;i++) { 6.1084 ++ temp[i]=limit[i]=0; 6.1085 ++ for(t=0;t<symCount;t++) 6.1086 ++ if(length[t]==i) hufGroup->permute[pp++] = t; 6.1087 ++ } 6.1088 ++ /* Count symbols coded for at each bit length */ 6.1089 ++ for (i=0;i<symCount;i++) temp[length[i]]++; 6.1090 ++ /* Calculate limit[] (the largest symbol-coding value at each bit 6.1091 ++ * length, which is (previous limit<<1)+symbols at this level), and 6.1092 ++ * base[] (number of symbols to ignore at each bit length, which is 6.1093 ++ * limit minus the cumulative count of symbols coded for already). */ 6.1094 ++ pp=t=0; 6.1095 ++ for (i=minLen; i<maxLen; i++) { 6.1096 ++ pp+=temp[i]; 6.1097 ++ /* We read the largest possible symbol size and then unget bits 6.1098 ++ after determining how many we need, and those extra bits could 6.1099 ++ be set to anything. (They're noise from future symbols.) At 6.1100 ++ each level we're really only interested in the first few bits, 6.1101 ++ so here we set all the trailing to-be-ignored bits to 1 so they 6.1102 ++ don't affect the value>limit[length] comparison. */ 6.1103 ++ limit[i]= (pp << (maxLen - i)) - 1; 6.1104 ++ pp<<=1; 6.1105 ++ base[i+1]=pp-(t+=temp[i]); 6.1106 ++ } 6.1107 ++ limit[maxLen+1] = INT_MAX; /* Sentinal value for reading next sym. */ 6.1108 ++ limit[maxLen]=pp+temp[maxLen]-1; 6.1109 ++ base[minLen]=0; 6.1110 ++ } 6.1111 ++ /* We've finished reading and digesting the block header. Now read this 6.1112 ++ block's Huffman coded symbols from the file and undo the Huffman coding 6.1113 ++ and run length encoding, saving the result into dbuf[dbufCount++]=uc */ 6.1114 ++ 6.1115 ++ /* Initialize symbol occurrence counters and symbol Move To Front table */ 6.1116 ++ for(i=0;i<256;i++) { 6.1117 ++ byteCount[i] = 0; 6.1118 ++ mtfSymbol[i]=(unsigned char)i; 6.1119 ++ } 6.1120 ++ /* Loop through compressed symbols. */ 6.1121 ++ runPos=dbufCount=symCount=selector=0; 6.1122 ++ for(;;) { 6.1123 ++ /* Determine which Huffman coding group to use. */ 6.1124 ++ if(!(symCount--)) { 6.1125 ++ symCount=GROUP_SIZE-1; 6.1126 ++ if(selector>=nSelectors) return RETVAL_DATA_ERROR; 6.1127 ++ hufGroup=bd->groups+selectors[selector++]; 6.1128 ++ base=hufGroup->base-1; 6.1129 ++ limit=hufGroup->limit-1; 6.1130 ++ } 6.1131 ++ /* Read next Huffman-coded symbol. */ 6.1132 ++ /* Note: It is far cheaper to read maxLen bits and back up than it is 6.1133 ++ to read minLen bits and then an additional bit at a time, testing 6.1134 ++ as we go. Because there is a trailing last block (with file CRC), 6.1135 ++ there is no danger of the overread causing an unexpected EOF for a 6.1136 ++ valid compressed file. As a further optimization, we do the read 6.1137 ++ inline (falling back to a call to get_bits if the buffer runs 6.1138 ++ dry). The following (up to got_huff_bits:) is equivalent to 6.1139 ++ j=get_bits(bd,hufGroup->maxLen); 6.1140 ++ */ 6.1141 ++ while (bd->inbufBitCount<hufGroup->maxLen) { 6.1142 ++ if(bd->inbufPos==bd->inbufCount) { 6.1143 ++ j = get_bits(bd,hufGroup->maxLen); 6.1144 ++ goto got_huff_bits; 6.1145 ++ } 6.1146 ++ bd->inbufBits=(bd->inbufBits<<8)|bd->inbuf[bd->inbufPos++]; 6.1147 ++ bd->inbufBitCount+=8; 6.1148 ++ }; 6.1149 ++ bd->inbufBitCount-=hufGroup->maxLen; 6.1150 ++ j = (bd->inbufBits>>bd->inbufBitCount)&((1<<hufGroup->maxLen)-1); 6.1151 ++got_huff_bits: 6.1152 ++ /* Figure how how many bits are in next symbol and unget extras */ 6.1153 ++ i=hufGroup->minLen; 6.1154 ++ while(j>limit[i]) ++i; 6.1155 ++ bd->inbufBitCount += (hufGroup->maxLen - i); 6.1156 ++ /* Huffman decode value to get nextSym (with bounds checking) */ 6.1157 ++ if ((i > hufGroup->maxLen) 6.1158 ++ || (((unsigned)(j=(j>>(hufGroup->maxLen-i))-base[i])) 6.1159 ++ >= MAX_SYMBOLS)) 6.1160 ++ return RETVAL_DATA_ERROR; 6.1161 ++ nextSym = hufGroup->permute[j]; 6.1162 ++ /* We have now decoded the symbol, which indicates either a new literal 6.1163 ++ byte, or a repeated run of the most recent literal byte. First, 6.1164 ++ check if nextSym indicates a repeated run, and if so loop collecting 6.1165 ++ how many times to repeat the last literal. */ 6.1166 ++ if (((unsigned)nextSym) <= SYMBOL_RUNB) { /* RUNA or RUNB */ 6.1167 ++ /* If this is the start of a new run, zero out counter */ 6.1168 ++ if(!runPos) { 6.1169 ++ runPos = 1; 6.1170 ++ t = 0; 6.1171 ++ } 6.1172 ++ /* Neat trick that saves 1 symbol: instead of or-ing 0 or 1 at 6.1173 ++ each bit position, add 1 or 2 instead. For example, 6.1174 ++ 1011 is 1<<0 + 1<<1 + 2<<2. 1010 is 2<<0 + 2<<1 + 1<<2. 6.1175 ++ You can make any bit pattern that way using 1 less symbol than 6.1176 ++ the basic or 0/1 method (except all bits 0, which would use no 6.1177 ++ symbols, but a run of length 0 doesn't mean anything in this 6.1178 ++ context). Thus space is saved. */ 6.1179 ++ t += (runPos << nextSym); /* +runPos if RUNA; +2*runPos if RUNB */ 6.1180 ++ runPos <<= 1; 6.1181 ++ continue; 6.1182 ++ } 6.1183 ++ /* When we hit the first non-run symbol after a run, we now know 6.1184 ++ how many times to repeat the last literal, so append that many 6.1185 ++ copies to our buffer of decoded symbols (dbuf) now. (The last 6.1186 ++ literal used is the one at the head of the mtfSymbol array.) */ 6.1187 ++ if(runPos) { 6.1188 ++ runPos=0; 6.1189 ++ if(dbufCount+t>=dbufSize) return RETVAL_DATA_ERROR; 6.1190 ++ 6.1191 ++ uc = symToByte[mtfSymbol[0]]; 6.1192 ++ byteCount[uc] += t; 6.1193 ++ while(t--) dbuf[dbufCount++]=uc; 6.1194 ++ } 6.1195 ++ /* Is this the terminating symbol? */ 6.1196 ++ if(nextSym>symTotal) break; 6.1197 ++ /* At this point, nextSym indicates a new literal character. Subtract 6.1198 ++ one to get the position in the MTF array at which this literal is 6.1199 ++ currently to be found. (Note that the result can't be -1 or 0, 6.1200 ++ because 0 and 1 are RUNA and RUNB. But another instance of the 6.1201 ++ first symbol in the mtf array, position 0, would have been handled 6.1202 ++ as part of a run above. Therefore 1 unused mtf position minus 6.1203 ++ 2 non-literal nextSym values equals -1.) */ 6.1204 ++ if(dbufCount>=dbufSize) return RETVAL_DATA_ERROR; 6.1205 ++ i = nextSym - 1; 6.1206 ++ uc = mtfSymbol[i]; 6.1207 ++ /* Adjust the MTF array. Since we typically expect to move only a 6.1208 ++ * small number of symbols, and are bound by 256 in any case, using 6.1209 ++ * memmove here would typically be bigger and slower due to function 6.1210 ++ * call overhead and other assorted setup costs. */ 6.1211 ++ do { 6.1212 ++ mtfSymbol[i] = mtfSymbol[i-1]; 6.1213 ++ } while (--i); 6.1214 ++ mtfSymbol[0] = uc; 6.1215 ++ uc=symToByte[uc]; 6.1216 ++ /* We have our literal byte. Save it into dbuf. */ 6.1217 ++ byteCount[uc]++; 6.1218 ++ dbuf[dbufCount++] = (unsigned int)uc; 6.1219 ++ } 6.1220 ++ /* At this point, we've read all the Huffman-coded symbols (and repeated 6.1221 ++ runs) for this block from the input stream, and decoded them into the 6.1222 ++ intermediate buffer. There are dbufCount many decoded bytes in dbuf[]. 6.1223 ++ Now undo the Burrows-Wheeler transform on dbuf. 6.1224 ++ See http://dogma.net/markn/articles/bwt/bwt.htm 6.1225 ++ */ 6.1226 ++ /* Turn byteCount into cumulative occurrence counts of 0 to n-1. */ 6.1227 ++ j=0; 6.1228 ++ for(i=0;i<256;i++) { 6.1229 ++ k=j+byteCount[i]; 6.1230 ++ byteCount[i] = j; 6.1231 ++ j=k; 6.1232 ++ } 6.1233 ++ /* Figure out what order dbuf would be in if we sorted it. */ 6.1234 ++ for (i=0;i<dbufCount;i++) { 6.1235 ++ uc=(unsigned char)(dbuf[i] & 0xff); 6.1236 ++ dbuf[byteCount[uc]] |= (i << 8); 6.1237 ++ byteCount[uc]++; 6.1238 ++ } 6.1239 ++ /* Decode first byte by hand to initialize "previous" byte. Note that it 6.1240 ++ doesn't get output, and if the first three characters are identical 6.1241 ++ it doesn't qualify as a run (hence writeRunCountdown=5). */ 6.1242 ++ if(dbufCount) { 6.1243 ++ if(origPtr>=dbufCount) return RETVAL_DATA_ERROR; 6.1244 ++ bd->writePos=dbuf[origPtr]; 6.1245 ++ bd->writeCurrent=(unsigned char)(bd->writePos&0xff); 6.1246 ++ bd->writePos>>=8; 6.1247 ++ bd->writeRunCountdown=5; 6.1248 ++ } 6.1249 ++ bd->writeCount=dbufCount; 6.1250 ++ 6.1251 ++ return RETVAL_OK; 6.1252 ++} 6.1253 ++ 6.1254 ++/* Undo burrows-wheeler transform on intermediate buffer to produce output. 6.1255 ++ If start_bunzip was initialized with out_fd=-1, then up to len bytes of 6.1256 ++ data are written to outbuf. Return value is number of bytes written or 6.1257 ++ error (all errors are negative numbers). If out_fd!=-1, outbuf and len 6.1258 ++ are ignored, data is written to out_fd and return is RETVAL_OK or error. 6.1259 ++*/ 6.1260 ++ 6.1261 ++static int read_bunzip(bunzip_data *bd, char *outbuf, int len) 6.1262 ++{ 6.1263 ++ const unsigned int *dbuf; 6.1264 ++ int pos,xcurrent,previous,gotcount; 6.1265 ++ 6.1266 ++ /* If last read was short due to end of file, return last block now */ 6.1267 ++ if(bd->writeCount<0) return bd->writeCount; 6.1268 ++ 6.1269 ++ gotcount = 0; 6.1270 ++ dbuf=bd->dbuf; 6.1271 ++ pos=bd->writePos; 6.1272 ++ xcurrent=bd->writeCurrent; 6.1273 ++ 6.1274 ++ /* We will always have pending decoded data to write into the output 6.1275 ++ buffer unless this is the very first call (in which case we haven't 6.1276 ++ Huffman-decoded a block into the intermediate buffer yet). */ 6.1277 ++ 6.1278 ++ if (bd->writeCopies) { 6.1279 ++ /* Inside the loop, writeCopies means extra copies (beyond 1) */ 6.1280 ++ --bd->writeCopies; 6.1281 ++ /* Loop outputting bytes */ 6.1282 ++ for(;;) { 6.1283 ++ /* If the output buffer is full, snapshot state and return */ 6.1284 ++ if(gotcount >= len) { 6.1285 ++ bd->writePos=pos; 6.1286 ++ bd->writeCurrent=xcurrent; 6.1287 ++ bd->writeCopies++; 6.1288 ++ return len; 6.1289 ++ } 6.1290 ++ /* Write next byte into output buffer, updating CRC */ 6.1291 ++ outbuf[gotcount++] = xcurrent; 6.1292 ++ bd->writeCRC=(((bd->writeCRC)<<8) 6.1293 ++ ^bd->crc32Table[((bd->writeCRC)>>24)^xcurrent]); 6.1294 ++ /* Loop now if we're outputting multiple copies of this byte */ 6.1295 ++ if (bd->writeCopies) { 6.1296 ++ --bd->writeCopies; 6.1297 ++ continue; 6.1298 ++ } 6.1299 ++decode_next_byte: 6.1300 ++ if (!bd->writeCount--) break; 6.1301 ++ /* Follow sequence vector to undo Burrows-Wheeler transform */ 6.1302 ++ previous=xcurrent; 6.1303 ++ pos=dbuf[pos]; 6.1304 ++ xcurrent=pos&0xff; 6.1305 ++ pos>>=8; 6.1306 ++ /* After 3 consecutive copies of the same byte, the 4th is a repeat 6.1307 ++ count. We count down from 4 instead 6.1308 ++ * of counting up because testing for non-zero is faster */ 6.1309 ++ if(--bd->writeRunCountdown) { 6.1310 ++ if(xcurrent!=previous) bd->writeRunCountdown=4; 6.1311 ++ } else { 6.1312 ++ /* We have a repeated run, this byte indicates the count */ 6.1313 ++ bd->writeCopies=xcurrent; 6.1314 ++ xcurrent=previous; 6.1315 ++ bd->writeRunCountdown=5; 6.1316 ++ /* Sometimes there are just 3 bytes (run length 0) */ 6.1317 ++ if(!bd->writeCopies) goto decode_next_byte; 6.1318 ++ /* Subtract the 1 copy we'd output anyway to get extras */ 6.1319 ++ --bd->writeCopies; 6.1320 ++ } 6.1321 ++ } 6.1322 ++ /* Decompression of this block completed successfully */ 6.1323 ++ bd->writeCRC=~bd->writeCRC; 6.1324 ++ bd->totalCRC=((bd->totalCRC<<1) | (bd->totalCRC>>31)) ^ bd->writeCRC; 6.1325 ++ /* If this block had a CRC error, force file level CRC error. */ 6.1326 ++ if(bd->writeCRC!=bd->headerCRC) { 6.1327 ++ bd->totalCRC=bd->headerCRC+1; 6.1328 ++ return RETVAL_LAST_BLOCK; 6.1329 ++ } 6.1330 ++ } 6.1331 ++ 6.1332 ++ /* Refill the intermediate buffer by Huffman-decoding next block of input */ 6.1333 ++ /* (previous is just a convenient unused temp variable here) */ 6.1334 ++ previous=get_next_block(bd); 6.1335 ++ if(previous) { 6.1336 ++ bd->writeCount=previous; 6.1337 ++ return (previous!=RETVAL_LAST_BLOCK) ? previous : gotcount; 6.1338 ++ } 6.1339 ++ bd->writeCRC=0xffffffffUL; 6.1340 ++ pos=bd->writePos; 6.1341 ++ xcurrent=bd->writeCurrent; 6.1342 ++ goto decode_next_byte; 6.1343 ++} 6.1344 ++ 6.1345 ++static int nofill(void *buf,unsigned int len) { 6.1346 ++ return -1; 6.1347 ++} 6.1348 ++ 6.1349 ++/* Allocate the structure, read file header. If in_fd==-1, inbuf must contain 6.1350 ++ a complete bunzip file (len bytes long). If in_fd!=-1, inbuf and len are 6.1351 ++ ignored, and data is read from file handle into temporary buffer. */ 6.1352 ++static int start_bunzip(bunzip_data **bdp, void *inbuf, int len, 6.1353 ++ int (*fill)(void*,unsigned int)) 6.1354 ++{ 6.1355 ++ bunzip_data *bd; 6.1356 ++ unsigned int i,j,c; 6.1357 ++ const unsigned int BZh0=(((unsigned int)'B')<<24)+(((unsigned int)'Z')<<16) 6.1358 ++ +(((unsigned int)'h')<<8)+(unsigned int)'0'; 6.1359 ++ 6.1360 ++ /* Figure out how much data to allocate */ 6.1361 ++ i=sizeof(bunzip_data); 6.1362 ++ 6.1363 ++ /* Allocate bunzip_data. Most fields initialize to zero. */ 6.1364 ++ bd=*bdp=malloc(i); 6.1365 ++ memset(bd,0,sizeof(bunzip_data)); 6.1366 ++ /* Setup input buffer */ 6.1367 ++ bd->inbuf=inbuf; 6.1368 ++ bd->inbufCount=len; 6.1369 ++ if(fill != NULL) 6.1370 ++ bd->fill=fill; 6.1371 ++ else 6.1372 ++ bd->fill=nofill; 6.1373 ++ 6.1374 ++ /* Init the CRC32 table (big endian) */ 6.1375 ++ for(i=0;i<256;i++) { 6.1376 ++ c=i<<24; 6.1377 ++ for(j=8;j;j--) 6.1378 ++ c=c&0x80000000 ? (c<<1)^0x04c11db7 : (c<<1); 6.1379 ++ bd->crc32Table[i]=c; 6.1380 ++ } 6.1381 ++ 6.1382 ++ /* Ensure that file starts with "BZh['1'-'9']." */ 6.1383 ++ i = get_bits(bd,32); 6.1384 ++ if (((unsigned int)(i-BZh0-1)) >= 9) return RETVAL_NOT_BZIP_DATA; 6.1385 ++ 6.1386 ++ /* Fourth byte (ascii '1'-'9'), indicates block size in units of 100k of 6.1387 ++ uncompressed data. Allocate intermediate buffer for block. */ 6.1388 ++ bd->dbufSize=100000*(i-BZh0); 6.1389 ++ 6.1390 ++ bd->dbuf=large_malloc(bd->dbufSize * sizeof(int)); 6.1391 ++ return RETVAL_OK; 6.1392 ++} 6.1393 ++ 6.1394 ++/* Example usage: decompress src_fd to dst_fd. (Stops at end of bzip data, 6.1395 ++ not end of file.) */ 6.1396 ++STATIC int bunzip2(char *inbuf, int len, 6.1397 ++ int(*fill)(void*,unsigned int), 6.1398 ++ int(*writebb)(char*,unsigned int), 6.1399 ++ int *pos) 6.1400 ++{ 6.1401 ++ char *outbuf; 6.1402 ++ bunzip_data *bd; 6.1403 ++ int i; 6.1404 ++ 6.1405 ++ outbuf=malloc(BZIP2_IOBUF_SIZE); 6.1406 ++ if(!(i=start_bunzip(&bd,inbuf,len,fill))) { 6.1407 ++ for(;;) { 6.1408 ++ if((i=read_bunzip(bd,outbuf,BZIP2_IOBUF_SIZE)) <= 0) break; 6.1409 ++ if(i!=writebb(outbuf,i)) { 6.1410 ++ i=RETVAL_UNEXPECTED_OUTPUT_EOF; 6.1411 ++ break; 6.1412 ++ } 6.1413 ++ } 6.1414 ++ } 6.1415 ++ /* Check CRC and release memory */ 6.1416 ++ if(i==RETVAL_LAST_BLOCK) { 6.1417 ++ if (bd->headerCRC!=bd->totalCRC) { 6.1418 ++ error("Data integrity error when decompressing."); 6.1419 ++ } else { 6.1420 ++ i=RETVAL_OK; 6.1421 ++ } 6.1422 ++ } 6.1423 ++ else if (i==RETVAL_UNEXPECTED_OUTPUT_EOF) { 6.1424 ++ error("Compressed file ends unexpectedly"); 6.1425 ++ } 6.1426 ++ if(bd->dbuf) large_free(bd->dbuf); 6.1427 ++ if(pos) 6.1428 ++ *pos = bd->inbufPos; 6.1429 ++ free(bd); 6.1430 ++ free(outbuf); 6.1431 ++ 6.1432 ++ return i; 6.1433 ++} 6.1434 ++ 6.1435 + 6.1436 +--- linux-2.6.22.9/lib/decompress_unlzma.c 6.1437 ++++ linux-2.6.22.9/lib/decompress_unlzma.c 6.1438 +@@ -0,0 +1,605 @@ 6.1439 ++/* Lzma decompressor for Linux kernel. Shamelessly snarfed 6.1440 ++ * from busybox 1.1.1 6.1441 ++ * 6.1442 ++ * Linux kernel adaptation 6.1443 ++ * Copyright (C) 2006 Alain <alain@knaff.lu> 6.1444 ++ * 6.1445 ++ * Based on small lzma deflate implementation/Small range coder 6.1446 ++ * implementation for lzma. 6.1447 ++ * Copyright (C) 2006 Aurelien Jacobs <aurel@gnuage.org> 6.1448 ++ * 6.1449 ++ * Based on LzmaDecode.c from the LZMA SDK 4.22 (http://www.7-zip.org/) 6.1450 ++ * Copyright (C) 1999-2005 Igor Pavlov 6.1451 ++ * 6.1452 ++ * Copyrights of the parts, see headers below. 6.1453 ++ * 6.1454 ++ * 6.1455 ++ * This program is free software; you can redistribute it and/or 6.1456 ++ * modify it under the terms of the GNU Lesser General Public 6.1457 ++ * License as published by the Free Software Foundation; either 6.1458 ++ * version 2.1 of the License, or (at your option) any later version. 6.1459 ++ * 6.1460 ++ * This program is distributed in the hope that it will be useful, 6.1461 ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of 6.1462 ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 6.1463 ++ * Lesser General Public License for more details. 6.1464 ++ * 6.1465 ++ * You should have received a copy of the GNU Lesser General Public 6.1466 ++ * License along with this library; if not, write to the Free Software 6.1467 ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 6.1468 ++ */ 6.1469 ++ 6.1470 ++#ifndef STATIC 6.1471 ++ 6.1472 ++#include <linux/kernel.h> 6.1473 ++#include <linux/fs.h> 6.1474 ++#include <linux/string.h> 6.1475 ++ 6.1476 ++#ifdef TEST 6.1477 ++#include "test.h" 6.1478 ++#else 6.1479 ++#include <linux/vmalloc.h> 6.1480 ++#endif 6.1481 ++ 6.1482 ++static void __init *large_malloc(size_t size) 6.1483 ++{ 6.1484 ++ return vmalloc(size); 6.1485 ++} 6.1486 ++ 6.1487 ++static void __init large_free(void *where) 6.1488 ++{ 6.1489 ++ vfree(where); 6.1490 ++} 6.1491 ++ 6.1492 ++#ifndef TEST 6.1493 ++static void __init *malloc(size_t size) 6.1494 ++{ 6.1495 ++ return kmalloc(size, GFP_KERNEL); 6.1496 ++} 6.1497 ++ 6.1498 ++static void __init free(void *where) 6.1499 ++{ 6.1500 ++ kfree(where); 6.1501 ++} 6.1502 ++ 6.1503 ++static void __init error(char *x) 6.1504 ++{ 6.1505 ++ printk(KERN_ERR "%s\n", x); 6.1506 ++} 6.1507 ++ 6.1508 ++#endif 6.1509 ++ 6.1510 ++#define STATIC /**/ 6.1511 ++ 6.1512 ++#endif 6.1513 ++ 6.1514 ++#include <linux/decompress_unlzma.h> 6.1515 ++ 6.1516 ++#define MIN(a,b) (((a)<(b))?(a):(b)) 6.1517 ++ 6.1518 ++static long long read_int(unsigned char *ptr, int size) 6.1519 ++{ 6.1520 ++ int i; 6.1521 ++ long long ret=0; 6.1522 ++ 6.1523 ++ for(i=0; i<size; i++) { 6.1524 ++ ret = (ret << 8) | ptr[size-i-1]; 6.1525 ++ } 6.1526 ++ return ret; 6.1527 ++} 6.1528 ++ 6.1529 ++#define ENDIAN_CONVERT(x) x=(typeof(x))read_int((unsigned char*)&x,sizeof(x)) 6.1530 ++ 6.1531 ++ 6.1532 ++/* Small range coder implementation for lzma. 6.1533 ++ * Copyright (C) 2006 Aurelien Jacobs <aurel@gnuage.org> 6.1534 ++ * 6.1535 ++ * Based on LzmaDecode.c from the LZMA SDK 4.22 (http://www.7-zip.org/) 6.1536 ++ * Copyright (c) 1999-2005 Igor Pavlov 6.1537 ++ */ 6.1538 ++ 6.1539 ++#ifndef always_inline 6.1540 ++# if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ >0) 6.1541 ++# define always_inline __attribute__((always_inline)) inline 6.1542 ++# else 6.1543 ++# define always_inline inline 6.1544 ++# endif 6.1545 ++#endif 6.1546 ++ 6.1547 ++#ifdef CONFIG_FEATURE_LZMA_FAST 6.1548 ++# define speed_inline always_inline 6.1549 ++#else 6.1550 ++# define speed_inline 6.1551 ++#endif 6.1552 ++ 6.1553 ++ 6.1554 ++typedef struct { 6.1555 ++ int (*fill)(void*,unsigned int); 6.1556 ++ uint8_t *ptr; 6.1557 ++ uint8_t *buffer; 6.1558 ++ uint8_t *buffer_end; 6.1559 ++ int buffer_size; 6.1560 ++ uint32_t code; 6.1561 ++ uint32_t range; 6.1562 ++ uint32_t bound; 6.1563 ++} rc_t; 6.1564 ++ 6.1565 ++ 6.1566 ++#define RC_TOP_BITS 24 6.1567 ++#define RC_MOVE_BITS 5 6.1568 ++#define RC_MODEL_TOTAL_BITS 11 6.1569 ++ 6.1570 ++ 6.1571 ++/* Called twice: once at startup and once in rc_normalize() */ 6.1572 ++static void rc_read(rc_t * rc) 6.1573 ++{ 6.1574 ++ rc->buffer_size = rc->fill((char*)rc->buffer, LZMA_IOBUF_SIZE); 6.1575 ++ if (rc->buffer_size <= 0) 6.1576 ++ error("unexpected EOF"); 6.1577 ++ rc->ptr = rc->buffer; 6.1578 ++ rc->buffer_end = rc->buffer + rc->buffer_size; 6.1579 ++} 6.1580 ++ 6.1581 ++/* Called once */ 6.1582 ++static always_inline void rc_init(rc_t * rc, int (*fill)(void*,unsigned int), 6.1583 ++ char *buffer, int buffer_size) 6.1584 ++{ 6.1585 ++ rc->fill = fill; 6.1586 ++ rc->buffer = (uint8_t *)buffer; 6.1587 ++ rc->buffer_size = buffer_size; 6.1588 ++ rc->buffer_end = rc->buffer + rc->buffer_size; 6.1589 ++ rc->ptr = rc->buffer; 6.1590 ++ 6.1591 ++ rc->code = 0; 6.1592 ++ rc->range = 0xFFFFFFFF; 6.1593 ++} 6.1594 ++ 6.1595 ++static always_inline void rc_init_code(rc_t * rc) 6.1596 ++{ 6.1597 ++ int i; 6.1598 ++ 6.1599 ++ for (i = 0; i < 5; i++) { 6.1600 ++ if (rc->ptr >= rc->buffer_end) 6.1601 ++ rc_read(rc); 6.1602 ++ rc->code = (rc->code << 8) | *rc->ptr++; 6.1603 ++ } 6.1604 ++} 6.1605 ++ 6.1606 ++ 6.1607 ++/* Called once. TODO: bb_maybe_free() */ 6.1608 ++static always_inline void rc_free(rc_t * rc) 6.1609 ++{ 6.1610 ++ free(rc->buffer); 6.1611 ++} 6.1612 ++ 6.1613 ++/* Called twice, but one callsite is in speed_inline'd rc_is_bit_0_helper() */ 6.1614 ++static void rc_do_normalize(rc_t * rc) 6.1615 ++{ 6.1616 ++ if (rc->ptr >= rc->buffer_end) 6.1617 ++ rc_read(rc); 6.1618 ++ rc->range <<= 8; 6.1619 ++ rc->code = (rc->code << 8) | *rc->ptr++; 6.1620 ++} 6.1621 ++static always_inline void rc_normalize(rc_t * rc) 6.1622 ++{ 6.1623 ++ if (rc->range < (1 << RC_TOP_BITS)) { 6.1624 ++ rc_do_normalize(rc); 6.1625 ++ } 6.1626 ++} 6.1627 ++ 6.1628 ++/* Called 9 times */ 6.1629 ++/* Why rc_is_bit_0_helper exists? 6.1630 ++ * Because we want to always expose (rc->code < rc->bound) to optimizer 6.1631 ++ */ 6.1632 ++static speed_inline uint32_t rc_is_bit_0_helper(rc_t * rc, uint16_t * p) 6.1633 ++{ 6.1634 ++ rc_normalize(rc); 6.1635 ++ rc->bound = *p * (rc->range >> RC_MODEL_TOTAL_BITS); 6.1636 ++ return rc->bound; 6.1637 ++} 6.1638 ++static always_inline int rc_is_bit_0(rc_t * rc, uint16_t * p) 6.1639 ++{ 6.1640 ++ uint32_t t = rc_is_bit_0_helper(rc, p); 6.1641 ++ return rc->code < t; 6.1642 ++} 6.1643 ++ 6.1644 ++/* Called ~10 times, but very small, thus inlined */ 6.1645 ++static speed_inline void rc_update_bit_0(rc_t * rc, uint16_t * p) 6.1646 ++{ 6.1647 ++ rc->range = rc->bound; 6.1648 ++ *p += ((1 << RC_MODEL_TOTAL_BITS) - *p) >> RC_MOVE_BITS; 6.1649 ++} 6.1650 ++static speed_inline void rc_update_bit_1(rc_t * rc, uint16_t * p) 6.1651 ++{ 6.1652 ++ rc->range -= rc->bound; 6.1653 ++ rc->code -= rc->bound; 6.1654 ++ *p -= *p >> RC_MOVE_BITS; 6.1655 ++} 6.1656 ++ 6.1657 ++/* Called 4 times in unlzma loop */ 6.1658 ++static int rc_get_bit(rc_t * rc, uint16_t * p, int *symbol) 6.1659 ++{ 6.1660 ++ if (rc_is_bit_0(rc, p)) { 6.1661 ++ rc_update_bit_0(rc, p); 6.1662 ++ *symbol *= 2; 6.1663 ++ return 0; 6.1664 ++ } else { 6.1665 ++ rc_update_bit_1(rc, p); 6.1666 ++ *symbol = *symbol * 2 + 1; 6.1667 ++ return 1; 6.1668 ++ } 6.1669 ++} 6.1670 ++ 6.1671 ++/* Called once */ 6.1672 ++static always_inline int rc_direct_bit(rc_t * rc) 6.1673 ++{ 6.1674 ++ rc_normalize(rc); 6.1675 ++ rc->range >>= 1; 6.1676 ++ if (rc->code >= rc->range) { 6.1677 ++ rc->code -= rc->range; 6.1678 ++ return 1; 6.1679 ++ } 6.1680 ++ return 0; 6.1681 ++} 6.1682 ++ 6.1683 ++/* Called twice */ 6.1684 ++static speed_inline void 6.1685 ++rc_bit_tree_decode(rc_t * rc, uint16_t * p, int num_levels, int *symbol) 6.1686 ++{ 6.1687 ++ int i = num_levels; 6.1688 ++ 6.1689 ++ *symbol = 1; 6.1690 ++ while (i--) 6.1691 ++ rc_get_bit(rc, p + *symbol, symbol); 6.1692 ++ *symbol -= 1 << num_levels; 6.1693 ++} 6.1694 ++ 6.1695 ++ 6.1696 ++/* 6.1697 ++ * Small lzma deflate implementation. 6.1698 ++ * Copyright (C) 2006 Aurelien Jacobs <aurel@gnuage.org> 6.1699 ++ * 6.1700 ++ * Based on LzmaDecode.c from the LZMA SDK 4.22 (http://www.7-zip.org/) 6.1701 ++ * Copyright (C) 1999-2005 Igor Pavlov 6.1702 ++ */ 6.1703 ++ 6.1704 ++ 6.1705 ++typedef struct { 6.1706 ++ uint8_t pos; 6.1707 ++ uint32_t dict_size; 6.1708 ++ uint64_t dst_size; 6.1709 ++} __attribute__ ((packed)) lzma_header_t; 6.1710 ++ 6.1711 ++ 6.1712 ++#define LZMA_BASE_SIZE 1846 6.1713 ++#define LZMA_LIT_SIZE 768 6.1714 ++ 6.1715 ++#define LZMA_NUM_POS_BITS_MAX 4 6.1716 ++ 6.1717 ++#define LZMA_LEN_NUM_LOW_BITS 3 6.1718 ++#define LZMA_LEN_NUM_MID_BITS 3 6.1719 ++#define LZMA_LEN_NUM_HIGH_BITS 8 6.1720 ++ 6.1721 ++#define LZMA_LEN_CHOICE 0 6.1722 ++#define LZMA_LEN_CHOICE_2 (LZMA_LEN_CHOICE + 1) 6.1723 ++#define LZMA_LEN_LOW (LZMA_LEN_CHOICE_2 + 1) 6.1724 ++#define LZMA_LEN_MID (LZMA_LEN_LOW \ 6.1725 ++ + (1 << (LZMA_NUM_POS_BITS_MAX + LZMA_LEN_NUM_LOW_BITS))) 6.1726 ++#define LZMA_LEN_HIGH (LZMA_LEN_MID \ 6.1727 ++ +(1 << (LZMA_NUM_POS_BITS_MAX + LZMA_LEN_NUM_MID_BITS))) 6.1728 ++#define LZMA_NUM_LEN_PROBS (LZMA_LEN_HIGH + (1 << LZMA_LEN_NUM_HIGH_BITS)) 6.1729 ++ 6.1730 ++#define LZMA_NUM_STATES 12 6.1731 ++#define LZMA_NUM_LIT_STATES 7 6.1732 ++ 6.1733 ++#define LZMA_START_POS_MODEL_INDEX 4 6.1734 ++#define LZMA_END_POS_MODEL_INDEX 14 6.1735 ++#define LZMA_NUM_FULL_DISTANCES (1 << (LZMA_END_POS_MODEL_INDEX >> 1)) 6.1736 ++ 6.1737 ++#define LZMA_NUM_POS_SLOT_BITS 6 6.1738 ++#define LZMA_NUM_LEN_TO_POS_STATES 4 6.1739 ++ 6.1740 ++#define LZMA_NUM_ALIGN_BITS 4 6.1741 ++ 6.1742 ++#define LZMA_MATCH_MIN_LEN 2 6.1743 ++ 6.1744 ++#define LZMA_IS_MATCH 0 6.1745 ++#define LZMA_IS_REP (LZMA_IS_MATCH + (LZMA_NUM_STATES <<LZMA_NUM_POS_BITS_MAX)) 6.1746 ++#define LZMA_IS_REP_G0 (LZMA_IS_REP + LZMA_NUM_STATES) 6.1747 ++#define LZMA_IS_REP_G1 (LZMA_IS_REP_G0 + LZMA_NUM_STATES) 6.1748 ++#define LZMA_IS_REP_G2 (LZMA_IS_REP_G1 + LZMA_NUM_STATES) 6.1749 ++#define LZMA_IS_REP_0_LONG (LZMA_IS_REP_G2 + LZMA_NUM_STATES) 6.1750 ++#define LZMA_POS_SLOT (LZMA_IS_REP_0_LONG \ 6.1751 ++ + (LZMA_NUM_STATES << LZMA_NUM_POS_BITS_MAX)) 6.1752 ++#define LZMA_SPEC_POS (LZMA_POS_SLOT \ 6.1753 ++ +(LZMA_NUM_LEN_TO_POS_STATES << LZMA_NUM_POS_SLOT_BITS)) 6.1754 ++#define LZMA_ALIGN (LZMA_SPEC_POS \ 6.1755 ++ + LZMA_NUM_FULL_DISTANCES - LZMA_END_POS_MODEL_INDEX) 6.1756 ++#define LZMA_LEN_CODER (LZMA_ALIGN + (1 << LZMA_NUM_ALIGN_BITS)) 6.1757 ++#define LZMA_REP_LEN_CODER (LZMA_LEN_CODER + LZMA_NUM_LEN_PROBS) 6.1758 ++#define LZMA_LITERAL (LZMA_REP_LEN_CODER + LZMA_NUM_LEN_PROBS) 6.1759 ++ 6.1760 ++ 6.1761 ++STATIC int unlzma(char *inbuf, int in_len, 6.1762 ++ int(*fill)(void*,unsigned int), 6.1763 ++ int(*writebb)(char*,unsigned int), 6.1764 ++ int *posp) 6.1765 ++{ 6.1766 ++ lzma_header_t header; 6.1767 ++ int lc, pb, lp; 6.1768 ++ uint32_t pos_state_mask; 6.1769 ++ uint32_t literal_pos_mask; 6.1770 ++ uint32_t pos; 6.1771 ++ uint16_t *p; 6.1772 ++ uint16_t *prob; 6.1773 ++ uint16_t *prob_lit; 6.1774 ++ int num_bits; 6.1775 ++ int num_probs; 6.1776 ++ rc_t rc; 6.1777 ++ int i, mi; 6.1778 ++ uint8_t *buffer; 6.1779 ++ uint8_t previous_byte = 0; 6.1780 ++ size_t buffer_pos = 0, global_pos = 0; 6.1781 ++ int len = 0; 6.1782 ++ int state = 0; 6.1783 ++ int bufsize; 6.1784 ++ uint32_t rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1; 6.1785 ++ 6.1786 ++ rc_init(&rc, fill, inbuf, in_len); 6.1787 ++ 6.1788 ++ for (i = 0; i < sizeof(header); i++) { 6.1789 ++ if (rc.ptr >= rc.buffer_end) 6.1790 ++ rc_read(&rc); 6.1791 ++ ((unsigned char *)&header)[i] = *rc.ptr++; 6.1792 ++ } 6.1793 ++ 6.1794 ++ if (header.pos >= (9 * 5 * 5)) 6.1795 ++ error("bad header"); 6.1796 ++ 6.1797 ++ mi = header.pos / 9; 6.1798 ++ lc = header.pos % 9; 6.1799 ++ pb = mi / 5; 6.1800 ++ lp = mi % 5; 6.1801 ++ pos_state_mask = (1 << pb) - 1; 6.1802 ++ literal_pos_mask = (1 << lp) - 1; 6.1803 ++ 6.1804 ++ ENDIAN_CONVERT(header.dict_size); 6.1805 ++ ENDIAN_CONVERT(header.dst_size); 6.1806 ++ 6.1807 ++ if (header.dict_size == 0) 6.1808 ++ header.dict_size = 1; 6.1809 ++ 6.1810 ++ bufsize = MIN(header.dst_size, header.dict_size); 6.1811 ++ buffer = large_malloc(bufsize); 6.1812 ++ if(buffer == NULL) 6.1813 ++ return -1; 6.1814 ++ 6.1815 ++ num_probs = LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)); 6.1816 ++ p = large_malloc(num_probs * sizeof(*p)); 6.1817 ++ num_probs = LZMA_LITERAL + (LZMA_LIT_SIZE << (lc + lp)); 6.1818 ++ for (i = 0; i < num_probs; i++) 6.1819 ++ p[i] = (1 << RC_MODEL_TOTAL_BITS) >> 1; 6.1820 ++ 6.1821 ++ rc_init_code(&rc); 6.1822 ++ 6.1823 ++ while (global_pos + buffer_pos < header.dst_size) { 6.1824 ++ int pos_state = (buffer_pos + global_pos) & pos_state_mask; 6.1825 ++ 6.1826 ++ prob = 6.1827 ++ p + LZMA_IS_MATCH + (state << LZMA_NUM_POS_BITS_MAX) + pos_state; 6.1828 ++ if (rc_is_bit_0(&rc, prob)) { 6.1829 ++ mi = 1; 6.1830 ++ rc_update_bit_0(&rc, prob); 6.1831 ++ prob = (p + LZMA_LITERAL + (LZMA_LIT_SIZE 6.1832 ++ * ((((buffer_pos + global_pos) & literal_pos_mask) << lc) 6.1833 ++ + (previous_byte >> (8 - lc))))); 6.1834 ++ 6.1835 ++ if (state >= LZMA_NUM_LIT_STATES) { 6.1836 ++ int match_byte; 6.1837 ++ 6.1838 ++ pos = buffer_pos - rep0; 6.1839 ++ while (pos >= header.dict_size) 6.1840 ++ pos += header.dict_size; 6.1841 ++ if(pos >= bufsize) { 6.1842 ++ goto fail; 6.1843 ++ } 6.1844 ++ match_byte = buffer[pos]; 6.1845 ++ do { 6.1846 ++ int bit; 6.1847 ++ 6.1848 ++ match_byte <<= 1; 6.1849 ++ bit = match_byte & 0x100; 6.1850 ++ prob_lit = prob + 0x100 + bit + mi; 6.1851 ++ if (rc_get_bit(&rc, prob_lit, &mi)) { 6.1852 ++ if (!bit) 6.1853 ++ break; 6.1854 ++ } else { 6.1855 ++ if (bit) 6.1856 ++ break; 6.1857 ++ } 6.1858 ++ } while (mi < 0x100); 6.1859 ++ } 6.1860 ++ while (mi < 0x100) { 6.1861 ++ prob_lit = prob + mi; 6.1862 ++ rc_get_bit(&rc, prob_lit, &mi); 6.1863 ++ } 6.1864 ++ previous_byte = (uint8_t) mi; 6.1865 ++ 6.1866 ++ buffer[buffer_pos++] = previous_byte; 6.1867 ++ if (buffer_pos == header.dict_size) { 6.1868 ++ buffer_pos = 0; 6.1869 ++ global_pos += header.dict_size; 6.1870 ++ writebb((char*)buffer, header.dict_size); 6.1871 ++ } 6.1872 ++ if (state < 4) 6.1873 ++ state = 0; 6.1874 ++ else if (state < 10) 6.1875 ++ state -= 3; 6.1876 ++ else 6.1877 ++ state -= 6; 6.1878 ++ } else { 6.1879 ++ int offset; 6.1880 ++ uint16_t *prob_len; 6.1881 ++ 6.1882 ++ rc_update_bit_1(&rc, prob); 6.1883 ++ prob = p + LZMA_IS_REP + state; 6.1884 ++ if (rc_is_bit_0(&rc, prob)) { 6.1885 ++ rc_update_bit_0(&rc, prob); 6.1886 ++ rep3 = rep2; 6.1887 ++ rep2 = rep1; 6.1888 ++ rep1 = rep0; 6.1889 ++ state = state < LZMA_NUM_LIT_STATES ? 0 : 3; 6.1890 ++ prob = p + LZMA_LEN_CODER; 6.1891 ++ } else { 6.1892 ++ rc_update_bit_1(&rc, prob); 6.1893 ++ prob = p + LZMA_IS_REP_G0 + state; 6.1894 ++ if (rc_is_bit_0(&rc, prob)) { 6.1895 ++ rc_update_bit_0(&rc, prob); 6.1896 ++ prob = (p + LZMA_IS_REP_0_LONG 6.1897 ++ + (state << LZMA_NUM_POS_BITS_MAX) + pos_state); 6.1898 ++ if (rc_is_bit_0(&rc, prob)) { 6.1899 ++ rc_update_bit_0(&rc, prob); 6.1900 ++ 6.1901 ++ state = state < LZMA_NUM_LIT_STATES ? 9 : 11; 6.1902 ++ pos = buffer_pos - rep0; 6.1903 ++ while (pos >= header.dict_size) 6.1904 ++ pos += header.dict_size; 6.1905 ++ if(pos >= bufsize) { 6.1906 ++ goto fail; 6.1907 ++ } 6.1908 ++ previous_byte = buffer[pos]; 6.1909 ++ buffer[buffer_pos++] = previous_byte; 6.1910 ++ if (buffer_pos == header.dict_size) { 6.1911 ++ buffer_pos = 0; 6.1912 ++ global_pos += header.dict_size; 6.1913 ++ writebb((char*)buffer, header.dict_size); 6.1914 ++ } 6.1915 ++ continue; 6.1916 ++ } else { 6.1917 ++ rc_update_bit_1(&rc, prob); 6.1918 ++ } 6.1919 ++ } else { 6.1920 ++ uint32_t distance; 6.1921 ++ 6.1922 ++ rc_update_bit_1(&rc, prob); 6.1923 ++ prob = p + LZMA_IS_REP_G1 + state; 6.1924 ++ if (rc_is_bit_0(&rc, prob)) { 6.1925 ++ rc_update_bit_0(&rc, prob); 6.1926 ++ distance = rep1; 6.1927 ++ } else { 6.1928 ++ rc_update_bit_1(&rc, prob); 6.1929 ++ prob = p + LZMA_IS_REP_G2 + state; 6.1930 ++ if (rc_is_bit_0(&rc, prob)) { 6.1931 ++ rc_update_bit_0(&rc, prob); 6.1932 ++ distance = rep2; 6.1933 ++ } else { 6.1934 ++ rc_update_bit_1(&rc, prob); 6.1935 ++ distance = rep3; 6.1936 ++ rep3 = rep2; 6.1937 ++ } 6.1938 ++ rep2 = rep1; 6.1939 ++ } 6.1940 ++ rep1 = rep0; 6.1941 ++ rep0 = distance; 6.1942 ++ } 6.1943 ++ state = state < LZMA_NUM_LIT_STATES ? 8 : 11; 6.1944 ++ prob = p + LZMA_REP_LEN_CODER; 6.1945 ++ } 6.1946 ++ 6.1947 ++ prob_len = prob + LZMA_LEN_CHOICE; 6.1948 ++ if (rc_is_bit_0(&rc, prob_len)) { 6.1949 ++ rc_update_bit_0(&rc, prob_len); 6.1950 ++ prob_len = (prob + LZMA_LEN_LOW 6.1951 ++ + (pos_state << LZMA_LEN_NUM_LOW_BITS)); 6.1952 ++ offset = 0; 6.1953 ++ num_bits = LZMA_LEN_NUM_LOW_BITS; 6.1954 ++ } else { 6.1955 ++ rc_update_bit_1(&rc, prob_len); 6.1956 ++ prob_len = prob + LZMA_LEN_CHOICE_2; 6.1957 ++ if (rc_is_bit_0(&rc, prob_len)) { 6.1958 ++ rc_update_bit_0(&rc, prob_len); 6.1959 ++ prob_len = (prob + LZMA_LEN_MID 6.1960 ++ + (pos_state << LZMA_LEN_NUM_MID_BITS)); 6.1961 ++ offset = 1 << LZMA_LEN_NUM_LOW_BITS; 6.1962 ++ num_bits = LZMA_LEN_NUM_MID_BITS; 6.1963 ++ } else { 6.1964 ++ rc_update_bit_1(&rc, prob_len); 6.1965 ++ prob_len = prob + LZMA_LEN_HIGH; 6.1966 ++ offset = ((1 << LZMA_LEN_NUM_LOW_BITS) 6.1967 ++ + (1 << LZMA_LEN_NUM_MID_BITS)); 6.1968 ++ num_bits = LZMA_LEN_NUM_HIGH_BITS; 6.1969 ++ } 6.1970 ++ } 6.1971 ++ rc_bit_tree_decode(&rc, prob_len, num_bits, &len); 6.1972 ++ len += offset; 6.1973 ++ 6.1974 ++ if (state < 4) { 6.1975 ++ int pos_slot; 6.1976 ++ 6.1977 ++ state += LZMA_NUM_LIT_STATES; 6.1978 ++ prob = 6.1979 ++ p + LZMA_POS_SLOT + 6.1980 ++ ((len < 6.1981 ++ LZMA_NUM_LEN_TO_POS_STATES ? len : 6.1982 ++ LZMA_NUM_LEN_TO_POS_STATES - 1) 6.1983 ++ << LZMA_NUM_POS_SLOT_BITS); 6.1984 ++ rc_bit_tree_decode(&rc, prob, LZMA_NUM_POS_SLOT_BITS, 6.1985 ++ &pos_slot); 6.1986 ++ if (pos_slot >= LZMA_START_POS_MODEL_INDEX) { 6.1987 ++ num_bits = (pos_slot >> 1) - 1; 6.1988 ++ rep0 = 2 | (pos_slot & 1); 6.1989 ++ if (pos_slot < LZMA_END_POS_MODEL_INDEX) { 6.1990 ++ rep0 <<= num_bits; 6.1991 ++ prob = p + LZMA_SPEC_POS + rep0 - pos_slot - 1; 6.1992 ++ } else { 6.1993 ++ num_bits -= LZMA_NUM_ALIGN_BITS; 6.1994 ++ while (num_bits--) 6.1995 ++ rep0 = (rep0 << 1) | rc_direct_bit(&rc); 6.1996 ++ prob = p + LZMA_ALIGN; 6.1997 ++ rep0 <<= LZMA_NUM_ALIGN_BITS; 6.1998 ++ num_bits = LZMA_NUM_ALIGN_BITS; 6.1999 ++ } 6.2000 ++ i = 1; 6.2001 ++ mi = 1; 6.2002 ++ while (num_bits--) { 6.2003 ++ if (rc_get_bit(&rc, prob + mi, &mi)) 6.2004 ++ rep0 |= i; 6.2005 ++ i <<= 1; 6.2006 ++ } 6.2007 ++ } else 6.2008 ++ rep0 = pos_slot; 6.2009 ++ if (++rep0 == 0) 6.2010 ++ break; 6.2011 ++ } 6.2012 ++ 6.2013 ++ len += LZMA_MATCH_MIN_LEN; 6.2014 ++ 6.2015 ++ do { 6.2016 ++ pos = buffer_pos - rep0; 6.2017 ++ while (pos >= header.dict_size) 6.2018 ++ pos += header.dict_size; 6.2019 ++ if(pos >= bufsize) { 6.2020 ++ goto fail; 6.2021 ++ } 6.2022 ++ previous_byte = buffer[pos]; 6.2023 ++ buffer[buffer_pos++] = previous_byte; 6.2024 ++ if (buffer_pos == header.dict_size) { 6.2025 ++ buffer_pos = 0; 6.2026 ++ global_pos += header.dict_size; 6.2027 ++ writebb((char*)buffer, header.dict_size); 6.2028 ++ } 6.2029 ++ len--; 6.2030 ++ } while (len != 0 && buffer_pos < header.dst_size); 6.2031 ++ } 6.2032 ++ } 6.2033 ++ 6.2034 ++ writebb((char*)buffer, buffer_pos); 6.2035 ++ if(posp) { 6.2036 ++ *posp = rc.ptr-rc.buffer; 6.2037 ++ } 6.2038 ++ large_free(buffer); 6.2039 ++ return 0; 6.2040 ++ fail: 6.2041 ++ large_free(buffer); 6.2042 ++ return -1; 6.2043 ++} 6.2044 + 6.2045 +--- linux-2.6.22.9/lib/Makefile 6.2046 ++++ linux-2.6.22.9/lib/Makefile 6.2047 +@@ -46,6 +46,10 @@ 6.2048 + obj-$(CONFIG_LIBCRC32C) += libcrc32c.o 6.2049 + obj-$(CONFIG_GENERIC_ALLOCATOR) += genalloc.o 6.2050 + 6.2051 ++obj-$(CONFIG_RD_BZIP2) += decompress_bunzip2.o 6.2052 ++obj-$(CONFIG_RD_LZMA) += decompress_unlzma.o 6.2053 ++ 6.2054 ++ 6.2055 + obj-$(CONFIG_ZLIB_INFLATE) += zlib_inflate/ 6.2056 + obj-$(CONFIG_ZLIB_DEFLATE) += zlib_deflate/ 6.2057 + obj-$(CONFIG_REED_SOLOMON) += reed_solomon/ 6.2058 + 6.2059 +--- linux-2.6.22.9/scripts/Makefile.lib 6.2060 ++++ linux-2.6.22.9/scripts/Makefile.lib 6.2061 +@@ -162,4 +162,17 @@ 6.2062 + quiet_cmd_gzip = GZIP $@ 6.2063 + cmd_gzip = gzip -f -9 < $< > $@ 6.2064 + 6.2065 ++# Append size 6.2066 ++size_append=perl -e 'print(pack("i",(stat($$ARGV[0]))[7]));' 6.2067 + 6.2068 ++# Bzip2 6.2069 ++# --------------------------------------------------------------------------- 6.2070 ++ 6.2071 ++quiet_cmd_bzip2 = BZIP2 $@ 6.2072 ++cmd_bzip2 = (bzip2 -9 < $< ; $(size_append) $<) > $@ 6.2073 ++ 6.2074 ++# Lzma 6.2075 ++# --------------------------------------------------------------------------- 6.2076 ++ 6.2077 ++quiet_cmd_lzma = LZMA $@ 6.2078 ++cmd_lzma = (lzma e $< -so ; $(size_append) $<) >$@