wok rev 215
Up: 2.6.24.2 add new files in stuff/
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Thu Feb 14 19:12:23 2008 +0100 (2008-02-14) |
parents | 938fc6a41f5a |
children | 098461817c1c |
files | linux/stuff/linux-2.6.24.2-slitaz.config linux/stuff/linux-lzma-2.6.24.2.u |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/linux/stuff/linux-2.6.24.2-slitaz.config Thu Feb 14 19:12:23 2008 +0100 1.3 @@ -0,0 +1,1774 @@ 1.4 +# 1.5 +# Automatically generated make config: don't edit 1.6 +# Linux kernel version: 2.6.24.2 1.7 +# Thu Feb 14 15:28:29 2008 1.8 +# 1.9 +# CONFIG_64BIT is not set 1.10 +CONFIG_X86_32=y 1.11 +# CONFIG_X86_64 is not set 1.12 +CONFIG_X86=y 1.13 +CONFIG_GENERIC_TIME=y 1.14 +CONFIG_GENERIC_CMOS_UPDATE=y 1.15 +CONFIG_CLOCKSOURCE_WATCHDOG=y 1.16 +CONFIG_GENERIC_CLOCKEVENTS=y 1.17 +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y 1.18 +CONFIG_LOCKDEP_SUPPORT=y 1.19 +CONFIG_STACKTRACE_SUPPORT=y 1.20 +CONFIG_SEMAPHORE_SLEEPERS=y 1.21 +CONFIG_MMU=y 1.22 +CONFIG_ZONE_DMA=y 1.23 +CONFIG_QUICKLIST=y 1.24 +CONFIG_GENERIC_ISA_DMA=y 1.25 +CONFIG_GENERIC_IOMAP=y 1.26 +CONFIG_GENERIC_BUG=y 1.27 +CONFIG_GENERIC_HWEIGHT=y 1.28 +CONFIG_ARCH_MAY_HAVE_PC_FDC=y 1.29 +CONFIG_DMI=y 1.30 +CONFIG_RWSEM_GENERIC_SPINLOCK=y 1.31 +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 1.32 +# CONFIG_ARCH_HAS_ILOG2_U32 is not set 1.33 +# CONFIG_ARCH_HAS_ILOG2_U64 is not set 1.34 +CONFIG_GENERIC_CALIBRATE_DELAY=y 1.35 +# CONFIG_GENERIC_TIME_VSYSCALL is not set 1.36 +CONFIG_ARCH_SUPPORTS_OPROFILE=y 1.37 +# CONFIG_ZONE_DMA32 is not set 1.38 +CONFIG_ARCH_POPULATES_NODE_MAP=y 1.39 +# CONFIG_AUDIT_ARCH is not set 1.40 +CONFIG_GENERIC_HARDIRQS=y 1.41 +CONFIG_GENERIC_IRQ_PROBE=y 1.42 +CONFIG_GENERIC_PENDING_IRQ=y 1.43 +CONFIG_X86_SMP=y 1.44 +CONFIG_X86_HT=y 1.45 +CONFIG_X86_BIOS_REBOOT=y 1.46 +CONFIG_X86_TRAMPOLINE=y 1.47 +CONFIG_KTIME_SCALAR=y 1.48 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 1.49 + 1.50 +# 1.51 +# General setup 1.52 +# 1.53 +CONFIG_EXPERIMENTAL=y 1.54 +CONFIG_LOCK_KERNEL=y 1.55 +CONFIG_INIT_ENV_ARG_LIMIT=32 1.56 +CONFIG_LOCALVERSION="-slitaz" 1.57 +# CONFIG_LOCALVERSION_AUTO is not set 1.58 +# CONFIG_KERNEL_GZIP is not set 1.59 +# CONFIG_KERNEL_BZIP2 is not set 1.60 +CONFIG_KERNEL_LZMA=y 1.61 +CONFIG_SWAP=y 1.62 +CONFIG_SYSVIPC=y 1.63 +CONFIG_SYSVIPC_SYSCTL=y 1.64 +CONFIG_POSIX_MQUEUE=y 1.65 +CONFIG_BSD_PROCESS_ACCT=y 1.66 +# CONFIG_BSD_PROCESS_ACCT_V3 is not set 1.67 +# CONFIG_TASKSTATS is not set 1.68 +# CONFIG_USER_NS is not set 1.69 +# CONFIG_PID_NS is not set 1.70 +# CONFIG_AUDIT is not set 1.71 +CONFIG_IKCONFIG=y 1.72 +CONFIG_IKCONFIG_PROC=y 1.73 +CONFIG_LOG_BUF_SHIFT=14 1.74 +# CONFIG_CGROUPS is not set 1.75 +CONFIG_FAIR_GROUP_SCHED=y 1.76 +CONFIG_FAIR_USER_SCHED=y 1.77 +# CONFIG_FAIR_CGROUP_SCHED is not set 1.78 +# CONFIG_SYSFS_DEPRECATED is not set 1.79 +# CONFIG_RELAY is not set 1.80 +CONFIG_BLK_DEV_INITRD=y 1.81 +CONFIG_INITRAMFS_SOURCE="" 1.82 +CONFIG_CC_OPTIMIZE_FOR_SIZE=y 1.83 +CONFIG_SYSCTL=y 1.84 +# CONFIG_EMBEDDED is not set 1.85 +CONFIG_UID16=y 1.86 +CONFIG_SYSCTL_SYSCALL=y 1.87 +CONFIG_KALLSYMS=y 1.88 +# CONFIG_KALLSYMS_EXTRA_PASS is not set 1.89 +CONFIG_HOTPLUG=y 1.90 +CONFIG_PRINTK=y 1.91 +CONFIG_BUG=y 1.92 +CONFIG_ELF_CORE=y 1.93 +CONFIG_BASE_FULL=y 1.94 +CONFIG_FUTEX=y 1.95 +CONFIG_ANON_INODES=y 1.96 +CONFIG_EPOLL=y 1.97 +CONFIG_SIGNALFD=y 1.98 +CONFIG_EVENTFD=y 1.99 +CONFIG_SHMEM=y 1.100 +CONFIG_VM_EVENT_COUNTERS=y 1.101 +CONFIG_SLAB=y 1.102 +# CONFIG_SLUB is not set 1.103 +# CONFIG_SLOB is not set 1.104 +CONFIG_SLABINFO=y 1.105 +CONFIG_RT_MUTEXES=y 1.106 +# CONFIG_TINY_SHMEM is not set 1.107 +CONFIG_BASE_SMALL=0 1.108 +CONFIG_MODULES=y 1.109 +CONFIG_MODULE_UNLOAD=y 1.110 +# CONFIG_MODULE_FORCE_UNLOAD is not set 1.111 +# CONFIG_MODVERSIONS is not set 1.112 +# CONFIG_MODULE_SRCVERSION_ALL is not set 1.113 +CONFIG_KMOD=y 1.114 +CONFIG_STOP_MACHINE=y 1.115 +CONFIG_BLOCK=y 1.116 +# CONFIG_LBD is not set 1.117 +# CONFIG_BLK_DEV_IO_TRACE is not set 1.118 +# CONFIG_LSF is not set 1.119 +# CONFIG_BLK_DEV_BSG is not set 1.120 + 1.121 +# 1.122 +# IO Schedulers 1.123 +# 1.124 +CONFIG_IOSCHED_NOOP=y 1.125 +# CONFIG_IOSCHED_AS is not set 1.126 +CONFIG_IOSCHED_DEADLINE=y 1.127 +# CONFIG_IOSCHED_CFQ is not set 1.128 +# CONFIG_DEFAULT_AS is not set 1.129 +CONFIG_DEFAULT_DEADLINE=y 1.130 +# CONFIG_DEFAULT_CFQ is not set 1.131 +# CONFIG_DEFAULT_NOOP is not set 1.132 +CONFIG_DEFAULT_IOSCHED="deadline" 1.133 + 1.134 +# 1.135 +# Processor type and features 1.136 +# 1.137 +# CONFIG_TICK_ONESHOT is not set 1.138 +# CONFIG_NO_HZ is not set 1.139 +# CONFIG_HIGH_RES_TIMERS is not set 1.140 +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 1.141 +CONFIG_SMP=y 1.142 +CONFIG_X86_PC=y 1.143 +# CONFIG_X86_ELAN is not set 1.144 +# CONFIG_X86_VOYAGER is not set 1.145 +# CONFIG_X86_NUMAQ is not set 1.146 +# CONFIG_X86_SUMMIT is not set 1.147 +# CONFIG_X86_BIGSMP is not set 1.148 +# CONFIG_X86_VISWS is not set 1.149 +# CONFIG_X86_GENERICARCH is not set 1.150 +# CONFIG_X86_ES7000 is not set 1.151 +# CONFIG_X86_VSMP is not set 1.152 +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 1.153 +# CONFIG_PARAVIRT_GUEST is not set 1.154 +CONFIG_M386=y 1.155 +# CONFIG_M486 is not set 1.156 +# CONFIG_M586 is not set 1.157 +# CONFIG_M586TSC is not set 1.158 +# CONFIG_M586MMX is not set 1.159 +# CONFIG_M686 is not set 1.160 +# CONFIG_MPENTIUMII is not set 1.161 +# CONFIG_MPENTIUMIII is not set 1.162 +# CONFIG_MPENTIUMM is not set 1.163 +# CONFIG_MPENTIUM4 is not set 1.164 +# CONFIG_MK6 is not set 1.165 +# CONFIG_MK7 is not set 1.166 +# CONFIG_MK8 is not set 1.167 +# CONFIG_MCRUSOE is not set 1.168 +# CONFIG_MEFFICEON is not set 1.169 +# CONFIG_MWINCHIPC6 is not set 1.170 +# CONFIG_MWINCHIP2 is not set 1.171 +# CONFIG_MWINCHIP3D is not set 1.172 +# CONFIG_MGEODEGX1 is not set 1.173 +# CONFIG_MGEODE_LX is not set 1.174 +# CONFIG_MCYRIXIII is not set 1.175 +# CONFIG_MVIAC3_2 is not set 1.176 +# CONFIG_MVIAC7 is not set 1.177 +# CONFIG_MPSC is not set 1.178 +# CONFIG_MCORE2 is not set 1.179 +# CONFIG_GENERIC_CPU is not set 1.180 +CONFIG_X86_GENERIC=y 1.181 +# CONFIG_X86_CMPXCHG is not set 1.182 +CONFIG_X86_L1_CACHE_SHIFT=7 1.183 +CONFIG_X86_PPRO_FENCE=y 1.184 +CONFIG_X86_F00F_BUG=y 1.185 +CONFIG_X86_INTEL_USERCOPY=y 1.186 +CONFIG_X86_MINIMUM_CPU_FAMILY=3 1.187 +# CONFIG_HPET_TIMER is not set 1.188 +CONFIG_NR_CPUS=8 1.189 +# CONFIG_SCHED_SMT is not set 1.190 +CONFIG_SCHED_MC=y 1.191 +CONFIG_PREEMPT_NONE=y 1.192 +# CONFIG_PREEMPT_VOLUNTARY is not set 1.193 +# CONFIG_PREEMPT is not set 1.194 +CONFIG_PREEMPT_BKL=y 1.195 +CONFIG_X86_LOCAL_APIC=y 1.196 +CONFIG_X86_IO_APIC=y 1.197 +# CONFIG_X86_MCE is not set 1.198 +CONFIG_VM86=y 1.199 +# CONFIG_TOSHIBA is not set 1.200 +# CONFIG_I8K is not set 1.201 +# CONFIG_X86_REBOOTFIXUPS is not set 1.202 +# CONFIG_MICROCODE is not set 1.203 +# CONFIG_X86_MSR is not set 1.204 +# CONFIG_X86_CPUID is not set 1.205 +# CONFIG_NOHIGHMEM is not set 1.206 +CONFIG_HIGHMEM4G=y 1.207 +# CONFIG_HIGHMEM64G is not set 1.208 +CONFIG_PAGE_OFFSET=0xC0000000 1.209 +CONFIG_HIGHMEM=y 1.210 +CONFIG_ARCH_FLATMEM_ENABLE=y 1.211 +CONFIG_ARCH_SPARSEMEM_ENABLE=y 1.212 +CONFIG_ARCH_SELECT_MEMORY_MODEL=y 1.213 +CONFIG_SELECT_MEMORY_MODEL=y 1.214 +CONFIG_FLATMEM_MANUAL=y 1.215 +# CONFIG_DISCONTIGMEM_MANUAL is not set 1.216 +# CONFIG_SPARSEMEM_MANUAL is not set 1.217 +CONFIG_FLATMEM=y 1.218 +CONFIG_FLAT_NODE_MEM_MAP=y 1.219 +CONFIG_SPARSEMEM_STATIC=y 1.220 +# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 1.221 +CONFIG_SPLIT_PTLOCK_CPUS=4 1.222 +# CONFIG_RESOURCES_64BIT is not set 1.223 +CONFIG_ZONE_DMA_FLAG=1 1.224 +CONFIG_BOUNCE=y 1.225 +CONFIG_NR_QUICK=1 1.226 +CONFIG_VIRT_TO_BUS=y 1.227 +# CONFIG_HIGHPTE is not set 1.228 +CONFIG_MATH_EMULATION=y 1.229 +CONFIG_MTRR=y 1.230 +CONFIG_IRQBALANCE=y 1.231 +# CONFIG_SECCOMP is not set 1.232 +# CONFIG_HZ_100 is not set 1.233 +# CONFIG_HZ_250 is not set 1.234 +CONFIG_HZ_300=y 1.235 +# CONFIG_HZ_1000 is not set 1.236 +CONFIG_HZ=300 1.237 +# CONFIG_KEXEC is not set 1.238 +# CONFIG_CRASH_DUMP is not set 1.239 +CONFIG_PHYSICAL_START=0x100000 1.240 +# CONFIG_RELOCATABLE is not set 1.241 +CONFIG_PHYSICAL_ALIGN=0x100000 1.242 +# CONFIG_HOTPLUG_CPU is not set 1.243 +CONFIG_COMPAT_VDSO=y 1.244 +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 1.245 + 1.246 +# 1.247 +# Power management options 1.248 +# 1.249 +# CONFIG_PM is not set 1.250 +CONFIG_SUSPEND_SMP_POSSIBLE=y 1.251 +CONFIG_HIBERNATION_SMP_POSSIBLE=y 1.252 + 1.253 +# 1.254 +# CPU Frequency scaling 1.255 +# 1.256 +# CONFIG_CPU_FREQ is not set 1.257 +# CONFIG_CPU_IDLE is not set 1.258 + 1.259 +# 1.260 +# Bus options (PCI etc.) 1.261 +# 1.262 +CONFIG_PCI=y 1.263 +# CONFIG_PCI_GOBIOS is not set 1.264 +# CONFIG_PCI_GOMMCONFIG is not set 1.265 +# CONFIG_PCI_GODIRECT is not set 1.266 +CONFIG_PCI_GOANY=y 1.267 +CONFIG_PCI_BIOS=y 1.268 +CONFIG_PCI_DIRECT=y 1.269 +CONFIG_PCI_DOMAINS=y 1.270 +# CONFIG_PCIEPORTBUS is not set 1.271 +CONFIG_ARCH_SUPPORTS_MSI=y 1.272 +# CONFIG_PCI_MSI is not set 1.273 +CONFIG_PCI_LEGACY=y 1.274 +CONFIG_HT_IRQ=y 1.275 +CONFIG_ISA_DMA_API=y 1.276 +CONFIG_ISA=y 1.277 +# CONFIG_EISA is not set 1.278 +# CONFIG_MCA is not set 1.279 +# CONFIG_SCx200 is not set 1.280 +CONFIG_PCCARD=m 1.281 +# CONFIG_PCMCIA_DEBUG is not set 1.282 +CONFIG_PCMCIA=m 1.283 +CONFIG_PCMCIA_LOAD_CIS=y 1.284 +CONFIG_PCMCIA_IOCTL=y 1.285 +CONFIG_CARDBUS=y 1.286 + 1.287 +# 1.288 +# PC-card bridges 1.289 +# 1.290 +CONFIG_YENTA=m 1.291 +CONFIG_YENTA_O2=y 1.292 +CONFIG_YENTA_RICOH=y 1.293 +CONFIG_YENTA_TI=y 1.294 +CONFIG_YENTA_ENE_TUNE=y 1.295 +CONFIG_YENTA_TOSHIBA=y 1.296 +CONFIG_PD6729=m 1.297 +CONFIG_I82092=m 1.298 +CONFIG_I82365=m 1.299 +# CONFIG_TCIC is not set 1.300 +CONFIG_PCMCIA_PROBE=y 1.301 +CONFIG_PCCARD_NONSTATIC=m 1.302 +# CONFIG_HOTPLUG_PCI is not set 1.303 + 1.304 +# 1.305 +# Executable file formats / Emulations 1.306 +# 1.307 +CONFIG_BINFMT_ELF=y 1.308 +# CONFIG_BINFMT_AOUT is not set 1.309 +# CONFIG_BINFMT_MISC is not set 1.310 + 1.311 +# 1.312 +# Networking 1.313 +# 1.314 +CONFIG_NET=y 1.315 + 1.316 +# 1.317 +# Networking options 1.318 +# 1.319 +CONFIG_PACKET=y 1.320 +# CONFIG_PACKET_MMAP is not set 1.321 +CONFIG_UNIX=y 1.322 +CONFIG_XFRM=y 1.323 +# CONFIG_XFRM_USER is not set 1.324 +# CONFIG_XFRM_SUB_POLICY is not set 1.325 +# CONFIG_XFRM_MIGRATE is not set 1.326 +CONFIG_NET_KEY=y 1.327 +# CONFIG_NET_KEY_MIGRATE is not set 1.328 +CONFIG_INET=y 1.329 +# CONFIG_IP_MULTICAST is not set 1.330 +# CONFIG_IP_ADVANCED_ROUTER is not set 1.331 +CONFIG_IP_FIB_HASH=y 1.332 +# CONFIG_IP_PNP is not set 1.333 +# CONFIG_NET_IPIP is not set 1.334 +# CONFIG_NET_IPGRE is not set 1.335 +# CONFIG_ARPD is not set 1.336 +CONFIG_SYN_COOKIES=y 1.337 +CONFIG_INET_AH=y 1.338 +CONFIG_INET_ESP=y 1.339 +CONFIG_INET_IPCOMP=y 1.340 +CONFIG_INET_XFRM_TUNNEL=y 1.341 +CONFIG_INET_TUNNEL=y 1.342 +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 1.343 +# CONFIG_INET_XFRM_MODE_TUNNEL is not set 1.344 +# CONFIG_INET_XFRM_MODE_BEET is not set 1.345 +# CONFIG_INET_LRO is not set 1.346 +CONFIG_INET_DIAG=y 1.347 +CONFIG_INET_TCP_DIAG=y 1.348 +# CONFIG_TCP_CONG_ADVANCED is not set 1.349 +CONFIG_TCP_CONG_CUBIC=y 1.350 +CONFIG_DEFAULT_TCP_CONG="cubic" 1.351 +# CONFIG_TCP_MD5SIG is not set 1.352 +# CONFIG_IP_VS is not set 1.353 +# CONFIG_IPV6 is not set 1.354 +# CONFIG_INET6_XFRM_TUNNEL is not set 1.355 +# CONFIG_INET6_TUNNEL is not set 1.356 +# CONFIG_NETWORK_SECMARK is not set 1.357 +CONFIG_NETFILTER=y 1.358 +# CONFIG_NETFILTER_DEBUG is not set 1.359 + 1.360 +# 1.361 +# Core Netfilter Configuration 1.362 +# 1.363 +CONFIG_NETFILTER_NETLINK=y 1.364 +# CONFIG_NETFILTER_NETLINK_QUEUE is not set 1.365 +CONFIG_NETFILTER_NETLINK_LOG=m 1.366 +# CONFIG_NF_CONNTRACK_ENABLED is not set 1.367 +# CONFIG_NF_CONNTRACK is not set 1.368 +CONFIG_NETFILTER_XTABLES=y 1.369 +# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set 1.370 +# CONFIG_NETFILTER_XT_TARGET_MARK is not set 1.371 +# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set 1.372 +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set 1.373 +# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set 1.374 +# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set 1.375 +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set 1.376 +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set 1.377 +# CONFIG_NETFILTER_XT_MATCH_ESP is not set 1.378 +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set 1.379 +# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set 1.380 +# CONFIG_NETFILTER_XT_MATCH_MAC is not set 1.381 +# CONFIG_NETFILTER_XT_MATCH_MARK is not set 1.382 +# CONFIG_NETFILTER_XT_MATCH_POLICY is not set 1.383 +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set 1.384 +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set 1.385 +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 1.386 +# CONFIG_NETFILTER_XT_MATCH_REALM is not set 1.387 +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set 1.388 +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set 1.389 +# CONFIG_NETFILTER_XT_MATCH_STRING is not set 1.390 +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set 1.391 +# CONFIG_NETFILTER_XT_MATCH_TIME is not set 1.392 +# CONFIG_NETFILTER_XT_MATCH_U32 is not set 1.393 +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set 1.394 + 1.395 +# 1.396 +# IP: Netfilter Configuration 1.397 +# 1.398 +# CONFIG_IP_NF_QUEUE is not set 1.399 +CONFIG_IP_NF_IPTABLES=y 1.400 +# CONFIG_IP_NF_MATCH_IPRANGE is not set 1.401 +# CONFIG_IP_NF_MATCH_TOS is not set 1.402 +# CONFIG_IP_NF_MATCH_RECENT is not set 1.403 +# CONFIG_IP_NF_MATCH_ECN is not set 1.404 +# CONFIG_IP_NF_MATCH_AH is not set 1.405 +# CONFIG_IP_NF_MATCH_TTL is not set 1.406 +# CONFIG_IP_NF_MATCH_OWNER is not set 1.407 +# CONFIG_IP_NF_MATCH_ADDRTYPE is not set 1.408 +CONFIG_IP_NF_FILTER=y 1.409 +CONFIG_IP_NF_TARGET_REJECT=m 1.410 +# CONFIG_IP_NF_TARGET_LOG is not set 1.411 +# CONFIG_IP_NF_TARGET_ULOG is not set 1.412 +# CONFIG_IP_NF_MANGLE is not set 1.413 +# CONFIG_IP_NF_RAW is not set 1.414 +# CONFIG_IP_NF_ARPTABLES is not set 1.415 +# CONFIG_IP_DCCP is not set 1.416 +# CONFIG_IP_SCTP is not set 1.417 +# CONFIG_TIPC is not set 1.418 +# CONFIG_ATM is not set 1.419 +# CONFIG_BRIDGE is not set 1.420 +# CONFIG_VLAN_8021Q is not set 1.421 +# CONFIG_DECNET is not set 1.422 +# CONFIG_LLC2 is not set 1.423 +# CONFIG_IPX is not set 1.424 +# CONFIG_ATALK is not set 1.425 +# CONFIG_X25 is not set 1.426 +# CONFIG_LAPB is not set 1.427 +# CONFIG_ECONET is not set 1.428 +# CONFIG_WAN_ROUTER is not set 1.429 +# CONFIG_NET_SCHED is not set 1.430 + 1.431 +# 1.432 +# Network testing 1.433 +# 1.434 +# CONFIG_NET_PKTGEN is not set 1.435 +# CONFIG_HAMRADIO is not set 1.436 +# CONFIG_IRDA is not set 1.437 +# CONFIG_BT is not set 1.438 +# CONFIG_AF_RXRPC is not set 1.439 + 1.440 +# 1.441 +# Wireless 1.442 +# 1.443 +# CONFIG_CFG80211 is not set 1.444 +# CONFIG_WIRELESS_EXT is not set 1.445 +# CONFIG_MAC80211 is not set 1.446 +# CONFIG_IEEE80211 is not set 1.447 +# CONFIG_RFKILL is not set 1.448 +# CONFIG_NET_9P is not set 1.449 + 1.450 +# 1.451 +# Device Drivers 1.452 +# 1.453 + 1.454 +# 1.455 +# Generic Driver Options 1.456 +# 1.457 +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 1.458 +CONFIG_STANDALONE=y 1.459 +CONFIG_PREVENT_FIRMWARE_BUILD=y 1.460 +CONFIG_FW_LOADER=m 1.461 +# CONFIG_SYS_HYPERVISOR is not set 1.462 +# CONFIG_CONNECTOR is not set 1.463 +# CONFIG_MTD is not set 1.464 +# CONFIG_PARPORT is not set 1.465 +CONFIG_PNP=y 1.466 +# CONFIG_PNP_DEBUG is not set 1.467 + 1.468 +# 1.469 +# Protocols 1.470 +# 1.471 +CONFIG_ISAPNP=y 1.472 +# CONFIG_PNPBIOS is not set 1.473 +# CONFIG_PNPACPI is not set 1.474 +CONFIG_BLK_DEV=y 1.475 +CONFIG_BLK_DEV_FD=y 1.476 +# CONFIG_BLK_DEV_XD is not set 1.477 +# CONFIG_BLK_CPQ_DA is not set 1.478 +# CONFIG_BLK_CPQ_CISS_DA is not set 1.479 +# CONFIG_BLK_DEV_DAC960 is not set 1.480 +# CONFIG_BLK_DEV_UMEM is not set 1.481 +# CONFIG_BLK_DEV_COW_COMMON is not set 1.482 +CONFIG_BLK_DEV_LOOP=y 1.483 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set 1.484 +# CONFIG_BLK_DEV_NBD is not set 1.485 +# CONFIG_BLK_DEV_SX8 is not set 1.486 +# CONFIG_BLK_DEV_UB is not set 1.487 +CONFIG_BLK_DEV_RAM=y 1.488 +CONFIG_BLK_DEV_RAM_COUNT=16 1.489 +CONFIG_BLK_DEV_RAM_SIZE=4096 1.490 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 1.491 +# CONFIG_RD_BZIP2 is not set 1.492 +CONFIG_RD_LZMA=y 1.493 +CONFIG_RD_GZIP=y 1.494 +# CONFIG_CDROM_PKTCDVD is not set 1.495 +# CONFIG_ATA_OVER_ETH is not set 1.496 +CONFIG_MISC_DEVICES=y 1.497 +# CONFIG_IBM_ASM is not set 1.498 +# CONFIG_PHANTOM is not set 1.499 +# CONFIG_EEPROM_93CX6 is not set 1.500 +# CONFIG_SGI_IOC4 is not set 1.501 +# CONFIG_TIFM_CORE is not set 1.502 +CONFIG_IDE=y 1.503 +CONFIG_BLK_DEV_IDE=y 1.504 + 1.505 +# 1.506 +# Please see Documentation/ide.txt for help/info on IDE drives 1.507 +# 1.508 +# CONFIG_BLK_DEV_IDE_SATA is not set 1.509 +# CONFIG_BLK_DEV_HD_IDE is not set 1.510 +CONFIG_BLK_DEV_IDEDISK=y 1.511 +CONFIG_IDEDISK_MULTI_MODE=y 1.512 +# CONFIG_BLK_DEV_IDECS is not set 1.513 +# CONFIG_BLK_DEV_DELKIN is not set 1.514 +CONFIG_BLK_DEV_IDECD=y 1.515 +# CONFIG_BLK_DEV_IDETAPE is not set 1.516 +CONFIG_BLK_DEV_IDEFLOPPY=y 1.517 +# CONFIG_BLK_DEV_IDESCSI is not set 1.518 +# CONFIG_IDE_TASK_IOCTL is not set 1.519 +CONFIG_IDE_PROC_FS=y 1.520 + 1.521 +# 1.522 +# IDE chipset support/bugfixes 1.523 +# 1.524 +CONFIG_IDE_GENERIC=y 1.525 +# CONFIG_BLK_DEV_PLATFORM is not set 1.526 +CONFIG_BLK_DEV_CMD640=y 1.527 +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set 1.528 +# CONFIG_BLK_DEV_IDEPNP is not set 1.529 + 1.530 +# 1.531 +# PCI IDE chipsets support 1.532 +# 1.533 +CONFIG_BLK_DEV_IDEPCI=y 1.534 +CONFIG_IDEPCI_SHARE_IRQ=y 1.535 +CONFIG_IDEPCI_PCIBUS_ORDER=y 1.536 +# CONFIG_BLK_DEV_OFFBOARD is not set 1.537 +CONFIG_BLK_DEV_GENERIC=y 1.538 +# CONFIG_BLK_DEV_OPTI621 is not set 1.539 +CONFIG_BLK_DEV_RZ1000=y 1.540 +CONFIG_BLK_DEV_IDEDMA_PCI=y 1.541 +CONFIG_BLK_DEV_AEC62XX=y 1.542 +CONFIG_BLK_DEV_ALI15X3=y 1.543 +# CONFIG_WDC_ALI15X3 is not set 1.544 +CONFIG_BLK_DEV_AMD74XX=y 1.545 +CONFIG_BLK_DEV_ATIIXP=y 1.546 +CONFIG_BLK_DEV_CMD64X=y 1.547 +CONFIG_BLK_DEV_TRIFLEX=y 1.548 +CONFIG_BLK_DEV_CY82C693=y 1.549 +# CONFIG_BLK_DEV_CS5520 is not set 1.550 +CONFIG_BLK_DEV_CS5530=y 1.551 +CONFIG_BLK_DEV_CS5535=y 1.552 +# CONFIG_BLK_DEV_HPT34X is not set 1.553 +# CONFIG_BLK_DEV_HPT366 is not set 1.554 +CONFIG_BLK_DEV_JMICRON=y 1.555 +# CONFIG_BLK_DEV_SC1200 is not set 1.556 +CONFIG_BLK_DEV_PIIX=y 1.557 +CONFIG_BLK_DEV_IT8213=y 1.558 +CONFIG_BLK_DEV_IT821X=y 1.559 +CONFIG_BLK_DEV_NS87415=y 1.560 +# CONFIG_BLK_DEV_PDC202XX_OLD is not set 1.561 +CONFIG_BLK_DEV_PDC202XX_NEW=y 1.562 +CONFIG_BLK_DEV_SVWKS=y 1.563 +CONFIG_BLK_DEV_SIIMAGE=y 1.564 +CONFIG_BLK_DEV_SIS5513=y 1.565 +CONFIG_BLK_DEV_SLC90E66=y 1.566 +CONFIG_BLK_DEV_TRM290=y 1.567 +CONFIG_BLK_DEV_VIA82CXXX=y 1.568 +# CONFIG_BLK_DEV_TC86C001 is not set 1.569 +# CONFIG_IDE_ARM is not set 1.570 + 1.571 +# 1.572 +# Other IDE chipsets support 1.573 +# 1.574 + 1.575 +# 1.576 +# Note: most of these also require special kernel boot parameters 1.577 +# 1.578 +# CONFIG_BLK_DEV_4DRIVES is not set 1.579 +# CONFIG_BLK_DEV_ALI14XX is not set 1.580 +# CONFIG_BLK_DEV_DTC2278 is not set 1.581 +# CONFIG_BLK_DEV_HT6560B is not set 1.582 +# CONFIG_BLK_DEV_QD65XX is not set 1.583 +# CONFIG_BLK_DEV_UMC8672 is not set 1.584 +CONFIG_BLK_DEV_IDEDMA=y 1.585 +CONFIG_IDE_ARCH_OBSOLETE_INIT=y 1.586 +# CONFIG_BLK_DEV_HD is not set 1.587 + 1.588 +# 1.589 +# SCSI device support 1.590 +# 1.591 +# CONFIG_RAID_ATTRS is not set 1.592 +CONFIG_SCSI=y 1.593 +CONFIG_SCSI_DMA=y 1.594 +# CONFIG_SCSI_TGT is not set 1.595 +# CONFIG_SCSI_NETLINK is not set 1.596 +CONFIG_SCSI_PROC_FS=y 1.597 + 1.598 +# 1.599 +# SCSI support type (disk, tape, CD-ROM) 1.600 +# 1.601 +CONFIG_BLK_DEV_SD=y 1.602 +# CONFIG_CHR_DEV_ST is not set 1.603 +# CONFIG_CHR_DEV_OSST is not set 1.604 +# CONFIG_BLK_DEV_SR is not set 1.605 +# CONFIG_CHR_DEV_SG is not set 1.606 +# CONFIG_CHR_DEV_SCH is not set 1.607 + 1.608 +# 1.609 +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 1.610 +# 1.611 +# CONFIG_SCSI_MULTI_LUN is not set 1.612 +# CONFIG_SCSI_CONSTANTS is not set 1.613 +# CONFIG_SCSI_LOGGING is not set 1.614 +# CONFIG_SCSI_SCAN_ASYNC is not set 1.615 +CONFIG_SCSI_WAIT_SCAN=m 1.616 + 1.617 +# 1.618 +# SCSI Transports 1.619 +# 1.620 +# CONFIG_SCSI_SPI_ATTRS is not set 1.621 +# CONFIG_SCSI_FC_ATTRS is not set 1.622 +# CONFIG_SCSI_ISCSI_ATTRS is not set 1.623 +# CONFIG_SCSI_SAS_LIBSAS is not set 1.624 +# CONFIG_SCSI_SRP_ATTRS is not set 1.625 +CONFIG_SCSI_LOWLEVEL=y 1.626 +# CONFIG_ISCSI_TCP is not set 1.627 +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 1.628 +# CONFIG_SCSI_3W_9XXX is not set 1.629 +# CONFIG_SCSI_7000FASST is not set 1.630 +# CONFIG_SCSI_ACARD is not set 1.631 +# CONFIG_SCSI_AHA152X is not set 1.632 +# CONFIG_SCSI_AHA1542 is not set 1.633 +# CONFIG_SCSI_AACRAID is not set 1.634 +# CONFIG_SCSI_AIC7XXX is not set 1.635 +# CONFIG_SCSI_AIC7XXX_OLD is not set 1.636 +# CONFIG_SCSI_AIC79XX is not set 1.637 +# CONFIG_SCSI_AIC94XX is not set 1.638 +# CONFIG_SCSI_DPT_I2O is not set 1.639 +# CONFIG_SCSI_ADVANSYS is not set 1.640 +# CONFIG_SCSI_IN2000 is not set 1.641 +# CONFIG_SCSI_ARCMSR is not set 1.642 +# CONFIG_MEGARAID_NEWGEN is not set 1.643 +# CONFIG_MEGARAID_LEGACY is not set 1.644 +# CONFIG_MEGARAID_SAS is not set 1.645 +# CONFIG_SCSI_HPTIOP is not set 1.646 +# CONFIG_SCSI_BUSLOGIC is not set 1.647 +# CONFIG_SCSI_DMX3191D is not set 1.648 +# CONFIG_SCSI_DTC3280 is not set 1.649 +# CONFIG_SCSI_EATA is not set 1.650 +# CONFIG_SCSI_FUTURE_DOMAIN is not set 1.651 +# CONFIG_SCSI_GDTH is not set 1.652 +# CONFIG_SCSI_GENERIC_NCR5380 is not set 1.653 +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set 1.654 +# CONFIG_SCSI_IPS is not set 1.655 +# CONFIG_SCSI_INITIO is not set 1.656 +# CONFIG_SCSI_INIA100 is not set 1.657 +# CONFIG_SCSI_NCR53C406A is not set 1.658 +# CONFIG_SCSI_STEX is not set 1.659 +# CONFIG_SCSI_SYM53C8XX_2 is not set 1.660 +# CONFIG_SCSI_IPR is not set 1.661 +# CONFIG_SCSI_PAS16 is not set 1.662 +# CONFIG_SCSI_PSI240I is not set 1.663 +# CONFIG_SCSI_QLOGIC_FAS is not set 1.664 +# CONFIG_SCSI_QLOGIC_1280 is not set 1.665 +# CONFIG_SCSI_QLA_FC is not set 1.666 +# CONFIG_SCSI_QLA_ISCSI is not set 1.667 +# CONFIG_SCSI_LPFC is not set 1.668 +# CONFIG_SCSI_SEAGATE is not set 1.669 +# CONFIG_SCSI_SYM53C416 is not set 1.670 +# CONFIG_SCSI_DC395x is not set 1.671 +# CONFIG_SCSI_DC390T is not set 1.672 +# CONFIG_SCSI_T128 is not set 1.673 +# CONFIG_SCSI_U14_34F is not set 1.674 +# CONFIG_SCSI_ULTRASTOR is not set 1.675 +# CONFIG_SCSI_NSP32 is not set 1.676 +# CONFIG_SCSI_DEBUG is not set 1.677 +# CONFIG_SCSI_SRP is not set 1.678 +# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 1.679 +CONFIG_ATA=y 1.680 +# CONFIG_ATA_NONSTANDARD is not set 1.681 +CONFIG_SATA_AHCI=y 1.682 +# CONFIG_SATA_SVW is not set 1.683 +CONFIG_ATA_PIIX=y 1.684 +# CONFIG_SATA_MV is not set 1.685 +CONFIG_SATA_NV=y 1.686 +# CONFIG_PDC_ADMA is not set 1.687 +# CONFIG_SATA_QSTOR is not set 1.688 +# CONFIG_SATA_PROMISE is not set 1.689 +# CONFIG_SATA_SX4 is not set 1.690 +# CONFIG_SATA_SIL is not set 1.691 +# CONFIG_SATA_SIL24 is not set 1.692 +CONFIG_SATA_SIS=y 1.693 +# CONFIG_SATA_ULI is not set 1.694 +CONFIG_SATA_VIA=y 1.695 +# CONFIG_SATA_VITESSE is not set 1.696 +# CONFIG_SATA_INIC162X is not set 1.697 +# CONFIG_PATA_ALI is not set 1.698 +# CONFIG_PATA_AMD is not set 1.699 +# CONFIG_PATA_ARTOP is not set 1.700 +# CONFIG_PATA_ATIIXP is not set 1.701 +# CONFIG_PATA_CMD640_PCI is not set 1.702 +# CONFIG_PATA_CMD64X is not set 1.703 +# CONFIG_PATA_CS5520 is not set 1.704 +# CONFIG_PATA_CS5530 is not set 1.705 +# CONFIG_PATA_CS5535 is not set 1.706 +# CONFIG_PATA_CS5536 is not set 1.707 +# CONFIG_PATA_CYPRESS is not set 1.708 +# CONFIG_PATA_EFAR is not set 1.709 +# CONFIG_ATA_GENERIC is not set 1.710 +# CONFIG_PATA_HPT366 is not set 1.711 +# CONFIG_PATA_HPT37X is not set 1.712 +# CONFIG_PATA_HPT3X2N is not set 1.713 +# CONFIG_PATA_HPT3X3 is not set 1.714 +# CONFIG_PATA_ISAPNP is not set 1.715 +# CONFIG_PATA_IT821X is not set 1.716 +# CONFIG_PATA_IT8213 is not set 1.717 +# CONFIG_PATA_JMICRON is not set 1.718 +# CONFIG_PATA_LEGACY is not set 1.719 +# CONFIG_PATA_TRIFLEX is not set 1.720 +# CONFIG_PATA_MARVELL is not set 1.721 +# CONFIG_PATA_MPIIX is not set 1.722 +# CONFIG_PATA_OLDPIIX is not set 1.723 +# CONFIG_PATA_NETCELL is not set 1.724 +# CONFIG_PATA_NS87410 is not set 1.725 +# CONFIG_PATA_NS87415 is not set 1.726 +# CONFIG_PATA_OPTI is not set 1.727 +# CONFIG_PATA_OPTIDMA is not set 1.728 +# CONFIG_PATA_PCMCIA is not set 1.729 +# CONFIG_PATA_PDC_OLD is not set 1.730 +# CONFIG_PATA_QDI is not set 1.731 +# CONFIG_PATA_RADISYS is not set 1.732 +# CONFIG_PATA_RZ1000 is not set 1.733 +# CONFIG_PATA_SC1200 is not set 1.734 +# CONFIG_PATA_SERVERWORKS is not set 1.735 +# CONFIG_PATA_PDC2027X is not set 1.736 +# CONFIG_PATA_SIL680 is not set 1.737 +CONFIG_PATA_SIS=y 1.738 +# CONFIG_PATA_VIA is not set 1.739 +# CONFIG_PATA_WINBOND is not set 1.740 +# CONFIG_PATA_WINBOND_VLB is not set 1.741 +# CONFIG_MD is not set 1.742 +# CONFIG_FUSION is not set 1.743 + 1.744 +# 1.745 +# IEEE 1394 (FireWire) support 1.746 +# 1.747 +# CONFIG_FIREWIRE is not set 1.748 +# CONFIG_IEEE1394 is not set 1.749 +# CONFIG_I2O is not set 1.750 +# CONFIG_MACINTOSH_DRIVERS is not set 1.751 +CONFIG_NETDEVICES=y 1.752 +# CONFIG_NETDEVICES_MULTIQUEUE is not set 1.753 +CONFIG_DUMMY=y 1.754 +# CONFIG_BONDING is not set 1.755 +# CONFIG_MACVLAN is not set 1.756 +# CONFIG_EQUALIZER is not set 1.757 +# CONFIG_TUN is not set 1.758 +# CONFIG_VETH is not set 1.759 +# CONFIG_NET_SB1000 is not set 1.760 +CONFIG_ARCNET=m 1.761 +CONFIG_ARCNET_1201=m 1.762 +# CONFIG_ARCNET_1051 is not set 1.763 +# CONFIG_ARCNET_RAW is not set 1.764 +# CONFIG_ARCNET_CAP is not set 1.765 +CONFIG_ARCNET_COM90xx=m 1.766 +# CONFIG_ARCNET_COM90xxIO is not set 1.767 +# CONFIG_ARCNET_RIM_I is not set 1.768 +# CONFIG_ARCNET_COM20020 is not set 1.769 +CONFIG_PHYLIB=m 1.770 + 1.771 +# 1.772 +# MII PHY device drivers 1.773 +# 1.774 +CONFIG_MARVELL_PHY=m 1.775 +CONFIG_DAVICOM_PHY=m 1.776 +CONFIG_QSEMI_PHY=m 1.777 +CONFIG_LXT_PHY=m 1.778 +CONFIG_CICADA_PHY=m 1.779 +# CONFIG_VITESSE_PHY is not set 1.780 +# CONFIG_SMSC_PHY is not set 1.781 +CONFIG_BROADCOM_PHY=m 1.782 +# CONFIG_ICPLUS_PHY is not set 1.783 +# CONFIG_FIXED_PHY is not set 1.784 +# CONFIG_MDIO_BITBANG is not set 1.785 +CONFIG_NET_ETHERNET=y 1.786 +CONFIG_MII=y 1.787 +CONFIG_HAPPYMEAL=m 1.788 +CONFIG_SUNGEM=m 1.789 +CONFIG_CASSINI=m 1.790 +CONFIG_NET_VENDOR_3COM=y 1.791 +CONFIG_EL1=m 1.792 +CONFIG_EL2=m 1.793 +CONFIG_ELPLUS=m 1.794 +# CONFIG_EL16 is not set 1.795 +CONFIG_EL3=m 1.796 +CONFIG_3C515=m 1.797 +CONFIG_VORTEX=m 1.798 +CONFIG_TYPHOON=m 1.799 +CONFIG_LANCE=m 1.800 +CONFIG_NET_VENDOR_SMC=y 1.801 +CONFIG_WD80x3=m 1.802 +CONFIG_ULTRA=m 1.803 +CONFIG_SMC9194=m 1.804 +CONFIG_NET_VENDOR_RACAL=y 1.805 +CONFIG_NI52=m 1.806 +CONFIG_NI65=m 1.807 +CONFIG_NET_TULIP=y 1.808 +# CONFIG_DE2104X is not set 1.809 +CONFIG_TULIP=m 1.810 +# CONFIG_TULIP_MWI is not set 1.811 +# CONFIG_TULIP_MMIO is not set 1.812 +# CONFIG_TULIP_NAPI is not set 1.813 +CONFIG_DE4X5=y 1.814 +CONFIG_WINBOND_840=y 1.815 +CONFIG_DM9102=y 1.816 +CONFIG_ULI526X=m 1.817 +CONFIG_PCMCIA_XIRCOM=y 1.818 +# CONFIG_AT1700 is not set 1.819 +CONFIG_DEPCA=m 1.820 +CONFIG_HP100=m 1.821 +CONFIG_NET_ISA=y 1.822 +CONFIG_E2100=m 1.823 +CONFIG_EWRK3=m 1.824 +CONFIG_EEXPRESS=m 1.825 +CONFIG_EEXPRESS_PRO=m 1.826 +CONFIG_HPLAN_PLUS=m 1.827 +CONFIG_HPLAN=m 1.828 +CONFIG_LP486E=m 1.829 +CONFIG_ETH16I=m 1.830 +CONFIG_NE2000=m 1.831 +# CONFIG_ZNET is not set 1.832 +# CONFIG_SEEQ8005 is not set 1.833 +# CONFIG_IBM_NEW_EMAC_ZMII is not set 1.834 +# CONFIG_IBM_NEW_EMAC_RGMII is not set 1.835 +# CONFIG_IBM_NEW_EMAC_TAH is not set 1.836 +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 1.837 +CONFIG_NET_PCI=y 1.838 +CONFIG_PCNET32=y 1.839 +# CONFIG_PCNET32_NAPI is not set 1.840 +CONFIG_AMD8111_ETH=m 1.841 +# CONFIG_AMD8111E_NAPI is not set 1.842 +CONFIG_ADAPTEC_STARFIRE=m 1.843 +# CONFIG_ADAPTEC_STARFIRE_NAPI is not set 1.844 +# CONFIG_AC3200 is not set 1.845 +CONFIG_APRICOT=m 1.846 +CONFIG_B44=y 1.847 +CONFIG_B44_PCI_AUTOSELECT=y 1.848 +CONFIG_B44_PCICORE_AUTOSELECT=y 1.849 +CONFIG_B44_PCI=y 1.850 +CONFIG_FORCEDETH=y 1.851 +# CONFIG_FORCEDETH_NAPI is not set 1.852 +CONFIG_CS89x0=m 1.853 +CONFIG_EEPRO100=y 1.854 +CONFIG_E100=y 1.855 +CONFIG_FEALNX=m 1.856 +CONFIG_NATSEMI=y 1.857 +CONFIG_NE2K_PCI=y 1.858 +# CONFIG_8139CP is not set 1.859 +CONFIG_8139TOO=y 1.860 +# CONFIG_8139TOO_PIO is not set 1.861 +CONFIG_8139TOO_TUNE_TWISTER=y 1.862 +CONFIG_8139TOO_8129=y 1.863 +# CONFIG_8139_OLD_RX_RESET is not set 1.864 +CONFIG_SIS900=y 1.865 +CONFIG_EPIC100=y 1.866 +CONFIG_SUNDANCE=y 1.867 +# CONFIG_SUNDANCE_MMIO is not set 1.868 +CONFIG_TLAN=y 1.869 +CONFIG_VIA_RHINE=y 1.870 +CONFIG_VIA_RHINE_MMIO=y 1.871 +# CONFIG_VIA_RHINE_NAPI is not set 1.872 +# CONFIG_SC92031 is not set 1.873 +CONFIG_NETDEV_1000=y 1.874 +# CONFIG_ACENIC is not set 1.875 +CONFIG_DL2K=m 1.876 +CONFIG_E1000=m 1.877 +# CONFIG_E1000_NAPI is not set 1.878 +# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 1.879 +# CONFIG_E1000E is not set 1.880 +# CONFIG_IP1000 is not set 1.881 +# CONFIG_NS83820 is not set 1.882 +# CONFIG_HAMACHI is not set 1.883 +# CONFIG_YELLOWFIN is not set 1.884 +CONFIG_R8169=y 1.885 +# CONFIG_R8169_NAPI is not set 1.886 +CONFIG_SIS190=m 1.887 +# CONFIG_SKGE is not set 1.888 +# CONFIG_SKY2 is not set 1.889 +# CONFIG_SK98LIN is not set 1.890 +CONFIG_VIA_VELOCITY=m 1.891 +CONFIG_TIGON3=m 1.892 +CONFIG_BNX2=m 1.893 +# CONFIG_QLA3XXX is not set 1.894 +# CONFIG_ATL1 is not set 1.895 +# CONFIG_NETDEV_10000 is not set 1.896 +# CONFIG_TR is not set 1.897 + 1.898 +# 1.899 +# Wireless LAN 1.900 +# 1.901 +# CONFIG_WLAN_PRE80211 is not set 1.902 +# CONFIG_WLAN_80211 is not set 1.903 + 1.904 +# 1.905 +# USB Network Adapters 1.906 +# 1.907 +# CONFIG_USB_CATC is not set 1.908 +# CONFIG_USB_KAWETH is not set 1.909 +# CONFIG_USB_PEGASUS is not set 1.910 +# CONFIG_USB_RTL8150 is not set 1.911 +# CONFIG_USB_USBNET is not set 1.912 +CONFIG_NET_PCMCIA=y 1.913 +CONFIG_PCMCIA_3C589=m 1.914 +CONFIG_PCMCIA_3C574=m 1.915 +CONFIG_PCMCIA_FMVJ18X=m 1.916 +CONFIG_PCMCIA_PCNET=m 1.917 +CONFIG_PCMCIA_NMCLAN=m 1.918 +CONFIG_PCMCIA_SMC91C92=m 1.919 +CONFIG_PCMCIA_XIRC2PS=m 1.920 +CONFIG_PCMCIA_AXNET=m 1.921 +# CONFIG_WAN is not set 1.922 +# CONFIG_FDDI is not set 1.923 +# CONFIG_HIPPI is not set 1.924 +CONFIG_PPP=y 1.925 +# CONFIG_PPP_MULTILINK is not set 1.926 +# CONFIG_PPP_FILTER is not set 1.927 +CONFIG_PPP_ASYNC=y 1.928 +# CONFIG_PPP_SYNC_TTY is not set 1.929 +# CONFIG_PPP_DEFLATE is not set 1.930 +# CONFIG_PPP_BSDCOMP is not set 1.931 +# CONFIG_PPP_MPPE is not set 1.932 +CONFIG_PPPOE=y 1.933 +# CONFIG_PPPOL2TP is not set 1.934 +# CONFIG_SLIP is not set 1.935 +CONFIG_SLHC=y 1.936 +# CONFIG_NET_FC is not set 1.937 +# CONFIG_SHAPER is not set 1.938 +# CONFIG_NETCONSOLE is not set 1.939 +# CONFIG_NETPOLL is not set 1.940 +# CONFIG_NET_POLL_CONTROLLER is not set 1.941 +# CONFIG_ISDN is not set 1.942 +# CONFIG_PHONE is not set 1.943 + 1.944 +# 1.945 +# Input device support 1.946 +# 1.947 +CONFIG_INPUT=y 1.948 +# CONFIG_INPUT_FF_MEMLESS is not set 1.949 +# CONFIG_INPUT_POLLDEV is not set 1.950 + 1.951 +# 1.952 +# Userland interfaces 1.953 +# 1.954 +CONFIG_INPUT_MOUSEDEV=y 1.955 +CONFIG_INPUT_MOUSEDEV_PSAUX=y 1.956 +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 1.957 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 1.958 +# CONFIG_INPUT_JOYDEV is not set 1.959 +CONFIG_INPUT_EVDEV=y 1.960 +# CONFIG_INPUT_EVBUG is not set 1.961 + 1.962 +# 1.963 +# Input Device Drivers 1.964 +# 1.965 +CONFIG_INPUT_KEYBOARD=y 1.966 +CONFIG_KEYBOARD_ATKBD=y 1.967 +# CONFIG_KEYBOARD_SUNKBD is not set 1.968 +# CONFIG_KEYBOARD_LKKBD is not set 1.969 +# CONFIG_KEYBOARD_XTKBD is not set 1.970 +# CONFIG_KEYBOARD_NEWTON is not set 1.971 +# CONFIG_KEYBOARD_STOWAWAY is not set 1.972 +CONFIG_INPUT_MOUSE=y 1.973 +CONFIG_MOUSE_PS2=y 1.974 +CONFIG_MOUSE_PS2_ALPS=y 1.975 +CONFIG_MOUSE_PS2_LOGIPS2PP=y 1.976 +CONFIG_MOUSE_PS2_SYNAPTICS=y 1.977 +CONFIG_MOUSE_PS2_LIFEBOOK=y 1.978 +CONFIG_MOUSE_PS2_TRACKPOINT=y 1.979 +# CONFIG_MOUSE_PS2_TOUCHKIT is not set 1.980 +CONFIG_MOUSE_SERIAL=y 1.981 +# CONFIG_MOUSE_APPLETOUCH is not set 1.982 +CONFIG_MOUSE_INPORT=m 1.983 +# CONFIG_MOUSE_ATIXL is not set 1.984 +CONFIG_MOUSE_LOGIBM=m 1.985 +CONFIG_MOUSE_PC110PAD=m 1.986 +# CONFIG_MOUSE_VSXXXAA is not set 1.987 +# CONFIG_INPUT_JOYSTICK is not set 1.988 +# CONFIG_INPUT_TABLET is not set 1.989 +# CONFIG_INPUT_TOUCHSCREEN is not set 1.990 +CONFIG_INPUT_MISC=y 1.991 +CONFIG_INPUT_PCSPKR=y 1.992 +# CONFIG_INPUT_WISTRON_BTNS is not set 1.993 +# CONFIG_INPUT_ATI_REMOTE is not set 1.994 +# CONFIG_INPUT_ATI_REMOTE2 is not set 1.995 +# CONFIG_INPUT_KEYSPAN_REMOTE is not set 1.996 +# CONFIG_INPUT_POWERMATE is not set 1.997 +# CONFIG_INPUT_YEALINK is not set 1.998 +# CONFIG_INPUT_UINPUT is not set 1.999 + 1.1000 +# 1.1001 +# Hardware I/O ports 1.1002 +# 1.1003 +CONFIG_SERIO=y 1.1004 +CONFIG_SERIO_I8042=y 1.1005 +CONFIG_SERIO_SERPORT=y 1.1006 +# CONFIG_SERIO_CT82C710 is not set 1.1007 +CONFIG_SERIO_PCIPS2=y 1.1008 +CONFIG_SERIO_LIBPS2=y 1.1009 +CONFIG_SERIO_RAW=y 1.1010 +# CONFIG_GAMEPORT is not set 1.1011 + 1.1012 +# 1.1013 +# Character devices 1.1014 +# 1.1015 +CONFIG_VT=y 1.1016 +CONFIG_VT_CONSOLE=y 1.1017 +CONFIG_HW_CONSOLE=y 1.1018 +# CONFIG_VT_HW_CONSOLE_BINDING is not set 1.1019 +# CONFIG_SERIAL_NONSTANDARD is not set 1.1020 + 1.1021 +# 1.1022 +# Serial drivers 1.1023 +# 1.1024 +CONFIG_SERIAL_8250=y 1.1025 +# CONFIG_SERIAL_8250_CONSOLE is not set 1.1026 +CONFIG_FIX_EARLYCON_MEM=y 1.1027 +CONFIG_SERIAL_8250_PCI=y 1.1028 +CONFIG_SERIAL_8250_PNP=y 1.1029 +# CONFIG_SERIAL_8250_CS is not set 1.1030 +CONFIG_SERIAL_8250_NR_UARTS=4 1.1031 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 1.1032 +# CONFIG_SERIAL_8250_EXTENDED is not set 1.1033 + 1.1034 +# 1.1035 +# Non-8250 serial port support 1.1036 +# 1.1037 +CONFIG_SERIAL_CORE=y 1.1038 +# CONFIG_SERIAL_JSM is not set 1.1039 +CONFIG_UNIX98_PTYS=y 1.1040 +# CONFIG_LEGACY_PTYS is not set 1.1041 +# CONFIG_IPMI_HANDLER is not set 1.1042 +CONFIG_HW_RANDOM=y 1.1043 +CONFIG_HW_RANDOM_INTEL=y 1.1044 +CONFIG_HW_RANDOM_AMD=y 1.1045 +CONFIG_HW_RANDOM_GEODE=y 1.1046 +CONFIG_HW_RANDOM_VIA=y 1.1047 +CONFIG_NVRAM=y 1.1048 +CONFIG_RTC=m 1.1049 +CONFIG_GEN_RTC=m 1.1050 +# CONFIG_GEN_RTC_X is not set 1.1051 +# CONFIG_DTLK is not set 1.1052 +# CONFIG_R3964 is not set 1.1053 +# CONFIG_APPLICOM is not set 1.1054 +# CONFIG_SONYPI is not set 1.1055 + 1.1056 +# 1.1057 +# PCMCIA character devices 1.1058 +# 1.1059 +# CONFIG_SYNCLINK_CS is not set 1.1060 +# CONFIG_CARDMAN_4000 is not set 1.1061 +# CONFIG_CARDMAN_4040 is not set 1.1062 +# CONFIG_MWAVE is not set 1.1063 +# CONFIG_PC8736x_GPIO is not set 1.1064 +# CONFIG_NSC_GPIO is not set 1.1065 +# CONFIG_CS5535_GPIO is not set 1.1066 +# CONFIG_RAW_DRIVER is not set 1.1067 +# CONFIG_HANGCHECK_TIMER is not set 1.1068 +# CONFIG_TCG_TPM is not set 1.1069 +# CONFIG_TELCLOCK is not set 1.1070 +CONFIG_DEVPORT=y 1.1071 +# CONFIG_I2C is not set 1.1072 + 1.1073 +# 1.1074 +# SPI support 1.1075 +# 1.1076 +# CONFIG_SPI is not set 1.1077 +# CONFIG_SPI_MASTER is not set 1.1078 +# CONFIG_W1 is not set 1.1079 +# CONFIG_POWER_SUPPLY is not set 1.1080 +# CONFIG_HWMON is not set 1.1081 +# CONFIG_WATCHDOG is not set 1.1082 + 1.1083 +# 1.1084 +# Sonics Silicon Backplane 1.1085 +# 1.1086 +CONFIG_SSB_POSSIBLE=y 1.1087 +CONFIG_SSB=y 1.1088 +CONFIG_SSB_PCIHOST_POSSIBLE=y 1.1089 +CONFIG_SSB_PCIHOST=y 1.1090 +# CONFIG_SSB_DEBUG is not set 1.1091 +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y 1.1092 +CONFIG_SSB_DRIVER_PCICORE=y 1.1093 + 1.1094 +# 1.1095 +# Multifunction device drivers 1.1096 +# 1.1097 +# CONFIG_MFD_SM501 is not set 1.1098 + 1.1099 +# 1.1100 +# Multimedia devices 1.1101 +# 1.1102 +# CONFIG_VIDEO_DEV is not set 1.1103 +# CONFIG_DVB_CORE is not set 1.1104 +CONFIG_DAB=y 1.1105 +# CONFIG_USB_DABUSB is not set 1.1106 + 1.1107 +# 1.1108 +# Graphics support 1.1109 +# 1.1110 +# CONFIG_AGP is not set 1.1111 +# CONFIG_DRM is not set 1.1112 +# CONFIG_VGASTATE is not set 1.1113 +# CONFIG_VIDEO_OUTPUT_CONTROL is not set 1.1114 +CONFIG_FB=y 1.1115 +# CONFIG_FIRMWARE_EDID is not set 1.1116 +# CONFIG_FB_DDC is not set 1.1117 +CONFIG_FB_CFB_FILLRECT=y 1.1118 +CONFIG_FB_CFB_COPYAREA=y 1.1119 +CONFIG_FB_CFB_IMAGEBLIT=y 1.1120 +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 1.1121 +# CONFIG_FB_SYS_FILLRECT is not set 1.1122 +# CONFIG_FB_SYS_COPYAREA is not set 1.1123 +# CONFIG_FB_SYS_IMAGEBLIT is not set 1.1124 +# CONFIG_FB_SYS_FOPS is not set 1.1125 +CONFIG_FB_DEFERRED_IO=y 1.1126 +# CONFIG_FB_SVGALIB is not set 1.1127 +# CONFIG_FB_MACMODES is not set 1.1128 +# CONFIG_FB_BACKLIGHT is not set 1.1129 +# CONFIG_FB_MODE_HELPERS is not set 1.1130 +# CONFIG_FB_TILEBLITTING is not set 1.1131 + 1.1132 +# 1.1133 +# Frame buffer hardware drivers 1.1134 +# 1.1135 +# CONFIG_FB_CIRRUS is not set 1.1136 +# CONFIG_FB_PM2 is not set 1.1137 +# CONFIG_FB_CYBER2000 is not set 1.1138 +# CONFIG_FB_ARC is not set 1.1139 +# CONFIG_FB_ASILIANT is not set 1.1140 +# CONFIG_FB_IMSTT is not set 1.1141 +# CONFIG_FB_VGA16 is not set 1.1142 +CONFIG_FB_VESA=y 1.1143 +# CONFIG_FB_EFI is not set 1.1144 +# CONFIG_FB_HECUBA is not set 1.1145 +# CONFIG_FB_HGA is not set 1.1146 +# CONFIG_FB_S1D13XXX is not set 1.1147 +# CONFIG_FB_NVIDIA is not set 1.1148 +# CONFIG_FB_RIVA is not set 1.1149 +# CONFIG_FB_I810 is not set 1.1150 +# CONFIG_FB_LE80578 is not set 1.1151 +# CONFIG_FB_INTEL is not set 1.1152 +# CONFIG_FB_MATROX is not set 1.1153 +# CONFIG_FB_RADEON is not set 1.1154 +# CONFIG_FB_ATY128 is not set 1.1155 +# CONFIG_FB_ATY is not set 1.1156 +# CONFIG_FB_S3 is not set 1.1157 +# CONFIG_FB_SAVAGE is not set 1.1158 +# CONFIG_FB_SIS is not set 1.1159 +# CONFIG_FB_NEOMAGIC is not set 1.1160 +# CONFIG_FB_KYRO is not set 1.1161 +# CONFIG_FB_3DFX is not set 1.1162 +# CONFIG_FB_VOODOO1 is not set 1.1163 +# CONFIG_FB_VT8623 is not set 1.1164 +# CONFIG_FB_CYBLA is not set 1.1165 +# CONFIG_FB_TRIDENT is not set 1.1166 +# CONFIG_FB_ARK is not set 1.1167 +# CONFIG_FB_PM3 is not set 1.1168 +# CONFIG_FB_GEODE is not set 1.1169 +# CONFIG_FB_VIRTUAL is not set 1.1170 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1.1171 + 1.1172 +# 1.1173 +# Display device support 1.1174 +# 1.1175 +# CONFIG_DISPLAY_SUPPORT is not set 1.1176 + 1.1177 +# 1.1178 +# Console display driver support 1.1179 +# 1.1180 +CONFIG_VGA_CONSOLE=y 1.1181 +# CONFIG_VGACON_SOFT_SCROLLBACK is not set 1.1182 +CONFIG_VIDEO_SELECT=y 1.1183 +# CONFIG_MDA_CONSOLE is not set 1.1184 +CONFIG_DUMMY_CONSOLE=y 1.1185 +CONFIG_FRAMEBUFFER_CONSOLE=y 1.1186 +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set 1.1187 +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 1.1188 +# CONFIG_FONTS is not set 1.1189 +CONFIG_FONT_8x8=y 1.1190 +CONFIG_FONT_8x16=y 1.1191 +CONFIG_LOGO=y 1.1192 +CONFIG_LOGO_LINUX_MONO=y 1.1193 +CONFIG_LOGO_LINUX_VGA16=y 1.1194 +CONFIG_LOGO_LINUX_CLUT224=y 1.1195 + 1.1196 +# 1.1197 +# Sound 1.1198 +# 1.1199 +CONFIG_SOUND=m 1.1200 + 1.1201 +# 1.1202 +# Advanced Linux Sound Architecture 1.1203 +# 1.1204 +CONFIG_SND=m 1.1205 +CONFIG_SND_TIMER=m 1.1206 +CONFIG_SND_PCM=m 1.1207 +CONFIG_SND_HWDEP=m 1.1208 +CONFIG_SND_RAWMIDI=m 1.1209 +CONFIG_SND_SEQUENCER=m 1.1210 +# CONFIG_SND_SEQ_DUMMY is not set 1.1211 +CONFIG_SND_OSSEMUL=y 1.1212 +CONFIG_SND_MIXER_OSS=m 1.1213 +CONFIG_SND_PCM_OSS=m 1.1214 +CONFIG_SND_PCM_OSS_PLUGINS=y 1.1215 +CONFIG_SND_SEQUENCER_OSS=y 1.1216 +CONFIG_SND_RTCTIMER=m 1.1217 +CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y 1.1218 +# CONFIG_SND_DYNAMIC_MINORS is not set 1.1219 +CONFIG_SND_SUPPORT_OLD_API=y 1.1220 +# CONFIG_SND_VERBOSE_PROCFS is not set 1.1221 +# CONFIG_SND_VERBOSE_PRINTK is not set 1.1222 +# CONFIG_SND_DEBUG is not set 1.1223 + 1.1224 +# 1.1225 +# Generic devices 1.1226 +# 1.1227 +CONFIG_SND_MPU401_UART=m 1.1228 +CONFIG_SND_OPL3_LIB=m 1.1229 +CONFIG_SND_OPL4_LIB=m 1.1230 +CONFIG_SND_VX_LIB=m 1.1231 +CONFIG_SND_AC97_CODEC=m 1.1232 +# CONFIG_SND_DUMMY is not set 1.1233 +# CONFIG_SND_VIRMIDI is not set 1.1234 +# CONFIG_SND_MTPAV is not set 1.1235 +# CONFIG_SND_SERIAL_U16550 is not set 1.1236 +# CONFIG_SND_MPU401 is not set 1.1237 +CONFIG_SND_AD1848_LIB=m 1.1238 +CONFIG_SND_CS4231_LIB=m 1.1239 +CONFIG_SND_SB_COMMON=m 1.1240 +CONFIG_SND_SB8_DSP=m 1.1241 +CONFIG_SND_SB16_DSP=m 1.1242 + 1.1243 +# 1.1244 +# ISA devices 1.1245 +# 1.1246 +CONFIG_SND_ADLIB=m 1.1247 +CONFIG_SND_AD1816A=m 1.1248 +CONFIG_SND_AD1848=m 1.1249 +CONFIG_SND_ALS100=m 1.1250 +CONFIG_SND_AZT2320=m 1.1251 +CONFIG_SND_CMI8330=m 1.1252 +CONFIG_SND_CS4231=m 1.1253 +CONFIG_SND_CS4232=m 1.1254 +CONFIG_SND_CS4236=m 1.1255 +CONFIG_SND_DT019X=m 1.1256 +CONFIG_SND_ES968=m 1.1257 +CONFIG_SND_ES1688=m 1.1258 +CONFIG_SND_ES18XX=m 1.1259 +# CONFIG_SND_SC6000 is not set 1.1260 +CONFIG_SND_GUS_SYNTH=m 1.1261 +CONFIG_SND_GUSCLASSIC=m 1.1262 +CONFIG_SND_GUSEXTREME=m 1.1263 +CONFIG_SND_GUSMAX=m 1.1264 +CONFIG_SND_INTERWAVE=m 1.1265 +CONFIG_SND_INTERWAVE_STB=m 1.1266 +CONFIG_SND_OPL3SA2=m 1.1267 +CONFIG_SND_OPTI92X_AD1848=m 1.1268 +CONFIG_SND_OPTI92X_CS4231=m 1.1269 +CONFIG_SND_OPTI93X=m 1.1270 +CONFIG_SND_MIRO=m 1.1271 +CONFIG_SND_SB8=m 1.1272 +CONFIG_SND_SB16=m 1.1273 +CONFIG_SND_SBAWE=m 1.1274 +# CONFIG_SND_SB16_CSP is not set 1.1275 +CONFIG_SND_SGALAXY=m 1.1276 +CONFIG_SND_SSCAPE=m 1.1277 +CONFIG_SND_WAVEFRONT=m 1.1278 +CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL=y 1.1279 + 1.1280 +# 1.1281 +# PCI devices 1.1282 +# 1.1283 +CONFIG_SND_AD1889=m 1.1284 +CONFIG_SND_ALS300=m 1.1285 +CONFIG_SND_ALS4000=m 1.1286 +CONFIG_SND_ALI5451=m 1.1287 +CONFIG_SND_ATIIXP=m 1.1288 +CONFIG_SND_ATIIXP_MODEM=m 1.1289 +CONFIG_SND_AU8810=m 1.1290 +CONFIG_SND_AU8820=m 1.1291 +CONFIG_SND_AU8830=m 1.1292 +CONFIG_SND_AZT3328=m 1.1293 +CONFIG_SND_BT87X=m 1.1294 +# CONFIG_SND_BT87X_OVERCLOCK is not set 1.1295 +CONFIG_SND_CA0106=m 1.1296 +CONFIG_SND_CMIPCI=m 1.1297 +CONFIG_SND_CS4281=m 1.1298 +CONFIG_SND_CS46XX=m 1.1299 +CONFIG_SND_CS46XX_NEW_DSP=y 1.1300 +# CONFIG_SND_CS5530 is not set 1.1301 +CONFIG_SND_CS5535AUDIO=m 1.1302 +CONFIG_SND_DARLA20=m 1.1303 +CONFIG_SND_GINA20=m 1.1304 +CONFIG_SND_LAYLA20=m 1.1305 +CONFIG_SND_DARLA24=m 1.1306 +CONFIG_SND_GINA24=m 1.1307 +CONFIG_SND_LAYLA24=m 1.1308 +CONFIG_SND_MONA=m 1.1309 +CONFIG_SND_MIA=m 1.1310 +CONFIG_SND_ECHO3G=m 1.1311 +CONFIG_SND_INDIGO=m 1.1312 +CONFIG_SND_INDIGOIO=m 1.1313 +CONFIG_SND_INDIGODJ=m 1.1314 +CONFIG_SND_EMU10K1=m 1.1315 +CONFIG_SND_EMU10K1X=m 1.1316 +CONFIG_SND_ENS1370=m 1.1317 +CONFIG_SND_ENS1371=m 1.1318 +CONFIG_SND_ES1938=m 1.1319 +CONFIG_SND_ES1968=m 1.1320 +CONFIG_SND_FM801=m 1.1321 +# CONFIG_SND_FM801_TEA575X_BOOL is not set 1.1322 +CONFIG_SND_HDA_INTEL=m 1.1323 +# CONFIG_SND_HDA_HWDEP is not set 1.1324 +CONFIG_SND_HDA_CODEC_REALTEK=y 1.1325 +CONFIG_SND_HDA_CODEC_ANALOG=y 1.1326 +CONFIG_SND_HDA_CODEC_SIGMATEL=y 1.1327 +CONFIG_SND_HDA_CODEC_VIA=y 1.1328 +CONFIG_SND_HDA_CODEC_ATIHDMI=y 1.1329 +CONFIG_SND_HDA_CODEC_CONEXANT=y 1.1330 +CONFIG_SND_HDA_CODEC_CMEDIA=y 1.1331 +CONFIG_SND_HDA_CODEC_SI3054=y 1.1332 +CONFIG_SND_HDA_GENERIC=y 1.1333 +# CONFIG_SND_HDA_POWER_SAVE is not set 1.1334 +CONFIG_SND_HDSP=m 1.1335 +CONFIG_SND_HDSPM=m 1.1336 +CONFIG_SND_ICE1712=m 1.1337 +CONFIG_SND_ICE1724=m 1.1338 +CONFIG_SND_INTEL8X0=m 1.1339 +CONFIG_SND_INTEL8X0M=m 1.1340 +CONFIG_SND_KORG1212=m 1.1341 +CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL=y 1.1342 +CONFIG_SND_MAESTRO3=m 1.1343 +CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL=y 1.1344 +CONFIG_SND_MIXART=m 1.1345 +CONFIG_SND_NM256=m 1.1346 +CONFIG_SND_PCXHR=m 1.1347 +CONFIG_SND_RIPTIDE=m 1.1348 +CONFIG_SND_RME32=m 1.1349 +CONFIG_SND_RME96=m 1.1350 +CONFIG_SND_RME9652=m 1.1351 +CONFIG_SND_SONICVIBES=m 1.1352 +CONFIG_SND_TRIDENT=m 1.1353 +CONFIG_SND_VIA82XX=m 1.1354 +CONFIG_SND_VIA82XX_MODEM=m 1.1355 +CONFIG_SND_VX222=m 1.1356 +CONFIG_SND_YMFPCI=m 1.1357 +CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y 1.1358 +# CONFIG_SND_AC97_POWER_SAVE is not set 1.1359 + 1.1360 +# 1.1361 +# USB devices 1.1362 +# 1.1363 +# CONFIG_SND_USB_AUDIO is not set 1.1364 +# CONFIG_SND_USB_USX2Y is not set 1.1365 +# CONFIG_SND_USB_CAIAQ is not set 1.1366 + 1.1367 +# 1.1368 +# PCMCIA devices 1.1369 +# 1.1370 +# CONFIG_SND_VXPOCKET is not set 1.1371 +# CONFIG_SND_PDAUDIOCF is not set 1.1372 + 1.1373 +# 1.1374 +# System on Chip audio support 1.1375 +# 1.1376 +# CONFIG_SND_SOC is not set 1.1377 + 1.1378 +# 1.1379 +# SoC Audio support for SuperH 1.1380 +# 1.1381 + 1.1382 +# 1.1383 +# Open Sound System 1.1384 +# 1.1385 +# CONFIG_SOUND_PRIME is not set 1.1386 +CONFIG_AC97_BUS=m 1.1387 +CONFIG_HID_SUPPORT=y 1.1388 +CONFIG_HID=y 1.1389 +# CONFIG_HID_DEBUG is not set 1.1390 +# CONFIG_HIDRAW is not set 1.1391 + 1.1392 +# 1.1393 +# USB Input Devices 1.1394 +# 1.1395 +CONFIG_USB_HID=y 1.1396 +# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1.1397 +# CONFIG_HID_FF is not set 1.1398 +CONFIG_USB_HIDDEV=y 1.1399 +CONFIG_USB_SUPPORT=y 1.1400 +CONFIG_USB_ARCH_HAS_HCD=y 1.1401 +CONFIG_USB_ARCH_HAS_OHCI=y 1.1402 +CONFIG_USB_ARCH_HAS_EHCI=y 1.1403 +CONFIG_USB=y 1.1404 +# CONFIG_USB_DEBUG is not set 1.1405 + 1.1406 +# 1.1407 +# Miscellaneous USB options 1.1408 +# 1.1409 +CONFIG_USB_DEVICEFS=y 1.1410 +CONFIG_USB_DEVICE_CLASS=y 1.1411 +# CONFIG_USB_DYNAMIC_MINORS is not set 1.1412 +# CONFIG_USB_OTG is not set 1.1413 + 1.1414 +# 1.1415 +# USB Host Controller Drivers 1.1416 +# 1.1417 +CONFIG_USB_EHCI_HCD=y 1.1418 +# CONFIG_USB_EHCI_SPLIT_ISO is not set 1.1419 +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1.1420 +# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1.1421 +# CONFIG_USB_ISP116X_HCD is not set 1.1422 +CONFIG_USB_OHCI_HCD=m 1.1423 +# CONFIG_USB_OHCI_HCD_SSB is not set 1.1424 +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1.1425 +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 1.1426 +CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1.1427 +CONFIG_USB_UHCI_HCD=y 1.1428 +# CONFIG_USB_SL811_HCD is not set 1.1429 +# CONFIG_USB_R8A66597_HCD is not set 1.1430 + 1.1431 +# 1.1432 +# USB Device Class drivers 1.1433 +# 1.1434 +# CONFIG_USB_ACM is not set 1.1435 +# CONFIG_USB_PRINTER is not set 1.1436 + 1.1437 +# 1.1438 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1.1439 +# 1.1440 + 1.1441 +# 1.1442 +# may also be needed; see USB_STORAGE Help for more information 1.1443 +# 1.1444 +CONFIG_USB_STORAGE=y 1.1445 +# CONFIG_USB_STORAGE_DEBUG is not set 1.1446 +# CONFIG_USB_STORAGE_DATAFAB is not set 1.1447 +# CONFIG_USB_STORAGE_FREECOM is not set 1.1448 +# CONFIG_USB_STORAGE_ISD200 is not set 1.1449 +# CONFIG_USB_STORAGE_DPCM is not set 1.1450 +# CONFIG_USB_STORAGE_USBAT is not set 1.1451 +# CONFIG_USB_STORAGE_SDDR09 is not set 1.1452 +# CONFIG_USB_STORAGE_SDDR55 is not set 1.1453 +# CONFIG_USB_STORAGE_JUMPSHOT is not set 1.1454 +# CONFIG_USB_STORAGE_ALAUDA is not set 1.1455 +# CONFIG_USB_STORAGE_ONETOUCH is not set 1.1456 +# CONFIG_USB_STORAGE_KARMA is not set 1.1457 +# CONFIG_USB_LIBUSUAL is not set 1.1458 + 1.1459 +# 1.1460 +# USB Imaging devices 1.1461 +# 1.1462 +# CONFIG_USB_MDC800 is not set 1.1463 +# CONFIG_USB_MICROTEK is not set 1.1464 +# CONFIG_USB_MON is not set 1.1465 + 1.1466 +# 1.1467 +# USB port drivers 1.1468 +# 1.1469 + 1.1470 +# 1.1471 +# USB Serial Converter support 1.1472 +# 1.1473 +# CONFIG_USB_SERIAL is not set 1.1474 + 1.1475 +# 1.1476 +# USB Miscellaneous drivers 1.1477 +# 1.1478 +# CONFIG_USB_EMI62 is not set 1.1479 +# CONFIG_USB_EMI26 is not set 1.1480 +# CONFIG_USB_ADUTUX is not set 1.1481 +# CONFIG_USB_AUERSWALD is not set 1.1482 +# CONFIG_USB_RIO500 is not set 1.1483 +# CONFIG_USB_LEGOTOWER is not set 1.1484 +# CONFIG_USB_LCD is not set 1.1485 +# CONFIG_USB_BERRY_CHARGE is not set 1.1486 +# CONFIG_USB_LED is not set 1.1487 +# CONFIG_USB_CYPRESS_CY7C63 is not set 1.1488 +# CONFIG_USB_CYTHERM is not set 1.1489 +# CONFIG_USB_PHIDGET is not set 1.1490 +# CONFIG_USB_IDMOUSE is not set 1.1491 +# CONFIG_USB_FTDI_ELAN is not set 1.1492 +# CONFIG_USB_APPLEDISPLAY is not set 1.1493 +# CONFIG_USB_SISUSBVGA is not set 1.1494 +# CONFIG_USB_LD is not set 1.1495 +# CONFIG_USB_TRANCEVIBRATOR is not set 1.1496 +# CONFIG_USB_IOWARRIOR is not set 1.1497 +# CONFIG_USB_TEST is not set 1.1498 + 1.1499 +# 1.1500 +# USB DSL modem support 1.1501 +# 1.1502 + 1.1503 +# 1.1504 +# USB Gadget Support 1.1505 +# 1.1506 +# CONFIG_USB_GADGET is not set 1.1507 +# CONFIG_MMC is not set 1.1508 +# CONFIG_NEW_LEDS is not set 1.1509 +# CONFIG_INFINIBAND is not set 1.1510 +# CONFIG_EDAC is not set 1.1511 +# CONFIG_RTC_CLASS is not set 1.1512 +# CONFIG_DMADEVICES is not set 1.1513 +CONFIG_VIRTUALIZATION=y 1.1514 +# CONFIG_KVM is not set 1.1515 +# CONFIG_LGUEST is not set 1.1516 + 1.1517 +# 1.1518 +# Userspace I/O 1.1519 +# 1.1520 +# CONFIG_UIO is not set 1.1521 + 1.1522 +# 1.1523 +# Firmware Drivers 1.1524 +# 1.1525 +# CONFIG_EDD is not set 1.1526 +# CONFIG_DELL_RBU is not set 1.1527 +# CONFIG_DCDBAS is not set 1.1528 +CONFIG_DMIID=y 1.1529 + 1.1530 +# 1.1531 +# File systems 1.1532 +# 1.1533 +CONFIG_EXT2_FS=y 1.1534 +# CONFIG_EXT2_FS_XATTR is not set 1.1535 +# CONFIG_EXT2_FS_XIP is not set 1.1536 +CONFIG_EXT3_FS=y 1.1537 +# CONFIG_EXT3_FS_XATTR is not set 1.1538 +# CONFIG_EXT4DEV_FS is not set 1.1539 +CONFIG_JBD=y 1.1540 +# CONFIG_REISERFS_FS is not set 1.1541 +# CONFIG_JFS_FS is not set 1.1542 +# CONFIG_FS_POSIX_ACL is not set 1.1543 +# CONFIG_XFS_FS is not set 1.1544 +# CONFIG_GFS2_FS is not set 1.1545 +# CONFIG_OCFS2_FS is not set 1.1546 +# CONFIG_MINIX_FS is not set 1.1547 +# CONFIG_ROMFS_FS is not set 1.1548 +CONFIG_INOTIFY=y 1.1549 +CONFIG_INOTIFY_USER=y 1.1550 +# CONFIG_QUOTA is not set 1.1551 +CONFIG_DNOTIFY=y 1.1552 +# CONFIG_AUTOFS_FS is not set 1.1553 +# CONFIG_AUTOFS4_FS is not set 1.1554 +CONFIG_FUSE_FS=y 1.1555 + 1.1556 +# 1.1557 +# CD-ROM/DVD Filesystems 1.1558 +# 1.1559 +CONFIG_ISO9660_FS=y 1.1560 +CONFIG_JOLIET=y 1.1561 +# CONFIG_ZISOFS is not set 1.1562 +# CONFIG_UDF_FS is not set 1.1563 + 1.1564 +# 1.1565 +# DOS/FAT/NT Filesystems 1.1566 +# 1.1567 +CONFIG_FAT_FS=m 1.1568 +CONFIG_MSDOS_FS=m 1.1569 +CONFIG_VFAT_FS=m 1.1570 +CONFIG_FAT_DEFAULT_CODEPAGE=437 1.1571 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 1.1572 +# CONFIG_NTFS_FS is not set 1.1573 + 1.1574 +# 1.1575 +# Pseudo filesystems 1.1576 +# 1.1577 +CONFIG_PROC_FS=y 1.1578 +CONFIG_PROC_KCORE=y 1.1579 +CONFIG_PROC_SYSCTL=y 1.1580 +CONFIG_SYSFS=y 1.1581 +CONFIG_TMPFS=y 1.1582 +# CONFIG_TMPFS_POSIX_ACL is not set 1.1583 +# CONFIG_HUGETLBFS is not set 1.1584 +# CONFIG_HUGETLB_PAGE is not set 1.1585 +# CONFIG_CONFIGFS_FS is not set 1.1586 + 1.1587 +# 1.1588 +# Miscellaneous filesystems 1.1589 +# 1.1590 +# CONFIG_ADFS_FS is not set 1.1591 +# CONFIG_AFFS_FS is not set 1.1592 +# CONFIG_HFS_FS is not set 1.1593 +# CONFIG_HFSPLUS_FS is not set 1.1594 +# CONFIG_BEFS_FS is not set 1.1595 +# CONFIG_BFS_FS is not set 1.1596 +# CONFIG_EFS_FS is not set 1.1597 +CONFIG_CRAMFS=y 1.1598 +# CONFIG_VXFS_FS is not set 1.1599 +# CONFIG_HPFS_FS is not set 1.1600 +# CONFIG_QNX4FS_FS is not set 1.1601 +# CONFIG_SYSV_FS is not set 1.1602 +# CONFIG_UFS_FS is not set 1.1603 +CONFIG_NETWORK_FILESYSTEMS=y 1.1604 +CONFIG_NFS_FS=y 1.1605 +CONFIG_NFS_V3=y 1.1606 +# CONFIG_NFS_V3_ACL is not set 1.1607 +# CONFIG_NFS_V4 is not set 1.1608 +# CONFIG_NFS_DIRECTIO is not set 1.1609 +# CONFIG_NFSD is not set 1.1610 +CONFIG_LOCKD=y 1.1611 +CONFIG_LOCKD_V4=y 1.1612 +CONFIG_NFS_COMMON=y 1.1613 +CONFIG_SUNRPC=y 1.1614 +# CONFIG_SUNRPC_BIND34 is not set 1.1615 +# CONFIG_RPCSEC_GSS_KRB5 is not set 1.1616 +# CONFIG_RPCSEC_GSS_SPKM3 is not set 1.1617 +# CONFIG_SMB_FS is not set 1.1618 +# CONFIG_CIFS is not set 1.1619 +# CONFIG_NCP_FS is not set 1.1620 +# CONFIG_CODA_FS is not set 1.1621 +# CONFIG_AFS_FS is not set 1.1622 + 1.1623 +# 1.1624 +# Partition Types 1.1625 +# 1.1626 +CONFIG_PARTITION_ADVANCED=y 1.1627 +# CONFIG_ACORN_PARTITION is not set 1.1628 +# CONFIG_OSF_PARTITION is not set 1.1629 +# CONFIG_AMIGA_PARTITION is not set 1.1630 +# CONFIG_ATARI_PARTITION is not set 1.1631 +# CONFIG_MAC_PARTITION is not set 1.1632 +CONFIG_MSDOS_PARTITION=y 1.1633 +# CONFIG_BSD_DISKLABEL is not set 1.1634 +# CONFIG_MINIX_SUBPARTITION is not set 1.1635 +# CONFIG_SOLARIS_X86_PARTITION is not set 1.1636 +# CONFIG_UNIXWARE_DISKLABEL is not set 1.1637 +# CONFIG_LDM_PARTITION is not set 1.1638 +# CONFIG_SGI_PARTITION is not set 1.1639 +# CONFIG_ULTRIX_PARTITION is not set 1.1640 +# CONFIG_SUN_PARTITION is not set 1.1641 +# CONFIG_KARMA_PARTITION is not set 1.1642 +# CONFIG_EFI_PARTITION is not set 1.1643 +# CONFIG_SYSV68_PARTITION is not set 1.1644 +CONFIG_NLS=y 1.1645 +CONFIG_NLS_DEFAULT="iso8859-1" 1.1646 +CONFIG_NLS_CODEPAGE_437=y 1.1647 +# CONFIG_NLS_CODEPAGE_737 is not set 1.1648 +# CONFIG_NLS_CODEPAGE_775 is not set 1.1649 +CONFIG_NLS_CODEPAGE_850=y 1.1650 +CONFIG_NLS_CODEPAGE_852=y 1.1651 +# CONFIG_NLS_CODEPAGE_855 is not set 1.1652 +# CONFIG_NLS_CODEPAGE_857 is not set 1.1653 +# CONFIG_NLS_CODEPAGE_860 is not set 1.1654 +# CONFIG_NLS_CODEPAGE_861 is not set 1.1655 +# CONFIG_NLS_CODEPAGE_862 is not set 1.1656 +CONFIG_NLS_CODEPAGE_863=y 1.1657 +# CONFIG_NLS_CODEPAGE_864 is not set 1.1658 +CONFIG_NLS_CODEPAGE_865=y 1.1659 +# CONFIG_NLS_CODEPAGE_866 is not set 1.1660 +# CONFIG_NLS_CODEPAGE_869 is not set 1.1661 +# CONFIG_NLS_CODEPAGE_936 is not set 1.1662 +# CONFIG_NLS_CODEPAGE_950 is not set 1.1663 +# CONFIG_NLS_CODEPAGE_932 is not set 1.1664 +# CONFIG_NLS_CODEPAGE_949 is not set 1.1665 +# CONFIG_NLS_CODEPAGE_874 is not set 1.1666 +# CONFIG_NLS_ISO8859_8 is not set 1.1667 +# CONFIG_NLS_CODEPAGE_1250 is not set 1.1668 +# CONFIG_NLS_CODEPAGE_1251 is not set 1.1669 +CONFIG_NLS_ASCII=y 1.1670 +CONFIG_NLS_ISO8859_1=y 1.1671 +CONFIG_NLS_ISO8859_2=y 1.1672 +# CONFIG_NLS_ISO8859_3 is not set 1.1673 +# CONFIG_NLS_ISO8859_4 is not set 1.1674 +# CONFIG_NLS_ISO8859_5 is not set 1.1675 +# CONFIG_NLS_ISO8859_6 is not set 1.1676 +# CONFIG_NLS_ISO8859_7 is not set 1.1677 +# CONFIG_NLS_ISO8859_9 is not set 1.1678 +# CONFIG_NLS_ISO8859_13 is not set 1.1679 +# CONFIG_NLS_ISO8859_14 is not set 1.1680 +CONFIG_NLS_ISO8859_15=y 1.1681 +# CONFIG_NLS_KOI8_R is not set 1.1682 +# CONFIG_NLS_KOI8_U is not set 1.1683 +CONFIG_NLS_UTF8=m 1.1684 +# CONFIG_DLM is not set 1.1685 +CONFIG_INSTRUMENTATION=y 1.1686 +# CONFIG_PROFILING is not set 1.1687 +# CONFIG_KPROBES is not set 1.1688 +# CONFIG_MARKERS is not set 1.1689 + 1.1690 +# 1.1691 +# Kernel hacking 1.1692 +# 1.1693 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1.1694 +# CONFIG_PRINTK_TIME is not set 1.1695 +CONFIG_ENABLE_WARN_DEPRECATED=y 1.1696 +CONFIG_ENABLE_MUST_CHECK=y 1.1697 +# CONFIG_MAGIC_SYSRQ is not set 1.1698 +CONFIG_UNUSED_SYMBOLS=y 1.1699 +# CONFIG_DEBUG_FS is not set 1.1700 +# CONFIG_HEADERS_CHECK is not set 1.1701 +# CONFIG_DEBUG_KERNEL is not set 1.1702 +CONFIG_DEBUG_BUGVERBOSE=y 1.1703 +# CONFIG_SAMPLES is not set 1.1704 +CONFIG_EARLY_PRINTK=y 1.1705 +CONFIG_X86_FIND_SMP_CONFIG=y 1.1706 +CONFIG_X86_MPPARSE=y 1.1707 +CONFIG_DOUBLEFAULT=y 1.1708 + 1.1709 +# 1.1710 +# Security options 1.1711 +# 1.1712 +# CONFIG_KEYS is not set 1.1713 +# CONFIG_SECURITY is not set 1.1714 +# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1.1715 +CONFIG_CRYPTO=y 1.1716 +CONFIG_CRYPTO_ALGAPI=y 1.1717 +CONFIG_CRYPTO_BLKCIPHER=y 1.1718 +CONFIG_CRYPTO_HASH=y 1.1719 +CONFIG_CRYPTO_MANAGER=y 1.1720 +CONFIG_CRYPTO_HMAC=y 1.1721 +# CONFIG_CRYPTO_XCBC is not set 1.1722 +# CONFIG_CRYPTO_NULL is not set 1.1723 +# CONFIG_CRYPTO_MD4 is not set 1.1724 +CONFIG_CRYPTO_MD5=y 1.1725 +CONFIG_CRYPTO_SHA1=y 1.1726 +# CONFIG_CRYPTO_SHA256 is not set 1.1727 +# CONFIG_CRYPTO_SHA512 is not set 1.1728 +# CONFIG_CRYPTO_WP512 is not set 1.1729 +# CONFIG_CRYPTO_TGR192 is not set 1.1730 +# CONFIG_CRYPTO_GF128MUL is not set 1.1731 +# CONFIG_CRYPTO_ECB is not set 1.1732 +CONFIG_CRYPTO_CBC=y 1.1733 +CONFIG_CRYPTO_PCBC=m 1.1734 +# CONFIG_CRYPTO_LRW is not set 1.1735 +# CONFIG_CRYPTO_XTS is not set 1.1736 +# CONFIG_CRYPTO_CRYPTD is not set 1.1737 +CONFIG_CRYPTO_DES=y 1.1738 +# CONFIG_CRYPTO_FCRYPT is not set 1.1739 +# CONFIG_CRYPTO_BLOWFISH is not set 1.1740 +# CONFIG_CRYPTO_TWOFISH is not set 1.1741 +# CONFIG_CRYPTO_TWOFISH_586 is not set 1.1742 +# CONFIG_CRYPTO_SERPENT is not set 1.1743 +# CONFIG_CRYPTO_AES is not set 1.1744 +# CONFIG_CRYPTO_AES_586 is not set 1.1745 +# CONFIG_CRYPTO_CAST5 is not set 1.1746 +# CONFIG_CRYPTO_CAST6 is not set 1.1747 +# CONFIG_CRYPTO_TEA is not set 1.1748 +# CONFIG_CRYPTO_ARC4 is not set 1.1749 +# CONFIG_CRYPTO_KHAZAD is not set 1.1750 +# CONFIG_CRYPTO_ANUBIS is not set 1.1751 +# CONFIG_CRYPTO_SEED is not set 1.1752 +CONFIG_CRYPTO_DEFLATE=y 1.1753 +# CONFIG_CRYPTO_MICHAEL_MIC is not set 1.1754 +# CONFIG_CRYPTO_CRC32C is not set 1.1755 +# CONFIG_CRYPTO_CAMELLIA is not set 1.1756 +# CONFIG_CRYPTO_TEST is not set 1.1757 +# CONFIG_CRYPTO_AUTHENC is not set 1.1758 +CONFIG_CRYPTO_HW=y 1.1759 +# CONFIG_CRYPTO_DEV_PADLOCK is not set 1.1760 +# CONFIG_CRYPTO_DEV_GEODE is not set 1.1761 + 1.1762 +# 1.1763 +# Library routines 1.1764 +# 1.1765 +CONFIG_BITREVERSE=y 1.1766 +CONFIG_CRC_CCITT=y 1.1767 +# CONFIG_CRC16 is not set 1.1768 +# CONFIG_CRC_ITU_T is not set 1.1769 +CONFIG_CRC32=y 1.1770 +# CONFIG_CRC7 is not set 1.1771 +# CONFIG_LIBCRC32C is not set 1.1772 +CONFIG_ZLIB_INFLATE=y 1.1773 +CONFIG_ZLIB_DEFLATE=y 1.1774 +CONFIG_PLIST=y 1.1775 +CONFIG_HAS_IOMEM=y 1.1776 +CONFIG_HAS_IOPORT=y 1.1777 +CONFIG_HAS_DMA=y
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/linux/stuff/linux-lzma-2.6.24.2.u Thu Feb 14 19:12:23 2008 +0100 2.3 @@ -0,0 +1,2253 @@ 2.4 +--- linux-2.6.24.2/arch/x86/boot/compressed/Makefile_32 2.5 ++++ linux-2.6.24.2/arch/x86/boot/compressed/Makefile_32 2.6 +@@ -4,7 +4,7 @@ 2.7 + # create a compressed vmlinux image from the original vmlinux 2.8 + # 2.9 + 2.10 +-targets := vmlinux vmlinux.bin vmlinux.bin.gz head_32.o misc_32.o piggy.o \ 2.11 ++targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma head_32.o misc_32.o piggy.o \ 2.12 + vmlinux.bin.all vmlinux.relocs 2.13 + EXTRA_AFLAGS := -traditional 2.14 + 2.15 +@@ -44,7 +44,27 @@ $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bi 2.16 + $(call if_changed,gzip) 2.17 + endif 2.18 + 2.19 ++ifdef CONFIG_RELOCATABLE 2.20 ++$(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin.all FORCE 2.21 ++ $(call if_changed,bzip2) 2.22 ++else 2.23 ++$(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE 2.24 ++ $(call if_changed,bzip2) 2.25 ++endif 2.26 ++ 2.27 ++ifdef CONFIG_RELOCATABLE 2.28 ++$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin.all FORCE 2.29 ++ $(call if_changed,lzma) 2.30 ++else 2.31 ++$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE 2.32 ++ $(call if_changed,lzma) 2.33 ++endif 2.34 ++ 2.35 + LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T 2.36 + 2.37 +-$(obj)/piggy.o: $(src)/vmlinux_32.scr $(obj)/vmlinux.bin.gz FORCE 2.38 ++suffix_$(CONFIG_KERNEL_GZIP) = gz 2.39 ++suffix_$(CONFIG_KERNEL_BZIP2) = bz2 2.40 ++suffix_$(CONFIG_KERNEL_LZMA) = lzma 2.41 ++ 2.42 ++$(obj)/piggy.o: $(src)/vmlinux_32.scr $(obj)/vmlinux.bin.$(suffix_y) FORCE 2.43 + $(call if_changed,ld) 2.44 +--- linux-2.6.24.2/arch/x86/boot/compressed/Makefile_64 2.45 ++++ linux-2.6.24.2/arch/x86/boot/compressed/Makefile_64 2.46 +@@ -4,7 +4,7 @@ 2.47 + # create a compressed vmlinux image from the original vmlinux 2.48 + # 2.49 + 2.50 +-targets := vmlinux vmlinux.bin vmlinux.bin.gz head_64.o misc_64.o piggy.o 2.51 ++targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma head_64.o misc_64.o piggy.o 2.52 + 2.53 + KBUILD_CFLAGS := -m64 -D__KERNEL__ $(LINUXINCLUDE) -O2 \ 2.54 + -fno-strict-aliasing -fPIC -mcmodel=small \ 2.55 +--- linux-2.6.24.2/arch/x86/boot/compressed/misc_32.c 2.56 ++++ linux-2.6.24.2/arch/x86/boot/compressed/misc_32.c 2.57 +@@ -121,9 +121,12 @@ typedef unsigned long ulg; 2.58 + * always be larger than our output buffer. 2.59 + */ 2.60 + 2.61 ++#ifdef CONFIG_KERNEL_GZIP 2.62 + static uch *inbuf; /* input buffer */ 2.63 ++#endif 2.64 + static uch *window; /* Sliding window buffer, (and final output buffer) */ 2.65 + 2.66 ++#ifdef CONFIG_KERNEL_GZIP 2.67 + static unsigned insize; /* valid bytes in inbuf */ 2.68 + static unsigned inptr; /* index of next byte to be processed in inbuf */ 2.69 + static unsigned outcnt; /* bytes in output buffer */ 2.70 +@@ -158,9 +161,14 @@ static unsigned outcnt; /* bytes in out 2.71 + 2.72 + static int fill_inbuf(void); 2.73 + static void flush_window(void); 2.74 ++#endif 2.75 ++ 2.76 + static void error(char *m); 2.77 ++ 2.78 ++#ifdef CONFIG_KERNEL_GZIP 2.79 + static void gzip_mark(void **); 2.80 + static void gzip_release(void **); 2.81 ++#endif 2.82 + 2.83 + /* 2.84 + * This is set up by the setup-routine at boot-time 2.85 +@@ -181,7 +189,9 @@ static long bytes_out = 0; 2.86 + static void *malloc(int size); 2.87 + static void free(void *where); 2.88 + 2.89 ++#if (defined CONFIG_KERNEL_GZIP || defined CONFIG_KERNEL_BZIP2) 2.90 + static void *memset(void *s, int c, unsigned n); 2.91 ++#endif 2.92 + static void *memcpy(void *dest, const void *src, unsigned n); 2.93 + 2.94 + static void putstr(const char *); 2.95 +@@ -189,7 +199,11 @@ static void putstr(const char *); 2.96 + static unsigned long free_mem_ptr; 2.97 + static unsigned long free_mem_end_ptr; 2.98 + 2.99 ++#if (defined CONFIG_KERNEL_BZIP2 || defined CONFIG_KERNEL_LZMA) 2.100 ++#define HEAP_SIZE 0x400000 2.101 ++#else 2.102 + #define HEAP_SIZE 0x4000 2.103 ++#endif 2.104 + 2.105 + static char *vidmem = (char *)0xb8000; 2.106 + static int vidport; 2.107 +@@ -199,7 +213,29 @@ static int lines, cols; 2.108 + void *xquad_portio; 2.109 + #endif 2.110 + 2.111 ++#if (defined CONFIG_KERNEL_BZIP2 || defined CONFIG_KERNEL_LZMA) 2.112 ++ 2.113 ++#define large_malloc malloc 2.114 ++#define large_free free 2.115 ++ 2.116 ++#ifdef current 2.117 ++#undef current 2.118 ++#endif 2.119 ++ 2.120 ++#define INCLUDED 2.121 ++#endif 2.122 ++ 2.123 ++#ifdef CONFIG_KERNEL_GZIP 2.124 + #include "../../../../lib/inflate.c" 2.125 ++#endif 2.126 ++ 2.127 ++#ifdef CONFIG_KERNEL_BZIP2 2.128 ++#include "../../../../lib/decompress_bunzip2.c" 2.129 ++#endif 2.130 ++ 2.131 ++#ifdef CONFIG_KERNEL_LZMA 2.132 ++#include "../../../../lib/decompress_unlzma.c" 2.133 ++#endif 2.134 + 2.135 + static void *malloc(int size) 2.136 + { 2.137 +@@ -223,6 +259,7 @@ static void free(void *where) 2.138 + { /* Don't care */ 2.139 + } 2.140 + 2.141 ++#ifdef CONFIG_KERNEL_GZIP 2.142 + static void gzip_mark(void **ptr) 2.143 + { 2.144 + *ptr = (void *) free_mem_ptr; 2.145 +@@ -232,6 +269,7 @@ static void gzip_release(void **ptr) 2.146 + { 2.147 + free_mem_ptr = (unsigned long) *ptr; 2.148 + } 2.149 ++#endif 2.150 + 2.151 + static void scroll(void) 2.152 + { 2.153 +@@ -282,6 +320,7 @@ static void putstr(const char *s) 2.154 + outb_p(0xff & (pos >> 1), vidport+1); 2.155 + } 2.156 + 2.157 ++#if (defined CONFIG_KERNEL_GZIP || defined CONFIG_KERNEL_BZIP2) 2.158 + static void* memset(void* s, int c, unsigned n) 2.159 + { 2.160 + int i; 2.161 +@@ -290,6 +329,7 @@ static void* memset(void* s, int c, unsi 2.162 + for (i=0;i<n;i++) ss[i] = c; 2.163 + return s; 2.164 + } 2.165 ++#endif 2.166 + 2.167 + static void* memcpy(void* dest, const void* src, unsigned n) 2.168 + { 2.169 +@@ -300,6 +340,26 @@ static void* memcpy(void* dest, const vo 2.170 + return dest; 2.171 + } 2.172 + 2.173 ++#ifndef CONFIG_KERNEL_GZIP 2.174 ++/* =========================================================================== 2.175 ++ * Write the output window window[0..outcnt-1] and update bytes_out. 2.176 ++ * (Used for the decompressed data only.) 2.177 ++ */ 2.178 ++static int compr_flush(char *data, unsigned int len) 2.179 ++{ 2.180 ++ unsigned n; 2.181 ++ uch *out; 2.182 ++ 2.183 ++ out = window; 2.184 ++ for (n = 0; n < len; n++) { 2.185 ++ *out++ = *data++; 2.186 ++ } 2.187 ++ bytes_out += (ulg)len; 2.188 ++ window += (ulg)len; 2.189 ++ return len; 2.190 ++} 2.191 ++ 2.192 ++#else 2.193 + /* =========================================================================== 2.194 + * Fill the input buffer. This is called only when the buffer is empty 2.195 + * and at least one byte is really needed. 2.196 +@@ -332,6 +392,7 @@ static void flush_window(void) 2.197 + bytes_out += (ulg)outcnt; 2.198 + outcnt = 0; 2.199 + } 2.200 ++#endif 2.201 + 2.202 + static void error(char *x) 2.203 + { 2.204 +@@ -361,9 +422,11 @@ asmlinkage void decompress_kernel(void * 2.205 + window = output; /* Output buffer (Normally at 1M) */ 2.206 + free_mem_ptr = end; /* Heap */ 2.207 + free_mem_end_ptr = end + HEAP_SIZE; 2.208 ++#ifdef CONFIG_KERNEL_GZIP 2.209 + inbuf = input_data; /* Input buffer */ 2.210 + insize = input_len; 2.211 + inptr = 0; 2.212 ++#endif 2.213 + 2.214 + if ((u32)output & (CONFIG_PHYSICAL_ALIGN -1)) 2.215 + error("Destination address not CONFIG_PHYSICAL_ALIGN aligned"); 2.216 +@@ -374,9 +437,21 @@ asmlinkage void decompress_kernel(void * 2.217 + error("Wrong destination address"); 2.218 + #endif 2.219 + 2.220 ++#ifdef CONFIG_KERNEL_BZIP2 2.221 ++ putstr("Bunzipping Linux... "); 2.222 ++ bunzip2(input_data, input_len-4, NULL, compr_flush, NULL); 2.223 ++#endif 2.224 ++ 2.225 ++#ifdef CONFIG_KERNEL_LZMA 2.226 ++ putstr("Unlzmaing Linux... "); 2.227 ++ unlzma(input_data, input_len-4, NULL, compr_flush, NULL); 2.228 ++#endif 2.229 ++ 2.230 ++#ifdef CONFIG_KERNEL_GZIP 2.231 + makecrc(); 2.232 + putstr("Uncompressing Linux... "); 2.233 + gunzip(); 2.234 ++#endif 2.235 + putstr("Ok, booting the kernel.\n"); 2.236 + return; 2.237 + } 2.238 +--- linux-2.6.24.2/arch/x86/boot/compressed/misc_64.c 2.239 ++++ linux-2.6.24.2/arch/x86/boot/compressed/misc_64.c 2.240 +@@ -121,9 +121,12 @@ typedef unsigned long ulg; 2.241 + * always be larger than our output buffer. 2.242 + */ 2.243 + 2.244 ++#ifdef CONFIG_KERNEL_GZIP 2.245 + static uch *inbuf; /* input buffer */ 2.246 ++#endif 2.247 + static uch *window; /* Sliding window buffer, (and final output buffer) */ 2.248 + 2.249 ++#ifdef CONFIG_KERNEL_GZIP 2.250 + static unsigned insize; /* valid bytes in inbuf */ 2.251 + static unsigned inptr; /* index of next byte to be processed in inbuf */ 2.252 + static unsigned outcnt; /* bytes in output buffer */ 2.253 +@@ -158,9 +161,14 @@ static unsigned outcnt; /* bytes in out 2.254 + 2.255 + static int fill_inbuf(void); 2.256 + static void flush_window(void); 2.257 ++#endif 2.258 ++ 2.259 + static void error(char *m); 2.260 ++ 2.261 ++#ifdef CONFIG_KERNEL_GZIP 2.262 + static void gzip_mark(void **); 2.263 + static void gzip_release(void **); 2.264 ++#endif 2.265 + 2.266 + /* 2.267 + * This is set up by the setup-routine at boot-time 2.268 +@@ -173,15 +181,19 @@ static unsigned char *real_mode; /* Poin 2.269 + #endif 2.270 + #define RM_SCREEN_INFO (*(struct screen_info *)(real_mode+0)) 2.271 + 2.272 ++#ifdef CONFIG_KERNEL_GZIP 2.273 + extern unsigned char input_data[]; 2.274 + extern int input_len; 2.275 ++#endif 2.276 + 2.277 + static long bytes_out = 0; 2.278 + 2.279 + static void *malloc(int size); 2.280 + static void free(void *where); 2.281 + 2.282 ++#if (defined CONFIG_KERNEL_GZIP || defined CONFIG_KERNEL_BZIP2) 2.283 + static void *memset(void *s, int c, unsigned n); 2.284 ++#endif 2.285 + static void *memcpy(void *dest, const void *src, unsigned n); 2.286 + 2.287 + static void putstr(const char *); 2.288 +@@ -189,13 +201,39 @@ static void putstr(const char *); 2.289 + static long free_mem_ptr; 2.290 + static long free_mem_end_ptr; 2.291 + 2.292 ++#if (defined CONFIG_KERNEL_BZIP2 || defined CONFIG_KERNEL_LZMA) 2.293 ++#define HEAP_SIZE 0x400000 2.294 ++#else 2.295 + #define HEAP_SIZE 0x7000 2.296 ++#endif 2.297 + 2.298 + static char *vidmem = (char *)0xb8000; 2.299 + static int vidport; 2.300 + static int lines, cols; 2.301 + 2.302 ++#if (defined CONFIG_KERNEL_BZIP2 || defined CONFIG_KERNEL_LZMA) 2.303 ++ 2.304 ++#define large_malloc malloc 2.305 ++#define large_free free 2.306 ++ 2.307 ++#ifdef current 2.308 ++#undef current 2.309 ++#endif 2.310 ++ 2.311 ++#define INCLUDED 2.312 ++#endif 2.313 ++ 2.314 ++#ifdef CONFIG_KERNEL_GZIP 2.315 + #include "../../../../lib/inflate.c" 2.316 ++#endif 2.317 ++ 2.318 ++#ifdef CONFIG_KERNEL_BZIP2 2.319 ++#include "../../../../lib/decompress_bunzip2.c" 2.320 ++#endif 2.321 ++ 2.322 ++#ifdef CONFIG_KERNEL_LZMA 2.323 ++#include "../../../../lib/decompress_unlzma.c" 2.324 ++#endif 2.325 + 2.326 + static void *malloc(int size) 2.327 + { 2.328 +@@ -219,6 +257,7 @@ static void free(void *where) 2.329 + { /* Don't care */ 2.330 + } 2.331 + 2.332 ++#ifdef CONFIG_KERNEL_GZIP 2.333 + static void gzip_mark(void **ptr) 2.334 + { 2.335 + *ptr = (void *) free_mem_ptr; 2.336 +@@ -228,6 +267,7 @@ static void gzip_release(void **ptr) 2.337 + { 2.338 + free_mem_ptr = (long) *ptr; 2.339 + } 2.340 ++#endif 2.341 + 2.342 + static void scroll(void) 2.343 + { 2.344 +@@ -275,6 +315,7 @@ static void putstr(const char *s) 2.345 + outb_p(0xff & (pos >> 1), vidport+1); 2.346 + } 2.347 + 2.348 ++#if (defined CONFIG_KERNEL_GZIP || defined CONFIG_KERNEL_BZIP2) 2.349 + static void* memset(void* s, int c, unsigned n) 2.350 + { 2.351 + int i; 2.352 +@@ -283,6 +324,7 @@ static void* memset(void* s, int c, unsi 2.353 + for (i=0;i<n;i++) ss[i] = c; 2.354 + return s; 2.355 + } 2.356 ++#endif 2.357 + 2.358 + static void* memcpy(void* dest, const void* src, unsigned n) 2.359 + { 2.360 +@@ -293,6 +335,26 @@ static void* memcpy(void* dest, const vo 2.361 + return dest; 2.362 + } 2.363 + 2.364 ++#ifndef CONFIG_KERNEL_GZIP 2.365 ++/* =========================================================================== 2.366 ++ * Write the output window window[0..outcnt-1] and update bytes_out. 2.367 ++ * (Used for the decompressed data only.) 2.368 ++ */ 2.369 ++static int compr_flush(char *data, unsigned int len) 2.370 ++{ 2.371 ++ unsigned n; 2.372 ++ uch *out; 2.373 ++ 2.374 ++ out = window; 2.375 ++ for (n = 0; n < len; n++) { 2.376 ++ *out++ = *data++; 2.377 ++ } 2.378 ++ bytes_out += (ulg)len; 2.379 ++ window += (ulg)len; 2.380 ++ return len; 2.381 ++} 2.382 ++ 2.383 ++#else 2.384 + /* =========================================================================== 2.385 + * Fill the input buffer. This is called only when the buffer is empty 2.386 + * and at least one byte is really needed. 2.387 +@@ -325,6 +387,7 @@ static void flush_window(void) 2.388 + bytes_out += (ulg)outcnt; 2.389 + outcnt = 0; 2.390 + } 2.391 ++#endif 2.392 + 2.393 + static void error(char *x) 2.394 + { 2.395 +@@ -363,9 +426,21 @@ asmlinkage void decompress_kernel(void * 2.396 + if ((ulg)output >= 0xffffffffffUL) 2.397 + error("Destination address too large"); 2.398 + 2.399 ++#ifdef CONFIG_KERNEL_BZIP2 2.400 ++ putstr(".\nBunzipping Linux..."); 2.401 ++ bunzip2(input_data, input_len-4, NULL, compr_flush, NULL); 2.402 ++#endif 2.403 ++ 2.404 ++#ifdef CONFIG_KERNEL_LZMA 2.405 ++ putstr(".\nUnlzmaing Linux..."); 2.406 ++ unlzma(input_data, input_len-4, NULL, compr_flush, NULL); 2.407 ++#endif 2.408 ++ 2.409 ++#ifdef CONFIG_KERNEL_GZIP 2.410 + makecrc(); 2.411 + putstr(".\nDecompressing Linux..."); 2.412 + gunzip(); 2.413 ++#endif 2.414 + putstr("done.\nBooting the kernel.\n"); 2.415 + return; 2.416 + } 2.417 +--- linux-2.6.24.2/drivers/block/Kconfig 2.418 ++++ linux-2.6.24.2/drivers/block/Kconfig 2.419 +@@ -356,6 +356,30 @@ config BLK_DEV_RAM_BLOCKSIZE 2.420 + setups function - apparently needed by the rd_load_image routine 2.421 + that supposes the filesystem in the image uses a 1024 blocksize. 2.422 + 2.423 ++config RD_BZIP2 2.424 ++ bool "Initial ramdisk compressed using bzip2" 2.425 ++ default n 2.426 ++ depends on BLK_DEV_INITRD=y 2.427 ++ help 2.428 ++ Support loading of a bzip2 encoded initial ramdisk or cpio buffer 2.429 ++ If unsure, say N. 2.430 ++ 2.431 ++config RD_LZMA 2.432 ++ bool "Initial ramdisk compressed using lzma" 2.433 ++ default n 2.434 ++ depends on BLK_DEV_INITRD=y 2.435 ++ help 2.436 ++ Support loading of a lzma encoded initial ramdisk or cpio buffer 2.437 ++ If unsure, say N. 2.438 ++ 2.439 ++config RD_GZIP 2.440 ++ bool "Initial ramdisk compressed using gzip" 2.441 ++ default y 2.442 ++ depends on BLK_DEV_INITRD=y 2.443 ++ help 2.444 ++ Support loading of a gzip encoded initial ramdisk or cpio buffer. 2.445 ++ If unsure, say Y. 2.446 ++ 2.447 + config CDROM_PKTCDVD 2.448 + tristate "Packet writing on CD/DVD media" 2.449 + depends on !UML 2.450 +--- linux-2.6.24.2/include/linux/decompress_bunzip2.h 2.451 ++++ linux-2.6.24.2/include/linux/decompress_bunzip2.h 2.452 +@@ -0,0 +1,16 @@ 2.453 ++#ifndef DECOMPRESS_BUNZIP2_H 2.454 ++#define DECOMPRESS_BUNZIP2_H 2.455 ++ 2.456 ++/* Other housekeeping constants */ 2.457 ++#define BZIP2_IOBUF_SIZE 4096 2.458 ++ 2.459 ++#ifndef STATIC 2.460 ++#define STATIC /**/ 2.461 ++#endif 2.462 ++ 2.463 ++STATIC int bunzip2(char *inbuf, int len, 2.464 ++ int(*fill)(void*,unsigned int), 2.465 ++ int(*writebb)(char*,unsigned int), 2.466 ++ int *pos); 2.467 ++ 2.468 ++#endif 2.469 +--- linux-2.6.24.2/include/linux/decompress_generic.h 2.470 ++++ linux-2.6.24.2/include/linux/decompress_generic.h 2.471 +@@ -0,0 +1,28 @@ 2.472 ++#ifndef DECOMPRESS_GENERIC_H 2.473 ++#define DECOMPRESS_GENERIC_H 2.474 ++ 2.475 ++/* Minimal chunksize to be read. 2.476 ++ * Bzip2 prefers at least 4096 2.477 ++ * Lzma prefers 0x10000 */ 2.478 ++#define COMPR_IOBUF_SIZE 4096 2.479 ++ 2.480 ++typedef int (*uncompress_fn) (char *inbuf, int len, 2.481 ++ int(*fill)(char*,unsigned int), 2.482 ++ int(*writebb)(char*,unsigned int), 2.483 ++ int *posp); 2.484 ++ 2.485 ++/* inbuf - input buffer 2.486 ++ * len - len of pre-read data in inbuf 2.487 ++ * fill - function to fill inbuf if empty 2.488 ++ * writebb - function to write out outbug 2.489 ++ * posp - if non-null, input position (number of bytes read) will be 2.490 ++ * returned here 2.491 ++ * 2.492 ++ * If len != 0, the inbuf is initialized (with as much data), and fill 2.493 ++ * should not be called 2.494 ++ * If len = 0, the inbuf is allocated, but empty. Its size is IOBUF_SIZE 2.495 ++ * fill should be called (repeatedly...) to read data, at most IOBUF_SIZE 2.496 ++ */ 2.497 ++ 2.498 ++ 2.499 ++#endif 2.500 +--- linux-2.6.24.2/include/linux/decompress_unlzma.h 2.501 ++++ linux-2.6.24.2/include/linux/decompress_unlzma.h 2.502 +@@ -0,0 +1,15 @@ 2.503 ++#ifndef DECOMPRESS_UNLZMA_H 2.504 ++#define DECOMPRESS_UNLZMA_H 2.505 ++ 2.506 ++#define LZMA_IOBUF_SIZE 0x10000 2.507 ++ 2.508 ++#ifndef STATIC 2.509 ++#define STATIC /**/ 2.510 ++#endif 2.511 ++ 2.512 ++STATIC int unlzma(char *inbuf, int len, 2.513 ++ int(*fill)(void*,unsigned int), 2.514 ++ int(*writebb)(char*,unsigned int), 2.515 ++ int *pos); 2.516 ++ 2.517 ++#endif 2.518 +--- linux-2.6.24.2/init/do_mounts_rd.c 2.519 ++++ linux-2.6.24.2/init/do_mounts_rd.c 2.520 +@@ -8,6 +8,16 @@ 2.521 + #include <linux/initrd.h> 2.522 + #include <linux/string.h> 2.523 + 2.524 ++#ifdef CONFIG_RD_BZIP2 2.525 ++#include <linux/decompress_bunzip2.h> 2.526 ++#undef STATIC 2.527 ++#endif 2.528 ++ 2.529 ++#ifdef CONFIG_RD_LZMA 2.530 ++#include <linux/decompress_unlzma.h> 2.531 ++#undef STATIC 2.532 ++#endif 2.533 ++ 2.534 + #include "do_mounts.h" 2.535 + 2.536 + #define BUILD_CRAMDISK 2.537 +@@ -30,7 +40,15 @@ static int __init ramdisk_start_setup(ch 2.538 + } 2.539 + __setup("ramdisk_start=", ramdisk_start_setup); 2.540 + 2.541 ++#ifdef CONFIG_RD_GZIP 2.542 + static int __init crd_load(int in_fd, int out_fd); 2.543 ++#endif 2.544 ++#ifdef CONFIG_RD_BZIP2 2.545 ++static int __init crd_load_bzip2(int in_fd, int out_fd); 2.546 ++#endif 2.547 ++#ifdef CONFIG_RD_LZMA 2.548 ++static int __init crd_load_lzma(int in_fd, int out_fd); 2.549 ++#endif 2.550 + 2.551 + /* 2.552 + * This routine tries to find a RAM disk image to load, and returns the 2.553 +@@ -46,7 +64,7 @@ static int __init crd_load(int in_fd, in 2.554 + * gzip 2.555 + */ 2.556 + static int __init 2.557 +-identify_ramdisk_image(int fd, int start_block) 2.558 ++identify_ramdisk_image(int fd, int start_block, int *ztype) 2.559 + { 2.560 + const int size = 512; 2.561 + struct minix_super_block *minixsb; 2.562 +@@ -72,6 +90,7 @@ identify_ramdisk_image(int fd, int start 2.563 + sys_lseek(fd, start_block * BLOCK_SIZE, 0); 2.564 + sys_read(fd, buf, size); 2.565 + 2.566 ++#ifdef CONFIG_RD_GZIP 2.567 + /* 2.568 + * If it matches the gzip magic numbers, return -1 2.569 + */ 2.570 +@@ -79,9 +98,40 @@ identify_ramdisk_image(int fd, int start 2.571 + printk(KERN_NOTICE 2.572 + "RAMDISK: Compressed image found at block %d\n", 2.573 + start_block); 2.574 ++ *ztype = 0; 2.575 ++ nblocks = 0; 2.576 ++ goto done; 2.577 ++ } 2.578 ++#endif 2.579 ++ 2.580 ++#ifdef CONFIG_RD_BZIP2 2.581 ++ /* 2.582 ++ * If it matches the bzip magic numbers, return -1 2.583 ++ */ 2.584 ++ if (buf[0] == 0x42 && (buf[1] == 0x5a)) { 2.585 ++ printk(KERN_NOTICE 2.586 ++ "RAMDISK: Bzipped image found at block %d\n", 2.587 ++ start_block); 2.588 ++ *ztype = 1; 2.589 ++ nblocks = 0; 2.590 ++ goto done; 2.591 ++ } 2.592 ++#endif 2.593 ++ 2.594 ++#ifdef CONFIG_RD_LZMA 2.595 ++ /* 2.596 ++ * If it matches the bzip magic numbers, return -1 2.597 ++ */ 2.598 ++ if (buf[0] == 0x5d && (buf[1] == 0x00)) { 2.599 ++ printk(KERN_NOTICE 2.600 ++ "RAMDISK: Lzma image found at block %d\n", 2.601 ++ start_block); 2.602 ++ *ztype = 2; 2.603 + nblocks = 0; 2.604 + goto done; 2.605 + } 2.606 ++#endif 2.607 ++ 2.608 + 2.609 + /* romfs is at block zero too */ 2.610 + if (romfsb->word0 == ROMSB_WORD0 && 2.611 +@@ -145,6 +195,7 @@ int __init rd_load_image(char *from) 2.612 + int nblocks, i, disk; 2.613 + char *buf = NULL; 2.614 + unsigned short rotate = 0; 2.615 ++ int ztype=-1; 2.616 + #if !defined(CONFIG_S390) && !defined(CONFIG_PPC_ISERIES) 2.617 + char rotator[4] = { '|' , '/' , '-' , '\\' }; 2.618 + #endif 2.619 +@@ -157,14 +208,38 @@ int __init rd_load_image(char *from) 2.620 + if (in_fd < 0) 2.621 + goto noclose_input; 2.622 + 2.623 +- nblocks = identify_ramdisk_image(in_fd, rd_image_start); 2.624 ++ nblocks = identify_ramdisk_image(in_fd, rd_image_start, &ztype); 2.625 + if (nblocks < 0) 2.626 + goto done; 2.627 + 2.628 + if (nblocks == 0) { 2.629 + #ifdef BUILD_CRAMDISK 2.630 +- if (crd_load(in_fd, out_fd) == 0) 2.631 +- goto successful_load; 2.632 ++ switch(ztype) { 2.633 ++ 2.634 ++#ifdef CONFIG_RD_GZIP 2.635 ++ case 0: 2.636 ++ if (crd_load(in_fd, out_fd) == 0) 2.637 ++ goto successful_load; 2.638 ++ break; 2.639 ++#endif 2.640 ++ 2.641 ++#ifdef CONFIG_RD_BZIP2 2.642 ++ case 1: 2.643 ++ if (crd_load_bzip2(in_fd, out_fd) == 0) 2.644 ++ goto successful_load; 2.645 ++ break; 2.646 ++#endif 2.647 ++ 2.648 ++#ifdef CONFIG_RD_LZMA 2.649 ++ case 2: 2.650 ++ if (crd_load_lzma(in_fd, out_fd) == 0) 2.651 ++ goto successful_load; 2.652 ++ break; 2.653 ++#endif 2.654 ++ 2.655 ++ default: 2.656 ++ break; 2.657 ++ } 2.658 + #else 2.659 + printk(KERN_NOTICE 2.660 + "RAMDISK: Kernel does not support compressed " 2.661 +@@ -269,6 +344,7 @@ int __init rd_load_disk(int n) 2.662 + 2.663 + #ifdef BUILD_CRAMDISK 2.664 + 2.665 ++#ifdef CONFIG_RD_GZIP 2.666 + /* 2.667 + * gzip declarations 2.668 + */ 2.669 +@@ -296,8 +372,11 @@ static unsigned outcnt; /* bytes in out 2.670 + static int exit_code; 2.671 + static int unzip_error; 2.672 + static long bytes_out; 2.673 ++#endif 2.674 ++ 2.675 + static int crd_infd, crd_outfd; 2.676 + 2.677 ++#ifdef CONFIG_RD_GZIP 2.678 + #define get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf()) 2.679 + 2.680 + /* Diagnostic functions (stubbed out) */ 2.681 +@@ -359,7 +438,22 @@ static int __init fill_inbuf(void) 2.682 + 2.683 + return inbuf[0]; 2.684 + } 2.685 ++#endif 2.686 ++ 2.687 ++#if (defined CONFIG_RD_BZIP2 || defined CONFIG_RD_LZMA) 2.688 ++static int __init compr_fill(void *buf, unsigned int len) 2.689 ++{ 2.690 ++ int r = sys_read(crd_infd, buf, len); 2.691 ++ if(r < 0) { 2.692 ++ printk(KERN_ERR "RAMDISK: error while reading compressed data"); 2.693 ++ } else if(r == 0) { 2.694 ++ printk(KERN_ERR "RAMDISK: EOF while reading compressed data"); 2.695 ++ } 2.696 ++ return r; 2.697 ++} 2.698 ++#endif 2.699 + 2.700 ++#ifdef CONFIG_RD_GZIP 2.701 + /* =========================================================================== 2.702 + * Write the output window window[0..outcnt-1] and update crc and bytes_out. 2.703 + * (Used for the decompressed data only.) 2.704 +@@ -385,7 +479,24 @@ static void __init flush_window(void) 2.705 + bytes_out += (ulg)outcnt; 2.706 + outcnt = 0; 2.707 + } 2.708 ++#endif 2.709 ++ 2.710 ++#if (defined CONFIG_RD_BZIP2 || defined CONFIG_RD_LZMA) 2.711 ++static int __init compr_flush(void *window, unsigned int outcnt) { 2.712 ++ static int progressDots=0; 2.713 ++ int written = sys_write(crd_outfd, window, outcnt); 2.714 ++ if (written != outcnt) { 2.715 ++ printk(KERN_ERR "RAMDISK: incomplete write (%d != %d)\n", 2.716 ++ written, outcnt); 2.717 ++ } 2.718 ++ progressDots = (progressDots+1)%10; 2.719 ++ if(!progressDots) 2.720 ++ printk("."); 2.721 ++ return outcnt; 2.722 ++} 2.723 ++#endif 2.724 + 2.725 ++#ifdef CONFIG_RD_GZIP 2.726 + static void __init error(char *x) 2.727 + { 2.728 + printk(KERN_ERR "%s\n", x); 2.729 +@@ -425,5 +536,43 @@ static int __init crd_load(int in_fd, in 2.730 + kfree(window); 2.731 + return result; 2.732 + } 2.733 ++#endif 2.734 ++ 2.735 ++#if (defined CONFIG_RD_BZIP2 || defined CONFIG_RD_LZMA) 2.736 ++static int __init crd_load_compr(int in_fd, int out_fd, int size, 2.737 ++ int (*deco)(char *,int, 2.738 ++ int(*fill)(void*,unsigned int), 2.739 ++ int(*flush)(void*,unsigned int), 2.740 ++ int *)) 2.741 ++{ 2.742 ++ int result; 2.743 ++ char *inbuf = kmalloc(size, GFP_KERNEL); 2.744 ++ crd_infd = in_fd; 2.745 ++ crd_outfd = out_fd; 2.746 ++ if (inbuf == 0) { 2.747 ++ printk(KERN_ERR "RAMDISK: Couldn't allocate decompression buffer\n"); 2.748 ++ return -1; 2.749 ++ } 2.750 ++ result=deco(inbuf, 0, compr_fill, compr_flush, NULL); 2.751 ++ kfree(inbuf); 2.752 ++ printk("\n"); 2.753 ++ return result; 2.754 ++} 2.755 ++#endif 2.756 ++ 2.757 ++#ifdef CONFIG_RD_BZIP2 2.758 ++static int __init crd_load_bzip2(int in_fd, int out_fd) 2.759 ++{ 2.760 ++ return crd_load_compr(in_fd, out_fd, BZIP2_IOBUF_SIZE, bunzip2); 2.761 ++} 2.762 ++#endif 2.763 ++ 2.764 ++#ifdef CONFIG_RD_LZMA 2.765 ++static int __init crd_load_lzma(int in_fd, int out_fd) 2.766 ++{ 2.767 ++ return crd_load_compr(in_fd, out_fd, LZMA_IOBUF_SIZE, unlzma); 2.768 ++} 2.769 ++ 2.770 ++#endif 2.771 + 2.772 + #endif /* BUILD_CRAMDISK */ 2.773 +--- linux-2.6.24.2/init/initramfs.c 2.774 ++++ linux-2.6.24.2/init/initramfs.c 2.775 +@@ -7,6 +7,15 @@ 2.776 + #include <linux/string.h> 2.777 + #include <linux/syscalls.h> 2.778 + 2.779 ++/* We need to enable RD_GZIP unconditionnally, as the built-in 2.780 ++ * initramfs is gzip-compressed, alas! 2.781 ++ * We can only wonder why, though, as the whole kernel (which contains 2.782 ++ * built-in initramfs) is gzip (or bzip) compressed anyways afterwards... 2.783 ++ */ 2.784 ++#ifndef CONFIG_RD_GZIP 2.785 ++#define CONFIG_RD_GZIP 2.786 ++#endif 2.787 ++ 2.788 + static __initdata char *message; 2.789 + static void __init error(char *x) 2.790 + { 2.791 +@@ -347,11 +356,13 @@ static int __init write_buffer(char *buf 2.792 + return len - count; 2.793 + } 2.794 + 2.795 +-static void __init flush_buffer(char *buf, unsigned len) 2.796 ++ 2.797 ++static int __init flush_buffer(char *buf, unsigned len) 2.798 + { 2.799 + int written; 2.800 ++ int origLen = len; 2.801 + if (message) 2.802 +- return; 2.803 ++ return -1; 2.804 + while ((written = write_buffer(buf, len)) < len && !message) { 2.805 + char c = buf[written]; 2.806 + if (c == '0') { 2.807 +@@ -365,8 +376,24 @@ static void __init flush_buffer(char *bu 2.808 + } else 2.809 + error("junk in compressed archive"); 2.810 + } 2.811 ++ return origLen; 2.812 + } 2.813 + 2.814 ++#ifdef CONFIG_RD_BZIP2 2.815 ++#include <linux/decompress_bunzip2.h> 2.816 ++#undef STATIC 2.817 ++ 2.818 ++#endif 2.819 ++ 2.820 ++#ifdef CONFIG_RD_LZMA 2.821 ++#include <linux/decompress_unlzma.h> 2.822 ++#undef STATIC 2.823 ++ 2.824 ++#endif 2.825 ++ 2.826 ++static unsigned inptr; /* index of next byte to be processed in inbuf */ 2.827 ++ 2.828 ++#ifdef CONFIG_RD_GZIP 2.829 + /* 2.830 + * gzip declarations 2.831 + */ 2.832 +@@ -388,7 +415,6 @@ static uch *inbuf; 2.833 + static uch *window; 2.834 + 2.835 + static unsigned insize; /* valid bytes in inbuf */ 2.836 +-static unsigned inptr; /* index of next byte to be processed in inbuf */ 2.837 + static unsigned outcnt; /* bytes in output buffer */ 2.838 + static long bytes_out; 2.839 + 2.840 +@@ -440,6 +466,7 @@ static void __init flush_window(void) 2.841 + bytes_out += (ulg)outcnt; 2.842 + outcnt = 0; 2.843 + } 2.844 ++#endif 2.845 + 2.846 + static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only) 2.847 + { 2.848 +@@ -448,9 +475,11 @@ static char * __init unpack_to_rootfs(ch 2.849 + header_buf = malloc(110); 2.850 + symlink_buf = malloc(PATH_MAX + N_ALIGN(PATH_MAX) + 1); 2.851 + name_buf = malloc(N_ALIGN(PATH_MAX)); 2.852 ++#ifdef CONFIG_RD_GZIP 2.853 + window = malloc(WSIZE); 2.854 + if (!window || !header_buf || !symlink_buf || !name_buf) 2.855 + panic("can't allocate buffers"); 2.856 ++#endif 2.857 + state = Start; 2.858 + this_header = 0; 2.859 + message = NULL; 2.860 +@@ -470,6 +499,7 @@ static char * __init unpack_to_rootfs(ch 2.861 + continue; 2.862 + } 2.863 + this_header = 0; 2.864 ++#ifdef CONFIG_RD_GZIP 2.865 + insize = len; 2.866 + inbuf = buf; 2.867 + inptr = 0; 2.868 +@@ -477,14 +507,38 @@ static char * __init unpack_to_rootfs(ch 2.869 + bytes_out = 0; 2.870 + crc = (ulg)0xffffffffL; /* shift register contents */ 2.871 + makecrc(); 2.872 +- gunzip(); 2.873 ++ if(!gunzip() && message == NULL) 2.874 ++ goto ok; 2.875 ++#endif 2.876 ++ 2.877 ++#ifdef CONFIG_RD_BZIP2 2.878 ++ message = NULL; /* Zero out message, or else cpio will 2.879 ++ think an error has already occured */ 2.880 ++ if(!bunzip2(buf, len, NULL, flush_buffer, &inptr) < 0 && 2.881 ++ message == NULL) { 2.882 ++ goto ok; 2.883 ++ } 2.884 ++#endif 2.885 ++ 2.886 ++#ifdef CONFIG_RD_LZMA 2.887 ++ message = NULL; /* Zero out message, or else cpio will 2.888 ++ think an error has already occured */ 2.889 ++ if(!unlzma(buf, len, NULL, flush_buffer, &inptr) < 0 && 2.890 ++ message == NULL) { 2.891 ++ goto ok; 2.892 ++ } 2.893 ++#endif 2.894 ++ ok: 2.895 ++ 2.896 + if (state != Reset) 2.897 +- error("junk in gzipped archive"); 2.898 ++ error("junk in compressed archive"); 2.899 + this_header = saved_offset + inptr; 2.900 + buf += inptr; 2.901 + len -= inptr; 2.902 + } 2.903 ++#ifdef CONFIG_RD_GZIP 2.904 + free(window); 2.905 ++#endif 2.906 + free(name_buf); 2.907 + free(symlink_buf); 2.908 + free(header_buf); 2.909 +--- linux-2.6.24.2/init/Kconfig 2.910 ++++ linux-2.6.24.2/init/Kconfig 2.911 +@@ -92,6 +92,56 @@ config LOCALVERSION_AUTO 2.912 + 2.913 + which is done within the script "scripts/setlocalversion".) 2.914 + 2.915 ++choice 2.916 ++ prompt "Kernel compression mode" 2.917 ++ default KERNEL_GZIP 2.918 ++ help 2.919 ++ The linux kernel is a kind of self-extracting executable. 2.920 ++ Several compression algorithms are available, which differ 2.921 ++ in efficiency, compression and decompression speed. 2.922 ++ Compression speed is only relevant when building a kernel. 2.923 ++ Decompression speed is relevant at each boot. 2.924 ++ 2.925 ++ If you have any problems with bzip2 or lzma compressed 2.926 ++ kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older 2.927 ++ version of this functionality (bzip2 only), for 2.4, was 2.928 ++ supplied by Christian Ludwig) 2.929 ++ 2.930 ++ High compression options are mostly useful for users, who 2.931 ++ are low on disk space (embedded systems), but for whom ram 2.932 ++ size matters less. 2.933 ++ 2.934 ++ If in doubt, select 'gzip' 2.935 ++ 2.936 ++config KERNEL_GZIP 2.937 ++ bool "Gzip" 2.938 ++ help 2.939 ++ The old and tries gzip compression. Its compression ratio is 2.940 ++ the poorest among the 3 choices; however its speed (both 2.941 ++ compression and decompression) is the fastest. 2.942 ++ 2.943 ++config KERNEL_BZIP2 2.944 ++ bool "Bzip2" 2.945 ++ help 2.946 ++ Its compression ratio and speed is intermediate. 2.947 ++ Decompression speed is slowest among the 3. 2.948 ++ The kernel size is about 10 per cent smaller with bzip2, 2.949 ++ in comparison to gzip. 2.950 ++ Bzip2 uses a large amount of memory. For modern kernels 2.951 ++ you will need at least 8MB RAM or more for booting. 2.952 ++ 2.953 ++config KERNEL_LZMA 2.954 ++ bool "LZMA" 2.955 ++ help 2.956 ++ The most recent compression algorithm. 2.957 ++ Its ratio is best, decompression speed is between the other 2.958 ++ 2. Compression is slowest. 2.959 ++ The kernel size is about 33 per cent smaller with lzma, 2.960 ++ in comparison to gzip. 2.961 ++ 2.962 ++endchoice 2.963 ++ 2.964 ++ 2.965 + config SWAP 2.966 + bool "Support for paging of anonymous memory (swap)" 2.967 + depends on MMU && BLOCK 2.968 +--- linux-2.6.24.2/lib/decompress_bunzip2.c 2.969 ++++ linux-2.6.24.2/lib/decompress_bunzip2.c 2.970 +@@ -0,0 +1,645 @@ 2.971 ++/* vi: set sw=4 ts=4: */ 2.972 ++/* Small bzip2 deflate implementation, by Rob Landley (rob@landley.net). 2.973 ++ 2.974 ++ Based on bzip2 decompression code by Julian R Seward (jseward@acm.org), 2.975 ++ which also acknowledges contributions by Mike Burrows, David Wheeler, 2.976 ++ Peter Fenwick, Alistair Moffat, Radford Neal, Ian H. Witten, 2.977 ++ Robert Sedgewick, and Jon L. Bentley. 2.978 ++ 2.979 ++ This code is licensed under the LGPLv2: 2.980 ++ LGPL (http://www.gnu.org/copyleft/lgpl.html 2.981 ++*/ 2.982 ++ 2.983 ++/* 2.984 ++ Size and speed optimizations by Manuel Novoa III (mjn3@codepoet.org). 2.985 ++ 2.986 ++ More efficient reading of Huffman codes, a streamlined read_bunzip() 2.987 ++ function, and various other tweaks. In (limited) tests, approximately 2.988 ++ 20% faster than bzcat on x86 and about 10% faster on arm. 2.989 ++ 2.990 ++ Note that about 2/3 of the time is spent in read_unzip() reversing 2.991 ++ the Burrows-Wheeler transformation. Much of that time is delay 2.992 ++ resulting from cache misses. 2.993 ++ 2.994 ++ I would ask that anyone benefiting from this work, especially those 2.995 ++ using it in commercial products, consider making a donation to my local 2.996 ++ non-profit hospice organization in the name of the woman I loved, who 2.997 ++ passed away Feb. 12, 2003. 2.998 ++ 2.999 ++ In memory of Toni W. Hagan 2.1000 ++ 2.1001 ++ Hospice of Acadiana, Inc. 2.1002 ++ 2600 Johnston St., Suite 200 2.1003 ++ Lafayette, LA 70503-3240 2.1004 ++ 2.1005 ++ Phone (337) 232-1234 or 1-800-738-2226 2.1006 ++ Fax (337) 232-1297 2.1007 ++ 2.1008 ++ http://www.hospiceacadiana.com/ 2.1009 ++ 2.1010 ++ Manuel 2.1011 ++ */ 2.1012 ++ 2.1013 ++/* 2.1014 ++ Made it fit for running in Linux Kernel by Alain Knaff (alain@knaff.lu) 2.1015 ++*/ 2.1016 ++ 2.1017 ++ 2.1018 ++#ifndef STATIC 2.1019 ++ 2.1020 ++#include <linux/kernel.h> 2.1021 ++#include <linux/fs.h> 2.1022 ++#include <linux/string.h> 2.1023 ++ 2.1024 ++#ifdef TEST 2.1025 ++#include "test.h" 2.1026 ++#else 2.1027 ++#include <linux/vmalloc.h> 2.1028 ++#endif 2.1029 ++ 2.1030 ++static void __init *large_malloc(size_t size) 2.1031 ++{ 2.1032 ++ return vmalloc(size); 2.1033 ++} 2.1034 ++ 2.1035 ++static void __init large_free(void *where) 2.1036 ++{ 2.1037 ++ vfree(where); 2.1038 ++} 2.1039 ++ 2.1040 ++#ifndef TEST 2.1041 ++static void __init *malloc(size_t size) 2.1042 ++{ 2.1043 ++ return kmalloc(size, GFP_KERNEL); 2.1044 ++} 2.1045 ++ 2.1046 ++static void __init free(void *where) 2.1047 ++{ 2.1048 ++ kfree(where); 2.1049 ++} 2.1050 ++ 2.1051 ++static void __init error(char *x) 2.1052 ++{ 2.1053 ++ printk(KERN_ERR "%s\n", x); 2.1054 ++} 2.1055 ++#endif 2.1056 ++ 2.1057 ++#define STATIC /**/ 2.1058 ++ 2.1059 ++#endif 2.1060 ++ 2.1061 ++#include <linux/decompress_bunzip2.h> 2.1062 ++ 2.1063 ++ 2.1064 ++/* Constants for Huffman coding */ 2.1065 ++#define MAX_GROUPS 6 2.1066 ++#define GROUP_SIZE 50 /* 64 would have been more efficient */ 2.1067 ++#define MAX_HUFCODE_BITS 20 /* Longest Huffman code allowed */ 2.1068 ++#define MAX_SYMBOLS 258 /* 256 literals + RUNA + RUNB */ 2.1069 ++#define SYMBOL_RUNA 0 2.1070 ++#define SYMBOL_RUNB 1 2.1071 ++ 2.1072 ++/* Status return values */ 2.1073 ++#define RETVAL_OK 0 2.1074 ++#define RETVAL_LAST_BLOCK (-1) 2.1075 ++#define RETVAL_NOT_BZIP_DATA (-2) 2.1076 ++#define RETVAL_UNEXPECTED_INPUT_EOF (-3) 2.1077 ++#define RETVAL_UNEXPECTED_OUTPUT_EOF (-4) 2.1078 ++#define RETVAL_DATA_ERROR (-5) 2.1079 ++#define RETVAL_OUT_OF_MEMORY (-6) 2.1080 ++#define RETVAL_OBSOLETE_INPUT (-7) 2.1081 ++ 2.1082 ++ 2.1083 ++/* This is what we know about each Huffman coding group */ 2.1084 ++struct group_data { 2.1085 ++ /* We have an extra slot at the end of limit[] for a sentinal value. */ 2.1086 ++ int limit[MAX_HUFCODE_BITS+1],base[MAX_HUFCODE_BITS],permute[MAX_SYMBOLS]; 2.1087 ++ int minLen, maxLen; 2.1088 ++}; 2.1089 ++ 2.1090 ++/* Structure holding all the housekeeping data, including IO buffers and 2.1091 ++ memory that persists between calls to bunzip */ 2.1092 ++typedef struct { 2.1093 ++ /* State for interrupting output loop */ 2.1094 ++ int writeCopies,writePos,writeRunCountdown,writeCount,writeCurrent; 2.1095 ++ /* I/O tracking data (file handles, buffers, positions, etc.) */ 2.1096 ++ int (*fill)(void*,unsigned int); 2.1097 ++ int inbufCount,inbufPos /*,outbufPos*/; 2.1098 ++ unsigned char *inbuf /*,*outbuf*/; 2.1099 ++ unsigned int inbufBitCount, inbufBits; 2.1100 ++ /* The CRC values stored in the block header and calculated from the data */ 2.1101 ++ unsigned int crc32Table[256],headerCRC, totalCRC, writeCRC; 2.1102 ++ /* Intermediate buffer and its size (in bytes) */ 2.1103 ++ unsigned int *dbuf, dbufSize; 2.1104 ++ /* These things are a bit too big to go on the stack */ 2.1105 ++ unsigned char selectors[32768]; /* nSelectors=15 bits */ 2.1106 ++ struct group_data groups[MAX_GROUPS]; /* Huffman coding tables */ 2.1107 ++ int io_error; /* non-zero if we have IO error */ 2.1108 ++} bunzip_data; 2.1109 ++ 2.1110 ++ 2.1111 ++/* Return the next nnn bits of input. All reads from the compressed input 2.1112 ++ are done through this function. All reads are big endian */ 2.1113 ++static unsigned int get_bits(bunzip_data *bd, char bits_wanted) 2.1114 ++{ 2.1115 ++ unsigned int bits=0; 2.1116 ++ 2.1117 ++ /* If we need to get more data from the byte buffer, do so. (Loop getting 2.1118 ++ one byte at a time to enforce endianness and avoid unaligned access.) */ 2.1119 ++ while (bd->inbufBitCount<bits_wanted) { 2.1120 ++ /* If we need to read more data from file into byte buffer, do so */ 2.1121 ++ if(bd->inbufPos==bd->inbufCount) { 2.1122 ++ if(bd->io_error) 2.1123 ++ return 0; 2.1124 ++ if((bd->inbufCount = bd->fill(bd->inbuf, BZIP2_IOBUF_SIZE)) <= 0) { 2.1125 ++ bd->io_error=RETVAL_UNEXPECTED_INPUT_EOF; 2.1126 ++ return 0; 2.1127 ++ } 2.1128 ++ bd->inbufPos=0; 2.1129 ++ } 2.1130 ++ /* Avoid 32-bit overflow (dump bit buffer to top of output) */ 2.1131 ++ if(bd->inbufBitCount>=24) { 2.1132 ++ bits=bd->inbufBits&((1<<bd->inbufBitCount)-1); 2.1133 ++ bits_wanted-=bd->inbufBitCount; 2.1134 ++ bits<<=bits_wanted; 2.1135 ++ bd->inbufBitCount=0; 2.1136 ++ } 2.1137 ++ /* Grab next 8 bits of input from buffer. */ 2.1138 ++ bd->inbufBits=(bd->inbufBits<<8)|bd->inbuf[bd->inbufPos++]; 2.1139 ++ bd->inbufBitCount+=8; 2.1140 ++ } 2.1141 ++ /* Calculate result */ 2.1142 ++ bd->inbufBitCount-=bits_wanted; 2.1143 ++ bits|=(bd->inbufBits>>bd->inbufBitCount)&((1<<bits_wanted)-1); 2.1144 ++ 2.1145 ++ return bits; 2.1146 ++} 2.1147 ++ 2.1148 ++/* Unpacks the next block and sets up for the inverse burrows-wheeler step. */ 2.1149 ++ 2.1150 ++static int get_next_block(bunzip_data *bd) 2.1151 ++{ 2.1152 ++ struct group_data *hufGroup=NULL; 2.1153 ++ int *base=NULL; 2.1154 ++ int *limit=NULL; 2.1155 ++ int dbufCount,nextSym,dbufSize,groupCount,selector, 2.1156 ++ i,j,k,t,runPos,symCount,symTotal,nSelectors,byteCount[256]; 2.1157 ++ unsigned char uc, symToByte[256], mtfSymbol[256], *selectors; 2.1158 ++ unsigned int *dbuf,origPtr; 2.1159 ++ 2.1160 ++ dbuf=bd->dbuf; 2.1161 ++ dbufSize=bd->dbufSize; 2.1162 ++ selectors=bd->selectors; 2.1163 ++ 2.1164 ++ /* Read in header signature and CRC, then validate signature. 2.1165 ++ (last block signature means CRC is for whole file, return now) */ 2.1166 ++ i = get_bits(bd,24); 2.1167 ++ j = get_bits(bd,24); 2.1168 ++ bd->headerCRC=get_bits(bd,32); 2.1169 ++ if ((i == 0x177245) && (j == 0x385090)) return RETVAL_LAST_BLOCK; 2.1170 ++ if ((i != 0x314159) || (j != 0x265359)) return RETVAL_NOT_BZIP_DATA; 2.1171 ++ /* We can add support for blockRandomised if anybody complains. There was 2.1172 ++ some code for this in busybox 1.0.0-pre3, but nobody ever noticed that 2.1173 ++ it didn't actually work. */ 2.1174 ++ if(get_bits(bd,1)) return RETVAL_OBSOLETE_INPUT; 2.1175 ++ if((origPtr=get_bits(bd,24)) > dbufSize) return RETVAL_DATA_ERROR; 2.1176 ++ /* mapping table: if some byte values are never used (encoding things 2.1177 ++ like ascii text), the compression code removes the gaps to have fewer 2.1178 ++ symbols to deal with, and writes a sparse bitfield indicating which 2.1179 ++ values were present. We make a translation table to convert the symbols 2.1180 ++ back to the corresponding bytes. */ 2.1181 ++ t=get_bits(bd, 16); 2.1182 ++ symTotal=0; 2.1183 ++ for (i=0;i<16;i++) { 2.1184 ++ if(t&(1<<(15-i))) { 2.1185 ++ k=get_bits(bd,16); 2.1186 ++ for(j=0;j<16;j++) 2.1187 ++ if(k&(1<<(15-j))) symToByte[symTotal++]=(16*i)+j; 2.1188 ++ } 2.1189 ++ } 2.1190 ++ /* How many different Huffman coding groups does this block use? */ 2.1191 ++ groupCount=get_bits(bd,3); 2.1192 ++ if (groupCount<2 || groupCount>MAX_GROUPS) return RETVAL_DATA_ERROR; 2.1193 ++ /* nSelectors: Every GROUP_SIZE many symbols we select a new Huffman coding 2.1194 ++ group. Read in the group selector list, which is stored as MTF encoded 2.1195 ++ bit runs. (MTF=Move To Front, as each value is used it's moved to the 2.1196 ++ start of the list.) */ 2.1197 ++ if(!(nSelectors=get_bits(bd, 15))) return RETVAL_DATA_ERROR; 2.1198 ++ for(i=0; i<groupCount; i++) mtfSymbol[i] = i; 2.1199 ++ for(i=0; i<nSelectors; i++) { 2.1200 ++ /* Get next value */ 2.1201 ++ for(j=0;get_bits(bd,1);j++) if (j>=groupCount) return RETVAL_DATA_ERROR; 2.1202 ++ /* Decode MTF to get the next selector */ 2.1203 ++ uc = mtfSymbol[j]; 2.1204 ++ for(;j;j--) mtfSymbol[j] = mtfSymbol[j-1]; 2.1205 ++ mtfSymbol[0]=selectors[i]=uc; 2.1206 ++ } 2.1207 ++ /* Read the Huffman coding tables for each group, which code for symTotal 2.1208 ++ literal symbols, plus two run symbols (RUNA, RUNB) */ 2.1209 ++ symCount=symTotal+2; 2.1210 ++ for (j=0; j<groupCount; j++) { 2.1211 ++ unsigned char length[MAX_SYMBOLS],temp[MAX_HUFCODE_BITS+1]; 2.1212 ++ int minLen, maxLen, pp; 2.1213 ++ /* Read Huffman code lengths for each symbol. They're stored in 2.1214 ++ a way similar to mtf; record a starting value for the first symbol, 2.1215 ++ and an offset from the previous value for everys symbol after that. 2.1216 ++ (Subtracting 1 before the loop and then adding it back at the end is 2.1217 ++ an optimization that makes the test inside the loop simpler: symbol 2.1218 ++ length 0 becomes negative, so an unsigned inequality catches it.) */ 2.1219 ++ t=get_bits(bd, 5)-1; 2.1220 ++ for (i = 0; i < symCount; i++) { 2.1221 ++ for(;;) { 2.1222 ++ if (((unsigned)t) > (MAX_HUFCODE_BITS-1)) 2.1223 ++ return RETVAL_DATA_ERROR; 2.1224 ++ /* If first bit is 0, stop. Else second bit indicates whether 2.1225 ++ to increment or decrement the value. Optimization: grab 2 2.1226 ++ bits and unget the second if the first was 0. */ 2.1227 ++ k = get_bits(bd,2); 2.1228 ++ if (k < 2) { 2.1229 ++ bd->inbufBitCount++; 2.1230 ++ break; 2.1231 ++ } 2.1232 ++ /* Add one if second bit 1, else subtract 1. Avoids if/else */ 2.1233 ++ t+=(((k+1)&2)-1); 2.1234 ++ } 2.1235 ++ /* Correct for the initial -1, to get the final symbol length */ 2.1236 ++ length[i]=t+1; 2.1237 ++ } 2.1238 ++ /* Find largest and smallest lengths in this group */ 2.1239 ++ minLen=maxLen=length[0]; 2.1240 ++ for(i = 1; i < symCount; i++) { 2.1241 ++ if(length[i] > maxLen) maxLen = length[i]; 2.1242 ++ else if(length[i] < minLen) minLen = length[i]; 2.1243 ++ } 2.1244 ++ /* Calculate permute[], base[], and limit[] tables from length[]. 2.1245 ++ * 2.1246 ++ * permute[] is the lookup table for converting Huffman coded symbols 2.1247 ++ * into decoded symbols. base[] is the amount to subtract from the 2.1248 ++ * value of a Huffman symbol of a given length when using permute[]. 2.1249 ++ * 2.1250 ++ * limit[] indicates the largest numerical value a symbol with a given 2.1251 ++ * number of bits can have. This is how the Huffman codes can vary in 2.1252 ++ * length: each code with a value>limit[length] needs another bit. 2.1253 ++ */ 2.1254 ++ hufGroup=bd->groups+j; 2.1255 ++ hufGroup->minLen = minLen; 2.1256 ++ hufGroup->maxLen = maxLen; 2.1257 ++ /* Note that minLen can't be smaller than 1, so we adjust the base 2.1258 ++ and limit array pointers so we're not always wasting the first 2.1259 ++ entry. We do this again when using them (during symbol decoding).*/ 2.1260 ++ base=hufGroup->base-1; 2.1261 ++ limit=hufGroup->limit-1; 2.1262 ++ /* Calculate permute[]. Concurently, initialize temp[] and limit[]. */ 2.1263 ++ pp=0; 2.1264 ++ for(i=minLen;i<=maxLen;i++) { 2.1265 ++ temp[i]=limit[i]=0; 2.1266 ++ for(t=0;t<symCount;t++) 2.1267 ++ if(length[t]==i) hufGroup->permute[pp++] = t; 2.1268 ++ } 2.1269 ++ /* Count symbols coded for at each bit length */ 2.1270 ++ for (i=0;i<symCount;i++) temp[length[i]]++; 2.1271 ++ /* Calculate limit[] (the largest symbol-coding value at each bit 2.1272 ++ * length, which is (previous limit<<1)+symbols at this level), and 2.1273 ++ * base[] (number of symbols to ignore at each bit length, which is 2.1274 ++ * limit minus the cumulative count of symbols coded for already). */ 2.1275 ++ pp=t=0; 2.1276 ++ for (i=minLen; i<maxLen; i++) { 2.1277 ++ pp+=temp[i]; 2.1278 ++ /* We read the largest possible symbol size and then unget bits 2.1279 ++ after determining how many we need, and those extra bits could 2.1280 ++ be set to anything. (They're noise from future symbols.) At 2.1281 ++ each level we're really only interested in the first few bits, 2.1282 ++ so here we set all the trailing to-be-ignored bits to 1 so they 2.1283 ++ don't affect the value>limit[length] comparison. */ 2.1284 ++ limit[i]= (pp << (maxLen - i)) - 1; 2.1285 ++ pp<<=1; 2.1286 ++ base[i+1]=pp-(t+=temp[i]); 2.1287 ++ } 2.1288 ++ limit[maxLen+1] = INT_MAX; /* Sentinal value for reading next sym. */ 2.1289 ++ limit[maxLen]=pp+temp[maxLen]-1; 2.1290 ++ base[minLen]=0; 2.1291 ++ } 2.1292 ++ /* We've finished reading and digesting the block header. Now read this 2.1293 ++ block's Huffman coded symbols from the file and undo the Huffman coding 2.1294 ++ and run length encoding, saving the result into dbuf[dbufCount++]=uc */ 2.1295 ++ 2.1296 ++ /* Initialize symbol occurrence counters and symbol Move To Front table */ 2.1297 ++ for(i=0;i<256;i++) { 2.1298 ++ byteCount[i] = 0; 2.1299 ++ mtfSymbol[i]=(unsigned char)i; 2.1300 ++ } 2.1301 ++ /* Loop through compressed symbols. */ 2.1302 ++ runPos=dbufCount=symCount=selector=0; 2.1303 ++ for(;;) { 2.1304 ++ /* Determine which Huffman coding group to use. */ 2.1305 ++ if(!(symCount--)) { 2.1306 ++ symCount=GROUP_SIZE-1; 2.1307 ++ if(selector>=nSelectors) return RETVAL_DATA_ERROR; 2.1308 ++ hufGroup=bd->groups+selectors[selector++]; 2.1309 ++ base=hufGroup->base-1; 2.1310 ++ limit=hufGroup->limit-1; 2.1311 ++ } 2.1312 ++ /* Read next Huffman-coded symbol. */ 2.1313 ++ /* Note: It is far cheaper to read maxLen bits and back up than it is 2.1314 ++ to read minLen bits and then an additional bit at a time, testing 2.1315 ++ as we go. Because there is a trailing last block (with file CRC), 2.1316 ++ there is no danger of the overread causing an unexpected EOF for a 2.1317 ++ valid compressed file. As a further optimization, we do the read 2.1318 ++ inline (falling back to a call to get_bits if the buffer runs 2.1319 ++ dry). The following (up to got_huff_bits:) is equivalent to 2.1320 ++ j=get_bits(bd,hufGroup->maxLen); 2.1321 ++ */ 2.1322 ++ while (bd->inbufBitCount<hufGroup->maxLen) { 2.1323 ++ if(bd->inbufPos==bd->inbufCount) { 2.1324 ++ j = get_bits(bd,hufGroup->maxLen); 2.1325 ++ goto got_huff_bits; 2.1326 ++ } 2.1327 ++ bd->inbufBits=(bd->inbufBits<<8)|bd->inbuf[bd->inbufPos++]; 2.1328 ++ bd->inbufBitCount+=8; 2.1329 ++ }; 2.1330 ++ bd->inbufBitCount-=hufGroup->maxLen; 2.1331 ++ j = (bd->inbufBits>>bd->inbufBitCount)&((1<<hufGroup->maxLen)-1); 2.1332 ++got_huff_bits: 2.1333 ++ /* Figure how how many bits are in next symbol and unget extras */ 2.1334 ++ i=hufGroup->minLen; 2.1335 ++ while(j>limit[i]) ++i; 2.1336 ++ bd->inbufBitCount += (hufGroup->maxLen - i); 2.1337 ++ /* Huffman decode value to get nextSym (with bounds checking) */ 2.1338 ++ if ((i > hufGroup->maxLen) 2.1339 ++ || (((unsigned)(j=(j>>(hufGroup->maxLen-i))-base[i])) 2.1340 ++ >= MAX_SYMBOLS)) 2.1341 ++ return RETVAL_DATA_ERROR; 2.1342 ++ nextSym = hufGroup->permute[j]; 2.1343 ++ /* We have now decoded the symbol, which indicates either a new literal 2.1344 ++ byte, or a repeated run of the most recent literal byte. First, 2.1345 ++ check if nextSym indicates a repeated run, and if so loop collecting 2.1346 ++ how many times to repeat the last literal. */ 2.1347 ++ if (((unsigned)nextSym) <= SYMBOL_RUNB) { /* RUNA or RUNB */ 2.1348 ++ /* If this is the start of a new run, zero out counter */ 2.1349 ++ if(!runPos) { 2.1350 ++ runPos = 1; 2.1351 ++ t = 0; 2.1352 ++ } 2.1353 ++ /* Neat trick that saves 1 symbol: instead of or-ing 0 or 1 at 2.1354 ++ each bit position, add 1 or 2 instead. For example, 2.1355 ++ 1011 is 1<<0 + 1<<1 + 2<<2. 1010 is 2<<0 + 2<<1 + 1<<2. 2.1356 ++ You can make any bit pattern that way using 1 less symbol than 2.1357 ++ the basic or 0/1 method (except all bits 0, which would use no 2.1358 ++ symbols, but a run of length 0 doesn't mean anything in this 2.1359 ++ context). Thus space is saved. */ 2.1360 ++ t += (runPos << nextSym); /* +runPos if RUNA; +2*runPos if RUNB */ 2.1361 ++ runPos <<= 1; 2.1362 ++ continue; 2.1363 ++ } 2.1364 ++ /* When we hit the first non-run symbol after a run, we now know 2.1365 ++ how many times to repeat the last literal, so append that many 2.1366 ++ copies to our buffer of decoded symbols (dbuf) now. (The last 2.1367 ++ literal used is the one at the head of the mtfSymbol array.) */ 2.1368 ++ if(runPos) { 2.1369 ++ runPos=0; 2.1370 ++ if(dbufCount+t>=dbufSize) return RETVAL_DATA_ERROR; 2.1371 ++ 2.1372 ++ uc = symToByte[mtfSymbol[0]]; 2.1373 ++ byteCount[uc] += t; 2.1374 ++ while(t--) dbuf[dbufCount++]=uc; 2.1375 ++ } 2.1376 ++ /* Is this the terminating symbol? */ 2.1377 ++ if(nextSym>symTotal) break; 2.1378 ++ /* At this point, nextSym indicates a new literal character. Subtract 2.1379 ++ one to get the position in the MTF array at which this literal is 2.1380 ++ currently to be found. (Note that the result can't be -1 or 0, 2.1381 ++ because 0 and 1 are RUNA and RUNB. But another instance of the 2.1382 ++ first symbol in the mtf array, position 0, would have been handled 2.1383 ++ as part of a run above. Therefore 1 unused mtf position minus 2.1384 ++ 2 non-literal nextSym values equals -1.) */ 2.1385 ++ if(dbufCount>=dbufSize) return RETVAL_DATA_ERROR; 2.1386 ++ i = nextSym - 1; 2.1387 ++ uc = mtfSymbol[i]; 2.1388 ++ /* Adjust the MTF array. Since we typically expect to move only a 2.1389 ++ * small number of symbols, and are bound by 256 in any case, using 2.1390 ++ * memmove here would typically be bigger and slower due to function 2.1391 ++ * call overhead and other assorted setup costs. */ 2.1392 ++ do { 2.1393 ++ mtfSymbol[i] = mtfSymbol[i-1]; 2.1394 ++ } while (--i); 2.1395 ++ mtfSymbol[0] = uc; 2.1396 ++ uc=symToByte[uc]; 2.1397 ++ /* We have our literal byte. Save it into dbuf. */ 2.1398 ++ byteCount[uc]++; 2.1399 ++ dbuf[dbufCount++] = (unsigned int)uc; 2.1400 ++ } 2.1401 ++ /* At this point, we've read all the Huffman-coded symbols (and repeated 2.1402 ++ runs) for this block from the input stream, and decoded them into the 2.1403 ++ intermediate buffer. There are dbufCount many decoded bytes in dbuf[]. 2.1404 ++ Now undo the Burrows-Wheeler transform on dbuf. 2.1405 ++ See http://dogma.net/markn/articles/bwt/bwt.htm 2.1406 ++ */ 2.1407 ++ /* Turn byteCount into cumulative occurrence counts of 0 to n-1. */ 2.1408 ++ j=0; 2.1409 ++ for(i=0;i<256;i++) { 2.1410 ++ k=j+byteCount[i]; 2.1411 ++ byteCount[i] = j; 2.1412 ++ j=k; 2.1413 ++ } 2.1414 ++ /* Figure out what order dbuf would be in if we sorted it. */ 2.1415 ++ for (i=0;i<dbufCount;i++) { 2.1416 ++ uc=(unsigned char)(dbuf[i] & 0xff); 2.1417 ++ dbuf[byteCount[uc]] |= (i << 8); 2.1418 ++ byteCount[uc]++; 2.1419 ++ } 2.1420 ++ /* Decode first byte by hand to initialize "previous" byte. Note that it 2.1421 ++ doesn't get output, and if the first three characters are identical 2.1422 ++ it doesn't qualify as a run (hence writeRunCountdown=5). */ 2.1423 ++ if(dbufCount) { 2.1424 ++ if(origPtr>=dbufCount) return RETVAL_DATA_ERROR; 2.1425 ++ bd->writePos=dbuf[origPtr]; 2.1426 ++ bd->writeCurrent=(unsigned char)(bd->writePos&0xff); 2.1427 ++ bd->writePos>>=8; 2.1428 ++ bd->writeRunCountdown=5; 2.1429 ++ } 2.1430 ++ bd->writeCount=dbufCount; 2.1431 ++ 2.1432 ++ return RETVAL_OK; 2.1433 ++} 2.1434 ++ 2.1435 ++/* Undo burrows-wheeler transform on intermediate buffer to produce output. 2.1436 ++ If start_bunzip was initialized with out_fd=-1, then up to len bytes of 2.1437 ++ data are written to outbuf. Return value is number of bytes written or 2.1438 ++ error (all errors are negative numbers). If out_fd!=-1, outbuf and len 2.1439 ++ are ignored, data is written to out_fd and return is RETVAL_OK or error. 2.1440 ++*/ 2.1441 ++ 2.1442 ++static int read_bunzip(bunzip_data *bd, char *outbuf, int len) 2.1443 ++{ 2.1444 ++ const unsigned int *dbuf; 2.1445 ++ int pos,xcurrent,previous,gotcount; 2.1446 ++ 2.1447 ++ /* If last read was short due to end of file, return last block now */ 2.1448 ++ if(bd->writeCount<0) return bd->writeCount; 2.1449 ++ 2.1450 ++ gotcount = 0; 2.1451 ++ dbuf=bd->dbuf; 2.1452 ++ pos=bd->writePos; 2.1453 ++ xcurrent=bd->writeCurrent; 2.1454 ++ 2.1455 ++ /* We will always have pending decoded data to write into the output 2.1456 ++ buffer unless this is the very first call (in which case we haven't 2.1457 ++ Huffman-decoded a block into the intermediate buffer yet). */ 2.1458 ++ 2.1459 ++ if (bd->writeCopies) { 2.1460 ++ /* Inside the loop, writeCopies means extra copies (beyond 1) */ 2.1461 ++ --bd->writeCopies; 2.1462 ++ /* Loop outputting bytes */ 2.1463 ++ for(;;) { 2.1464 ++ /* If the output buffer is full, snapshot state and return */ 2.1465 ++ if(gotcount >= len) { 2.1466 ++ bd->writePos=pos; 2.1467 ++ bd->writeCurrent=xcurrent; 2.1468 ++ bd->writeCopies++; 2.1469 ++ return len; 2.1470 ++ } 2.1471 ++ /* Write next byte into output buffer, updating CRC */ 2.1472 ++ outbuf[gotcount++] = xcurrent; 2.1473 ++ bd->writeCRC=(((bd->writeCRC)<<8) 2.1474 ++ ^bd->crc32Table[((bd->writeCRC)>>24)^xcurrent]); 2.1475 ++ /* Loop now if we're outputting multiple copies of this byte */ 2.1476 ++ if (bd->writeCopies) { 2.1477 ++ --bd->writeCopies; 2.1478 ++ continue; 2.1479 ++ } 2.1480 ++decode_next_byte: 2.1481 ++ if (!bd->writeCount--) break; 2.1482 ++ /* Follow sequence vector to undo Burrows-Wheeler transform */ 2.1483 ++ previous=xcurrent; 2.1484 ++ pos=dbuf[pos]; 2.1485 ++ xcurrent=pos&0xff; 2.1486 ++ pos>>=8; 2.1487 ++ /* After 3 consecutive copies of the same byte, the 4th is a repeat 2.1488 ++ count. We count down from 4 instead 2.1489 ++ * of counting up because testing for non-zero is faster */ 2.1490 ++ if(--bd->writeRunCountdown) { 2.1491 ++ if(xcurrent!=previous) bd->writeRunCountdown=4; 2.1492 ++ } else { 2.1493 ++ /* We have a repeated run, this byte indicates the count */ 2.1494 ++ bd->writeCopies=xcurrent; 2.1495 ++ xcurrent=previous; 2.1496 ++ bd->writeRunCountdown=5; 2.1497 ++ /* Sometimes there are just 3 bytes (run length 0) */ 2.1498 ++ if(!bd->writeCopies) goto decode_next_byte; 2.1499 ++ /* Subtract the 1 copy we'd output anyway to get extras */ 2.1500 ++ --bd->writeCopies; 2.1501 ++ } 2.1502 ++ } 2.1503 ++ /* Decompression of this block completed successfully */ 2.1504 ++ bd->writeCRC=~bd->writeCRC; 2.1505 ++ bd->totalCRC=((bd->totalCRC<<1) | (bd->totalCRC>>31)) ^ bd->writeCRC; 2.1506 ++ /* If this block had a CRC error, force file level CRC error. */ 2.1507 ++ if(bd->writeCRC!=bd->headerCRC) { 2.1508 ++ bd->totalCRC=bd->headerCRC+1; 2.1509 ++ return RETVAL_LAST_BLOCK; 2.1510 ++ } 2.1511 ++ } 2.1512 ++ 2.1513 ++ /* Refill the intermediate buffer by Huffman-decoding next block of input */ 2.1514 ++ /* (previous is just a convenient unused temp variable here) */ 2.1515 ++ previous=get_next_block(bd); 2.1516 ++ if(previous) { 2.1517 ++ bd->writeCount=previous; 2.1518 ++ return (previous!=RETVAL_LAST_BLOCK) ? previous : gotcount; 2.1519 ++ } 2.1520 ++ bd->writeCRC=0xffffffffUL; 2.1521 ++ pos=bd->writePos; 2.1522 ++ xcurrent=bd->writeCurrent; 2.1523 ++ goto decode_next_byte; 2.1524 ++} 2.1525 ++ 2.1526 ++static int nofill(void *buf,unsigned int len) { 2.1527 ++ return -1; 2.1528 ++} 2.1529 ++ 2.1530 ++/* Allocate the structure, read file header. If in_fd==-1, inbuf must contain 2.1531 ++ a complete bunzip file (len bytes long). If in_fd!=-1, inbuf and len are 2.1532 ++ ignored, and data is read from file handle into temporary buffer. */ 2.1533 ++static int start_bunzip(bunzip_data **bdp, void *inbuf, int len, 2.1534 ++ int (*fill)(void*,unsigned int)) 2.1535 ++{ 2.1536 ++ bunzip_data *bd; 2.1537 ++ unsigned int i,j,c; 2.1538 ++ const unsigned int BZh0=(((unsigned int)'B')<<24)+(((unsigned int)'Z')<<16) 2.1539 ++ +(((unsigned int)'h')<<8)+(unsigned int)'0'; 2.1540 ++ 2.1541 ++ /* Figure out how much data to allocate */ 2.1542 ++ i=sizeof(bunzip_data); 2.1543 ++ 2.1544 ++ /* Allocate bunzip_data. Most fields initialize to zero. */ 2.1545 ++ bd=*bdp=malloc(i); 2.1546 ++ memset(bd,0,sizeof(bunzip_data)); 2.1547 ++ /* Setup input buffer */ 2.1548 ++ bd->inbuf=inbuf; 2.1549 ++ bd->inbufCount=len; 2.1550 ++ if(fill != NULL) 2.1551 ++ bd->fill=fill; 2.1552 ++ else 2.1553 ++ bd->fill=nofill; 2.1554 ++ 2.1555 ++ /* Init the CRC32 table (big endian) */ 2.1556 ++ for(i=0;i<256;i++) { 2.1557 ++ c=i<<24; 2.1558 ++ for(j=8;j;j--) 2.1559 ++ c=c&0x80000000 ? (c<<1)^0x04c11db7 : (c<<1); 2.1560 ++ bd->crc32Table[i]=c; 2.1561 ++ } 2.1562 ++ 2.1563 ++ /* Ensure that file starts with "BZh['1'-'9']." */ 2.1564 ++ i = get_bits(bd,32); 2.1565 ++ if (((unsigned int)(i-BZh0-1)) >= 9) return RETVAL_NOT_BZIP_DATA; 2.1566 ++ 2.1567 ++ /* Fourth byte (ascii '1'-'9'), indicates block size in units of 100k of 2.1568 ++ uncompressed data. Allocate intermediate buffer for block. */ 2.1569 ++ bd->dbufSize=100000*(i-BZh0); 2.1570 ++ 2.1571 ++ bd->dbuf=large_malloc(bd->dbufSize * sizeof(int)); 2.1572 ++ return RETVAL_OK; 2.1573 ++} 2.1574 ++ 2.1575 ++/* Example usage: decompress src_fd to dst_fd. (Stops at end of bzip data, 2.1576 ++ not end of file.) */ 2.1577 ++STATIC int bunzip2(char *inbuf, int len, 2.1578 ++ int(*fill)(void*,unsigned int), 2.1579 ++ int(*writebb)(char*,unsigned int), 2.1580 ++ int *pos) 2.1581 ++{ 2.1582 ++ char *outbuf; 2.1583 ++ bunzip_data *bd; 2.1584 ++ int i; 2.1585 ++ 2.1586 ++ outbuf=malloc(BZIP2_IOBUF_SIZE); 2.1587 ++ if(!(i=start_bunzip(&bd,inbuf,len,fill))) { 2.1588 ++ for(;;) { 2.1589 ++ if((i=read_bunzip(bd,outbuf,BZIP2_IOBUF_SIZE)) <= 0) break; 2.1590 ++ if(i!=writebb(outbuf,i)) { 2.1591 ++ i=RETVAL_UNEXPECTED_OUTPUT_EOF; 2.1592 ++ break; 2.1593 ++ } 2.1594 ++ } 2.1595 ++ } 2.1596 ++ /* Check CRC and release memory */ 2.1597 ++ if(i==RETVAL_LAST_BLOCK) { 2.1598 ++ if (bd->headerCRC!=bd->totalCRC) { 2.1599 ++ error("Data integrity error when decompressing."); 2.1600 ++ } else { 2.1601 ++ i=RETVAL_OK; 2.1602 ++ } 2.1603 ++ } 2.1604 ++ else if (i==RETVAL_UNEXPECTED_OUTPUT_EOF) { 2.1605 ++ error("Compressed file ends unexpectedly"); 2.1606 ++ } 2.1607 ++ if(bd->dbuf) large_free(bd->dbuf); 2.1608 ++ if(pos) 2.1609 ++ *pos = bd->inbufPos; 2.1610 ++ free(bd); 2.1611 ++ free(outbuf); 2.1612 ++ 2.1613 ++ return i; 2.1614 ++} 2.1615 ++ 2.1616 +--- linux-2.6.24.2/lib/decompress_unlzma.c 2.1617 ++++ linux-2.6.24.2/lib/decompress_unlzma.c 2.1618 +@@ -0,0 +1,605 @@ 2.1619 ++/* Lzma decompressor for Linux kernel. Shamelessly snarfed 2.1620 ++ * from busybox 1.1.1 2.1621 ++ * 2.1622 ++ * Linux kernel adaptation 2.1623 ++ * Copyright (C) 2006 Alain <alain@knaff.lu> 2.1624 ++ * 2.1625 ++ * Based on small lzma deflate implementation/Small range coder 2.1626 ++ * implementation for lzma. 2.1627 ++ * Copyright (C) 2006 Aurelien Jacobs <aurel@gnuage.org> 2.1628 ++ * 2.1629 ++ * Based on LzmaDecode.c from the LZMA SDK 4.22 (http://www.7-zip.org/) 2.1630 ++ * Copyright (C) 1999-2005 Igor Pavlov 2.1631 ++ * 2.1632 ++ * Copyrights of the parts, see headers below. 2.1633 ++ * 2.1634 ++ * 2.1635 ++ * This program is free software; you can redistribute it and/or 2.1636 ++ * modify it under the terms of the GNU Lesser General Public 2.1637 ++ * License as published by the Free Software Foundation; either 2.1638 ++ * version 2.1 of the License, or (at your option) any later version. 2.1639 ++ * 2.1640 ++ * This program is distributed in the hope that it will be useful, 2.1641 ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of 2.1642 ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2.1643 ++ * Lesser General Public License for more details. 2.1644 ++ * 2.1645 ++ * You should have received a copy of the GNU Lesser General Public 2.1646 ++ * License along with this library; if not, write to the Free Software 2.1647 ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 2.1648 ++ */ 2.1649 ++ 2.1650 ++#ifndef STATIC 2.1651 ++ 2.1652 ++#include <linux/kernel.h> 2.1653 ++#include <linux/fs.h> 2.1654 ++#include <linux/string.h> 2.1655 ++ 2.1656 ++#ifdef TEST 2.1657 ++#include "test.h" 2.1658 ++#else 2.1659 ++#include <linux/vmalloc.h> 2.1660 ++#endif 2.1661 ++ 2.1662 ++static void __init *large_malloc(size_t size) 2.1663 ++{ 2.1664 ++ return vmalloc(size); 2.1665 ++} 2.1666 ++ 2.1667 ++static void __init large_free(void *where) 2.1668 ++{ 2.1669 ++ vfree(where); 2.1670 ++} 2.1671 ++ 2.1672 ++#ifndef TEST 2.1673 ++static void __init *malloc(size_t size) 2.1674 ++{ 2.1675 ++ return kmalloc(size, GFP_KERNEL); 2.1676 ++} 2.1677 ++ 2.1678 ++static void __init free(void *where) 2.1679 ++{ 2.1680 ++ kfree(where); 2.1681 ++} 2.1682 ++ 2.1683 ++static void __init error(char *x) 2.1684 ++{ 2.1685 ++ printk(KERN_ERR "%s\n", x); 2.1686 ++} 2.1687 ++ 2.1688 ++#endif 2.1689 ++ 2.1690 ++#define STATIC /**/ 2.1691 ++ 2.1692 ++#endif 2.1693 ++ 2.1694 ++#include <linux/decompress_unlzma.h> 2.1695 ++ 2.1696 ++#define MIN(a,b) (((a)<(b))?(a):(b)) 2.1697 ++ 2.1698 ++static long long read_int(unsigned char *ptr, int size) 2.1699 ++{ 2.1700 ++ int i; 2.1701 ++ long long ret=0; 2.1702 ++ 2.1703 ++ for(i=0; i<size; i++) { 2.1704 ++ ret = (ret << 8) | ptr[size-i-1]; 2.1705 ++ } 2.1706 ++ return ret; 2.1707 ++} 2.1708 ++ 2.1709 ++#define ENDIAN_CONVERT(x) x=(typeof(x))read_int((unsigned char*)&x,sizeof(x)) 2.1710 ++ 2.1711 ++ 2.1712 ++/* Small range coder implementation for lzma. 2.1713 ++ * Copyright (C) 2006 Aurelien Jacobs <aurel@gnuage.org> 2.1714 ++ * 2.1715 ++ * Based on LzmaDecode.c from the LZMA SDK 4.22 (http://www.7-zip.org/) 2.1716 ++ * Copyright (c) 1999-2005 Igor Pavlov 2.1717 ++ */ 2.1718 ++ 2.1719 ++#ifndef always_inline 2.1720 ++# if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ >0) 2.1721 ++# define always_inline __attribute__((always_inline)) inline 2.1722 ++# else 2.1723 ++# define always_inline inline 2.1724 ++# endif 2.1725 ++#endif 2.1726 ++ 2.1727 ++#ifdef CONFIG_FEATURE_LZMA_FAST 2.1728 ++# define speed_inline always_inline 2.1729 ++#else 2.1730 ++# define speed_inline 2.1731 ++#endif 2.1732 ++ 2.1733 ++ 2.1734 ++typedef struct { 2.1735 ++ int (*fill)(void*,unsigned int); 2.1736 ++ uint8_t *ptr; 2.1737 ++ uint8_t *buffer; 2.1738 ++ uint8_t *buffer_end; 2.1739 ++ int buffer_size; 2.1740 ++ uint32_t code; 2.1741 ++ uint32_t range; 2.1742 ++ uint32_t bound; 2.1743 ++} rc_t; 2.1744 ++ 2.1745 ++ 2.1746 ++#define RC_TOP_BITS 24 2.1747 ++#define RC_MOVE_BITS 5 2.1748 ++#define RC_MODEL_TOTAL_BITS 11 2.1749 ++ 2.1750 ++ 2.1751 ++/* Called twice: once at startup and once in rc_normalize() */ 2.1752 ++static void rc_read(rc_t * rc) 2.1753 ++{ 2.1754 ++ rc->buffer_size = rc->fill((char*)rc->buffer, LZMA_IOBUF_SIZE); 2.1755 ++ if (rc->buffer_size <= 0) 2.1756 ++ error("unexpected EOF"); 2.1757 ++ rc->ptr = rc->buffer; 2.1758 ++ rc->buffer_end = rc->buffer + rc->buffer_size; 2.1759 ++} 2.1760 ++ 2.1761 ++/* Called once */ 2.1762 ++static always_inline void rc_init(rc_t * rc, int (*fill)(void*,unsigned int), 2.1763 ++ char *buffer, int buffer_size) 2.1764 ++{ 2.1765 ++ rc->fill = fill; 2.1766 ++ rc->buffer = (uint8_t *)buffer; 2.1767 ++ rc->buffer_size = buffer_size; 2.1768 ++ rc->buffer_end = rc->buffer + rc->buffer_size; 2.1769 ++ rc->ptr = rc->buffer; 2.1770 ++ 2.1771 ++ rc->code = 0; 2.1772 ++ rc->range = 0xFFFFFFFF; 2.1773 ++} 2.1774 ++ 2.1775 ++static always_inline void rc_init_code(rc_t * rc) 2.1776 ++{ 2.1777 ++ int i; 2.1778 ++ 2.1779 ++ for (i = 0; i < 5; i++) { 2.1780 ++ if (rc->ptr >= rc->buffer_end) 2.1781 ++ rc_read(rc); 2.1782 ++ rc->code = (rc->code << 8) | *rc->ptr++; 2.1783 ++ } 2.1784 ++} 2.1785 ++ 2.1786 ++ 2.1787 ++/* Called once. TODO: bb_maybe_free() */ 2.1788 ++static always_inline void rc_free(rc_t * rc) 2.1789 ++{ 2.1790 ++ free(rc->buffer); 2.1791 ++} 2.1792 ++ 2.1793 ++/* Called twice, but one callsite is in speed_inline'd rc_is_bit_0_helper() */ 2.1794 ++static void rc_do_normalize(rc_t * rc) 2.1795 ++{ 2.1796 ++ if (rc->ptr >= rc->buffer_end) 2.1797 ++ rc_read(rc); 2.1798 ++ rc->range <<= 8; 2.1799 ++ rc->code = (rc->code << 8) | *rc->ptr++; 2.1800 ++} 2.1801 ++static always_inline void rc_normalize(rc_t * rc) 2.1802 ++{ 2.1803 ++ if (rc->range < (1 << RC_TOP_BITS)) { 2.1804 ++ rc_do_normalize(rc); 2.1805 ++ } 2.1806 ++} 2.1807 ++ 2.1808 ++/* Called 9 times */ 2.1809 ++/* Why rc_is_bit_0_helper exists? 2.1810 ++ * Because we want to always expose (rc->code < rc->bound) to optimizer 2.1811 ++ */ 2.1812 ++static speed_inline uint32_t rc_is_bit_0_helper(rc_t * rc, uint16_t * p) 2.1813 ++{ 2.1814 ++ rc_normalize(rc); 2.1815 ++ rc->bound = *p * (rc->range >> RC_MODEL_TOTAL_BITS); 2.1816 ++ return rc->bound; 2.1817 ++} 2.1818 ++static always_inline int rc_is_bit_0(rc_t * rc, uint16_t * p) 2.1819 ++{ 2.1820 ++ uint32_t t = rc_is_bit_0_helper(rc, p); 2.1821 ++ return rc->code < t; 2.1822 ++} 2.1823 ++ 2.1824 ++/* Called ~10 times, but very small, thus inlined */ 2.1825 ++static speed_inline void rc_update_bit_0(rc_t * rc, uint16_t * p) 2.1826 ++{ 2.1827 ++ rc->range = rc->bound; 2.1828 ++ *p += ((1 << RC_MODEL_TOTAL_BITS) - *p) >> RC_MOVE_BITS; 2.1829 ++} 2.1830 ++static speed_inline void rc_update_bit_1(rc_t * rc, uint16_t * p) 2.1831 ++{ 2.1832 ++ rc->range -= rc->bound; 2.1833 ++ rc->code -= rc->bound; 2.1834 ++ *p -= *p >> RC_MOVE_BITS; 2.1835 ++} 2.1836 ++ 2.1837 ++/* Called 4 times in unlzma loop */ 2.1838 ++static int rc_get_bit(rc_t * rc, uint16_t * p, int *symbol) 2.1839 ++{ 2.1840 ++ if (rc_is_bit_0(rc, p)) { 2.1841 ++ rc_update_bit_0(rc, p); 2.1842 ++ *symbol *= 2; 2.1843 ++ return 0; 2.1844 ++ } else { 2.1845 ++ rc_update_bit_1(rc, p); 2.1846 ++ *symbol = *symbol * 2 + 1; 2.1847 ++ return 1; 2.1848 ++ } 2.1849 ++} 2.1850 ++ 2.1851 ++/* Called once */ 2.1852 ++static always_inline int rc_direct_bit(rc_t * rc) 2.1853 ++{ 2.1854 ++ rc_normalize(rc); 2.1855 ++ rc->range >>= 1; 2.1856 ++ if (rc->code >= rc->range) { 2.1857 ++ rc->code -= rc->range; 2.1858 ++ return 1; 2.1859 ++ } 2.1860 ++ return 0; 2.1861 ++} 2.1862 ++ 2.1863 ++/* Called twice */ 2.1864 ++static speed_inline void 2.1865 ++rc_bit_tree_decode(rc_t * rc, uint16_t * p, int num_levels, int *symbol) 2.1866 ++{ 2.1867 ++ int i = num_levels; 2.1868 ++ 2.1869 ++ *symbol = 1; 2.1870 ++ while (i--) 2.1871 ++ rc_get_bit(rc, p + *symbol, symbol); 2.1872 ++ *symbol -= 1 << num_levels; 2.1873 ++} 2.1874 ++ 2.1875 ++ 2.1876 ++/* 2.1877 ++ * Small lzma deflate implementation. 2.1878 ++ * Copyright (C) 2006 Aurelien Jacobs <aurel@gnuage.org> 2.1879 ++ * 2.1880 ++ * Based on LzmaDecode.c from the LZMA SDK 4.22 (http://www.7-zip.org/) 2.1881 ++ * Copyright (C) 1999-2005 Igor Pavlov 2.1882 ++ */ 2.1883 ++ 2.1884 ++ 2.1885 ++typedef struct { 2.1886 ++ uint8_t pos; 2.1887 ++ uint32_t dict_size; 2.1888 ++ uint64_t dst_size; 2.1889 ++} __attribute__ ((packed)) lzma_header_t; 2.1890 ++ 2.1891 ++ 2.1892 ++#define LZMA_BASE_SIZE 1846 2.1893 ++#define LZMA_LIT_SIZE 768 2.1894 ++ 2.1895 ++#define LZMA_NUM_POS_BITS_MAX 4 2.1896 ++ 2.1897 ++#define LZMA_LEN_NUM_LOW_BITS 3 2.1898 ++#define LZMA_LEN_NUM_MID_BITS 3 2.1899 ++#define LZMA_LEN_NUM_HIGH_BITS 8 2.1900 ++ 2.1901 ++#define LZMA_LEN_CHOICE 0 2.1902 ++#define LZMA_LEN_CHOICE_2 (LZMA_LEN_CHOICE + 1) 2.1903 ++#define LZMA_LEN_LOW (LZMA_LEN_CHOICE_2 + 1) 2.1904 ++#define LZMA_LEN_MID (LZMA_LEN_LOW \ 2.1905 ++ + (1 << (LZMA_NUM_POS_BITS_MAX + LZMA_LEN_NUM_LOW_BITS))) 2.1906 ++#define LZMA_LEN_HIGH (LZMA_LEN_MID \ 2.1907 ++ +(1 << (LZMA_NUM_POS_BITS_MAX + LZMA_LEN_NUM_MID_BITS))) 2.1908 ++#define LZMA_NUM_LEN_PROBS (LZMA_LEN_HIGH + (1 << LZMA_LEN_NUM_HIGH_BITS)) 2.1909 ++ 2.1910 ++#define LZMA_NUM_STATES 12 2.1911 ++#define LZMA_NUM_LIT_STATES 7 2.1912 ++ 2.1913 ++#define LZMA_START_POS_MODEL_INDEX 4 2.1914 ++#define LZMA_END_POS_MODEL_INDEX 14 2.1915 ++#define LZMA_NUM_FULL_DISTANCES (1 << (LZMA_END_POS_MODEL_INDEX >> 1)) 2.1916 ++ 2.1917 ++#define LZMA_NUM_POS_SLOT_BITS 6 2.1918 ++#define LZMA_NUM_LEN_TO_POS_STATES 4 2.1919 ++ 2.1920 ++#define LZMA_NUM_ALIGN_BITS 4 2.1921 ++ 2.1922 ++#define LZMA_MATCH_MIN_LEN 2 2.1923 ++ 2.1924 ++#define LZMA_IS_MATCH 0 2.1925 ++#define LZMA_IS_REP (LZMA_IS_MATCH + (LZMA_NUM_STATES <<LZMA_NUM_POS_BITS_MAX)) 2.1926 ++#define LZMA_IS_REP_G0 (LZMA_IS_REP + LZMA_NUM_STATES) 2.1927 ++#define LZMA_IS_REP_G1 (LZMA_IS_REP_G0 + LZMA_NUM_STATES) 2.1928 ++#define LZMA_IS_REP_G2 (LZMA_IS_REP_G1 + LZMA_NUM_STATES) 2.1929 ++#define LZMA_IS_REP_0_LONG (LZMA_IS_REP_G2 + LZMA_NUM_STATES) 2.1930 ++#define LZMA_POS_SLOT (LZMA_IS_REP_0_LONG \ 2.1931 ++ + (LZMA_NUM_STATES << LZMA_NUM_POS_BITS_MAX)) 2.1932 ++#define LZMA_SPEC_POS (LZMA_POS_SLOT \ 2.1933 ++ +(LZMA_NUM_LEN_TO_POS_STATES << LZMA_NUM_POS_SLOT_BITS)) 2.1934 ++#define LZMA_ALIGN (LZMA_SPEC_POS \ 2.1935 ++ + LZMA_NUM_FULL_DISTANCES - LZMA_END_POS_MODEL_INDEX) 2.1936 ++#define LZMA_LEN_CODER (LZMA_ALIGN + (1 << LZMA_NUM_ALIGN_BITS)) 2.1937 ++#define LZMA_REP_LEN_CODER (LZMA_LEN_CODER + LZMA_NUM_LEN_PROBS) 2.1938 ++#define LZMA_LITERAL (LZMA_REP_LEN_CODER + LZMA_NUM_LEN_PROBS) 2.1939 ++ 2.1940 ++ 2.1941 ++STATIC int unlzma(char *inbuf, int in_len, 2.1942 ++ int(*fill)(void*,unsigned int), 2.1943 ++ int(*writebb)(char*,unsigned int), 2.1944 ++ int *posp) 2.1945 ++{ 2.1946 ++ lzma_header_t header; 2.1947 ++ int lc, pb, lp; 2.1948 ++ uint32_t pos_state_mask; 2.1949 ++ uint32_t literal_pos_mask; 2.1950 ++ uint32_t pos; 2.1951 ++ uint16_t *p; 2.1952 ++ uint16_t *prob; 2.1953 ++ uint16_t *prob_lit; 2.1954 ++ int num_bits; 2.1955 ++ int num_probs; 2.1956 ++ rc_t rc; 2.1957 ++ int i, mi; 2.1958 ++ uint8_t *buffer; 2.1959 ++ uint8_t previous_byte = 0; 2.1960 ++ size_t buffer_pos = 0, global_pos = 0; 2.1961 ++ int len = 0; 2.1962 ++ int state = 0; 2.1963 ++ int bufsize; 2.1964 ++ uint32_t rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1; 2.1965 ++ 2.1966 ++ rc_init(&rc, fill, inbuf, in_len); 2.1967 ++ 2.1968 ++ for (i = 0; i < sizeof(header); i++) { 2.1969 ++ if (rc.ptr >= rc.buffer_end) 2.1970 ++ rc_read(&rc); 2.1971 ++ ((unsigned char *)&header)[i] = *rc.ptr++; 2.1972 ++ } 2.1973 ++ 2.1974 ++ if (header.pos >= (9 * 5 * 5)) 2.1975 ++ error("bad header"); 2.1976 ++ 2.1977 ++ mi = header.pos / 9; 2.1978 ++ lc = header.pos % 9; 2.1979 ++ pb = mi / 5; 2.1980 ++ lp = mi % 5; 2.1981 ++ pos_state_mask = (1 << pb) - 1; 2.1982 ++ literal_pos_mask = (1 << lp) - 1; 2.1983 ++ 2.1984 ++ ENDIAN_CONVERT(header.dict_size); 2.1985 ++ ENDIAN_CONVERT(header.dst_size); 2.1986 ++ 2.1987 ++ if (header.dict_size == 0) 2.1988 ++ header.dict_size = 1; 2.1989 ++ 2.1990 ++ bufsize = MIN(header.dst_size, header.dict_size); 2.1991 ++ buffer = large_malloc(bufsize); 2.1992 ++ if(buffer == NULL) 2.1993 ++ return -1; 2.1994 ++ 2.1995 ++ num_probs = LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)); 2.1996 ++ p = large_malloc(num_probs * sizeof(*p)); 2.1997 ++ num_probs = LZMA_LITERAL + (LZMA_LIT_SIZE << (lc + lp)); 2.1998 ++ for (i = 0; i < num_probs; i++) 2.1999 ++ p[i] = (1 << RC_MODEL_TOTAL_BITS) >> 1; 2.2000 ++ 2.2001 ++ rc_init_code(&rc); 2.2002 ++ 2.2003 ++ while (global_pos + buffer_pos < header.dst_size) { 2.2004 ++ int pos_state = (buffer_pos + global_pos) & pos_state_mask; 2.2005 ++ 2.2006 ++ prob = 2.2007 ++ p + LZMA_IS_MATCH + (state << LZMA_NUM_POS_BITS_MAX) + pos_state; 2.2008 ++ if (rc_is_bit_0(&rc, prob)) { 2.2009 ++ mi = 1; 2.2010 ++ rc_update_bit_0(&rc, prob); 2.2011 ++ prob = (p + LZMA_LITERAL + (LZMA_LIT_SIZE 2.2012 ++ * ((((buffer_pos + global_pos) & literal_pos_mask) << lc) 2.2013 ++ + (previous_byte >> (8 - lc))))); 2.2014 ++ 2.2015 ++ if (state >= LZMA_NUM_LIT_STATES) { 2.2016 ++ int match_byte; 2.2017 ++ 2.2018 ++ pos = buffer_pos - rep0; 2.2019 ++ while (pos >= header.dict_size) 2.2020 ++ pos += header.dict_size; 2.2021 ++ if(pos >= bufsize) { 2.2022 ++ goto fail; 2.2023 ++ } 2.2024 ++ match_byte = buffer[pos]; 2.2025 ++ do { 2.2026 ++ int bit; 2.2027 ++ 2.2028 ++ match_byte <<= 1; 2.2029 ++ bit = match_byte & 0x100; 2.2030 ++ prob_lit = prob + 0x100 + bit + mi; 2.2031 ++ if (rc_get_bit(&rc, prob_lit, &mi)) { 2.2032 ++ if (!bit) 2.2033 ++ break; 2.2034 ++ } else { 2.2035 ++ if (bit) 2.2036 ++ break; 2.2037 ++ } 2.2038 ++ } while (mi < 0x100); 2.2039 ++ } 2.2040 ++ while (mi < 0x100) { 2.2041 ++ prob_lit = prob + mi; 2.2042 ++ rc_get_bit(&rc, prob_lit, &mi); 2.2043 ++ } 2.2044 ++ previous_byte = (uint8_t) mi; 2.2045 ++ 2.2046 ++ buffer[buffer_pos++] = previous_byte; 2.2047 ++ if (buffer_pos == header.dict_size) { 2.2048 ++ buffer_pos = 0; 2.2049 ++ global_pos += header.dict_size; 2.2050 ++ writebb((char*)buffer, header.dict_size); 2.2051 ++ } 2.2052 ++ if (state < 4) 2.2053 ++ state = 0; 2.2054 ++ else if (state < 10) 2.2055 ++ state -= 3; 2.2056 ++ else 2.2057 ++ state -= 6; 2.2058 ++ } else { 2.2059 ++ int offset; 2.2060 ++ uint16_t *prob_len; 2.2061 ++ 2.2062 ++ rc_update_bit_1(&rc, prob); 2.2063 ++ prob = p + LZMA_IS_REP + state; 2.2064 ++ if (rc_is_bit_0(&rc, prob)) { 2.2065 ++ rc_update_bit_0(&rc, prob); 2.2066 ++ rep3 = rep2; 2.2067 ++ rep2 = rep1; 2.2068 ++ rep1 = rep0; 2.2069 ++ state = state < LZMA_NUM_LIT_STATES ? 0 : 3; 2.2070 ++ prob = p + LZMA_LEN_CODER; 2.2071 ++ } else { 2.2072 ++ rc_update_bit_1(&rc, prob); 2.2073 ++ prob = p + LZMA_IS_REP_G0 + state; 2.2074 ++ if (rc_is_bit_0(&rc, prob)) { 2.2075 ++ rc_update_bit_0(&rc, prob); 2.2076 ++ prob = (p + LZMA_IS_REP_0_LONG 2.2077 ++ + (state << LZMA_NUM_POS_BITS_MAX) + pos_state); 2.2078 ++ if (rc_is_bit_0(&rc, prob)) { 2.2079 ++ rc_update_bit_0(&rc, prob); 2.2080 ++ 2.2081 ++ state = state < LZMA_NUM_LIT_STATES ? 9 : 11; 2.2082 ++ pos = buffer_pos - rep0; 2.2083 ++ while (pos >= header.dict_size) 2.2084 ++ pos += header.dict_size; 2.2085 ++ if(pos >= bufsize) { 2.2086 ++ goto fail; 2.2087 ++ } 2.2088 ++ previous_byte = buffer[pos]; 2.2089 ++ buffer[buffer_pos++] = previous_byte; 2.2090 ++ if (buffer_pos == header.dict_size) { 2.2091 ++ buffer_pos = 0; 2.2092 ++ global_pos += header.dict_size; 2.2093 ++ writebb((char*)buffer, header.dict_size); 2.2094 ++ } 2.2095 ++ continue; 2.2096 ++ } else { 2.2097 ++ rc_update_bit_1(&rc, prob); 2.2098 ++ } 2.2099 ++ } else { 2.2100 ++ uint32_t distance; 2.2101 ++ 2.2102 ++ rc_update_bit_1(&rc, prob); 2.2103 ++ prob = p + LZMA_IS_REP_G1 + state; 2.2104 ++ if (rc_is_bit_0(&rc, prob)) { 2.2105 ++ rc_update_bit_0(&rc, prob); 2.2106 ++ distance = rep1; 2.2107 ++ } else { 2.2108 ++ rc_update_bit_1(&rc, prob); 2.2109 ++ prob = p + LZMA_IS_REP_G2 + state; 2.2110 ++ if (rc_is_bit_0(&rc, prob)) { 2.2111 ++ rc_update_bit_0(&rc, prob); 2.2112 ++ distance = rep2; 2.2113 ++ } else { 2.2114 ++ rc_update_bit_1(&rc, prob); 2.2115 ++ distance = rep3; 2.2116 ++ rep3 = rep2; 2.2117 ++ } 2.2118 ++ rep2 = rep1; 2.2119 ++ } 2.2120 ++ rep1 = rep0; 2.2121 ++ rep0 = distance; 2.2122 ++ } 2.2123 ++ state = state < LZMA_NUM_LIT_STATES ? 8 : 11; 2.2124 ++ prob = p + LZMA_REP_LEN_CODER; 2.2125 ++ } 2.2126 ++ 2.2127 ++ prob_len = prob + LZMA_LEN_CHOICE; 2.2128 ++ if (rc_is_bit_0(&rc, prob_len)) { 2.2129 ++ rc_update_bit_0(&rc, prob_len); 2.2130 ++ prob_len = (prob + LZMA_LEN_LOW 2.2131 ++ + (pos_state << LZMA_LEN_NUM_LOW_BITS)); 2.2132 ++ offset = 0; 2.2133 ++ num_bits = LZMA_LEN_NUM_LOW_BITS; 2.2134 ++ } else { 2.2135 ++ rc_update_bit_1(&rc, prob_len); 2.2136 ++ prob_len = prob + LZMA_LEN_CHOICE_2; 2.2137 ++ if (rc_is_bit_0(&rc, prob_len)) { 2.2138 ++ rc_update_bit_0(&rc, prob_len); 2.2139 ++ prob_len = (prob + LZMA_LEN_MID 2.2140 ++ + (pos_state << LZMA_LEN_NUM_MID_BITS)); 2.2141 ++ offset = 1 << LZMA_LEN_NUM_LOW_BITS; 2.2142 ++ num_bits = LZMA_LEN_NUM_MID_BITS; 2.2143 ++ } else { 2.2144 ++ rc_update_bit_1(&rc, prob_len); 2.2145 ++ prob_len = prob + LZMA_LEN_HIGH; 2.2146 ++ offset = ((1 << LZMA_LEN_NUM_LOW_BITS) 2.2147 ++ + (1 << LZMA_LEN_NUM_MID_BITS)); 2.2148 ++ num_bits = LZMA_LEN_NUM_HIGH_BITS; 2.2149 ++ } 2.2150 ++ } 2.2151 ++ rc_bit_tree_decode(&rc, prob_len, num_bits, &len); 2.2152 ++ len += offset; 2.2153 ++ 2.2154 ++ if (state < 4) { 2.2155 ++ int pos_slot; 2.2156 ++ 2.2157 ++ state += LZMA_NUM_LIT_STATES; 2.2158 ++ prob = 2.2159 ++ p + LZMA_POS_SLOT + 2.2160 ++ ((len < 2.2161 ++ LZMA_NUM_LEN_TO_POS_STATES ? len : 2.2162 ++ LZMA_NUM_LEN_TO_POS_STATES - 1) 2.2163 ++ << LZMA_NUM_POS_SLOT_BITS); 2.2164 ++ rc_bit_tree_decode(&rc, prob, LZMA_NUM_POS_SLOT_BITS, 2.2165 ++ &pos_slot); 2.2166 ++ if (pos_slot >= LZMA_START_POS_MODEL_INDEX) { 2.2167 ++ num_bits = (pos_slot >> 1) - 1; 2.2168 ++ rep0 = 2 | (pos_slot & 1); 2.2169 ++ if (pos_slot < LZMA_END_POS_MODEL_INDEX) { 2.2170 ++ rep0 <<= num_bits; 2.2171 ++ prob = p + LZMA_SPEC_POS + rep0 - pos_slot - 1; 2.2172 ++ } else { 2.2173 ++ num_bits -= LZMA_NUM_ALIGN_BITS; 2.2174 ++ while (num_bits--) 2.2175 ++ rep0 = (rep0 << 1) | rc_direct_bit(&rc); 2.2176 ++ prob = p + LZMA_ALIGN; 2.2177 ++ rep0 <<= LZMA_NUM_ALIGN_BITS; 2.2178 ++ num_bits = LZMA_NUM_ALIGN_BITS; 2.2179 ++ } 2.2180 ++ i = 1; 2.2181 ++ mi = 1; 2.2182 ++ while (num_bits--) { 2.2183 ++ if (rc_get_bit(&rc, prob + mi, &mi)) 2.2184 ++ rep0 |= i; 2.2185 ++ i <<= 1; 2.2186 ++ } 2.2187 ++ } else 2.2188 ++ rep0 = pos_slot; 2.2189 ++ if (++rep0 == 0) 2.2190 ++ break; 2.2191 ++ } 2.2192 ++ 2.2193 ++ len += LZMA_MATCH_MIN_LEN; 2.2194 ++ 2.2195 ++ do { 2.2196 ++ pos = buffer_pos - rep0; 2.2197 ++ while (pos >= header.dict_size) 2.2198 ++ pos += header.dict_size; 2.2199 ++ if(pos >= bufsize) { 2.2200 ++ goto fail; 2.2201 ++ } 2.2202 ++ previous_byte = buffer[pos]; 2.2203 ++ buffer[buffer_pos++] = previous_byte; 2.2204 ++ if (buffer_pos == header.dict_size) { 2.2205 ++ buffer_pos = 0; 2.2206 ++ global_pos += header.dict_size; 2.2207 ++ writebb((char*)buffer, header.dict_size); 2.2208 ++ } 2.2209 ++ len--; 2.2210 ++ } while (len != 0 && buffer_pos < header.dst_size); 2.2211 ++ } 2.2212 ++ } 2.2213 ++ 2.2214 ++ writebb((char*)buffer, buffer_pos); 2.2215 ++ if(posp) { 2.2216 ++ *posp = rc.ptr-rc.buffer; 2.2217 ++ } 2.2218 ++ large_free(buffer); 2.2219 ++ return 0; 2.2220 ++ fail: 2.2221 ++ large_free(buffer); 2.2222 ++ return -1; 2.2223 ++} 2.2224 +--- linux-2.6.24.2/lib/Makefile 2.2225 ++++ linux-2.6.24.2/lib/Makefile 2.2226 +@@ -50,6 +50,10 @@ obj-$(CONFIG_CRC7) += crc7.o 2.2227 + obj-$(CONFIG_LIBCRC32C) += libcrc32c.o 2.2228 + obj-$(CONFIG_GENERIC_ALLOCATOR) += genalloc.o 2.2229 + 2.2230 ++obj-$(CONFIG_RD_BZIP2) += decompress_bunzip2.o 2.2231 ++obj-$(CONFIG_RD_LZMA) += decompress_unlzma.o 2.2232 ++ 2.2233 ++ 2.2234 + obj-$(CONFIG_ZLIB_INFLATE) += zlib_inflate/ 2.2235 + obj-$(CONFIG_ZLIB_DEFLATE) += zlib_deflate/ 2.2236 + obj-$(CONFIG_REED_SOLOMON) += reed_solomon/ 2.2237 +--- linux-2.6.24.2/scripts/Makefile.lib 2.2238 ++++ linux-2.6.24.2/scripts/Makefile.lib 2.2239 +@@ -166,4 +166,17 @@ cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) 2.2240 + quiet_cmd_gzip = GZIP $@ 2.2241 + cmd_gzip = gzip -f -9 < $< > $@ 2.2242 + 2.2243 ++# Append size 2.2244 ++size_append=perl -e 'print(pack("i",(stat($$ARGV[0]))[7]));' 2.2245 + 2.2246 ++# Bzip2 2.2247 ++# --------------------------------------------------------------------------- 2.2248 ++ 2.2249 ++quiet_cmd_bzip2 = BZIP2 $@ 2.2250 ++cmd_bzip2 = (bzip2 -9 < $< ; $(size_append) $<) > $@ 2.2251 ++ 2.2252 ++# Lzma 2.2253 ++# --------------------------------------------------------------------------- 2.2254 ++ 2.2255 ++quiet_cmd_lzma = LZMA $@ 2.2256 ++cmd_lzma = (lzma e $< -so ; $(size_append) $<) >$@