diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/Documentation/Configure.help linux/Documentation/Configure.help --- linux-2.4.20/Documentation/Configure.help Thu Nov 28 16:53:08 2002 +++ linux/Documentation/Configure.help Sun Jan 12 06:01:02 2003 @@ -4563,14 +4563,11 @@ BIOS routines contained in a ROM chip in HP PA-RISC based machines. Enabling this option will implement the linux framebuffer device and an fbcon color text console using calls to the STI BIOS routines. - The HP framebuffer device is usually planar, uses a strange memory + The HP framebuffer device is sometimes planar, using a strange memory layout, and changing the plane mask to create colored pixels - requires a call to the STI routines, so do not expect /dev/fb to - actually be useful. However, it is the best we have as far as - graphics on the HP chipsets due to lack of hardware level - documentation for the various on-board HP chipsets used in these - systems. It is sufficient for basic text console functions, - including fonts. + can require a call to the STI routines, so /dev/fb may not actually + be useful. However, on some systems packed pixel formats are supported. + It is sufficient for basic text console functions, including fonts. You should probably enable this option, unless you are having trouble getting video when booting the kernel (make sure it isn't @@ -16924,12 +16921,29 @@ manufactured by HP. This driver is based off MACH and BSD drivers, and implements support for a keyboard attached to the HIL port. Full support for the USB-like functions and non-keyboard channels of - the HIL is not provided for in this driver. There are vestiges of - mouse support in the driver, but it is probably not working. The - necessary hardware documentation to fully support the HIL controller - and interface it to the linux-input API is lacking. + the HIL is currently being added to the PA-RISC port and will + be backported to work on the m68k port as well. - Enable this option if you intend to use a HIL keyboard. + Enable this option if you intend to use a HIL keyboard as your + primary keyboard and/or do not wish to test the new HIL driver. + +HP System Device Controller support +CONFIG_HP_SDC + This option enables supports for the the "System Device Controller", + an i8042 carrying microcode to manage a few miscellanous devices + on some Hewlette Packard systems. The SDC itself contains a 10ms + resolution timer/clock capable of delivering interrupts on periodic + and one-shot basis. The SDC may also be connected to a battery-backed + real-time clock, a basic audio waveform generator, and an HP-HIL + Master Link Controller serving up to seven input devices. + + By itself this option is rather useless, but enabling it will + enable selection of drivers for the abovementioned devices. + It is, however, incompatible with the old, reliable HIL keyboard + driver, and the new HIL driver is experimental, so if you plan to + use a HIL keyboard as your primary keyboard, you may wish to + keep using that driver until the new HIL drivers have had more + testing. Include IOP (IIfx/Quadra 9x0) ADB driver CONFIG_ADB_IOP @@ -17239,6 +17253,29 @@ read . The module will be called istallion.o. +Serial MUX support +CONFIG_SERIAL_MUX + Saying Y here will enable the hardware MUX serial driver for + the Nova and K Class systems. Due to limitations in the 2.4 + serial console driver, the Serial MUX shares the same device + as the PDC software console (Instructions for creating the + /dev/ttyB0 device is listed in the PDC software console + support help). Hopefully the Serial MUX code will share the + /dev/ttyS0 code in new serial console code for 2.6. + +PDC software console support +CONFIG_PDC_CONSOLE + Saying Y here will enable the software based PDC console to be + used as the system console. This is useful for machines in + which the hardware based console has not been written yet. The + following steps must be competed to use the PDC console: + + 1. create the device entry (mknod /dev/ttyB0 c 11 0) + 2. Edit the /etc/inittab to start a getty listening on /dev/ttyB0 + 3. Add device ttyB0 to /etc/securetty (if you want to log on as + root on this console.) + 4. Change the kernel command console parameter to: console=ttyB0 + Microgate SyncLink adapter support CONFIG_SYNCLINK Provides support for the SyncLink ISA and PCI multiprotocol serial @@ -17388,6 +17425,10 @@ doing that; to actually get it to happen you need to pass the option "console=lp0" to the kernel at boot time. + Note that kernel messages can get lost if the printer is out of + paper (or off, or unplugged, or too busy..), but this behaviour + can be changed. See drivers/char/lp.c (do this at your own risk). + If the printer is out of paper (or off, or unplugged, or too busy..) the kernel will stall until the printer is ready again. By defining CONSOLE_LP_STRICT to 0 (at your own risk) you @@ -18959,6 +19000,34 @@ The module is called rtc.o. If you want to compile it as a module, say M here and read . +Generic Real Time Clock Support +CONFIG_GEN_RTC + If you say Y here and create a character special file /dev/rtc with + major number 10 and minor number 135 using mknod ("man mknod"), you + will get access to the real time clock (or hardware clock) built + into your computer. + + In 2.4 and later kernels this is the only way to set and get rtc + time on m68k systems so it is highly recommended. + + It reports status information via the file /proc/driver/rtc and its + behaviour is set by various ioctls on /dev/rtc. If you enable the + "extended RTC operation" below it will also provide an emulation + for RTC_UIE which is required by some programs and may improve + precision in some cases. + + This driver is also available as a module ( = code which can be + inserted in and removed from the running kernel whenever you want). + The module is called genrtc.o. If you want to compile it as a module, + say M here and read . To load the + module automatically add 'alias char-major-10-135 genrtc' to your + /etc/modules.conf + +Extended RTC operation +CONFIG_GEN_RTC_X + Provides an emulation for RTC_UIE which is required by some programs + and may improve precision of the generic RTC support in some cases. + Tadpole ANA H8 Support CONFIG_H8 The Hitachi H8/337 is a microcontroller used to deal with the power @@ -25684,9 +25753,11 @@ U2/Uturn I/O MMU CONFIG_IOMMU_CCIO - Say Y here to enable DMA management routines for the first - generation of PA-RISC cache-coherent machines. Programs the - U2/Uturn chip in "Virtual Mode" and use the I/O MMU. + The U2/UTurn is a bus converter with io mmu present in the Cxxx, D, + J, K, and R class machines. Compiling this driver into the kernel will + not hurt anything, removing it will reduce your kernel by about 14k. + + If unsure, say Y. LBA/Elroy PCI support CONFIG_PCI_LBA diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/Makefile linux/Makefile --- linux-2.4.20/Makefile Thu Nov 28 16:53:16 2002 +++ linux/Makefile Mon Feb 10 02:17:25 2003 @@ -1,16 +1,21 @@ VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 20 -EXTRAVERSION = +EXTRAVERSION = -pa26 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) KERNELPATH=kernel-$(shell echo $(KERNELRELEASE) | sed -e "s/-//g") +ARCH := parisc + +UTS_MACHINE := $(ARCH) + CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ else if [ -x /bin/bash ]; then echo /bin/bash; \ - else echo sh; fi ; fi) + else echo bash; fi ; fi) +SHELL := $(CONFIG_SHELL) TOPDIR := $(shell /bin/pwd) HPATH = $(TOPDIR)/include @@ -28,6 +33,20 @@ AS = $(CROSS_COMPILE)as LD = $(CROSS_COMPILE)ld CC = $(CROSS_COMPILE)gcc +#===== NOTE ===== +# egcs-2.91.66 is the recommended compiler version for building XFS. +# Most of the XFS developers are using that particular version for +# development, testing, and performance analysis work, and it will +# generate a functional XFS kernel (some versions of gcc will not) - +# uncomment the following line to force that gcc version to be used: +#CC = $(CROSS_COMPILE)gcc -V egcs-2.91.66 +# On early versions of RedHat 7.x, kgcc is the recommended compiler +# for building the kernel (kgcc is the same as egcs-2.91.66) - if +# you use such a distribution and wish to use kgcc, uncomment this: +#CC = $(CROSS_COMPILE)kgcc +# The default gcc with RedHat 7.1 (gcc-2.96-81) also appears to +# generate good code, earlier versions of 2.96 are however an +# unknown quantity and not recommended. CPP = $(CC) -E AR = $(CROSS_COMPILE)ar NM = $(CROSS_COMPILE)nm @@ -265,6 +284,11 @@ export CPPFLAGS CFLAGS CFLAGS_KERNEL AFLAGS AFLAGS_KERNEL +kbuild_2_4_nostdinc := -nostdinc $(shell $(CC) -print-search-dirs | sed -ne 's/install: \(.*\)/-I \1include/gp') +export kbuild_2_4_nostdinc + +export CPPFLAGS CFLAGS AFLAGS + export NETWORKS DRIVERS LIBS HEAD LDFLAGS LINKFLAGS MAKEBOOT ASFLAGS .S.s: @@ -357,7 +381,7 @@ comma := , init/version.o: init/version.c include/linux/compile.h include/config/MARKER - $(CC) $(CFLAGS) $(CFLAGS_KERNEL) -DUTS_MACHINE='"$(ARCH)"' -DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) -c -o init/version.o init/version.c + $(CC) $(CFLAGS) $(CFLAGS_KERNEL) -DUTS_MACHINE='"$(UTS_MACHINE)"' -c -o init/version.o init/version.c init/main.o: init/main.c include/config/MARKER $(CC) $(CFLAGS) $(CFLAGS_KERNEL) $(PROFILING) -DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) -c -o $@ $< diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/alpha/mm/fault.c linux/arch/alpha/mm/fault.c --- linux-2.4.20/arch/alpha/mm/fault.c Thu Nov 28 16:53:08 2002 +++ linux/arch/alpha/mm/fault.c Thu Nov 14 05:53:22 2002 @@ -122,8 +122,6 @@ goto bad_area; if (vma->vm_start <= address) goto good_area; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; if (expand_stack(vma, address)) goto bad_area; /* diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/arm/mm/fault-common.c linux/arch/arm/mm/fault-common.c --- linux-2.4.20/arch/arm/mm/fault-common.c Thu Nov 28 16:53:09 2002 +++ linux/arch/arm/mm/fault-common.c Thu Nov 14 05:53:28 2002 @@ -229,7 +229,7 @@ goto survive; check_stack: - if (vma->vm_flags & VM_GROWSDOWN && !expand_stack(vma, addr)) + if (!expand_stack(vma, addr)) goto good_area; out: return fault; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/i386/mm/fault.c linux/arch/i386/mm/fault.c --- linux-2.4.20/arch/i386/mm/fault.c Thu Nov 28 16:53:09 2002 +++ linux/arch/i386/mm/fault.c Thu Nov 14 05:53:31 2002 @@ -76,9 +76,7 @@ return 1; check_stack: - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; - if (expand_stack(vma, start) == 0) + if (!expand_stack(vma, start)) goto good_area; bad_area: diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/ia64/mm/fault.c linux/arch/ia64/mm/fault.c --- linux-2.4.20/arch/ia64/mm/fault.c Thu Nov 28 16:53:09 2002 +++ linux/arch/ia64/mm/fault.c Thu Nov 14 05:53:33 2002 @@ -129,8 +129,6 @@ check_expansion: if (!(prev_vma && (prev_vma->vm_flags & VM_GROWSUP) && (address == prev_vma->vm_end))) { - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; if (rgn_index(address) != rgn_index(vma->vm_start) || rgn_offset(address) >= RGN_MAP_LIMIT) goto bad_area; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/m68k/config.in linux/arch/m68k/config.in --- linux-2.4.20/arch/m68k/config.in Thu Nov 28 16:53:09 2002 +++ linux/arch/m68k/config.in Sun Jan 12 06:01:34 2003 @@ -517,8 +517,11 @@ if [ "$CONFIG_SUN3" = "y" ]; then define_bool CONFIG_GEN_RTC y else - bool 'Generic /dev/rtc emulation' CONFIG_GEN_RTC + tristate 'Generic /dev/rtc emulation' CONFIG_GEN_RTC fi +fi +if [ "$CONFIG_GEN_RTC" != "n" ]; then + bool ' Extended RTC operation' CONFIG_GEN_RTC_X fi bool 'Unix98 PTY support' CONFIG_UNIX98_PTYS if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/m68k/kernel/m68k_ksyms.c linux/arch/m68k/kernel/m68k_ksyms.c --- linux-2.4.20/arch/m68k/kernel/m68k_ksyms.c Thu Jan 4 14:00:55 2001 +++ linux/arch/m68k/kernel/m68k_ksyms.c Sun Jan 12 06:01:40 2003 @@ -18,6 +18,7 @@ #include #include #include +#include asmlinkage long long __ashldi3 (long long, int); asmlinkage long long __ashrdi3 (long long, int); @@ -49,6 +50,10 @@ EXPORT_SYMBOL(kernel_set_cachemode); #endif /* !CONFIG_SUN3 */ EXPORT_SYMBOL(m68k_debug_device); +EXPORT_SYMBOL(mach_hwclk); +EXPORT_SYMBOL(mach_get_ss); +EXPORT_SYMBOL(mach_get_rtc_pll); +EXPORT_SYMBOL(mach_set_rtc_pll); EXPORT_SYMBOL(dump_fpu); EXPORT_SYMBOL(dump_thread); EXPORT_SYMBOL(strnlen); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/m68k/kernel/setup.c linux/arch/m68k/kernel/setup.c --- linux-2.4.20/arch/m68k/kernel/setup.c Thu Nov 28 16:53:09 2002 +++ linux/arch/m68k/kernel/setup.c Sun Jan 12 06:01:40 2003 @@ -90,6 +90,9 @@ void (*mach_gettod) (int*, int*, int*, int*, int*, int*); int (*mach_hwclk) (int, struct rtc_time*) = NULL; int (*mach_set_clock_mmss) (unsigned long) = NULL; +unsigned int (*mach_get_ss)(void) = NULL; +int (*mach_get_rtc_pll)(struct rtc_pll_info *) = NULL; +int (*mach_set_rtc_pll)(struct rtc_pll_info *) = NULL; void (*mach_reset)( void ); void (*mach_halt)( void ) = NULL; void (*mach_power_off)( void ) = NULL; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/m68k/q40/config.c linux/arch/m68k/q40/config.c --- linux-2.4.20/arch/m68k/q40/config.c Thu Nov 28 16:53:09 2002 +++ linux/arch/m68k/q40/config.c Sun Jan 12 06:01:44 2003 @@ -58,7 +58,10 @@ extern void q40_gettod (int *year, int *mon, int *day, int *hour, int *min, int *sec); extern int q40_hwclk (int, struct rtc_time *); +extern unsigned int q40_get_ss (void); extern int q40_set_clock_mmss (unsigned long); +static int q40_get_rtc_pll(struct rtc_pll_info *pll); +static int q40_set_rtc_pll(struct rtc_pll_info *pll); extern void q40_reset (void); void q40_halt(void); extern void q40_waitbut(void); @@ -196,6 +199,9 @@ mach_gettimeoffset = q40_gettimeoffset; mach_gettod = q40_gettod; mach_hwclk = q40_hwclk; + mach_get_ss = q40_get_ss; + mach_get_rtc_pll = q40_get_rtc_pll; + mach_set_rtc_pll = q40_set_rtc_pll; mach_set_clock_mmss = q40_set_clock_mmss; mach_reset = q40_reset; @@ -331,6 +337,11 @@ return 0; } +unsigned int q40_get_ss() +{ + return bcd2bin(Q40_RTC_SECS); +} + /* * Set the minutes and seconds from seconds value 'nowtime'. Fail if * clock is out by > 30 minutes. Logic lifted from atari code. @@ -362,3 +373,33 @@ return retval; } + +/* get and set PLL calibration of RTC clock */ +#define Q40_RTC_PLL_MASK ((1<<5)-1) +#define Q40_RTC_PLL_SIGN (1<<5) + +static int q40_get_rtc_pll(struct rtc_pll_info *pll) +{ + int tmp=Q40_RTC_CTRL; + pll->pll_value = tmp & Q40_RTC_PLL_MASK; + if (tmp & Q40_RTC_PLL_SIGN) + pll->pll_value = -pll->pll_value; + pll->pll_max=31; + pll->pll_min=-31; + pll->pll_posmult=512; + pll->pll_negmult=256; + pll->pll_clock=125829120; + return 0; + } + +static int q40_set_rtc_pll(struct rtc_pll_info *pll) +{ + if (!pll->pll_ctrl){ + /* the docs are a bit unclear so I am doublesetting RTC_WRITE here ... */ + int tmp=(pll->pll_value & 31) | (pll->pll_value<0 ? 32 : 0) | Q40_RTC_WRITE; + Q40_RTC_CTRL |= Q40_RTC_WRITE; + Q40_RTC_CTRL = tmp; + Q40_RTC_CTRL &= ~(Q40_RTC_WRITE); + return 0; + } else return -EINVAL; +} diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/mips/mm/fault.c linux/arch/mips/mm/fault.c --- linux-2.4.20/arch/mips/mm/fault.c Thu Nov 28 16:53:10 2002 +++ linux/arch/mips/mm/fault.c Thu Nov 14 05:53:46 2002 @@ -111,8 +111,6 @@ goto bad_area; if (vma->vm_start <= address) goto good_area; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; if (expand_stack(vma, address)) goto bad_area; /* diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/mips64/mm/fault.c linux/arch/mips64/mm/fault.c --- linux-2.4.20/arch/mips64/mm/fault.c Thu Nov 28 16:53:10 2002 +++ linux/arch/mips64/mm/fault.c Thu Nov 14 05:53:49 2002 @@ -135,8 +135,6 @@ goto bad_area; if (vma->vm_start <= address) goto good_area; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; if (expand_stack(vma, address)) goto bad_area; /* diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/Makefile linux/arch/parisc/Makefile --- linux-2.4.20/arch/parisc/Makefile Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/Makefile Sun Feb 9 02:13:16 2003 @@ -91,14 +91,6 @@ SUBDIRS := $(SUBDIRS) arch/parisc/math-emu DRIVERS := $(DRIVERS) arch/parisc/math-emu/math.o -ifdef CONFIG_KWDB -SUBDIRS := $(SUBDIRS) arch/parisc/kdb -DRIVERS := $(DRIVERS) arch/parisc/kdb/kdb.o - -arch/parisc/kdb: dummy - $(MAKE) linuxsubdirs SUBDIRS=arch/parisc/kdb -endif - arch/parisc/kernel: dummy $(MAKE) linuxsubdirs SUBDIRS=arch/parisc/kernel @@ -106,6 +98,21 @@ $(MAKE) linuxsubdirs SUBDIRS=arch/parisc/mm palo: vmlinux + @if [ $$(palo -f /dev/null >/dev/null 2>&1 ; echo $$?) != 2 ]; then \ + echo 'ERROR: Please install palo first (apt-get install palo)';\ + echo 'or build it from source and install it somewhere in your $$PATH';\ + false; \ + fi + @if [ ! -f ./palo.conf ]; then \ + cp arch/parisc/defpalo.conf palo.conf; \ + echo 'A generic palo config file (./palo.conf) has been created for you.'; \ + echo 'You should check it and re-run "make palo".'; \ + echo 'WARNING: the "lifimage" file is now placed in this directory by default!'; \ + false; \ + fi + palo -f ./palo.conf + +oldpalo: vmlinux export TOPDIR=`pwd`; \ unset STRIP LDFLAGS CPP CPPFLAGS AFLAGS CFLAGS CC LD; cd ../palo && make lifimage diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/config.in linux/arch/parisc/config.in --- linux-2.4.20/arch/parisc/config.in Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/config.in Sat Nov 16 05:53:34 2002 @@ -47,9 +47,6 @@ bool 'Symmetric multi-processing support' CONFIG_SMP bool 'Chassis LCD and LED support' CONFIG_CHASSIS_LCD_LED -bool 'Kernel Debugger support' CONFIG_KWDB -# define_bool CONFIG_KWDB n - bool 'U2/Uturn I/O MMU' CONFIG_IOMMU_CCIO bool 'VSC/GSC/HSC bus support' CONFIG_GSC dep_bool ' Lasi I/O support' CONFIG_GSC_LASI $CONFIG_GSC @@ -194,6 +191,7 @@ #bool 'Debug kmalloc/kfree' CONFIG_DEBUG_MALLOC bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ +bool 'Debug spinlocks' CONFIG_DEBUG_SPINLOCK endmenu source lib/Config.in diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/debian-configs/32 linux/arch/parisc/debian-configs/32 --- linux-2.4.20/arch/parisc/debian-configs/32 Wed Dec 31 17:00:00 1969 +++ linux/arch/parisc/debian-configs/32 Sat Dec 14 05:53:37 2002 @@ -0,0 +1,989 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_PARISC=y +# CONFIG_UID16 is not set +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor type +# +CONFIG_PA7100=y +# CONFIG_PA7200 is not set +# CONFIG_PA7100LC is not set +# CONFIG_PA8X00 is not set +CONFIG_PA11=y + +# +# General options +# +# CONFIG_SMP is not set +CONFIG_CHASSIS_LCD_LED=y +CONFIG_IOMMU_CCIO=y +CONFIG_GSC=y +CONFIG_GSC_LASI=y +CONFIG_GSC_WAX=y +CONFIG_EISA=y +CONFIG_ISA=y +CONFIG_PCI=y +CONFIG_GSC_DINO=y +CONFIG_PCI_LBA=y +CONFIG_IOSAPIC=y +CONFIG_IOMMU_SBA=y +CONFIG_SUPERIO=y +CONFIG_PCI_NAMES=y + +# +# General setup +# +CONFIG_HOTPLUG=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_SOM=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set + +# +# Parallel port support +# +CONFIG_PARPORT=y +CONFIG_PARPORT_PC=y +CONFIG_PARPORT_PC_CML1=y +# CONFIG_PARPORT_SERIAL is not set +# CONFIG_PARPORT_PC_FIFO is not set +# CONFIG_PARPORT_PC_SUPERIO is not set +# CONFIG_PARPORT_PC_PCMCIA is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +CONFIG_PARPORT_GSC=y +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +# CONFIG_PARPORT_1284 is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=6144 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_STATS is not set + +# +# Multi-device support (RAID and LVM) +# +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=y +CONFIG_MD_RAID0=y +CONFIG_MD_RAID1=y +CONFIG_MD_RAID5=y +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_DEBUG=y +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +# CONFIG_IP_NF_IRC is not set +# CONFIG_IP_NF_QUEUE is not set +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +# CONFIG_IP_NF_MATCH_PKTTYPE is not set +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_DSCP is not set +CONFIG_IP_NF_MATCH_AH_ESP=m +# CONFIG_IP_NF_MATCH_LENGTH is not set +# CONFIG_IP_NF_MATCH_TTL is not set +CONFIG_IP_NF_MATCH_TCPMSS=m +# CONFIG_IP_NF_MATCH_HELPER is not set +CONFIG_IP_NF_MATCH_STATE=m +# CONFIG_IP_NF_MATCH_CONNTRACK is not set +CONFIG_IP_NF_MATCH_UNCLEAN=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_MIRROR=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +# CONFIG_IP_NF_NAT_LOCAL is not set +# CONFIG_IP_NF_NAT_SNMP_BASIC is not set +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_DSCP is not set +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +# CONFIG_IP_NF_ARPTABLES is not set +CONFIG_IP_NF_COMPAT_IPCHAINS=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_COMPAT_IPFWADM=m +CONFIG_IP_NF_NAT_NEEDED=y +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDEDISK is not set +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_BLK_DEV_RZ1000 is not set +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_IDEPCI_SHARE_IRQ is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +# CONFIG_IDEDMA_PCI_AUTO is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +# CONFIG_BLK_DEV_IDEDMA_TIMEOUT is not set +# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set +CONFIG_BLK_DEV_ADMA=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_AEC62XX_TUNING is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_WDC_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_AMD74XX_OVERRIDE is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_CMD680 is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_BLK_DEV_HPT366 is not set +CONFIG_BLK_DEV_NS87415=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PDC202XX is not set +# CONFIG_PDC202XX_BURST is not set +# CONFIG_PDC202XX_FORCE is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +CONFIG_SCSI=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_SD_EXTRA_DEVS=40 +CONFIG_CHR_DEV_ST=y +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=y + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +CONFIG_BLK_DEV_3W_XXXX_RAID=m +# CONFIG_SCSI_7000FASST is not set +CONFIG_SCSI_ACARD=m +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +CONFIG_SCSI_AHA1740=m +# CONFIG_SCSI_AACRAID is not set +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC7XXX_PROBE_EISA_VL is not set +# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +CONFIG_SCSI_AM53C974=m +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_BUSLOGIC is not set +CONFIG_SCSI_CPQFCTS=m +CONFIG_SCSI_DMX3191D=m +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_DMA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +CONFIG_SCSI_GENERIC_NCR5380=m +# CONFIG_SCSI_GENERIC_NCR53C400 is not set +CONFIG_SCSI_G_NCR5380_PORT=y +# CONFIG_SCSI_G_NCR5380_MEM is not set +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +# CONFIG_SCSI_NCR53C406A is not set +CONFIG_SCSI_LASI700=y +CONFIG_53C700_MEM_MAPPED=y +CONFIG_53C700_LE_ON_BE=y +CONFIG_53C700_USE_CONSISTENT=y +# CONFIG_SCSI_NCR53C7xx is not set +CONFIG_SCSI_SYM53C8XX_2=y +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +# CONFIG_ASK_ZALON is not set +# CONFIG_ASK_NCR53C8XX is not set +# CONFIG_ASK_SYM53C8XX is not set +CONFIG_SCSI_ZALON=y +CONFIG_ASK_ZALON=y +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +# CONFIG_SCSI_PAS16 is not set +CONFIG_SCSI_PCI2000=m +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_ISP is not set +CONFIG_SCSI_QLOGIC_FC=m +# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set +CONFIG_SCSI_QLOGIC_1280=m +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_SYM53C416 is not set +CONFIG_SCSI_DC390T=m +# CONFIG_SCSI_DC390T_NOGENSUPP is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +CONFIG_SCSI_DEBUG=m + +# +# PCMCIA SCSI adapter support +# +# CONFIG_SCSI_PCMCIA is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +CONFIG_BONDING=m +# CONFIG_EQUALIZER is not set +CONFIG_TUN=m +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_LASI_82596=y +# CONFIG_SUNLANCE is not set +CONFIG_HAPPYMEAL=m +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +CONFIG_NET_VENDOR_RACAL=y +# CONFIG_NI5010 is not set +CONFIG_NI52=m +# CONFIG_NI65 is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set +# CONFIG_CS89x0 is not set +CONFIG_TULIP=y +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_DE4X5=m +# CONFIG_DGRS is not set +# CONFIG_DM9102 is not set +CONFIG_EEPRO100=m +# CONFIG_E100 is not set +# CONFIG_LNE390 is not set +# CONFIG_FEALNX is not set +CONFIG_NATSEMI=m +# CONFIG_NE2K_PCI is not set +# CONFIG_NE3210 is not set +# CONFIG_ES3210 is not set +# CONFIG_8139CP is not set +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +# CONFIG_TLAN is not set +# CONFIG_TC35815 is not set +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_WINBOND_840=m +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_SK98LIN=m +CONFIG_TIGON3=m +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +# CONFIG_NET_PCMCIA is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_GSC_PS2=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_SERIAL_GSC=y +# CONFIG_SERIAL_EXTENDED is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINK is not set +# CONFIG_SYNCLINKMP is not set +# CONFIG_N_HDLC is not set +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set +CONFIG_PDC_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_PRINTER=y +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set +# CONFIG_MK712_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +CONFIG_INPUT_SERIO=y +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +CONFIG_GENRTC=y +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_PCMCIA_SERIAL_CS is not set +# CONFIG_SYNCLINK_CS is not set + +# +# HIL support +# +CONFIG_HIL=y +# CONFIG_HIL_KBD_BASIC is not set + +# +# HIL driver core support +# +CONFIG_HP_SDC=y +# CONFIG_HP_SDC_RTC is not set +CONFIG_HIL_MLC=y +CONFIG_HP_SDC_MLC=y + +# +# HIL device driver +# +CONFIG_HIL_KBD=y +CONFIG_HIL_PTR=y + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +CONFIG_MINIX_FS=m +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_ROOT_NFS=y +CONFIG_NFSD=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_TCP is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_RIVA is not set +# CONFIG_FB_CLGEN is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_STI=y +# CONFIG_FB_MATROX is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB32=y +CONFIG_FBCON_STI=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_STI_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FBCON=y +CONFIG_FBCON_FONT=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_FONT_6x11=y +CONFIG_FONT_SUN12x22=y + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_ALI5455 is not set +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_FORTE is not set +# CONFIG_SOUND_ICH is not set +CONFIG_SOUND_HARMONY=y +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_EHCI_HCD is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=y + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=y +CONFIG_USB_HIDINPUT=y +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set + +# +# Kernel hacking +# +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_SPINLOCK=y + +# +# Library routines +# +CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_DEFLATE=m diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/debian-configs/32-smp linux/arch/parisc/debian-configs/32-smp --- linux-2.4.20/arch/parisc/debian-configs/32-smp Wed Dec 31 17:00:00 1969 +++ linux/arch/parisc/debian-configs/32-smp Sat Dec 14 05:53:37 2002 @@ -0,0 +1,988 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_PARISC=y +# CONFIG_UID16 is not set +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor type +# +CONFIG_PA7100=y +# CONFIG_PA7200 is not set +# CONFIG_PA7100LC is not set +# CONFIG_PA8X00 is not set +CONFIG_PA11=y + +# +# General options +# +CONFIG_SMP=y +CONFIG_CHASSIS_LCD_LED=y +CONFIG_IOMMU_CCIO=y +CONFIG_GSC=y +CONFIG_GSC_LASI=y +CONFIG_GSC_WAX=y +CONFIG_EISA=y +CONFIG_ISA=y +CONFIG_PCI=y +CONFIG_GSC_DINO=y +CONFIG_PCI_LBA=y +CONFIG_IOSAPIC=y +CONFIG_IOMMU_SBA=y +CONFIG_SUPERIO=y +CONFIG_PCI_NAMES=y + +# +# General setup +# +CONFIG_HOTPLUG=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_SOM=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set + +# +# Parallel port support +# +CONFIG_PARPORT=y +CONFIG_PARPORT_PC=y +CONFIG_PARPORT_PC_CML1=y +# CONFIG_PARPORT_SERIAL is not set +# CONFIG_PARPORT_PC_FIFO is not set +# CONFIG_PARPORT_PC_SUPERIO is not set +# CONFIG_PARPORT_PC_PCMCIA is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +CONFIG_PARPORT_GSC=y +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +# CONFIG_PARPORT_1284 is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=6144 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_STATS is not set + +# +# Multi-device support (RAID and LVM) +# +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=y +CONFIG_MD_RAID0=y +CONFIG_MD_RAID1=y +CONFIG_MD_RAID5=y +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_DEBUG=y +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +# CONFIG_IP_NF_IRC is not set +# CONFIG_IP_NF_QUEUE is not set +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +# CONFIG_IP_NF_MATCH_PKTTYPE is not set +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_DSCP is not set +CONFIG_IP_NF_MATCH_AH_ESP=m +# CONFIG_IP_NF_MATCH_LENGTH is not set +# CONFIG_IP_NF_MATCH_TTL is not set +CONFIG_IP_NF_MATCH_TCPMSS=m +# CONFIG_IP_NF_MATCH_HELPER is not set +CONFIG_IP_NF_MATCH_STATE=m +# CONFIG_IP_NF_MATCH_CONNTRACK is not set +CONFIG_IP_NF_MATCH_UNCLEAN=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_MIRROR=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +# CONFIG_IP_NF_NAT_LOCAL is not set +# CONFIG_IP_NF_NAT_SNMP_BASIC is not set +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_DSCP is not set +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +# CONFIG_IP_NF_ARPTABLES is not set +CONFIG_IP_NF_COMPAT_IPCHAINS=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_COMPAT_IPFWADM=m +CONFIG_IP_NF_NAT_NEEDED=y +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDEDISK is not set +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_BLK_DEV_RZ1000 is not set +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_IDEPCI_SHARE_IRQ is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +# CONFIG_IDEDMA_PCI_AUTO is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +# CONFIG_BLK_DEV_IDEDMA_TIMEOUT is not set +# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set +CONFIG_BLK_DEV_ADMA=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_AEC62XX_TUNING is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_WDC_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_AMD74XX_OVERRIDE is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_CMD680 is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_BLK_DEV_HPT366 is not set +CONFIG_BLK_DEV_NS87415=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PDC202XX is not set +# CONFIG_PDC202XX_BURST is not set +# CONFIG_PDC202XX_FORCE is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +CONFIG_SCSI=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_SD_EXTRA_DEVS=40 +CONFIG_CHR_DEV_ST=y +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=y + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +CONFIG_BLK_DEV_3W_XXXX_RAID=m +# CONFIG_SCSI_7000FASST is not set +CONFIG_SCSI_ACARD=m +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +CONFIG_SCSI_AHA1740=m +# CONFIG_SCSI_AACRAID is not set +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC7XXX_PROBE_EISA_VL is not set +# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +CONFIG_SCSI_AM53C974=m +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_BUSLOGIC is not set +CONFIG_SCSI_CPQFCTS=m +CONFIG_SCSI_DMX3191D=m +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_DMA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +CONFIG_SCSI_GENERIC_NCR5380=m +# CONFIG_SCSI_GENERIC_NCR53C400 is not set +CONFIG_SCSI_G_NCR5380_PORT=y +# CONFIG_SCSI_G_NCR5380_MEM is not set +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +# CONFIG_SCSI_NCR53C406A is not set +CONFIG_SCSI_LASI700=y +CONFIG_53C700_MEM_MAPPED=y +CONFIG_53C700_LE_ON_BE=y +CONFIG_53C700_USE_CONSISTENT=y +# CONFIG_SCSI_NCR53C7xx is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_ASK_ZALON is not set +# CONFIG_ASK_NCR53C8XX is not set +# CONFIG_ASK_SYM53C8XX is not set +CONFIG_SCSI_ZALON=y +CONFIG_ASK_ZALON=y +CONFIG_SCSI_SYM53C8XX=y +CONFIG_ASK_SYM53C8XX=y +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +# CONFIG_SCSI_PAS16 is not set +CONFIG_SCSI_PCI2000=m +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_ISP is not set +CONFIG_SCSI_QLOGIC_FC=m +# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set +CONFIG_SCSI_QLOGIC_1280=m +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_SYM53C416 is not set +CONFIG_SCSI_DC390T=m +# CONFIG_SCSI_DC390T_NOGENSUPP is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +CONFIG_SCSI_DEBUG=m + +# +# PCMCIA SCSI adapter support +# +# CONFIG_SCSI_PCMCIA is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +CONFIG_BONDING=m +# CONFIG_EQUALIZER is not set +CONFIG_TUN=m +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_LASI_82596=y +# CONFIG_SUNLANCE is not set +CONFIG_HAPPYMEAL=m +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +CONFIG_NET_VENDOR_RACAL=y +# CONFIG_NI5010 is not set +CONFIG_NI52=m +# CONFIG_NI65 is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set +# CONFIG_CS89x0 is not set +CONFIG_TULIP=y +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_DE4X5=m +# CONFIG_DGRS is not set +# CONFIG_DM9102 is not set +CONFIG_EEPRO100=m +# CONFIG_E100 is not set +# CONFIG_LNE390 is not set +# CONFIG_FEALNX is not set +CONFIG_NATSEMI=m +# CONFIG_NE2K_PCI is not set +# CONFIG_NE3210 is not set +# CONFIG_ES3210 is not set +# CONFIG_8139CP is not set +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +# CONFIG_TLAN is not set +# CONFIG_TC35815 is not set +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_WINBOND_840=m +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_SK98LIN=m +CONFIG_TIGON3=m +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +# CONFIG_NET_PCMCIA is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_GSC_PS2=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_SERIAL_GSC=y +# CONFIG_SERIAL_EXTENDED is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINK is not set +# CONFIG_SYNCLINKMP is not set +# CONFIG_N_HDLC is not set +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set +CONFIG_PDC_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_PRINTER=y +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set +# CONFIG_MK712_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +CONFIG_INPUT_SERIO=y +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +CONFIG_GENRTC=y +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_PCMCIA_SERIAL_CS is not set +# CONFIG_SYNCLINK_CS is not set + +# +# HIL support +# +CONFIG_HIL=y +# CONFIG_HIL_KBD_BASIC is not set + +# +# HIL driver core support +# +CONFIG_HP_SDC=y +# CONFIG_HP_SDC_RTC is not set +CONFIG_HIL_MLC=y +CONFIG_HP_SDC_MLC=y + +# +# HIL device driver +# +CONFIG_HIL_KBD=y +CONFIG_HIL_PTR=y + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +CONFIG_MINIX_FS=m +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_ROOT_NFS=y +CONFIG_NFSD=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_TCP is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_RIVA is not set +# CONFIG_FB_CLGEN is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_STI=y +# CONFIG_FB_MATROX is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB32=y +CONFIG_FBCON_STI=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_STI_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FBCON=y +CONFIG_FBCON_FONT=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_FONT_6x11=y +CONFIG_FONT_SUN12x22=y + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_ALI5455 is not set +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_FORTE is not set +# CONFIG_SOUND_ICH is not set +CONFIG_SOUND_HARMONY=y +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_EHCI_HCD is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=y + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=y +CONFIG_USB_HIDINPUT=y +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set + +# +# Kernel hacking +# +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_SPINLOCK=y + +# +# Library routines +# +CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_DEFLATE=m diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/debian-configs/32-udeb linux/arch/parisc/debian-configs/32-udeb --- linux-2.4.20/arch/parisc/debian-configs/32-udeb Wed Dec 31 17:00:00 1969 +++ linux/arch/parisc/debian-configs/32-udeb Sun Dec 15 05:53:33 2002 @@ -0,0 +1,915 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_PARISC=y +# CONFIG_UID16 is not set +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor type +# +CONFIG_PA7100=y +# CONFIG_PA7200 is not set +# CONFIG_PA7100LC is not set +# CONFIG_PA8X00 is not set +CONFIG_PA11=y + +# +# General options +# +# CONFIG_SMP is not set +CONFIG_CHASSIS_LCD_LED=y +CONFIG_IOMMU_CCIO=y +CONFIG_GSC=y +CONFIG_GSC_LASI=y +CONFIG_GSC_WAX=y +CONFIG_EISA=y +CONFIG_ISA=y +CONFIG_PCI=y +CONFIG_GSC_DINO=y +CONFIG_PCI_LBA=y +CONFIG_IOSAPIC=y +CONFIG_IOMMU_SBA=y +CONFIG_SUPERIO=y +CONFIG_PCI_NAMES=y + +# +# General setup +# +CONFIG_HOTPLUG=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_SOM=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set + +# +# Parallel port support +# +CONFIG_PARPORT=y +CONFIG_PARPORT_PC=y +CONFIG_PARPORT_PC_CML1=y +# CONFIG_PARPORT_SERIAL is not set +# CONFIG_PARPORT_PC_FIFO is not set +# CONFIG_PARPORT_PC_SUPERIO is not set +# CONFIG_PARPORT_PC_PCMCIA is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +CONFIG_PARPORT_GSC=y +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +# CONFIG_PARPORT_1284 is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=6144 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_STATS is not set + +# +# Multi-device support (RAID and LVM) +# +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=y +CONFIG_MD_RAID0=y +CONFIG_MD_RAID1=y +CONFIG_MD_RAID5=y +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_DEBUG=y +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_ARPTABLES is not set +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDEDISK is not set +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_BLK_DEV_RZ1000 is not set +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_IDEPCI_SHARE_IRQ is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +# CONFIG_IDEDMA_PCI_AUTO is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +# CONFIG_BLK_DEV_IDEDMA_TIMEOUT is not set +# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set +CONFIG_BLK_DEV_ADMA=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_AEC62XX_TUNING is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_WDC_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_AMD74XX_OVERRIDE is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_CMD680 is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_BLK_DEV_HPT366 is not set +CONFIG_BLK_DEV_NS87415=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PDC202XX is not set +# CONFIG_PDC202XX_BURST is not set +# CONFIG_PDC202XX_FORCE is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +CONFIG_SCSI=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_SD_EXTRA_DEVS=40 +CONFIG_CHR_DEV_ST=y +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=y + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_7000FASST is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +# CONFIG_SCSI_AHA1740 is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_CPQFCTS is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_DMA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +# CONFIG_SCSI_NCR53C406A is not set +CONFIG_SCSI_LASI700=y +CONFIG_53C700_MEM_MAPPED=y +CONFIG_53C700_LE_ON_BE=y +CONFIG_53C700_USE_CONSISTENT=y +# CONFIG_SCSI_NCR53C7xx is not set +CONFIG_SCSI_SYM53C8XX_2=y +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +# CONFIG_ASK_ZALON is not set +# CONFIG_ASK_NCR53C8XX is not set +# CONFIG_ASK_SYM53C8XX is not set +CONFIG_SCSI_ZALON=y +CONFIG_ASK_ZALON=y +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PCI2000 is not set +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_ISP is not set +# CONFIG_SCSI_QLOGIC_FC is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +# CONFIG_SCSI_PCMCIA is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_LASI_82596=y +# CONFIG_SUNLANCE is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +CONFIG_NET_VENDOR_RACAL=y +# CONFIG_NI5010 is not set +# CONFIG_NI52 is not set +# CONFIG_NI65 is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +CONFIG_NET_PCI=y +# CONFIG_PCNET32 is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set +# CONFIG_CS89x0 is not set +CONFIG_TULIP=y +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +# CONFIG_DE4X5 is not set +# CONFIG_DGRS is not set +# CONFIG_DM9102 is not set +# CONFIG_EEPRO100 is not set +# CONFIG_E100 is not set +# CONFIG_LNE390 is not set +# CONFIG_FEALNX is not set +# CONFIG_NATSEMI is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_NE3210 is not set +# CONFIG_ES3210 is not set +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_SUNDANCE_MMIO is not set +# CONFIG_TLAN is not set +# CONFIG_TC35815 is not set +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_RHINE_MMIO is not set +# CONFIG_WINBOND_840 is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +# CONFIG_NET_PCMCIA is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_GSC_PS2=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_SERIAL_GSC=y +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_PRINTER=y +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set +# CONFIG_MK712_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +CONFIG_INPUT_SERIO=y +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +CONFIG_GENRTC=y +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_PCMCIA_SERIAL_CS is not set +# CONFIG_SYNCLINK_CS is not set + +# +# HIL support +# +CONFIG_HIL=y +# CONFIG_HIL_KBD_BASIC is not set + +# +# HIL driver core support +# +CONFIG_HP_SDC=y +# CONFIG_HP_SDC_RTC is not set +CONFIG_HIL_MLC=y +CONFIG_HP_SDC_MLC=y + +# +# HIL device driver +# +CONFIG_HIL_KBD=y +CONFIG_HIL_PTR=y + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_TMPFS=y +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +CONFIG_DEVFS_FS=y +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_ROOT_NFS=y +CONFIG_NFSD=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_TCP is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_RIVA is not set +# CONFIG_FB_CLGEN is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_STI=y +# CONFIG_FB_MATROX is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB32=y +CONFIG_FBCON_STI=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_STI_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FBCON=y +CONFIG_FBCON_FONT=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_FONT_6x11=y +CONFIG_FONT_SUN12x22=y + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_ALI5455 is not set +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_FORTE is not set +# CONFIG_SOUND_ICH is not set +CONFIG_SOUND_HARMONY=y +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_EHCI_HCD is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=y + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=y +CONFIG_USB_HIDINPUT=y +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set + +# +# Kernel hacking +# +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set + +# +# Library routines +# +# CONFIG_ZLIB_INFLATE is not set +# CONFIG_ZLIB_DEFLATE is not set diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/debian-configs/64 linux/arch/parisc/debian-configs/64 --- linux-2.4.20/arch/parisc/debian-configs/64 Wed Dec 31 17:00:00 1969 +++ linux/arch/parisc/debian-configs/64 Sat Dec 14 05:53:37 2002 @@ -0,0 +1,977 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_PARISC=y +# CONFIG_UID16 is not set +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor type +# +# CONFIG_PA7100 is not set +# CONFIG_PA7200 is not set +# CONFIG_PA7100LC is not set +CONFIG_PA8X00=y +CONFIG_PA20=y +CONFIG_PARISC64=y +# CONFIG_PDC_NARROW is not set + +# +# General options +# +# CONFIG_SMP is not set +CONFIG_CHASSIS_LCD_LED=y +CONFIG_IOMMU_CCIO=y +CONFIG_GSC=y +CONFIG_GSC_LASI=y +CONFIG_GSC_WAX=y +CONFIG_EISA=y +CONFIG_ISA=y +CONFIG_PCI=y +CONFIG_GSC_DINO=y +CONFIG_PCI_LBA=y +CONFIG_IOSAPIC=y +CONFIG_IOMMU_SBA=y +CONFIG_SUPERIO=y +CONFIG_PCI_NAMES=y + +# +# General setup +# +CONFIG_HOTPLUG=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_SOM=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set + +# +# Parallel port support +# +CONFIG_PARPORT=y +# CONFIG_PARPORT_PC is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +CONFIG_PARPORT_GSC=y +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +# CONFIG_PARPORT_1284 is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=6144 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_STATS is not set + +# +# Multi-device support (RAID and LVM) +# +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=y +CONFIG_MD_RAID0=y +CONFIG_MD_RAID1=y +CONFIG_MD_RAID5=y +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_DEBUG=y +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +# CONFIG_IP_NF_IRC is not set +# CONFIG_IP_NF_QUEUE is not set +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +# CONFIG_IP_NF_MATCH_PKTTYPE is not set +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_DSCP is not set +CONFIG_IP_NF_MATCH_AH_ESP=m +# CONFIG_IP_NF_MATCH_LENGTH is not set +# CONFIG_IP_NF_MATCH_TTL is not set +CONFIG_IP_NF_MATCH_TCPMSS=m +# CONFIG_IP_NF_MATCH_HELPER is not set +CONFIG_IP_NF_MATCH_STATE=m +# CONFIG_IP_NF_MATCH_CONNTRACK is not set +CONFIG_IP_NF_MATCH_UNCLEAN=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_MIRROR=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +# CONFIG_IP_NF_NAT_LOCAL is not set +# CONFIG_IP_NF_NAT_SNMP_BASIC is not set +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_DSCP is not set +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +# CONFIG_IP_NF_ARPTABLES is not set +CONFIG_IP_NF_COMPAT_IPCHAINS=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_COMPAT_IPFWADM=m +CONFIG_IP_NF_NAT_NEEDED=y +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDEDISK is not set +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_BLK_DEV_RZ1000 is not set +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_IDEPCI_SHARE_IRQ is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +# CONFIG_IDEDMA_PCI_AUTO is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +# CONFIG_BLK_DEV_IDEDMA_TIMEOUT is not set +# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set +CONFIG_BLK_DEV_ADMA=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_AEC62XX_TUNING is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_WDC_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_AMD74XX_OVERRIDE is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_CMD680 is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_BLK_DEV_HPT366 is not set +CONFIG_BLK_DEV_NS87415=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PDC202XX is not set +# CONFIG_PDC202XX_BURST is not set +# CONFIG_PDC202XX_FORCE is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +CONFIG_SCSI=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_SD_EXTRA_DEVS=40 +CONFIG_CHR_DEV_ST=y +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=y + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +CONFIG_BLK_DEV_3W_XXXX_RAID=m +# CONFIG_SCSI_7000FASST is not set +CONFIG_SCSI_ACARD=m +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +CONFIG_SCSI_AHA1740=m +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +CONFIG_SCSI_AM53C974=m +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_BUSLOGIC is not set +CONFIG_SCSI_CPQFCTS=m +CONFIG_SCSI_DMX3191D=m +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_DMA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +CONFIG_SCSI_GENERIC_NCR5380=m +# CONFIG_SCSI_GENERIC_NCR53C400 is not set +CONFIG_SCSI_G_NCR5380_PORT=y +# CONFIG_SCSI_G_NCR5380_MEM is not set +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +# CONFIG_SCSI_NCR53C406A is not set +CONFIG_SCSI_LASI700=y +CONFIG_53C700_MEM_MAPPED=y +CONFIG_53C700_LE_ON_BE=y +CONFIG_53C700_USE_CONSISTENT=y +# CONFIG_SCSI_NCR53C7xx is not set +CONFIG_SCSI_SYM53C8XX_2=y +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +# CONFIG_ASK_ZALON is not set +# CONFIG_ASK_NCR53C8XX is not set +# CONFIG_ASK_SYM53C8XX is not set +CONFIG_SCSI_ZALON=y +CONFIG_ASK_ZALON=y +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +# CONFIG_SCSI_PAS16 is not set +CONFIG_SCSI_PCI2000=m +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_ISP is not set +CONFIG_SCSI_QLOGIC_FC=m +# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set +CONFIG_SCSI_QLOGIC_1280=m +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_SYM53C416 is not set +CONFIG_SCSI_DC390T=m +# CONFIG_SCSI_DC390T_NOGENSUPP is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +CONFIG_SCSI_DEBUG=m + +# +# PCMCIA SCSI adapter support +# +# CONFIG_SCSI_PCMCIA is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +CONFIG_BONDING=m +# CONFIG_EQUALIZER is not set +CONFIG_TUN=m +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_LASI_82596=y +# CONFIG_SUNLANCE is not set +CONFIG_HAPPYMEAL=m +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +# CONFIG_EL1 is not set +# CONFIG_EL2 is not set +# CONFIG_ELPLUS is not set +# CONFIG_EL16 is not set +# CONFIG_EL3 is not set +# CONFIG_3C515 is not set +# CONFIG_ELMC is not set +# CONFIG_ELMC_II is not set +# CONFIG_VORTEX is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRAMCA is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +# CONFIG_SMC9194 is not set +CONFIG_NET_VENDOR_RACAL=y +# CONFIG_NI5010 is not set +CONFIG_NI52=m +# CONFIG_NI65 is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +CONFIG_NET_ISA=y +# CONFIG_E2100 is not set +# CONFIG_EWRK3 is not set +# CONFIG_EEXPRESS is not set +# CONFIG_EEXPRESS_PRO is not set +# CONFIG_HPLAN_PLUS is not set +# CONFIG_HPLAN is not set +# CONFIG_LP486E is not set +# CONFIG_ETH16I is not set +# CONFIG_NE2000 is not set +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set +# CONFIG_CS89x0 is not set +CONFIG_TULIP=y +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_DE4X5=m +# CONFIG_DGRS is not set +# CONFIG_DM9102 is not set +CONFIG_EEPRO100=m +# CONFIG_E100 is not set +# CONFIG_LNE390 is not set +# CONFIG_FEALNX is not set +CONFIG_NATSEMI=m +# CONFIG_NE2K_PCI is not set +# CONFIG_NE3210 is not set +# CONFIG_ES3210 is not set +# CONFIG_8139CP is not set +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +# CONFIG_TLAN is not set +# CONFIG_TC35815 is not set +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_WINBOND_840=m +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_SK98LIN=m +CONFIG_TIGON3=m +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +# CONFIG_NET_PCMCIA is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_GSC_PS2=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_SERIAL_GSC=y +# CONFIG_SERIAL_EXTENDED is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINK is not set +# CONFIG_SYNCLINKMP is not set +# CONFIG_N_HDLC is not set +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set +CONFIG_PDC_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_PRINTER=y +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +CONFIG_INPUT_SERIO=y +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +CONFIG_GENRTC=y +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_PCMCIA_SERIAL_CS is not set +# CONFIG_SYNCLINK_CS is not set + +# +# HIL support +# +CONFIG_HIL=y +CONFIG_HIL_KBD_BASIC=y + +# +# HIL driver core support +# +CONFIG_HP_SDC=y +# CONFIG_HP_SDC_RTC is not set +CONFIG_HIL_MLC=y +CONFIG_HP_SDC_MLC=y + +# +# HIL device driver +# +CONFIG_HIL_KBD=y +CONFIG_HIL_PTR=y + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_ROOT_NFS=y +CONFIG_NFSD=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_TCP is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_RIVA is not set +# CONFIG_FB_CLGEN is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_STI=y +# CONFIG_FB_MATROX is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB32=y +CONFIG_FBCON_STI=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_STI_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FBCON=y +CONFIG_FBCON_FONT=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_FONT_6x11=y +CONFIG_FONT_SUN12x22=y + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_EHCI_HCD is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=y + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=y +CONFIG_USB_HIDINPUT=y +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set + +# +# Kernel hacking +# +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_SPINLOCK=y + +# +# Library routines +# +CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_DEFLATE=m diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/debian-configs/64-smp linux/arch/parisc/debian-configs/64-smp --- linux-2.4.20/arch/parisc/debian-configs/64-smp Wed Dec 31 17:00:00 1969 +++ linux/arch/parisc/debian-configs/64-smp Sat Dec 14 05:53:37 2002 @@ -0,0 +1,976 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_PARISC=y +# CONFIG_UID16 is not set +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor type +# +# CONFIG_PA7100 is not set +# CONFIG_PA7200 is not set +# CONFIG_PA7100LC is not set +CONFIG_PA8X00=y +CONFIG_PA20=y +CONFIG_PARISC64=y +# CONFIG_PDC_NARROW is not set + +# +# General options +# +CONFIG_SMP=y +CONFIG_CHASSIS_LCD_LED=y +CONFIG_IOMMU_CCIO=y +CONFIG_GSC=y +CONFIG_GSC_LASI=y +CONFIG_GSC_WAX=y +CONFIG_EISA=y +CONFIG_ISA=y +CONFIG_PCI=y +CONFIG_GSC_DINO=y +CONFIG_PCI_LBA=y +CONFIG_IOSAPIC=y +CONFIG_IOMMU_SBA=y +CONFIG_SUPERIO=y +CONFIG_PCI_NAMES=y + +# +# General setup +# +CONFIG_HOTPLUG=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_SOM=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set + +# +# Parallel port support +# +CONFIG_PARPORT=y +# CONFIG_PARPORT_PC is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +CONFIG_PARPORT_GSC=y +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +# CONFIG_PARPORT_1284 is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=6144 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_STATS is not set + +# +# Multi-device support (RAID and LVM) +# +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=y +CONFIG_MD_RAID0=y +CONFIG_MD_RAID1=y +CONFIG_MD_RAID5=y +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_DEBUG=y +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +# CONFIG_IP_NF_IRC is not set +# CONFIG_IP_NF_QUEUE is not set +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +# CONFIG_IP_NF_MATCH_PKTTYPE is not set +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_DSCP is not set +CONFIG_IP_NF_MATCH_AH_ESP=m +# CONFIG_IP_NF_MATCH_LENGTH is not set +# CONFIG_IP_NF_MATCH_TTL is not set +CONFIG_IP_NF_MATCH_TCPMSS=m +# CONFIG_IP_NF_MATCH_HELPER is not set +CONFIG_IP_NF_MATCH_STATE=m +# CONFIG_IP_NF_MATCH_CONNTRACK is not set +CONFIG_IP_NF_MATCH_UNCLEAN=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_MIRROR=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +# CONFIG_IP_NF_NAT_LOCAL is not set +# CONFIG_IP_NF_NAT_SNMP_BASIC is not set +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_DSCP is not set +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +# CONFIG_IP_NF_ARPTABLES is not set +CONFIG_IP_NF_COMPAT_IPCHAINS=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_COMPAT_IPFWADM=m +CONFIG_IP_NF_NAT_NEEDED=y +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDEDISK is not set +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_BLK_DEV_RZ1000 is not set +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_IDEPCI_SHARE_IRQ is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +# CONFIG_IDEDMA_PCI_AUTO is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +# CONFIG_BLK_DEV_IDEDMA_TIMEOUT is not set +# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set +CONFIG_BLK_DEV_ADMA=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_AEC62XX_TUNING is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_WDC_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_AMD74XX_OVERRIDE is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_CMD680 is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_BLK_DEV_HPT366 is not set +CONFIG_BLK_DEV_NS87415=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PDC202XX is not set +# CONFIG_PDC202XX_BURST is not set +# CONFIG_PDC202XX_FORCE is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +CONFIG_SCSI=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_SD_EXTRA_DEVS=40 +CONFIG_CHR_DEV_ST=y +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=y + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +CONFIG_BLK_DEV_3W_XXXX_RAID=m +# CONFIG_SCSI_7000FASST is not set +CONFIG_SCSI_ACARD=m +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +CONFIG_SCSI_AHA1740=m +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +CONFIG_SCSI_AM53C974=m +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_BUSLOGIC is not set +CONFIG_SCSI_CPQFCTS=m +CONFIG_SCSI_DMX3191D=m +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_DMA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +CONFIG_SCSI_GENERIC_NCR5380=m +# CONFIG_SCSI_GENERIC_NCR53C400 is not set +CONFIG_SCSI_G_NCR5380_PORT=y +# CONFIG_SCSI_G_NCR5380_MEM is not set +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +# CONFIG_SCSI_NCR53C406A is not set +CONFIG_SCSI_LASI700=y +CONFIG_53C700_MEM_MAPPED=y +CONFIG_53C700_LE_ON_BE=y +CONFIG_53C700_USE_CONSISTENT=y +# CONFIG_SCSI_NCR53C7xx is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_ASK_ZALON is not set +# CONFIG_ASK_NCR53C8XX is not set +# CONFIG_ASK_SYM53C8XX is not set +CONFIG_SCSI_ZALON=y +CONFIG_ASK_ZALON=y +CONFIG_SCSI_SYM53C8XX=y +CONFIG_ASK_SYM53C8XX=y +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +# CONFIG_SCSI_PAS16 is not set +CONFIG_SCSI_PCI2000=m +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_ISP is not set +CONFIG_SCSI_QLOGIC_FC=m +# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set +CONFIG_SCSI_QLOGIC_1280=m +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_SYM53C416 is not set +CONFIG_SCSI_DC390T=m +# CONFIG_SCSI_DC390T_NOGENSUPP is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +CONFIG_SCSI_DEBUG=m + +# +# PCMCIA SCSI adapter support +# +# CONFIG_SCSI_PCMCIA is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +CONFIG_BONDING=m +# CONFIG_EQUALIZER is not set +CONFIG_TUN=m +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_LASI_82596=y +# CONFIG_SUNLANCE is not set +CONFIG_HAPPYMEAL=m +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +# CONFIG_EL1 is not set +# CONFIG_EL2 is not set +# CONFIG_ELPLUS is not set +# CONFIG_EL16 is not set +# CONFIG_EL3 is not set +# CONFIG_3C515 is not set +# CONFIG_ELMC is not set +# CONFIG_ELMC_II is not set +# CONFIG_VORTEX is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRAMCA is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +# CONFIG_SMC9194 is not set +CONFIG_NET_VENDOR_RACAL=y +# CONFIG_NI5010 is not set +CONFIG_NI52=m +# CONFIG_NI65 is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +CONFIG_NET_ISA=y +# CONFIG_E2100 is not set +# CONFIG_EWRK3 is not set +# CONFIG_EEXPRESS is not set +# CONFIG_EEXPRESS_PRO is not set +# CONFIG_HPLAN_PLUS is not set +# CONFIG_HPLAN is not set +# CONFIG_LP486E is not set +# CONFIG_ETH16I is not set +# CONFIG_NE2000 is not set +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set +# CONFIG_CS89x0 is not set +CONFIG_TULIP=y +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_DE4X5=m +# CONFIG_DGRS is not set +# CONFIG_DM9102 is not set +CONFIG_EEPRO100=m +# CONFIG_E100 is not set +# CONFIG_LNE390 is not set +# CONFIG_FEALNX is not set +CONFIG_NATSEMI=m +# CONFIG_NE2K_PCI is not set +# CONFIG_NE3210 is not set +# CONFIG_ES3210 is not set +# CONFIG_8139CP is not set +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +# CONFIG_TLAN is not set +# CONFIG_TC35815 is not set +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_WINBOND_840=m +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_SK98LIN=m +CONFIG_TIGON3=m +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +# CONFIG_NET_PCMCIA is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_GSC_PS2=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_SERIAL_GSC=y +# CONFIG_SERIAL_EXTENDED is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINK is not set +# CONFIG_SYNCLINKMP is not set +# CONFIG_N_HDLC is not set +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set +CONFIG_PDC_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_PRINTER=y +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +CONFIG_INPUT_SERIO=y +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +CONFIG_GENRTC=y +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_PCMCIA_SERIAL_CS is not set +# CONFIG_SYNCLINK_CS is not set + +# +# HIL support +# +CONFIG_HIL=y +CONFIG_HIL_KBD_BASIC=y + +# +# HIL driver core support +# +CONFIG_HP_SDC=y +# CONFIG_HP_SDC_RTC is not set +CONFIG_HIL_MLC=y +CONFIG_HP_SDC_MLC=y + +# +# HIL device driver +# +CONFIG_HIL_KBD=y +CONFIG_HIL_PTR=y + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_ROOT_NFS=y +CONFIG_NFSD=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_TCP is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_RIVA is not set +# CONFIG_FB_CLGEN is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_STI=y +# CONFIG_FB_MATROX is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB32=y +CONFIG_FBCON_STI=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_STI_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FBCON=y +CONFIG_FBCON_FONT=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_FONT_6x11=y +CONFIG_FONT_SUN12x22=y + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_EHCI_HCD is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=y + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=y +CONFIG_USB_HIDINPUT=y +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set + +# +# Kernel hacking +# +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_SPINLOCK=y + +# +# Library routines +# +CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_DEFLATE=m diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/debian-configs/64-udeb linux/arch/parisc/debian-configs/64-udeb --- linux-2.4.20/arch/parisc/debian-configs/64-udeb Wed Dec 31 17:00:00 1969 +++ linux/arch/parisc/debian-configs/64-udeb Sun Dec 15 05:53:34 2002 @@ -0,0 +1,865 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_PARISC=y +# CONFIG_UID16 is not set +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor type +# +# CONFIG_PA7100 is not set +# CONFIG_PA7200 is not set +# CONFIG_PA7100LC is not set +CONFIG_PA8X00=y +CONFIG_PA20=y +CONFIG_PARISC64=y +# CONFIG_PDC_NARROW is not set + +# +# General options +# +# CONFIG_SMP is not set +CONFIG_CHASSIS_LCD_LED=y +CONFIG_IOMMU_CCIO=y +CONFIG_GSC=y +CONFIG_GSC_LASI=y +CONFIG_GSC_WAX=y +CONFIG_EISA=y +CONFIG_ISA=y +CONFIG_PCI=y +CONFIG_GSC_DINO=y +CONFIG_PCI_LBA=y +CONFIG_IOSAPIC=y +CONFIG_IOMMU_SBA=y +CONFIG_SUPERIO=y +CONFIG_PCI_NAMES=y + +# +# General setup +# +CONFIG_HOTPLUG=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_SOM=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_PM is not set + +# +# Parallel port support +# +CONFIG_PARPORT=y +# CONFIG_PARPORT_PC is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +CONFIG_PARPORT_GSC=y +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +# CONFIG_PARPORT_1284 is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=6144 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_STATS is not set + +# +# Multi-device support (RAID and LVM) +# +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=y +CONFIG_MD_RAID0=y +CONFIG_MD_RAID1=y +CONFIG_MD_RAID5=y +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_DEBUG=y +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_ARPTABLES is not set +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDEDISK is not set +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_BLK_DEV_RZ1000 is not set +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_IDEPCI_SHARE_IRQ is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +# CONFIG_IDEDMA_PCI_AUTO is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +# CONFIG_BLK_DEV_IDEDMA_TIMEOUT is not set +# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set +CONFIG_BLK_DEV_ADMA=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_AEC62XX_TUNING is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_WDC_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_AMD74XX_OVERRIDE is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_CMD680 is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_BLK_DEV_HPT366 is not set +CONFIG_BLK_DEV_NS87415=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PDC202XX is not set +# CONFIG_PDC202XX_BURST is not set +# CONFIG_PDC202XX_FORCE is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +CONFIG_SCSI=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_SD_EXTRA_DEVS=40 +CONFIG_CHR_DEV_ST=y +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=y + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_7000FASST is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +# CONFIG_SCSI_AHA1740 is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_CPQFCTS is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_DMA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +# CONFIG_SCSI_NCR53C406A is not set +CONFIG_SCSI_LASI700=y +CONFIG_53C700_MEM_MAPPED=y +CONFIG_53C700_LE_ON_BE=y +CONFIG_53C700_USE_CONSISTENT=y +# CONFIG_SCSI_NCR53C7xx is not set +CONFIG_SCSI_SYM53C8XX_2=y +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +# CONFIG_ASK_ZALON is not set +# CONFIG_ASK_NCR53C8XX is not set +# CONFIG_ASK_SYM53C8XX is not set +CONFIG_SCSI_ZALON=y +CONFIG_ASK_ZALON=y +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PCI2000 is not set +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_ISP is not set +# CONFIG_SCSI_QLOGIC_FC is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +# CONFIG_SCSI_PCMCIA is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_LASI_82596=y +# CONFIG_SUNLANCE is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +# CONFIG_EL1 is not set +# CONFIG_EL2 is not set +# CONFIG_ELPLUS is not set +# CONFIG_EL16 is not set +# CONFIG_EL3 is not set +# CONFIG_3C515 is not set +# CONFIG_ELMC is not set +# CONFIG_ELMC_II is not set +# CONFIG_VORTEX is not set +# CONFIG_LANCE is not set +CONFIG_NET_VENDOR_SMC=y +# CONFIG_WD80x3 is not set +# CONFIG_ULTRAMCA is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRA32 is not set +# CONFIG_SMC9194 is not set +CONFIG_NET_VENDOR_RACAL=y +# CONFIG_NI5010 is not set +# CONFIG_NI52 is not set +# CONFIG_NI65 is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +CONFIG_NET_ISA=y +# CONFIG_E2100 is not set +# CONFIG_EWRK3 is not set +# CONFIG_EEXPRESS is not set +# CONFIG_EEXPRESS_PRO is not set +# CONFIG_HPLAN_PLUS is not set +# CONFIG_HPLAN is not set +# CONFIG_LP486E is not set +# CONFIG_ETH16I is not set +# CONFIG_NE2000 is not set +CONFIG_NET_PCI=y +# CONFIG_PCNET32 is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set +# CONFIG_CS89x0 is not set +CONFIG_TULIP=y +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +# CONFIG_DE4X5 is not set +# CONFIG_DGRS is not set +# CONFIG_DM9102 is not set +# CONFIG_EEPRO100 is not set +# CONFIG_E100 is not set +# CONFIG_LNE390 is not set +# CONFIG_FEALNX is not set +# CONFIG_NATSEMI is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_NE3210 is not set +# CONFIG_ES3210 is not set +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_SUNDANCE_MMIO is not set +# CONFIG_TLAN is not set +# CONFIG_TC35815 is not set +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_RHINE_MMIO is not set +# CONFIG_WINBOND_840 is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +# CONFIG_NET_PCMCIA is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_GSC_PS2=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_SERIAL_GSC=y +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_PRINTER=y +# CONFIG_LP_CONSOLE is not set +# CONFIG_PPDEV is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +CONFIG_INPUT_SERIO=y +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +CONFIG_GENRTC=y +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_PCMCIA_SERIAL_CS is not set +# CONFIG_SYNCLINK_CS is not set + +# +# HIL support +# +CONFIG_HIL=y +CONFIG_HIL_KBD_BASIC=y + +# +# HIL driver core support +# +CONFIG_HP_SDC=y +# CONFIG_HP_SDC_RTC is not set +CONFIG_HIL_MLC=y +CONFIG_HP_SDC_MLC=y + +# +# HIL device driver +# +CONFIG_HIL_KBD=y +CONFIG_HIL_PTR=y + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_TMPFS=y +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +CONFIG_DEVFS_FS=y +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_ROOT_NFS=y +CONFIG_NFSD=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_TCP is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +# CONFIG_NLS is not set + +# +# Console drivers +# + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_RIVA is not set +# CONFIG_FB_CLGEN is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_STI=y +# CONFIG_FB_MATROX is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB32=y +CONFIG_FBCON_STI=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_STI_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FBCON=y +CONFIG_FBCON_FONT=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_FONT_6x11=y +CONFIG_FONT_SUN12x22=y + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_EHCI_HCD is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=y + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=y +CONFIG_USB_HIDINPUT=y +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set + +# +# Kernel hacking +# +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set + +# +# Library routines +# +# CONFIG_ZLIB_INFLATE is not set +# CONFIG_ZLIB_DEFLATE is not set diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/defconfig linux/arch/parisc/defconfig --- linux-2.4.20/arch/parisc/defconfig Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/defconfig Sat Nov 16 05:53:34 2002 @@ -32,7 +32,6 @@ # # CONFIG_SMP is not set CONFIG_CHASSIS_LCD_LED=y -# CONFIG_KWDB is not set CONFIG_IOMMU_CCIO=y CONFIG_GSC=y CONFIG_GSC_LASI=y @@ -87,7 +86,9 @@ # CONFIG_PARIDE is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set # CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_NBD is not set CONFIG_BLK_DEV_RAM=y @@ -138,6 +139,11 @@ # # CONFIG_IPX is not set # CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set # CONFIG_DECNET is not set # CONFIG_BRIDGE is not set # CONFIG_X25 is not set @@ -155,6 +161,11 @@ # CONFIG_NET_SCHED is not set # +# Network testing +# +# CONFIG_NET_PKTGEN is not set + +# # ATA/IDE/MFM/RLL support # CONFIG_IDE=y @@ -171,6 +182,7 @@ # CONFIG_BLK_DEV_HD is not set # CONFIG_BLK_DEV_IDEDISK is not set # CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set # CONFIG_BLK_DEV_IDEDISK_VENDOR is not set # CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set # CONFIG_BLK_DEV_IDEDISK_IBM is not set @@ -185,6 +197,7 @@ # CONFIG_BLK_DEV_IDETAPE is not set # CONFIG_BLK_DEV_IDEFLOPPY is not set # CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set # # IDE chipset support/bugfixes @@ -196,12 +209,15 @@ CONFIG_BLK_DEV_IDEPCI=y # CONFIG_IDEPCI_SHARE_IRQ is not set CONFIG_BLK_DEV_IDEDMA_PCI=y -CONFIG_BLK_DEV_ADMA=y # CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set # CONFIG_IDEDMA_PCI_AUTO is not set +# CONFIG_IDEDMA_ONLYDISK is not set CONFIG_BLK_DEV_IDEDMA=y # CONFIG_IDEDMA_PCI_WIP is not set +# CONFIG_BLK_DEV_IDEDMA_TIMEOUT is not set # CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set +CONFIG_BLK_DEV_ADMA=y # CONFIG_BLK_DEV_AEC62XX is not set # CONFIG_AEC62XX_TUNING is not set # CONFIG_BLK_DEV_ALI15X3 is not set @@ -209,6 +225,7 @@ # CONFIG_BLK_DEV_AMD74XX is not set # CONFIG_AMD74XX_OVERRIDE is not set # CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_CMD680 is not set # CONFIG_BLK_DEV_CY82C693 is not set # CONFIG_BLK_DEV_CS5530 is not set # CONFIG_BLK_DEV_HPT34X is not set @@ -296,9 +313,13 @@ CONFIG_53C700_USE_CONSISTENT=y # CONFIG_SCSI_NCR53C7xx is not set # CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_NCR53C8XX is not set -CONFIG_SCSI_SYM53C8XX=y +# CONFIG_ASK_ZALON is not set +# CONFIG_ASK_NCR53C8XX is not set +# CONFIG_ASK_SYM53C8XX is not set CONFIG_SCSI_ZALON=y +CONFIG_ASK_ZALON=y +CONFIG_SCSI_SYM53C8XX=y +CONFIG_ASK_SYM53C8XX=y CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 CONFIG_SCSI_NCR53C8XX_SYNC=20 @@ -366,6 +387,7 @@ # CONFIG_APRICOT is not set # CONFIG_CS89x0 is not set CONFIG_TULIP=y +# CONFIG_TC35815 is not set # CONFIG_TULIP_MWI is not set # CONFIG_TULIP_MMIO is not set # CONFIG_DE4X5 is not set @@ -403,6 +425,7 @@ # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set # CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set # CONFIG_PLIP is not set @@ -473,6 +496,7 @@ CONFIG_PSMOUSE=y # CONFIG_82C710_MOUSE is not set # CONFIG_PC110_PAD is not set +# CONFIG_MK712_MOUSE is not set # # Joysticks @@ -515,7 +539,6 @@ # # CONFIG_WATCHDOG is not set CONFIG_GENRTC=y -# CONFIG_INTEL_RNG is not set # CONFIG_NVRAM is not set # CONFIG_RTC is not set # CONFIG_DTLK is not set @@ -585,7 +608,7 @@ # CONFIG_JFFS2_FS is not set # CONFIG_CRAMFS is not set # CONFIG_TMPFS is not set -# CONFIG_RAMFS is not set +CONFIG_RAMFS=y CONFIG_ISO9660_FS=y CONFIG_JOLIET=y # CONFIG_ZISOFS is not set @@ -697,6 +720,7 @@ # CONFIG_FB_RIVA is not set # CONFIG_FB_CLGEN is not set # CONFIG_FB_PM2 is not set +# CONFIG_FB_PM3 is not set # CONFIG_FB_CYBER2000 is not set CONFIG_FB_STI=y # CONFIG_FB_MATROX is not set @@ -704,6 +728,7 @@ # CONFIG_FB_RADEON is not set # CONFIG_FB_ATY128 is not set # CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set # CONFIG_FB_3DFX is not set # CONFIG_FB_VOODOO1 is not set # CONFIG_FB_TRIDENT is not set @@ -757,106 +782,6 @@ # USB support # # CONFIG_USB is not set - -# -# USB Controllers -# -# CONFIG_USB_UHCI is not set -# CONFIG_USB_UHCI_ALT is not set -# CONFIG_USB_OHCI is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_BLUETOOTH is not set -# CONFIG_USB_STORAGE is not set -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# -# CONFIG_USB_HID is not set -# CONFIG_USB_HIDDEV is not set -# CONFIG_USB_KBD is not set -# CONFIG_USB_MOUSE is not set -# CONFIG_USB_WACOM is not set - -# -# USB Imaging devices -# -# CONFIG_USB_DC2XX is not set -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_SCANNER is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# - -# -# USB Network adaptors -# -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_CATC is not set -# CONFIG_USB_CDCETHER is not set -# CONFIG_USB_USBNET is not set - -# -# USB port drivers -# -# CONFIG_USB_USS720 is not set - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set -# CONFIG_USB_SERIAL_GENERIC is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IPAQ is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_KLSI is not set -# CONFIG_USB_SERIAL_PL2303 is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set -# CONFIG_USB_SERIAL_OMNINET is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_RIO500 is not set # # Kernel hacking diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/defpalo.conf linux/arch/parisc/defpalo.conf --- linux-2.4.20/arch/parisc/defpalo.conf Wed Dec 31 17:00:00 1969 +++ linux/arch/parisc/defpalo.conf Wed Jul 24 13:09:02 2002 @@ -0,0 +1,21 @@ +# This a generic Palo configuration file. For more information about how +# it works try 'palo -?'. +# +# Most people using 'make palo' want a bootable file, usable for +# network or tape booting for example. +--init-tape=lifimage +--recoverykernel=vmlinux + +########## Pick your ROOT here! ########## +# You need at least one 'root='! +# +# If you want a root ramdisk, use the next 2 lines +# (Edit the ramdisk image name!!!!) +--ramdisk=ram-disk-image-file +--commandline=0/vmlinux HOME=/ root=/dev/ram initrd=0/ramdisk + +# If you want NFS root, use the following command line (Edit the HOSTNAME!!!) +#--commandline=0/vmlinux HOME=/ root=/dev/nfs nfsroot=HOSTNAME ip=bootp + +# If you have root on a disk partition, use this (Edit the partition name!!!) +#--commandline=0/vmlinux HOME=/ root=/dev/sda1 diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/Makefile linux/arch/parisc/kernel/Makefile --- linux-2.4.20/arch/parisc/kernel/Makefile Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/Makefile Thu Oct 3 16:53:30 2002 @@ -24,7 +24,7 @@ pa7300lc.o syscall.o entry.o sys_parisc.o firmware.o \ ptrace.o hardware.o inventory.o drivers.o semaphore.o \ signal.o hpmc.o real2.o parisc_ksyms.o unaligned.o \ - processor.o power.o + processor.o power.o pdc_chassis.o export-objs := parisc_ksyms.o superio.o keyboard.o diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/cache.c linux/arch/parisc/kernel/cache.c --- linux-2.4.20/arch/parisc/kernel/cache.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/cache.c Mon Feb 10 02:17:51 2003 @@ -194,31 +194,30 @@ void disable_sr_hashing(void) { - int srhash_type; + int srhash_type; - if (boot_cpu_data.cpu_type == pcxl2) - return; /* pcxl2 doesn't support space register hashing */ + switch (boot_cpu_data.cpu_type) { + case pcx: /* We shouldn't get this far. setup.c should prevent it. */ + BUG(); + return; + + case pcxs: + case pcxt: + case pcxt_: + srhash_type = SRHASH_PCXST; + break; + + case pcxl: + srhash_type = SRHASH_PCXL; + break; + + case pcxl2: /* pcxl2 doesn't support space register hashing */ + return; + + default: /* Currently all PA2.0 machines use the same ins. sequence */ + srhash_type = SRHASH_PA20; + break; + } - switch (boot_cpu_data.cpu_type) { - - case pcx: - BUG(); /* We shouldn't get here. code in setup.c should prevent it */ - return; - - case pcxs: - case pcxt: - case pcxt_: - srhash_type = SRHASH_PCXST; - break; - - case pcxl: - srhash_type = SRHASH_PCXL; - break; - - default: /* Currently all PA2.0 machines use the same ins. sequence */ - srhash_type = SRHASH_PA20; - break; - } - - disable_sr_hashing_asm(srhash_type); + disable_sr_hashing_asm(srhash_type); } diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/ccio-dma.c linux/arch/parisc/kernel/ccio-dma.c --- linux-2.4.20/arch/parisc/kernel/ccio-dma.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/ccio-dma.c Wed Dec 4 05:53:27 2002 @@ -609,8 +609,6 @@ return 0; } - dev->dma_mask = mask; /* save it */ - /* only support 32-bit devices (ie PCI/GSC) */ return (int)(mask == 0xffffffffUL); } @@ -807,7 +805,7 @@ DBG_RUN_SG(" %d : %08lx/%05x %p/%05x\n", nents, (unsigned long)sg_dma_address(startsg), cnt, - startsg->address, startsg->length + sg_virt_addr(startsg), startsg->length ); /* @@ -827,7 +825,7 @@ ** Look for a VCONTIG chunk */ if (cnt) { - unsigned long vaddr = (unsigned long)startsg->address; + unsigned long vaddr = (unsigned long) sg_virt_addr(startsg); ASSERT(pdirp); /* Since multiple Vcontig blocks could make up @@ -880,8 +878,8 @@ */ dma_sg = vcontig_sg = startsg; dma_len = vcontig_len = vcontig_end = startsg->length; - vcontig_end += (unsigned long) startsg->address; - dma_offset = (unsigned long) startsg->address & ~IOVP_MASK; + vcontig_end += (unsigned long) sg_virt_addr(startsg); + dma_offset = (unsigned long) sg_virt_addr(startsg) & ~IOVP_MASK; /* PARANOID: clear entries */ sg_dma_address(startsg) = 0; @@ -895,7 +893,7 @@ unsigned long startsg_end; startsg++; - startsg_end = (unsigned long)startsg->address + + startsg_end = (unsigned long) sg_virt_addr(startsg) + startsg->length; /* PARANOID: clear entries */ @@ -914,7 +912,7 @@ /* ** Append the next transaction? */ - if(vcontig_end == (unsigned long) startsg->address) { + if(vcontig_end == (unsigned long) sg_virt_addr(startsg)) { vcontig_len += startsg->length; vcontig_end += startsg->length; dma_len += startsg->length; @@ -983,7 +981,8 @@ /* Fast path single entry scatterlists. */ if(nents == 1) { - sg_dma_address(sglist)= ccio_map_single(dev, sglist->address, + sg_dma_address(sglist)= ccio_map_single(dev, + sg_virt_addr(sglist), sglist->length, direction); sg_dma_len(sglist)= sglist->length; @@ -1045,7 +1044,7 @@ ioc = GET_IOC(dev); DBG_RUN_SG("%s() START %d entries, %p,%x\n", - __FUNCTION__, nents, sglist->address, sglist->length); + __FUNCTION__, nents, sg_virt_address(sglist), sglist->length); #ifdef CONFIG_PROC_FS ioc->usg_calls++; @@ -1441,7 +1440,7 @@ result = request_resource(&iomem_resource, res); if (result < 0) { printk(KERN_ERR - "%s: failed to claim CCIO bus address space (%p,%p)\n", + "%s: failed to claim CCIO bus address space (%lx,%lx)\n", __FILE__, res->start, res->end); } } @@ -1486,7 +1485,7 @@ int ccio_allocate_resource(const struct parisc_device *dev, struct resource *res, unsigned long size, unsigned long min, unsigned long max, unsigned long align, - void (*alignf)(void *, struct resource *, unsigned long), + void (*alignf)(void *, struct resource *, unsigned long, unsigned long), void *alignf_data) { struct ioc *ioc = ccio_get_iommu(dev); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/ccio-rm-dma.c linux/arch/parisc/kernel/ccio-rm-dma.c --- linux-2.4.20/arch/parisc/kernel/ccio-rm-dma.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/ccio-rm-dma.c Wed Dec 4 05:53:27 2002 @@ -74,8 +74,6 @@ return(0); } - dev->dma_mask = mask; /* save it */ - /* only support 32-bit devices (ie PCI/GSC) */ return((int) (mask >= 0xffffffffUL)); } @@ -120,7 +118,7 @@ /* KISS: map each buffer seperately. */ while (nents) { - sg_dma_address(sglist) = ccio_map_single(dev, sglist->address, sglist->length, direction); + sg_dma_address(sglist) = ccio_map_single(dev, sg_virt_addr(sglist), sglist->length, direction); sg_dma_len(sglist) = sglist->length; nents--; sglist++; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/drivers.c linux/arch/parisc/kernel/drivers.c --- linux-2.4.20/arch/parisc/kernel/drivers.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/drivers.c Wed Sep 11 16:53:15 2002 @@ -461,6 +461,7 @@ #define BC_PORT_MASK 0x8 #define BC_LOWER_PORT 0x8 + #define BUS_CONVERTER(dev) \ ((dev->id.hw_type == HPHW_IOA) || (dev->id.hw_type == HPHW_BCPORT)) @@ -473,14 +474,29 @@ __raw_readl((unsigned long)&((struct bc_module *)dev->hpa)->io_io_low) << 16 : \ __raw_readl((unsigned long)&((struct bc_module *)dev->hpa)->io_io_low)) -static void walk_native_bus(unsigned long addr, struct parisc_device *parent); +#define READ_IO_IO_HIGH(dev) \ + (dev->id.hw_type == HPHW_IOA ? \ + __raw_readl((unsigned long)&((struct bc_module *)dev->hpa)->io_io_high) << 16 : \ + __raw_readl((unsigned long)&((struct bc_module *)dev->hpa)->io_io_high)) + + +static void walk_native_bus(unsigned long io_io_low, unsigned long io_io_high, + struct parisc_device *parent); + +#define FLEX_MASK (unsigned long)0xfffffffffffc0000 + + void walk_lower_bus(struct parisc_device *dev) { + unsigned long io_io_low, io_io_high; if(!BUS_CONVERTER(dev) || IS_LOWER_PORT(dev)) return; - walk_native_bus((unsigned long)(signed int)READ_IO_IO_LOW(dev), dev); + io_io_low = ((unsigned long)(signed int)READ_IO_IO_LOW(dev) + ~FLEX_MASK) & FLEX_MASK; + io_io_high = ((unsigned long)(signed int)READ_IO_IO_HIGH(dev) + ~FLEX_MASK) & FLEX_MASK; + + walk_native_bus(io_io_low, io_io_high, dev); } #define MAX_NATIVE_DEVICES 64 @@ -488,7 +504,9 @@ /** * walk_native_bus -- Probe a bus for devices - * @addr: Base address of this bus. + * @io_io_low: Base address of this bus. + * @io_io_high: Last address of this bus. + * @parent: The parent bus device. * * A native bus (eg Runway or GSC) may have up to 64 devices on it, * spaced at intervals of 0x1000 bytes. PDC may not inform us of these @@ -496,28 +514,32 @@ * devices which are not physically connected (such as extra serial & * keyboard ports). This problem is not yet solved. */ -static void walk_native_bus(unsigned long addr, struct parisc_device *parent) +static void walk_native_bus(unsigned long io_io_low, unsigned long io_io_high, + struct parisc_device *parent) { - int i; + int i, devices_found = 0; + unsigned long hpa = io_io_low; struct hardware_path path; get_node_path(parent, &path); - for (i = 0; i < MAX_NATIVE_DEVICES; i++) { - unsigned long hpa = (addr + i * NATIVE_DEVICE_OFFSET); - struct parisc_device *dev; - - /* Was the device already added by Firmware? */ - dev = find_device_by_addr(hpa); - if (!dev) { - path.mod = i; - dev = alloc_pa_dev(hpa, &path); - if (!dev) - continue; - - register_parisc_device(dev); + do { + for (i = 0; i < MAX_NATIVE_DEVICES; i++, hpa += NATIVE_DEVICE_OFFSET) { + struct parisc_device *dev; + + /* Was the device already added by Firmware? */ + dev = find_device_by_addr(hpa); + if (!dev) { + path.mod = i; + dev = alloc_pa_dev(hpa, &path); + if (!dev) + continue; + + register_parisc_device(dev); + devices_found++; + } + walk_lower_bus(dev); } - walk_lower_bus(dev); - } + } while (!devices_found && hpa < io_io_high); } #define CENTRAL_BUS_ADDR (unsigned long) 0xfffffffffff80000 @@ -530,7 +552,9 @@ */ void walk_central_bus(void) { - walk_native_bus(CENTRAL_BUS_ADDR, &root); + walk_native_bus(CENTRAL_BUS_ADDR, + CENTRAL_BUS_ADDR + (MAX_NATIVE_DEVICES * NATIVE_DEVICE_OFFSET), + &root); } void fixup_child_irqs(struct parisc_device *parent, int base, diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/entry.S linux/arch/parisc/kernel/entry.S --- linux-2.4.20/arch/parisc/kernel/entry.S Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/entry.S Mon Dec 9 05:53:15 2002 @@ -759,32 +759,30 @@ .import do_softirq,code intr_do_softirq: - bl do_softirq,%r2 #ifdef __LP64__ ldo -16(%r30),%r29 /* Reference param save area */ -#else - nop #endif - b intr_check_resched - nop + ldil L%intr_check_resched, %r2 + b do_softirq + ldo R%intr_check_resched(%r2), %r2 .import schedule,code intr_do_resched: /* Only do reschedule if we are returning to user space */ LDREG PT_IASQ0(%r16), %r20 - CMPIB= 0,%r20,intr_restore /* backward */ + CMPIB= 0,%r20,intr_check_sig /* backward */ nop LDREG PT_IASQ1(%r16), %r20 - CMPIB= 0,%r20,intr_restore /* backward */ + CMPIB= 0,%r20,intr_check_sig /* backward */ nop #ifdef __LP64__ ldo -16(%r30),%r29 /* Reference param save area */ #endif - ldil L%intr_return, %r2 + ldil L%intr_check_sig, %r2 b schedule - ldo R%intr_return(%r2), %r2 /* return to intr_return, not here */ + ldo R%intr_check_sig(%r2), %r2 .import do_signal,code @@ -799,15 +797,14 @@ copy %r0, %r24 /* unsigned long in_syscall */ copy %r16, %r25 /* struct pt_regs *regs */ - ssm PSW_SM_I, %r0 + copy %r0, %r26 /* sigset_t *oldset = NULL */ #ifdef __LP64__ ldo -16(%r30),%r29 /* Reference param save area */ #endif - bl do_signal,%r2 - copy %r0, %r26 /* sigset_t *oldset = NULL */ + ldil L%intr_restore, %r2 + b do_signal + ldo R%intr_restore(%r2), %r2 - b intr_restore - nop /* * External interrupts. @@ -852,7 +849,7 @@ ldo -16(%r30),%r29 /* Reference param save area */ #endif b do_cpu_irq_mask - ldo R%intr_return(%r2), %r2 /* return to intr_return, not here */ + ldo R%intr_return(%r2), %r2 @@ -925,19 +922,16 @@ loadgp copy %r29, %r25 /* arg1 is pt_regs */ -#ifdef CONFIG_KWDB - copy %r29, %r3 /* KWDB - update frame pointer (gr3) */ -#endif #ifdef __LP64__ ldo -16(%r30),%r29 /* Reference param save area */ #endif - ldil L%intr_return, %r2 + ldil L%intr_check_sig, %r2 copy %r25, %r16 /* save pt_regs */ b handle_interruption - ldo R%intr_return(%r2), %r2 /* return to intr_return */ + ldo R%intr_check_sig(%r2), %r2 /* @@ -1319,9 +1313,9 @@ /* Get rid of prot bits and convert to page addr for idtlbt */ - extrd,s pte,35,4,t0 + extrd,s pte,35,4,t1 depdi 0,63,12,pte /* clear lower 12 bits */ - addi,= 1,t0,0 + addi,= 1,t1,0 extrd,u,*tr pte,56,25,pte extrd,s pte,56,25,pte /* bit 31:8 >> 8 */ idtlbt pte,prot @@ -1389,9 +1383,9 @@ /* Get rid of prot bits and convert to page addr for idtlbt */ - extrd,s pte,35,4,t0 + extrd,s pte,35,4,t1 depdi 0,63,12,pte /* clear lower 12 bits */ - addi,= 1,t0,0 + addi,= 1,t1,0 extrd,u,*tr pte,56,25,pte extrd,s pte,56,25,pte /* bit 31:8 >> 8 */ idtlbt pte,prot @@ -1642,9 +1636,9 @@ /* Get rid of prot bits and convert to page addr for iitlbt */ - extrd,s pte,35,4,t0 + extrd,s pte,35,4,t1 depdi 0,63,12,pte /* clear lower 12 bits */ - addi,= 1,t0,0 + addi,= 1,t1,0 extrd,u,*tr pte,56,25,pte extrd,s pte,56,25,pte /* bit 31:8 >> 8 */ iitlbt pte,prot @@ -1860,9 +1854,9 @@ extrd,u,*= pte,_PAGE_GATEWAY_BIT+32,1,r0 depdi 0,11,2,prot /* If Gateway, Set PL2 to 0 */ - extrd,s pte,35,4,t0 + extrd,s pte,35,4,t1 depdi 0,63,12,pte /* clear lower 12 bits */ - addi,= 1,t0,0 + addi,= 1,t1,0 extrd,u,*tr pte,56,25,pte extrd,s pte,56,25,pte /* bit 31:8 >> 8 */ idtlbt pte,prot @@ -2358,9 +2352,9 @@ STREG %r2,TASK_PT_IAOQ0(%r1) ldo 4(%r2),%r2 STREG %r2,TASK_PT_IAOQ1(%r1) - copy %r25,%r16 + b intr_restore - nop + copy %r25,%r16 .import do_softirq,code syscall_do_softirq: diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/firmware.c linux/arch/parisc/kernel/firmware.c --- linux-2.4.20/arch/parisc/kernel/firmware.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/firmware.c Thu Oct 3 16:53:30 2002 @@ -1,4 +1,4 @@ -/* arch/parisc/kernel/pdc.c - safe pdc access routines +/* arch/parisc/kernel/firmware.c - safe pdc access routines * * Copyright 1999 SuSE GmbH Nuernberg (Philipp Rumpf, prumpf@tux.org) * portions Copyright 1999 The Puffin Group, (Alex deVries, David Kennedy) @@ -177,6 +177,45 @@ } /** + * pdc_pat_chassis_send_log - Sends a PDC PAT CHASSIS log message. + * @retval: -1 on error, 0 on success. Other value are PDC errors + * + * Must be correctly formatted or expect system crash + */ +#ifdef __LP64__ +int pdc_pat_chassis_send_log(unsigned long state, unsigned long data) +{ + if (!is_pdc_pat()) + return -1; + + int retval = 0; + + spin_lock_irq(&pdc_lock); + retval = mem_pdc_call(PDC_PAT_CHASSIS_LOG, PDC_PAT_CHASSIS_WRITE_LOG, __pa(&state), __pa(&data)); + spin_unlock_irq(&pdc_lock); + + return retval; +} +#endif + +/** + * pdc_chassis_disp - Updates display + * @retval: -1 on error, 0 on success + * + * Works on old PDC only (E class, others?) + */ +int pdc_chassis_disp(unsigned long disp) +{ + int retval = 0; + + spin_lock_irq(&pdc_lock); + retval = mem_pdc_call(PDC_CHASSIS, PDC_CHASSIS_DISP, disp); + spin_unlock_irq(&pdc_lock); + + return retval; +} + +/** * pdc_coproc_cfg - To identify coprocessors attached to the processor. * @pdc_coproc_info: Return buffer address. * @@ -507,12 +546,11 @@ /* BCJ-XXXX series boxes. E.G. "9000/785/C3000" */ #define IS_SPROCKETS() (strlen(boot_cpu_data.pdc.sys_model_name) == 14 && \ - strncmp(boot_cpu_data.pdc.sys_model_name, "9000/785", 9) == 0) + strncmp(boot_cpu_data.pdc.sys_model_name, "9000/785", 8) == 0) retval = mem_pdc_call(PDC_INITIATOR, PDC_GET_INITIATOR, __pa(pdc_result), __pa(hwpath)); - if (retval >= PDC_OK) { *scsi_id = (unsigned char) pdc_result[0]; @@ -534,10 +572,12 @@ ** pdc_result[3] PDC suggested SCSI rate */ + /* + ** XXX REVISIT: Doesn't look like PAT PDC does the same. + ** Problem is A500 also exports 50-pin SE SCSI port. + */ if (IS_SPROCKETS()) { /* - ** Revisit: PAT PDC do the same thing? - ** A500 also exports 50-pin SE SCSI. ** 0 == 8-bit ** 1 == 16-bit */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/hardware.c linux/arch/parisc/kernel/hardware.c --- linux-2.4.20/arch/parisc/kernel/hardware.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/hardware.c Sat Feb 8 02:13:36 2003 @@ -99,8 +99,8 @@ {HPHW_NPROC,0x481,0x4,0x81,"Wilbur (E25)"}, {HPHW_NPROC,0x482,0x4,0x81,"WB-80 (E35)"}, {HPHW_NPROC,0x483,0x4,0x81,"WB-96 (E45)"}, - {HPHW_NPROC,0x48,0x4,0x81,"UL Proc L-100 (811/D210,D310)"}, - {HPHW_NPROC,0x48,0x4,0x81,"UL Proc L-75 (801/D200)"}, + {HPHW_NPROC,0x484,0x4,0x81,"UL Proc L-100 (811/D210,D310)"}, + {HPHW_NPROC,0x485,0x4,0x81,"UL Proc L-75 (801/D200)"}, {HPHW_NPROC,0x501,0x4,0x81,"Merlin L2 132 (9000/778/B132L)"}, {HPHW_NPROC,0x502,0x4,0x81,"Merlin L2 160 (9000/778/B160L)"}, {HPHW_NPROC,0x503,0x4,0x81,"Merlin L2+ 132 (9000/778/B132L)"}, diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/head.S linux/arch/parisc/kernel/head.S --- linux-2.4.20/arch/parisc/kernel/head.S Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/head.S Fri Dec 27 05:53:30 2002 @@ -74,7 +74,7 @@ ldo R%PA(_end)(%r4),%r4 $bss_loop: cmpb,<<,n %r3,%r4,$bss_loop - stb,ma %r0,1(%r3) + stw,ma %r0,4(%r3) /* Save away the arguments the boot loader passed in (32 bit args) */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/head64.S linux/arch/parisc/kernel/head64.S --- linux-2.4.20/arch/parisc/kernel/head64.S Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/head64.S Wed Nov 13 05:53:35 2002 @@ -24,7 +24,7 @@ #include /* for PDC_PSW defines */ - .level 2.0 + .level 2.0w .section .initcall.init .align 4 diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/ioctl32.c linux/arch/parisc/kernel/ioctl32.c --- linux-2.4.20/arch/parisc/kernel/ioctl32.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/ioctl32.c Mon Dec 9 05:53:15 2002 @@ -2986,6 +2986,9 @@ COMPATIBLE_IOCTL(BLKFRASET) COMPATIBLE_IOCTL(BLKSECTSET) COMPATIBLE_IOCTL(BLKSSZGET) +COMPATIBLE_IOCTL(BLKBSZGET) +COMPATIBLE_IOCTL(BLKBSZSET) +COMPATIBLE_IOCTL(BLKGETSIZE64) /* RAID */ COMPATIBLE_IOCTL(RAID_VERSION) @@ -3120,6 +3123,11 @@ COMPATIBLE_IOCTL(SIOCDRARP) COMPATIBLE_IOCTL(SIOCADDDLCI) COMPATIBLE_IOCTL(SIOCDELDLCI) +COMPATIBLE_IOCTL(SIOCGMIIPHY) +COMPATIBLE_IOCTL(SIOCGMIIREG) +COMPATIBLE_IOCTL(SIOCSMIIREG) +COMPATIBLE_IOCTL(SIOCGIFVLAN) +COMPATIBLE_IOCTL(SIOCSIFVLAN) /* SG stuff */ COMPATIBLE_IOCTL(SG_SET_TIMEOUT) COMPATIBLE_IOCTL(SG_GET_TIMEOUT) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/irq.c linux/arch/parisc/kernel/irq.c --- linux-2.4.20/arch/parisc/kernel/irq.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/irq.c Wed Dec 4 05:53:27 2002 @@ -57,7 +57,7 @@ /* Bits in EIEM correlate with cpu_irq_action[]. ** Numbered *Big Endian*! (ie bit 0 is MSB) */ -static unsigned long cpu_eiem = 0; +static volatile unsigned long cpu_eiem = 0; static spinlock_t irq_lock = SPIN_LOCK_UNLOCKED; /* protect IRQ regions */ @@ -201,7 +201,7 @@ { #ifdef CONFIG_PROC_FS char *p = buf; - unsigned int regnr; + unsigned int regnr = 0; p += sprintf(p, " "); #ifdef CONFIG_SMP @@ -462,7 +462,7 @@ for (irq = 0; eirr_val && bit; bit>>=1, irq++) { - if (!(bit&eirr_val)) + if (!(bit&eirr_val&cpu_eiem)) continue; /* clear bit in mask - can exit loop sooner */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/lasimap.map linux/arch/parisc/kernel/lasimap.map --- linux-2.4.20/arch/parisc/kernel/lasimap.map Tue Dec 5 13:29:39 2000 +++ linux/arch/parisc/kernel/lasimap.map Wed Dec 31 17:00:00 1969 @@ -1,322 +0,0 @@ -# HP 712 kernel keymap. This uses 7 modifier combinations. - -keymaps 0-2,4-5,8,12 -# ie, plain, Shift, AltGr, Control, Control+Shift, Alt and Control+Alt - - -# Change the above line into -# keymaps 0-2,4-6,8,12 -# in case you want the entries -# altgr control keycode 83 = Boot -# altgr control keycode 111 = Boot -# below. -# -# In fact AltGr is used very little, and one more keymap can -# be saved by mapping AltGr to Alt (and adapting a few entries): -# keycode 100 = Alt -# -keycode 1 = F9 F19 Console_21 - control keycode 1 = F9 - alt keycode 1 = Console_9 - control alt keycode 1 = Console_9 -keycode 2 = -keycode 3 = F5 F15 Console_17 - control keycode 3 = F5 - alt keycode 3 = Console_5 - control alt keycode 3 = Console_5 -keycode 4 = F3 F13 Console_15 - control keycode 4 = F3 - alt keycode 4 = Console_3 - control alt keycode 4 = Console_3 -keycode 5 = F1 F11 Console_13 - control keycode 5 = F1 - alt keycode 5 = Console_1 - control alt keycode 5 = Console_1 -keycode 6 = F2 F12 Console_14 - control keycode 6 = F2 - alt keycode 6 = Console_2 - control alt keycode 6 = Console_2 -keycode 7 = F12 F12 Console_24 - control keycode 7 = F12 - alt keycode 7 = Console_12 - control alt keycode 7 = Console_12 -keycode 8 = -keycode 9 = F10 F20 Console_22 - control keycode 9 = F10 - alt keycode 9 = Console_10 - control alt keycode 9 = Console_10 -keycode 10 = F8 F18 Console_20 - control keycode 10 = F8 - alt keycode 10 = Console_8 - control alt keycode 10 = Console_8 -keycode 11 = F6 F16 Console_18 - control keycode 11 = F6 - alt keycode 11 = Console_6 - control alt keycode 11 = Console_6 -keycode 12 = F4 F14 Console_16 - control keycode 12 = F4 - alt keycode 12 = Console_4 - control alt keycode 12 = Console_4 -keycode 13 = Tab Tab - alt keycode 13 = Meta_Tab -keycode 14 = grave asciitilde - control keycode 14 = nul - alt keycode 14 = Meta_grave -keycode 15 = -keycode 16 = -keycode 17 = Alt -keycode 18 = Shift -keycode 19 = -keycode 20 = Control -keycode 21 = q -keycode 22 = one exclam exclam -keycode 23 = -keycode 24 = -keycode 25 = -keycode 26 = z -keycode 27 = s -keycode 28 = a - altgr keycode 28 = Hex_A -keycode 29 = w -keycode 30 = two at at -keycode 31 = -keycode 32 = -keycode 33 = c - altgr keycode 46 = Hex_C -keycode 34 = x -keycode 35 = d - altgr keycode 35 = Hex_D -keycode 36 = e - altgr keycode 36 = Hex_E -keycode 37 = four dollar -keycode 38 = three numbersign -keycode 39 = -keycode 40 = -keycode 41 = -keycode 42 = v -keycode 43 = f - altgr keycode 43 = Hex_F -keycode 44 = t -keycode 45 = r -keycode 46 = five percent -keycode 47 = -keycode 48 = -keycode 49 = n -keycode 50 = b - altgr keycode 50 = Hex_B -keycode 51 = h -keycode 52 = g -keycode 53 = y -keycode 54 = six asciicircum -keycode 55 = -keycode 56 = -keycode 57 = -keycode 58 = m -keycode 59 = j -keycode 60 = u -keycode 61 = seven ampersand -keycode 62 = eight asterisk asterisk -keycode 63 = -keycode 64 = -keycode 65 = comma less - alt keycode 65 = Meta_comma -keycode 66 = k -keycode 67 = i -keycode 68 = o -keycode 69 = zero parenright bracketright -keycode 70 = nine parenleft bracketleft -keycode 71 = -keycode 72 = -keycode 73 = period greater - control keycode 73 = Compose - alt keycode 73 = Meta_period -keycode 74 = slash question - control keycode 74 = Delete - alt keycode 53 = Meta_slash -keycode 75 = l -keycode 76 = semicolon colon - alt keycode 39 = Meta_semicolon -keycode 77 = p -keycode 78 = minus underscore -keycode 79 = -keycode 80 = -keycode 81 = -keycode 82 = apostrophe quotedbl - control keycode 82 = Control_g - alt keycode 40 = Meta_apostrophe -keycode 83 = -keycode 84 = bracketleft braceleft - control keycode 84 = Escape - alt keycode 26 = Meta_bracketleft -keycode 85 = equal plus -keycode 86 = -keycode 87 = -keycode 88 = Caps_Lock -keycode 88 = -keycode 89 = -keycode 89 = -keycode 89 = -keycode 90 = Return - alt keycode 90 = Meta_Control_m -keycode 91 = bracketright braceright asciitilde - control keycode 91 = Control_bracketright - alt keycode 91 = Meta_bracketright -keycode 92 = -keycode 93 = backslash bar - control keycode 43 = Control_backslash - alt keycode 43 = Meta_backslash -keycode 94 = -keycode 95 = -keycode 96 = -keycode 97 = -keycode 98 = -keycode 99 = -keycode 100 = -keycode 101 = -keycode 102 = BackSpace -keycode 103 = -keycode 104 = -keycode 105 = KP_1 - alt keycode 105 = Ascii_1 - altgr keycode 105 = Hex_1 -keycode 106 = -keycode 107 = KP_4 - alt keycode 107 = Ascii_4 - altgr keycode 107 = Hex_4 -keycode 108 = KP_7 - alt keycode 108 = Ascii_7 - altgr keycode 108 = Hex_7 -keycode 109 = -keycode 110 = -keycode 111 = -keycode 112 = KP_0 - alt keycode 82 = Ascii_0 - altgr keycode 82 = Hex_0 -keycode 113 = KP_Period -keycode 114 = KP_2 - alt keycode 114 = Ascii_2 - altgr keycode 114 = Hex_2 -keycode 115 = KP_5 - alt keycode 115 = Ascii_5 - altgr keycode 115 = Hex_5 -keycode 116 = KP_6 - alt keycode 116 = Ascii_6 - altgr keycode 116 = Hex_6 -keycode 117 = KP_8 - alt keycode 117 = Ascii_8 - altgr keycode 117 = Hex_8 -keycode 118 = Escape -keycode 119 = -keycode 120 = F11 -keycode 121 = KP_Add -keycode 122 = KP_3 - alt keycode 122 = Ascii_3 - altgr keycode 122 = Hex_3 -keycode 123 = KP_Subtract -keycode 124 = KP_Multiply -keycode 125 = KP_9 - alt keycode 125 = Ascii_9 - altgr keycode 125 = Hex_9 -keycode 126 = -# 131!! -keycode 127 = F7 F17 Console_19 - control keycode 127 = F7 - alt keycode 127 = Console_7 - control alt keycode 127 = Console_7 - -string F1 = "\033[[A" -string F2 = "\033[[B" -string F3 = "\033[[C" -string F4 = "\033[[D" -string F5 = "\033[[E" -string F6 = "\033[17~" -string F7 = "\033[18~" -string F8 = "\033[19~" -string F9 = "\033[20~" -string F10 = "\033[21~" -string F11 = "\033[23~" -string F12 = "\033[24~" -string F13 = "\033[25~" -string F14 = "\033[26~" -string F15 = "\033[28~" -string F16 = "\033[29~" -string F17 = "\033[31~" -string F18 = "\033[32~" -string F19 = "\033[33~" -string F20 = "\033[34~" -string Find = "\033[1~" -string Insert = "\033[2~" -string Remove = "\033[3~" -string Select = "\033[4~" -string Prior = "\033[5~" -string Next = "\033[6~" -string Macro = "\033[M" -string Pause = "\033[P" -compose '`' 'A' to 'À' -compose '`' 'a' to 'à' -compose '\'' 'A' to 'Á' -compose '\'' 'a' to 'á' -compose '^' 'A' to 'Â' -compose '^' 'a' to 'â' -compose '~' 'A' to 'Ã' -compose '~' 'a' to 'ã' -compose '"' 'A' to 'Ä' -compose '"' 'a' to 'ä' -compose 'O' 'A' to 'Å' -compose 'o' 'a' to 'å' -compose '0' 'A' to 'Å' -compose '0' 'a' to 'å' -compose 'A' 'A' to 'Å' -compose 'a' 'a' to 'å' -compose 'A' 'E' to 'Æ' -compose 'a' 'e' to 'æ' -compose ',' 'C' to 'Ç' -compose ',' 'c' to 'ç' -compose '`' 'E' to 'È' -compose '`' 'e' to 'è' -compose '\'' 'E' to 'É' -compose '\'' 'e' to 'é' -compose '^' 'E' to 'Ê' -compose '^' 'e' to 'ê' -compose '"' 'E' to 'Ë' -compose '"' 'e' to 'ë' -compose '`' 'I' to 'Ì' -compose '`' 'i' to 'ì' -compose '\'' 'I' to 'Í' -compose '\'' 'i' to 'í' -compose '^' 'I' to 'Î' -compose '^' 'i' to 'î' -compose '"' 'I' to 'Ï' -compose '"' 'i' to 'ï' -compose '-' 'D' to 'Ð' -compose '-' 'd' to 'ð' -compose '~' 'N' to 'Ñ' -compose '~' 'n' to 'ñ' -compose '`' 'O' to 'Ò' -compose '`' 'o' to 'ò' -compose '\'' 'O' to 'Ó' -compose '\'' 'o' to 'ó' -compose '^' 'O' to 'Ô' -compose '^' 'o' to 'ô' -compose '~' 'O' to 'Õ' -compose '~' 'o' to 'õ' -compose '"' 'O' to 'Ö' -compose '"' 'o' to 'ö' -compose '/' 'O' to 'Ø' -compose '/' 'o' to 'ø' -compose '`' 'U' to 'Ù' -compose '`' 'u' to 'ù' -compose '\'' 'U' to 'Ú' -compose '\'' 'u' to 'ú' -compose '^' 'U' to 'Û' -compose '^' 'u' to 'û' -compose '"' 'U' to 'Ü' -compose '"' 'u' to 'ü' -compose '\'' 'Y' to 'Ý' -compose '\'' 'y' to 'ý' -compose 'T' 'H' to 'Þ' -compose 't' 'h' to 'þ' -compose 's' 's' to 'ß' -compose '"' 'y' to 'ÿ' -compose 's' 'z' to 'ß' -compose 'i' 'j' to 'ÿ' diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/lba_pci.c linux/arch/parisc/kernel/lba_pci.c --- linux-2.4.20/arch/parisc/kernel/lba_pci.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/lba_pci.c Mon Nov 18 05:53:16 2002 @@ -735,47 +735,11 @@ bus->resource[0] = &(ldev->hba.io_space); bus->resource[1] = &(ldev->hba.lmmio_space); } else { - /* KLUGE ALERT! - ** PCI-PCI Bridge resource munging. - ** This hack should go away in the near future. - ** It's based on the Alpha port. - */ - int i; - u16 cmd; + pci_read_bridge_bases(bus); - for (i = 0; i < 4; i++) { - bus->resource[i] = - &bus->self->resource[PCI_BRIDGE_RESOURCES+i]; - bus->resource[i]->name = bus->name; - } -#if 0 - bus->resource[0]->flags |= pci_bridge_check_io(bus->self); -#else - bus->resource[0]->flags |= IORESOURCE_IO; -#endif - bus->resource[1]->flags |= IORESOURCE_MEM; - bus->resource[2]->flags = 0; /* Don't support prefetchable */ - bus->resource[3]->flags = 0; /* not used */ - - /* - ** If the PPB is enabled (ie already configured) then - ** just read those values. - */ - (void) lba_cfg_read16(bus->self, PCI_COMMAND, &cmd); - if (cmd & (PCI_COMMAND_MEMORY | PCI_COMMAND_IO)) { - pci_read_bridge_bases(bus); - } else { - /* Not configured. - ** For now, propogate HBA limits to the bus; - ** PCI will adjust them later. - */ - bus->resource[0]->end = ldev->hba.io_space.end; - bus->resource[1]->end = ldev->hba.lmmio_space.end; - } - - /* Turn off downstream PF memory address range by default */ - bus->resource[2]->start = 1024*1024; - bus->resource[2]->end = bus->resource[2]->start - 1; + /* Turn off downstream PreFetchable Memory range by default */ + bus->resource[2]->start = 0; + bus->resource[2]->end = 0; } diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/led.c linux/arch/parisc/kernel/led.c --- linux-2.4.20/arch/parisc/kernel/led.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/led.c Sun Sep 29 16:53:31 2002 @@ -352,7 +352,8 @@ static unsigned long led_net_rx_counter, led_net_tx_counter; static void led_get_net_stats(int addvalue) -{ +{ +#ifdef CONFIG_NET static unsigned long rx_total_last, tx_total_last; unsigned long rx_total, tx_total; struct net_device *dev; @@ -383,6 +384,7 @@ rx_total_last += rx_total; tx_total_last += tx_total; +#endif } diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/parisc_ksyms.c linux/arch/parisc/kernel/parisc_ksyms.c --- linux-2.4.20/arch/parisc/kernel/parisc_ksyms.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/parisc_ksyms.c Sun Jan 12 06:02:20 2003 @@ -150,6 +150,8 @@ #include EXPORT_SYMBOL(pdc_add_valid); +EXPORT_SYMBOL(pdc_tod_read); +EXPORT_SYMBOL(pdc_tod_set); EXPORT_SYMBOL(pdc_lan_station_id); EXPORT_SYMBOL(pdc_get_initiator); @@ -232,3 +234,11 @@ EXPORT_SYMBOL_NOVERS($$dyncall); #endif +#ifdef CONFIG_SMP +#ifdef CONFIG_DEBUG_SPINLOCK +#include +EXPORT_SYMBOL(spin_lock); +EXPORT_SYMBOL(spin_unlock); +EXPORT_SYMBOL(spin_trylock); +#endif +#endif diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/pci-dma.c linux/arch/parisc/kernel/pci-dma.c --- linux-2.4.20/arch/parisc/kernel/pci-dma.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/pci-dma.c Wed Dec 4 05:53:27 2002 @@ -428,9 +428,9 @@ BUG(); for (i = 0; i < nents; i++, sglist++ ) { - sg_dma_address(sglist) = (dma_addr_t) virt_to_phys(sglist->address); + sg_dma_address(sglist) = (dma_addr_t) virt_to_phys(sg_virt_addr(sglist)); sg_dma_len(sglist) = sglist->length; - flush_kernel_dcache_range((unsigned long)sglist->address, + flush_kernel_dcache_range((unsigned long)sg_virt_addr(sglist), sglist->length); } return nents; @@ -449,7 +449,7 @@ /* once we do combining we'll need to use phys_to_virt(sg_dma_address(sglist)) */ for (i = 0; i < nents; i++, sglist++ ) - flush_kernel_dcache_range((unsigned long) sglist->address, sglist->length); + flush_kernel_dcache_range((unsigned long) sg_virt_addr(sglist), sglist->length); return; } @@ -468,7 +468,7 @@ /* once we do combining we'll need to use phys_to_virt(sg_dma_address(sglist)) */ for (i = 0; i < nents; i++, sglist++ ) - flush_kernel_dcache_range((unsigned long) sglist->address, sglist->length); + flush_kernel_dcache_range((unsigned long) sg_virt_addr(sglist), sglist->length); } struct pci_dma_ops pcxl_dma_ops = { diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/pci.c linux/arch/parisc/kernel/pci.c --- linux-2.4.20/arch/parisc/kernel/pci.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/pci.c Mon Nov 18 05:53:16 2002 @@ -306,13 +306,13 @@ (32) for primary and secondary buses. */ pci_write_config_byte(dev, PCI_SEC_LATENCY_TIMER, 32); - /* Read bridge control */ + /* Read bridge control - force SERR/PERR on */ pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bus->bridge_ctl); + bus->bridge_ctl |= PCI_BRIDGE_CTL_PARITY | PCI_BRIDGE_CTL_SERR; + pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bus->bridge_ctl); } - /* Set FBB bit for now. Disable ISA IO forwarding. Enable PERR/SERR */ - bus->bridge_ctl |= PCI_BRIDGE_CTL_FAST_BACK | - PCI_BRIDGE_CTL_PARITY | PCI_BRIDGE_CTL_SERR; + bus->bridge_ctl |= PCI_BRIDGE_CTL_PARITY | PCI_BRIDGE_CTL_SERR; } @@ -390,7 +390,7 @@ */ void __devinit pcibios_align_resource(void *data, struct resource *res, - unsigned long size, unsigned long alignment) + unsigned long size, unsigned long alignment) { unsigned long mask, align; @@ -407,7 +407,7 @@ align = (res->flags & IORESOURCE_IO) ? PCIBIOS_MIN_IO : PCIBIOS_MIN_MEM; /* Align to largest of MIN or input size */ - mask = MAX(size, align) - 1; + mask = MAX(alignment, align) - 1; res->start += mask; res->start &= ~mask; @@ -420,7 +420,7 @@ int __devinit -pcibios_enable_device(struct pci_dev *dev) +pcibios_enable_device(struct pci_dev *dev, int mask) { u16 cmd; int idx; @@ -438,6 +438,11 @@ */ for (idx=0; idxresource[idx]; + + /* only setup requested resources */ + if (!(mask & (1<flags & IORESOURCE_IO) cmd |= PCI_COMMAND_IO; if (r->flags & IORESOURCE_MEM) @@ -454,9 +459,11 @@ */ cmd |= (PCI_COMMAND_SERR | PCI_COMMAND_PARITY); +#if 0 /* If bridge/bus controller has FBB enabled, child must too. */ if (dev->bus->bridge_ctl & PCI_BRIDGE_CTL_FAST_BACK) cmd |= PCI_COMMAND_FAST_BACK; +#endif DBGC("PCIBIOS: Enabling device %s cmd 0x%04x\n", dev->slot_name, cmd); pci_write_config_word(dev, PCI_COMMAND, cmd); @@ -478,6 +485,19 @@ #endif } +static void __devinit +pcibios_enable_ppb(struct pci_bus *bus) +{ + struct list_head *list; + + /* find a leaf of the PCI bus tree. */ + list_for_each(list, &bus->children) + pcibios_enable_ppb(pci_bus_b(list)); + + if (bus->self && (bus->self->class >> 8) == PCI_CLASS_BRIDGE_PCI) + pdev_enable_device(bus->self); +} + /* ** Mostly copied from drivers/pci/setup-bus.c:pci_assign_unassigned_resources() @@ -486,16 +506,13 @@ pcibios_assign_unassigned_resources(struct pci_bus *bus) { /* from drivers/pci/setup-bus.c */ - extern void pbus_assign_resources(struct pci_bus *bus, struct pbus_set_ranges_data *ranges); + extern void pbus_size_bridges(struct pci_bus *bus); + extern void pbus_assign_resources(struct pci_bus *bus); - struct pbus_set_ranges_data ranges; + pbus_size_bridges(bus); + pbus_assign_resources(bus); - ranges.io_end = ranges.io_start - = bus->resource[0]->start + PCIBIOS_MIN_IO; - ranges.mem_end = ranges.mem_start - = bus->resource[1]->start + PCIBIOS_MIN_MEM; - ranges.found_vga = 0; - pbus_assign_resources(bus, &ranges); + pcibios_enable_ppb(bus); } /* diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/pdc_chassis.c linux/arch/parisc/kernel/pdc_chassis.c --- linux-2.4.20/arch/parisc/kernel/pdc_chassis.c Wed Dec 31 17:00:00 1969 +++ linux/arch/parisc/kernel/pdc_chassis.c Thu Oct 3 10:50:35 2002 @@ -0,0 +1,205 @@ +/* + * arch/parisc/kernel/pdc_chassis.c + * + * Copyright (C) 2002 Laurent Canet + * Copyright (C) 2002 Thibaut Varene + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#undef PDC_CHASSIS_DEBUG +#ifdef PDC_CHASSIS_DEBUG +#define DPRINTK(fmt, args...) printk(fmt, ## args) +#else +#define DPRINTK(fmt, args...) +#endif + +#include +#include +#include +#include + +#include +#include + +static int pdc_chassis_old = 0; + + +/** + * pdc_chassis_checkold() - Checks for old PDC_CHASSIS compatibility + * @pdc_chassis_old: 1 if old pdc chassis style + * + * Currently, only E class and A180 are known to work with this. + * Inspired by Christoph Plattner + */ + +static void __init pdc_chassis_checkold(void) +{ + switch(CPU_HVERSION) { + case 0x480: /* E25 */ + case 0x481: /* E35 */ + case 0x482: /* E45 */ + case 0x483: /* E55 */ + case 0x516: /* A180 */ + pdc_chassis_old = 1; + break; + + default: + break; + } + DPRINTK(KERN_DEBUG "%s: pdc_chassis_checkold(); pdc_chassis_old = %d\n", __FILE__, pdc_chassis_old); +} + + +/** + * pdc_chassis_panic_event() - Called by the panic handler. + * + * As soon as a panic occurs, we should inform the PDC. + */ + +static int pdc_chassis_panic_event(struct notifier_block *this, + unsigned long event, void *ptr) +{ + pdc_chassis_send_status(PDC_CHASSIS_DIRECT_PANIC); + return NOTIFY_DONE; +} + + +static struct notifier_block pdc_chassis_panic_block = { + notifier_call: pdc_chassis_panic_event, + priority: INT_MAX, +}; + + +/** + * parisc_reboot_event() - Called by the reboot handler. + * + * As soon as a reboot occurs, we should inform the PDC. + */ + +static int pdc_chassis_reboot_event(struct notifier_block *this, + unsigned long event, void *ptr) +{ + pdc_chassis_send_status(PDC_CHASSIS_DIRECT_SHUTDOWN); + return NOTIFY_DONE; +} + + +static struct notifier_block pdc_chassis_reboot_block = { + notifier_call: pdc_chassis_reboot_event, + priority: INT_MAX, +}; + + +/** + * parisc_pdc_chassis_init() - Called at boot time. + */ + +void __init parisc_pdc_chassis_init(void) +{ + DPRINTK(KERN_DEBUG "%s: parisc_pdc_chassis_init()\n", __FILE__); + + /* initialize panic notifier chain */ + notifier_chain_register(&panic_notifier_list, &pdc_chassis_panic_block); + + /* initialize reboot notifier chain */ + register_reboot_notifier(&pdc_chassis_reboot_block); + + /* Check for old LED Panel */ + pdc_chassis_checkold(); +} + + +/** + * pdc_chassis_send_status() - Sends a predefined message to the chassis, + * and changes the front panel LEDs according to the new system state + * @retval: PDC call return value. + * + * Only machines with 64 bits PDC PAT and E-class are supported atm. + * + * returns 0 if no error, -1 if no supported PDC is present or invalid message, + * else returns the appropriate PDC error code. + * + * For a list of predefined messages, see asm-parisc/pdc_chassis.h + */ + +int pdc_chassis_send_status(int message) +{ + /* Maybe we should do that in an other way ? */ + int retval = 0; + + DPRINTK(KERN_DEBUG "%s: pdc_chassis_send_status(%d)\n", __FILE__, message); + +#ifdef __LP64__ /* pdc_pat_chassis_send_log is defined only when #ifdef __LP64__ */ + if (is_pdc_pat()) { + switch(message) { + case PDC_CHASSIS_DIRECT_BSTART: + retval = pdc_pat_chassis_send_log(PDC_CHASSIS_PMSG_BSTART, PDC_CHASSIS_LSTATE_RUN_NORMAL); + break; + + case PDC_CHASSIS_DIRECT_BCOMPLETE: + retval = pdc_pat_chassis_send_log(PDC_CHASSIS_PMSG_BCOMPLETE, PDC_CHASSIS_LSTATE_RUN_NORMAL); + break; + + case PDC_CHASSIS_DIRECT_SHUTDOWN: + retval = pdc_pat_chassis_send_log(PDC_CHASSIS_PMSG_SHUTDOWN, PDC_CHASSIS_LSTATE_NONOS); + break; + + case PDC_CHASSIS_DIRECT_PANIC: + retval = pdc_pat_chassis_send_log(PDC_CHASSIS_PMSG_PANIC, PDC_CHASSIS_LSTATE_RUN_CRASHREC); + break; + + case PDC_CHASSIS_DIRECT_LPMC: + retval = pdc_pat_chassis_send_log(PDC_CHASSIS_PMSG_LPMC, PDC_CHASSIS_LSTATE_RUN_SYSINT); + break; + + case PDC_CHASSIS_DIRECT_HPMC: + retval = pdc_pat_chassis_send_log(PDC_CHASSIS_PMSG_HPMC, PDC_CHASSIS_LSTATE_RUN_NCRIT); + break; + + default: + retval = -1; + } + } else retval = -1; +#else + if (pdc_chassis_old) { + switch (message) { + case PDC_CHASSIS_DIRECT_BSTART: + case PDC_CHASSIS_DIRECT_BCOMPLETE: + retval = pdc_chassis_disp(PDC_CHASSIS_DISP_DATA(OSTAT_RUN)); + break; + + case PDC_CHASSIS_DIRECT_SHUTDOWN: + retval = pdc_chassis_disp(PDC_CHASSIS_DISP_DATA(OSTAT_SHUT)); + break; + + case PDC_CHASSIS_DIRECT_HPMC: + case PDC_CHASSIS_DIRECT_PANIC: + retval = pdc_chassis_disp(PDC_CHASSIS_DISP_DATA(OSTAT_FLT)); + break; + + case PDC_CHASSIS_DIRECT_LPMC: + retval = pdc_chassis_disp(PDC_CHASSIS_DISP_DATA(OSTAT_WARN)); + break; + + default: + retval = -1; + } + } else retval = -1; +#endif + + return retval; +} diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/pdc_cons.c linux/arch/parisc/kernel/pdc_cons.c --- linux-2.4.20/arch/parisc/kernel/pdc_cons.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/pdc_cons.c Fri Nov 15 05:53:35 2002 @@ -51,33 +51,33 @@ return 0; } -#ifdef CONFIG_PDC_CONSOLE +#if defined(CONFIG_PDC_CONSOLE) || defined(CONFIG_SERIAL_MUX) +#define PDC_CONSOLE_DEVICE pdc_console_device static kdev_t pdc_console_device (struct console *c) { - return MKDEV(PDCCONS_MAJOR, 0); + return MKDEV(MUX_MAJOR, 0); } -#endif - -#ifdef CONFIG_PDC_CONSOLE -#define PDC_CONSOLE_DEVICE pdc_console_device -#else +#else #define PDC_CONSOLE_DEVICE NULL #endif static struct console pdc_cons = { name: "ttyB", write: pdc_console_write, - device: PDC_CONSOLE_DEVICE, +#warning UPSTREAM 2.4.19 removed the next 4 lines but we did not + read: NULL, + device: PDC_CONSOLE_DEVICE, + unblank: NULL, setup: pdc_console_setup, flags: CON_BOOT|CON_PRINTBUFFER|CON_ENABLED, index: -1, }; static int pdc_console_initialized; - extern unsigned long con_start; /* kernel/printk.c */ extern unsigned long log_end; /* kernel/printk.c */ - + + static void pdc_console_init_force(void) { if (pdc_console_initialized) @@ -94,7 +94,7 @@ void pdc_console_init(void) { -#if defined(EARLY_BOOTUP_DEBUG) || defined(CONFIG_PDC_CONSOLE) +#if defined(EARLY_BOOTUP_DEBUG) || defined(CONFIG_PDC_CONSOLE) || defined(CONFIG_SERIAL_MUX) pdc_console_init_force(); #endif #ifdef EARLY_BOOTUP_DEBUG diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/perf.c linux/arch/parisc/kernel/perf.c --- linux-2.4.20/arch/parisc/kernel/perf.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/perf.c Tue Jan 7 06:01:36 2003 @@ -499,6 +499,8 @@ */ static int __init perf_init(void) { + int ret; + /* Determine correct processor interface to use */ bitmask_array = perf_bitmasks; @@ -517,11 +519,17 @@ return -ENODEV; } + ret = misc_register(&perf_dev); + if (ret) { + printk(KERN_ERR "Performance monitoring counters: " + "cannot register misc device.\n"); + return ret; + } + /* Patch the images to match the system */ perf_patch_images(); spin_lock_init(&perf_lock); - misc_register(&perf_dev); /* TODO: this only lets us access the first cpu.. what to do for SMP? */ cpu_device = cpu_data[0].dev; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/power.c linux/arch/parisc/kernel/power.c --- linux-2.4.20/arch/parisc/kernel/power.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/power.c Wed Nov 13 05:53:36 2002 @@ -44,15 +44,12 @@ #include #include #include -#include -#include #include #include #include #include #include -#include #include @@ -144,11 +141,7 @@ DECLARE_TASKLET_DISABLED(power_tasklet, NULL, 0); /* soft power switch enabled/disabled */ -#ifdef CONFIG_PROC_FS -static int pwrsw_enabled = 1; -#else -#define pwrsw_enabled (1) -#endif +int pwrsw_enabled = 1; /* * On gecko style machines (e.g. 712/xx and 715/xx) @@ -209,90 +202,6 @@ -/* - * /proc filesystem support - */ - -#ifdef CONFIG_SYSCTL -static int power_proc_read(char *page, char **start, off_t off, int count, - int *eof, void *data) -{ - char *out = page; - int len; - - out += sprintf(out, "Software power switch support: "); - out += sprintf(out, pwrsw_enabled ? "enabled (1)" : "disabled (0)" ); - out += sprintf(out, "\n"); - - len = out - page - off; - if (len < count) { - *eof = 1; - if (len <= 0) return 0; - } else { - len = count; - } - *start = page + off; - return len; -} - -static int power_proc_write(struct file *file, const char *buf, - unsigned long count, void *data) -{ - char *cur, lbuf[count]; - - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; - - memset(lbuf, 0, count); - - copy_from_user(lbuf, buf, count); - cur = lbuf; - - /* skip initial spaces */ - while (*cur && isspace(*cur)) - cur++; - - switch (*cur) { - case '0': pwrsw_enabled = 0; - break; - case '1': pwrsw_enabled = 1; - break; - default: printk(KERN_CRIT "/proc/" SYSCTL_FILENAME - ": Parse error: only '0' or '1' allowed!\n"); - return -EINVAL; - } /* switch() */ - - return count; -} - -static struct proc_dir_entry *ent; - -static void __init power_create_procfs(void) -{ - if (!power_tasklet.func) - return; - - ent = create_proc_entry(SYSCTL_FILENAME, S_IFREG|S_IRUGO|S_IWUSR, 0); - if (!ent) return; - - ent->nlink = 1; - ent->read_proc = power_proc_read; - ent->write_proc = power_proc_write; - ent->owner = THIS_MODULE; -} - -static void __exit power_remove_procfs(void) -{ - remove_proc_entry(SYSCTL_FILENAME, NULL); -} - -#else -#define power_create_procfs() do { } while (0) -#define power_remove_procfs() do { } while (0) -#endif /* CONFIG_SYSCTL */ - - - /* parisc_panic_event() is called by the panic handler. * As soon as a panic occurs, our tasklets above will not be * executed any longer. This function then re-enables the @@ -346,7 +255,6 @@ /* Register a call for panic conditions. */ notifier_chain_register(&panic_notifier_list, &parisc_panic_block); - power_create_procfs(); tasklet_enable(&power_tasklet); return 0; @@ -359,7 +267,6 @@ tasklet_disable(&power_tasklet); notifier_chain_unregister(&panic_notifier_list, &parisc_panic_block); - power_remove_procfs(); power_tasklet.func = NULL; pdc_soft_power_button(0); } diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/process.c linux/arch/parisc/kernel/process.c --- linux-2.4.20/arch/parisc/kernel/process.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/process.c Thu Oct 3 16:53:31 2002 @@ -36,6 +36,7 @@ #include #include #include +#include int hlt_counter; @@ -118,6 +119,9 @@ /* "Normal" system reset */ pdc_do_reset(); + /* set up a new led state on systems shipped with a LED State panel */ + pdc_chassis_send_status(PDC_CHASSIS_DIRECT_SHUTDOWN); + /* Nope...box should reset with just CMD_RESET now */ gsc_writel(CMD_RESET, COMMAND_GLOBAL); @@ -150,6 +154,8 @@ * following call will immediately power off. */ pdc_soft_power_button(0); + pdc_chassis_send_status(PDC_CHASSIS_DIRECT_SHUTDOWN); + /* It seems we have no way to power the system off via * software. The user has to press the button himself. */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/processor.c linux/arch/parisc/kernel/processor.c --- linux-2.4.20/arch/parisc/kernel/processor.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/processor.c Mon Feb 10 02:17:51 2003 @@ -1,4 +1,4 @@ -/* $Id: processor.c,v 1.13 2002/07/04 19:33:01 grundler Exp $ +/* $Id: processor.c,v 1.14 2002/09/13 06:46:28 grundler Exp $ * * Initial setup-routines for HP 9000 based hardware. * @@ -167,12 +167,24 @@ ** p->state = STATE_RENDEZVOUS; */ - /* - ** itimer and ipi IRQ handlers are statically initialized in - ** arch/parisc/kernel/irq.c. ie Don't need to register them. - */ - p->region = irq_region[IRQ_FROM_REGION(CPU_IRQ_REGION)]; +#if 0 + /* CPU 0 IRQ table is statically allocated/initialized */ + if (cpuid) { + struct irqaction actions[]; + + /* + ** itimer and ipi IRQ handlers are statically initialized in + ** arch/parisc/kernel/irq.c. ie Don't need to register them. + */ + actions = kmalloc(sizeof(struct irqaction)*MAX_CPU_IRQ, GFP_ATOMIC); + if (!actions) { + /* not getting it's own table, share with monarch */ + actions = cpu_irq_actions[0]; + } + cpu_irq_actions[cpuid] = actions; + } +#endif return 0; } diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/sba_iommu.c linux/arch/parisc/kernel/sba_iommu.c --- linux-2.4.20/arch/parisc/kernel/sba_iommu.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/sba_iommu.c Tue Dec 3 05:54:17 2002 @@ -812,10 +812,8 @@ return(0); } - dev->dma_mask = mask; /* save it */ - /* only support 32-bit PCI devices - no DAC support (yet) */ - return((int) (mask == 0xffffffff)); + return((int) (mask == 0xffffffffUL)); } @@ -1058,7 +1056,7 @@ printk(KERN_DEBUG " %2d : %08lx/%05x %p/%05x\n", nents, (unsigned long) sg_dma_address(startsg), cnt, - sg_virt_address(startsg), startsg->length + sg_virt_addr(startsg), startsg->length ); #else DBG_RUN_SG(" %d : %08lx/%05x %p/%05x\n", diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/setup.c linux/arch/parisc/kernel/setup.c --- linux-2.4.20/arch/parisc/kernel/setup.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/setup.c Thu Oct 3 16:53:31 2002 @@ -41,6 +41,7 @@ #include #include #include +#include #include /* for pa7300lc_init() proto */ #define COMMAND_LINE_SIZE 1024 @@ -283,6 +284,11 @@ parisc_init_resources(); do_device_inventory(); /* probe for hardware */ + parisc_pdc_chassis_init(); + + /* set up a new led state on systems shipped LED State panel */ + pdc_chassis_send_status(PDC_CHASSIS_DIRECT_BSTART); + processor_init(); printk(KERN_INFO "CPU(s): %d x %s at %d.%06d MHz\n", boot_cpu_data.cpu_count, diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/smp.c linux/arch/parisc/kernel/smp.c --- linux-2.4.20/arch/parisc/kernel/smp.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/smp.c Mon Feb 10 02:17:51 2003 @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -434,25 +435,21 @@ extern void init_IRQ(void); /* arch/parisc/kernel/irq.c */ /* Set modes and Enable floating point coprocessor */ - (void) init_per_cpu(cpunum); + init_per_cpu(cpunum); disable_sr_hashing(); - mb(); /* Well, support 2.4 linux scheme as well. */ - if (test_and_set_bit(cpunum, (unsigned long *) (&cpu_online_map))) - { - extern void machine_halt(void); /* arch/parisc.../process.c */ - + if (test_and_set_bit(cpunum, (unsigned long *) (&cpu_online_map))) { printk(KERN_CRIT "CPU#%d already initialized!\n", cpunum); machine_halt(); - } + } /* Initialise the idle task for this CPU */ atomic_inc(&init_mm.mm_count); current->active_mm = &init_mm; - if(current->mm) + if (current->mm) BUG(); enter_lazy_tlb(&init_mm, current, cpunum); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/sys_parisc32.c linux/arch/parisc/kernel/sys_parisc32.c --- linux-2.4.20/arch/parisc/kernel/sys_parisc32.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/sys_parisc32.c Wed Nov 13 05:53:36 2002 @@ -2759,20 +2759,9 @@ asmlinkage long sys32_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg) { - switch (cmd) { - case F_GETLK64: - cmd = F_GETLK; - break; - case F_SETLK64: - cmd = F_SETLK; - break; - case F_SETLKW64: - cmd = F_SETLKW; - break; - default: - break; - } - return sys_fcntl(fd, cmd, arg); + if (cmd >= F_GETLK64 && cmd <= F_SETLKW64) + return sys_fcntl(fd, cmd + F_GETLK - F_GETLK64, arg); + return sys32_fcntl(fd, cmd, arg); } asmlinkage int sys32_pread(int fd, void *buf, size_t count, unsigned int high, unsigned int low) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/syscall.S linux/arch/parisc/kernel/syscall.S --- linux-2.4.20/arch/parisc/kernel/syscall.S Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/syscall.S Sun Aug 4 18:11:37 2002 @@ -593,11 +593,18 @@ ENTRY_DIFF(ftruncate64) /* 200 */ ENTRY_SAME(getdents64) ENTRY_DIFF(fcntl64) - ENTRY_SAME(ni_syscall) /* attrctl */ - ENTRY_SAME(ni_syscall) /* acl_get */ - ENTRY_SAME(ni_syscall) /* acl_set */ - ENTRY_SAME(gettid) +#ifdef CONFIG_XFS_FS + ENTRY_SAME(attrctl) + ENTRY_SAME(acl_get) + ENTRY_SAME(acl_set) /* 205 */ +#else + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) /* 205 */ +#endif + ENTRY_SAME(gettid) ENTRY_SAME(readahead) + ENTRY_SAME(tkill) .end diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/traps.c linux/arch/parisc/kernel/traps.c --- linux-2.4.20/arch/parisc/kernel/traps.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/traps.c Wed Dec 18 05:53:54 2002 @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -34,17 +35,10 @@ #include #include #include +#include #include "../math-emu/math-emu.h" /* for handle_fpe() */ -#ifdef CONFIG_KWDB -#include /* for BI2_KGDB_GDB */ -#include /* for __() */ -#include /* for struct save_state */ -#include /* for pt_regs_to_ssp and ssp_to_pt_regs */ -#include /* for I_BRK_INST */ -#endif /* CONFIG_KWDB */ - #define PRINT_USER_FAULTS /* (turn this on if you want user faults to be */ /* dumped to the console via printk) */ @@ -66,6 +60,99 @@ #define RFMT "%08lx" #endif +static int kstack_depth_to_print = 24; +extern struct module *module_list; +extern struct module kernel_module; + +static inline int kernel_text_address(unsigned long addr) +{ +#ifdef CONFIG_MODULES + int retval = 0; + struct module *mod; +#endif + extern char _stext, _etext; + + if (addr >= (unsigned long) &_stext && + addr <= (unsigned long) &_etext) + return 1; + +#ifdef CONFIG_MODULES + for (mod = module_list; mod != &kernel_module; mod = mod->next) { + /* mod_bound tests for addr being inside the vmalloc'ed + * module area. Of course it'd be better to test only + * for the .text subset... */ + if (mod_bound(addr, 0, mod)) { + retval = 1; + break; + } + } + return retval; +#endif +} + + +void show_trace(unsigned long * stack) +{ + unsigned long *startstack; + unsigned long addr; + int i; + + startstack = (unsigned long *)((unsigned long)stack & ~(THREAD_SIZE - 1)); + i = 1; + printk("Kernel addresses on the stack:\n"); + while (stack >= startstack) { + addr = *stack--; + if (kernel_text_address(addr)) { + printk(" [<" RFMT ">] ", addr); + if ((i & 0x03) == 0) + printk("\n"); + i++; + } + } + printk("\n"); +} + +void show_trace_task(struct task_struct *tsk) +{ + show_trace((unsigned long *)tsk->thread.regs.ksp); +} + +void show_stack(unsigned long * sp) +{ + unsigned long *stack; + int i; + + /* + * debugging aid: "show_stack(NULL);" prints the + * back trace for this cpu. + */ + if (sp==NULL) + sp = (unsigned long*)&sp; + + stack = sp; + printk("\n" KERN_CRIT "Stack Dump:\n"); + printk(KERN_CRIT " " RFMT ": ", (unsigned long) stack); + for (i=0; i < kstack_depth_to_print; i++) { + if (((long) stack & (THREAD_SIZE-1)) == 0) + break; + if (i && ((i & 0x03) == 0)) + printk("\n" KERN_CRIT " " RFMT ": ", + (unsigned long) stack); + printk(RFMT " ", *stack--); + } + printk("\n" KERN_CRIT "\n"); + show_trace(sp); +} + +/* + * The architecture-independent backtrace generator + */ +void dump_stack(void) +{ + show_stack(0); +} + + void show_regs(struct pt_regs *regs) { int i; @@ -121,84 +208,6 @@ } -static void dump_stack(unsigned long from, unsigned long to, int istackflag) -{ - unsigned int *fromptr; - unsigned int *toptr; - - fromptr = (unsigned int *)from; - toptr = (unsigned int *)to; - - printk("\n"); - printk(KERN_CRIT "Dumping %sStack from 0x%p to 0x%p:\n", - istackflag ? "Interrupt " : "", - fromptr, toptr); - - while (fromptr < toptr) { - printk(KERN_CRIT "%04lx %08x %08x %08x %08x %08x %08x %08x %08x\n", - ((unsigned long)fromptr) & 0xffff, - fromptr[0], fromptr[1], fromptr[2], fromptr[3], - fromptr[4], fromptr[5], fromptr[6], fromptr[7]); - fromptr += 8; - } -} - - -void show_stack(struct pt_regs *regs) -{ -#if 1 - /* If regs->sr[7] == 0, we are on a kernel stack */ - if (regs->sr[7] == 0) { - - unsigned long sp = regs->gr[30]; - unsigned long cr30; - unsigned long cr31; - unsigned long stack_start; - struct pt_regs *int_regs; - - cr30 = mfctl(30); - cr31 = mfctl(31); - stack_start = sp & ~(ISTACK_SIZE - 1); - if (stack_start == cr31) { - /* - * We are on the interrupt stack, get the stack - * pointer from the first pt_regs structure on - * the interrupt stack, so we can dump the task - * stack first. - */ - - int_regs = (struct pt_regs *)cr31; - sp = int_regs->gr[30]; - stack_start = sp & ~(INIT_TASK_SIZE - 1); - if (stack_start != cr30) { - printk(KERN_CRIT "WARNING! Interrupt-Stack pointer and cr30 do not correspond!\n"); - printk(KERN_CRIT "Dumping virtual address stack instead\n"); - dump_stack((unsigned long)__va(stack_start), (unsigned long)__va(sp), 0); - } else { - dump_stack(stack_start, sp, 0); - }; - - printk("\n\n" KERN_DEBUG "Registers at Interrupt:\n"); - show_regs(int_regs); - - /* Now dump the interrupt stack */ - - sp = regs->gr[30]; - stack_start = sp & ~(ISTACK_SIZE - 1); - dump_stack(stack_start,sp,1); - } - else - { - /* Stack Dump! */ - printk(KERN_CRIT "WARNING! Stack pointer and cr30 do not correspond!\n"); - printk(KERN_CRIT "Dumping virtual address stack instead\n"); - dump_stack((unsigned long)__va(stack_start), (unsigned long)__va(sp), 0); - } - } -#endif -} - - void die_if_kernel(char *str, struct pt_regs *regs, long err) { if (user_mode(regs)) { @@ -260,9 +269,6 @@ void handle_break(unsigned iir, struct pt_regs *regs) { struct siginfo si; -#ifdef CONFIG_KWDB - struct save_state ssp; -#endif /* CONFIG_KWDB */ switch(iir) { case 0x00: @@ -285,26 +291,6 @@ handle_gdb_break(regs, TRAP_BRKPT); break; -#ifdef CONFIG_KWDB - case KGDB_BREAK_INSN: - mtctl(0, 15); - pt_regs_to_ssp(regs, &ssp); - kgdb_trap(I_BRK_INST, &ssp, 1); - ssp_to_pt_regs(&ssp, regs); - break; - - case KGDB_INIT_BREAK_INSN: - mtctl(0, 15); - pt_regs_to_ssp(regs, &ssp); - kgdb_trap(I_BRK_INST, &ssp, 1); - ssp_to_pt_regs(&ssp, regs); - - /* Advance pcoq to skip break */ - regs->iaoq[0] = regs->iaoq[1]; - regs->iaoq[1] += 4; - break; -#endif /* CONFIG_KWDB */ - default: #ifdef PRINT_USER_FAULTS printk(KERN_DEBUG "break %#08x: pid=%d command='%s'\n", @@ -335,20 +321,6 @@ void (*cpu_lpmc) (int code, struct pt_regs *regs) = default_trap; -#ifdef CONFIG_KWDB -int debug_call (void) -{ - printk (KERN_DEBUG "Debug call.\n"); - return 0; -} - -int debug_call_leaf (void) -{ - return 0; -} -#endif /* CONFIG_KWDB */ - - void transfer_pim_to_trap_frame(struct pt_regs *regs) { register int i; @@ -425,7 +397,7 @@ /* - * This routine handles page faults. It determines the address, + * This routine handles various exception codes. It determines the address, * and the problem, and then passes it off to one of the appropriate * routines. */ @@ -444,10 +416,20 @@ if (!console_drivers) pdc_console_restart(); - if (code == 1) - transfer_pim_to_trap_frame(regs); - show_stack(regs); + /* Not all switch paths will gutter the processor... */ + switch(code){ + + case 1: + transfer_pim_to_trap_frame(regs); + break; + + default: + /* Fall through */ + break; + } + + show_stack((unsigned long *)regs->gr[30]); printk("\n"); printk(KERN_CRIT "%s: Code=%d regs=%p (Addr=" RFMT ")\n", @@ -461,32 +443,27 @@ * system will shut down immediately right here. */ pdc_soft_power_button(0); + /* Gutter the processor... */ for(;;) ; } + void handle_interruption(int code, struct pt_regs *regs) { unsigned long fault_address = 0; unsigned long fault_space = 0; struct siginfo si; -#ifdef CONFIG_KWDB - struct save_state ssp; -#endif /* CONFIG_KWDB */ - - if (code == 1) - pdc_console_restart(); /* switch back to pdc if HPMC */ - else - sti(); - -#if 0 - printk(KERN_CRIT "Interruption # %d\n", code); -#endif switch(code) { case 1: /* High-priority machine check (HPMC) */ + pdc_console_restart(); /* switch back to pdc if HPMC */ + + /* set up a new led state on systems shipped with a LED State panel */ + pdc_chassis_send_status(PDC_CHASSIS_DIRECT_HPMC); + parisc_terminate("High Priority Machine Check (HPMC)", regs, code, 0); /* NOT REACHED */ @@ -506,6 +483,9 @@ case 5: /* Low-priority machine check */ + + pdc_chassis_send_status(PDC_CHASSIS_DIRECT_LPMC); + flush_all_caches(); cpu_lpmc(5, regs); return; @@ -554,6 +534,7 @@ die_if_kernel("Privileged register usage", regs, code); si.si_code = ILL_PRVREG; + /* Fall thru */ give_sigill: si.si_signo = SIGILL; si.si_errno = 0; @@ -561,17 +542,47 @@ force_sig_info(SIGILL, &si, current); return; + case 12: + /* Overflow Trap, let the userland signal handler do the cleanup */ + si.si_signo = SIGFPE; + si.si_code = FPE_INTOVF; + si.si_addr = (void *) regs->iaoq[0]; + force_sig_info(SIGFPE, &si, current); + return; + + case 13: + /* Conditional Trap + The condition succees in an instruction which traps on condition */ + si.si_signo = SIGFPE; + /* Set to zero, and let the userspace app figure it out from + the insn pointed to by si_addr */ + si.si_code = 0; + si.si_addr = (void *) regs->iaoq[0]; + force_sig_info(SIGFPE, &si, current); + return; + case 14: /* Assist Exception Trap, i.e. floating point exception. */ die_if_kernel("Floating point exception", regs, 0); /* quiet */ handle_fpe(regs); return; + case 15: + /* Data TLB miss fault/Data page fault */ + /* Fall thru */ + case 16: + /* Non-access instruction TLB miss fault */ + /* The instruction TLB entry needed for the target address of the FIC + is absent, and hardware can't find it, so we get to cleanup */ + /* Fall thru */ case 17: /* Non-access data TLB miss fault/Non-access data page fault */ /* TODO: Still need to add slow path emulation code here */ + /* TODO: Understand what is meant by the TODO listed + above this one. (Carlos) */ fault_address = regs->ior; - parisc_terminate("Non access data tlb fault!",regs,code,fault_address); + fault_space = regs->isr; + break; case 18: /* PCXS only -- later cpu's split this into types 26,27 & 28 */ @@ -581,9 +592,8 @@ return; } /* Fall Through */ - - case 15: /* Data TLB miss fault/Data page fault */ - case 26: /* PCXL: Data memory access rights trap */ + case 26: + /* PCXL: Data memory access rights trap */ fault_address = regs->ior; fault_space = regs->isr; break; @@ -599,7 +609,6 @@ case 25: /* Taken branch trap */ -#ifndef CONFIG_KWDB regs->gr[0] &= ~PSW_T; if (regs->iasq[0]) handle_gdb_break(regs, TRAP_BRANCH); @@ -607,14 +616,6 @@ * run. */ return; -#else - /* Kernel debugger: */ - mtctl(0, 15); - pt_regs_to_ssp(regs, &ssp); - kgdb_trap(I_TAKEN_BR, &ssp, 1); - ssp_to_pt_regs(&ssp, regs); - break; -#endif /* CONFIG_KWDB */ case 7: /* Instruction access rights */ @@ -648,7 +649,6 @@ up_read(¤t->mm->mmap_sem); } /* Fall Through */ - case 27: /* Data memory protection ID trap */ die_if_kernel("Protection id trap", regs, code); @@ -682,6 +682,9 @@ force_sig_info(SIGBUS, &si, current); return; } + + pdc_chassis_send_status(PDC_CHASSIS_DIRECT_PANIC); + parisc_terminate("Unexpected interruption", regs, code, 0); /* NOT REACHED */ } @@ -710,21 +713,15 @@ * The kernel should never fault on its own address space. */ - if (fault_space == 0) - parisc_terminate("Kernel Fault", regs, code, fault_address); + if (fault_space == 0) { + pdc_chassis_send_status(PDC_CHASSIS_DIRECT_PANIC); + parisc_terminate("Kernel Fault", regs, code, fault_address); + /** NOT REACHED **/ + } } -#ifdef CONFIG_KWDB - debug_call_leaf (); -#endif /* CONFIG_KWDB */ - + local_irq_enable(); do_page_fault(regs, code, fault_address); -} - - -void show_trace_task(struct task_struct *tsk) -{ - BUG(); } diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/kernel/unaligned.c linux/arch/parisc/kernel/unaligned.c --- linux-2.4.20/arch/parisc/kernel/unaligned.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/kernel/unaligned.c Mon Jan 27 02:13:18 2003 @@ -1,8 +1,9 @@ -/* $Id: unaligned.c,v 1.9 2001/10/04 03:31:08 tausq Exp $ +/* $Id: unaligned.c,v 1.10 2002/09/22 02:21:05 tausq Exp $ * * Unaligned memory access handler * * Copyright (C) 2001 Randolph Chung + * Significantly tweaked by LaMont Jones * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -66,28 +67,28 @@ #define OPCODE3_MASK OPCODE3(0x3f,1) #define OPCODE4_MASK OPCODE4(0x3f) -/* skip LDB (index) */ +/* skip LDB - never unaligned (index) */ #define OPCODE_LDH_I OPCODE1(0x03,0,0x1) #define OPCODE_LDW_I OPCODE1(0x03,0,0x2) #define OPCODE_LDD_I OPCODE1(0x03,0,0x3) #define OPCODE_LDDA_I OPCODE1(0x03,0,0x4) -/* skip LDCD (index) */ +#define OPCODE_LDCD_I OPCODE1(0x03,0,0x5) #define OPCODE_LDWA_I OPCODE1(0x03,0,0x6) -/* skip LDCW (index) */ -/* skip LDB (short) */ +#define OPCODE_LDCW_I OPCODE1(0x03,0,0x7) +/* skip LDB - never unaligned (short) */ #define OPCODE_LDH_S OPCODE1(0x03,1,0x1) #define OPCODE_LDW_S OPCODE1(0x03,1,0x2) #define OPCODE_LDD_S OPCODE1(0x03,1,0x3) #define OPCODE_LDDA_S OPCODE1(0x03,1,0x4) -/* skip LDCD (short) */ +#define OPCODE_LDCD_S OPCODE1(0x03,1,0x5) #define OPCODE_LDWA_S OPCODE1(0x03,1,0x6) -/* skip LDCW (short) */ -/* skip STB */ +#define OPCODE_LDCW_S OPCODE1(0x03,1,0x7) +/* skip STB - never unaligned */ #define OPCODE_STH OPCODE1(0x03,1,0x9) #define OPCODE_STW OPCODE1(0x03,1,0xa) #define OPCODE_STD OPCODE1(0x03,1,0xb) -/* skip STBY */ -/* skip STDBY */ +/* skip STBY - never unaligned */ +/* skip STDBY - never unaligned */ #define OPCODE_STWA OPCODE1(0x03,1,0xe) #define OPCODE_STDA OPCODE1(0x03,1,0xf) @@ -103,129 +104,200 @@ #define OPCODE_LDH_L OPCODE4(0x11) #define OPCODE_LDW_L OPCODE4(0x12) -#define OPCODE_LDW_L2 OPCODE4(0x13) +#define OPCODE_LDWM OPCODE4(0x13) #define OPCODE_STH_L OPCODE4(0x19) #define OPCODE_STW_L OPCODE4(0x1A) -#define OPCODE_STW_L2 OPCODE4(0x1B) +#define OPCODE_STWM OPCODE4(0x1B) +#define MAJOR_OP(i) (((i)>>26)&0x3f) +#define R1(i) (((i)>>21)&0x1f) +#define R2(i) (((i)>>16)&0x1f) +#define R3(i) ((i)&0x1f) +#define IM(i,n) (((i)>>1&((1<<(n-1))-1))|((i)&1?((0-1L)<<(n-1)):0)) +#define IM5_2(i) IM((i)>>16,5) +#define IM5_3(i) IM((i),5) +#define IM14(i) IM((i),14) +int unaligned_enabled = 1; void die_if_kernel (char *str, struct pt_regs *regs, long err); -static int emulate_load(struct pt_regs *regs, int len, int toreg) +static int emulate_ldh(struct pt_regs *regs, int toreg) { unsigned long saddr = regs->ior; unsigned long val = 0; - int ret = 0; - if (regs->isr != regs->sr[7]) - { - printk(KERN_CRIT "isr verification failed (isr: " RFMT ", sr7: " RFMT "\n", - regs->isr, regs->sr[7]); - return 1; - } + DPRINTF("load " RFMT ":" RFMT " to r%d for 2 bytes\n", + regs->isr, regs->ior, toreg); + + __asm__ __volatile__ ( +" mtsp %3, %%sr1\n" +" ldbs 0(%%sr1,%2), %%r20\n" +" ldbs 1(%%sr1,%2), %0\n" + "depw %%r20, 23, 24, %0\n" + : "=r" (val) + : "0" (val), "r" (saddr), "r" (regs->isr) + : "r20" ); + + DPRINTF("val = 0x" RFMT "\n", val); + + if (toreg) + regs->gr[toreg] = val; + + return 0; +} +static int emulate_ldw(struct pt_regs *regs, int toreg) +{ + unsigned long saddr = regs->ior; + unsigned long val = 0; - DPRINTF("load " RFMT ":" RFMT " to r%d for %d bytes\n", - regs->isr, regs->ior, toreg, len); + DPRINTF("load " RFMT ":" RFMT " to r%d for 4 bytes\n", + regs->isr, regs->ior, toreg); __asm__ __volatile__ ( -" mfsp %%sr1, %%r20\n" -" mtsp %6, %%sr1\n" -" copy %%r0, %0\n" -"0: ldbs,ma 1(%%sr1,%4), %%r19\n" -" addi -1, %5, %5\n" -" cmpib,>= 0, %5, 2f\n" -" or %%r19, %0, %0\n" -" b 0b\n" - -#ifdef __LP64__ - "depd,z %0, 55, 56, %0\n" -#else - "depw,z %0, 23, 24, %0\n" -#endif - -"1: ldi 10, %1\n" -"2: mtsp %%r20, %%sr1\n" -" .section __ex_table,\"a\"\n" +" zdep %2,28,2,%%r19\n" /* r19=(ofs&3)*8 */ +" mtsp %3, %%sr1\n" +" depw %%r0,31,2,%2\n" +" ldw 0(%%sr1,%2),%0\n" +" ldw 4(%%sr1,%2),%%r20\n" +" subi 32,%%r19,%%r19\n" +" mtctl %%r19,11\n" +" vshd %0,%%r20,%0\n" + : "=r" (val) + : "0" (val), "r" (saddr), "r" (regs->isr) + : "r19", "r20" ); + + DPRINTF("val = 0x" RFMT "\n", val); + + if (toreg) + regs->gr[toreg] = val; + + return 0; +} #ifdef __LP64__ - ".dword 0b, (1b-0b)\n" -#else - ".word 0b, (1b-0b)\n" -#endif - ".previous\n" - : "=r" (val), "=r" (ret) - : "0" (val), "1" (ret), "r" (saddr), "r" (len), "r" (regs->isr) +static int emulate_ldd(struct pt_regs *regs, int toreg) +{ + unsigned long saddr = regs->ior; + unsigned long val = 0; + + DPRINTF("load " RFMT ":" RFMT " to r%d for 8 bytes\n", + regs->isr, regs->ior, toreg); + + __asm__ __volatile__ ( +" depd,z %2,60,3,%%r19\n" /* r19=(ofs&7)*8 */ +" mtsp %3, %%sr1\n" +" depd %%r0,63,3,%2\n" +" ldd 0(%%sr1,%2),%0\n" +" ldd 8(%%sr1,%2),%%r20\n" +" subi 64,%%r19,%%r19\n" +" mtsar %%r19\n" +" shrpd %0,%%r20,%%sar,%0\n" + : "=r" (val) + : "0" (val), "r" (saddr), "r" (regs->isr) : "r19", "r20" ); DPRINTF("val = 0x" RFMT "\n", val); - regs->gr[toreg] = val; + if (toreg) + regs->gr[toreg] = val; - return ret; + return 0; } +#endif -static int emulate_store(struct pt_regs *regs, int len, int frreg) +static int emulate_sth(struct pt_regs *regs, int frreg) { - int ret = 0; -#ifdef __LP64__ - unsigned long val = regs->gr[frreg] << (64 - (len << 3)); -#else - unsigned long val = regs->gr[frreg] << (32 - (len << 3)); -#endif + unsigned long val = regs->gr[frreg]; + if (!frreg) + val = 0; - if (regs->isr != regs->sr[7]) - { - printk(KERN_CRIT "isr verification failed (isr: " RFMT ", sr7: " RFMT "\n", - regs->isr, regs->sr[7]); - return 1; - } + DPRINTF("store r%d (0x" RFMT ") to " RFMT ":" RFMT " for 2 bytes\n", frreg, + regs->gr[frreg], regs->isr, regs->ior); + + __asm__ __volatile__ ( +" mtsp %2, %%sr1\n" +" extrw,u %0, 23, 8, %%r19\n" +" stb %0, 1(%%sr1, %1)\n" +" stb %%r19, 0(%%sr1, %1)\n" + : + : "r" (val), "r" (regs->ior), "r" (regs->isr) + : "r19" ); + + return 0; +} +static int emulate_stw(struct pt_regs *regs, int frreg) +{ + unsigned long val = regs->gr[frreg]; + if (!frreg) + val = 0; - DPRINTF("store r%d (0x" RFMT ") to " RFMT ":" RFMT " for %d bytes\n", frreg, - regs->gr[frreg], regs->isr, regs->ior, len); + DPRINTF("store r%d (0x" RFMT ") to " RFMT ":" RFMT " for 4 bytes\n", frreg, + regs->gr[frreg], regs->isr, regs->ior); __asm__ __volatile__ ( -" mfsp %%sr1, %%r20\n" /* save sr1 */ -" mtsp %5, %%sr1\n" -#ifdef __LP64__ -"0: extrd,u %2, 7, 8, %%r19\n" -#else -"0: extrw,u %2, 7, 8, %%r19\n" -#endif -"1: stb,ma %%r19, 1(%%sr1, %3)\n" -" addi -1, %4, %4\n" -" cmpib,>= 0, %4, 3f\n" - +" mtsp %2, %%sr1\n" +" zdep %1, 28, 2, %%r19\n" +" dep %%r0, 31, 2, %1\n" +" mtsar %%r19\n" +" depwi,z -2, %%sar, 32, %%r19\n" +" ldw 0(%%sr1,%1),%%r20\n" +" ldw 4(%%sr1,%1),%%r21\n" +" vshd %%r0, %0, %%r22\n" +" vshd %0, %%r0, %%r1\n" +" and %%r20, %%r19, %%r20\n" +" andcm %%r21, %%r19, %%r21\n" +" or %%r22, %%r20, %%r20\n" +" or %%r1, %%r21, %%r21\n" +" stw %%r20,0(%%sr1,%1)\n" +" stw %%r21,4(%%sr1,%1)\n" + : + : "r" (val), "r" (regs->ior), "r" (regs->isr) + : "r19", "r20", "r21", "r22", "r1" ); + + return 0; +} #ifdef __LP64__ - "depd,z %2, 55, 56, %2\n" -#else - "depw,z %2, 23, 24, %2\n" -#endif +static int emulate_std(struct pt_regs *regs, int frreg) +{ + unsigned long val = regs->gr[frreg]; + if (!frreg) + val = 0; -" b 0b\n" -" nop\n" + DPRINTF("store r%d (0x" RFMT ") to " RFMT ":" RFMT " for 8 bytes\n", frreg, + regs->gr[frreg], regs->isr, regs->ior); -"2: ldi 11, %0\n" -"3: mtsp %%r20, %%sr1\n" -" .section __ex_table,\"a\"\n" -#ifdef __LP64__ - ".dword 1b, (2b-1b)\n" -#else - ".word 1b, (2b-1b)\n" -#endif - ".previous\n" - : "=r" (ret) - : "0" (ret), "r" (val), "r" (regs->ior), "r" (len), "r" (regs->isr) - : "r19", "r20" ); - return ret; -} + __asm__ __volatile__ ( +" mtsp %2, %%sr1\n" +" depd,z %1, 60, 3, %%r19\n" +" depd %%r0, 63, 3, %1\n" +" mtsar %%r19\n" +" depdi,z -2, %%sar, 64, %%r19\n" +" ldd 0(%%sr1,%1),%%r20\n" +" ldd 8(%%sr1,%1),%%r21\n" +" shrpd %%r0, %0, %%sar, %%r22\n" +" shrpd %0, %%r0, %%sar, %%r1\n" +" and %%r20, %%r19, %%r20\n" +" andcm %%r21, %%r19, %%r21\n" +" or %%r22, %%r20, %%r20\n" +" or %%r1, %%r21, %%r21\n" +" std %%r20,0(%%sr1,%1)\n" +" std %%r21,8(%%sr1,%1)\n" + : + : "r" (val), "r" (regs->ior), "r" (regs->isr) + : "r19", "r20", "r21", "r22", "r1" ); + return 0; +} +#endif void handle_unaligned(struct pt_regs *regs) { unsigned long unaligned_count = 0; unsigned long last_time = 0; + unsigned long newbase = regs->gr[R1(regs->iir)]; + int modify = 0; int ret = -1; struct siginfo si; @@ -281,83 +353,172 @@ } } + if (!unaligned_enabled) + goto force_sigbus; + + /* handle modification - OK, it's ugly, see the instruction manual */ + switch (MAJOR_OP(regs->iir)) + { + case 0x03: + case 0x09: + case 0x0b: + if (regs->iir&0x20) + { + modify = 1; + if (regs->iir&0x1000) /* short loads */ + if (regs->iir&0x200) + newbase += IM5_3(regs->iir); + else + newbase += IM5_2(regs->iir); + else if (regs->iir&0x2000) /* scaled indexed */ + { + int shift=0; + switch (regs->iir & OPCODE1_MASK) + { + case OPCODE_LDH_I: + shift= 1; break; + case OPCODE_LDW_I: + shift= 2; break; + case OPCODE_LDD_I: + case OPCODE_LDDA_I: + shift= 3; break; + } + newbase += (R2(regs->iir)?regs->gr[R2(regs->iir)]:0)<iir)?regs->gr[R2(regs->iir)]:0); + } + break; + case 0x13: + case 0x1b: + modify = 1; + newbase += IM14(regs->iir); + break; + case 0x14: + case 0x1c: + if (regs->iir&8) + { + modify = 1; + newbase += IM14(regs->iir&~0xe); + } + break; + case 0x16: + case 0x1e: + modify = 1; + newbase += IM14(regs->iir&6); + break; + case 0x17: + case 0x1f: + if (regs->iir&4) + { + modify = 1; + newbase += IM14(regs->iir&~4); + } + break; + } + + if (regs->isr != regs->sr[7]) + { + printk(KERN_CRIT "isr verification failed (isr: " RFMT ", sr7: " RFMT "\n", + regs->isr, regs->sr[7]); + + /* don't kill him though, since he has appropriate access to the page, or we + * would never have gotten here. + */ + } + /* TODO: make this cleaner... */ switch (regs->iir & OPCODE1_MASK) { case OPCODE_LDH_I: case OPCODE_LDH_S: - ret = emulate_load(regs, 2, regs->iir & 0x1f); + ret = emulate_ldh(regs, R3(regs->iir)); break; case OPCODE_LDW_I: case OPCODE_LDWA_I: case OPCODE_LDW_S: case OPCODE_LDWA_S: - ret = emulate_load(regs, 4, regs->iir&0x1f); - break; - - case OPCODE_LDD_I: - case OPCODE_LDDA_I: - case OPCODE_LDD_S: - case OPCODE_LDDA_S: - ret = emulate_load(regs, 8, regs->iir&0x1f); + ret = emulate_ldw(regs, R3(regs->iir)); break; case OPCODE_STH: - ret = emulate_store(regs, 2, (regs->iir>>16)&0x1f); + ret = emulate_sth(regs, R2(regs->iir)); break; case OPCODE_STW: case OPCODE_STWA: - ret = emulate_store(regs, 4, (regs->iir>>16)&0x1f); + ret = emulate_stw(regs, R2(regs->iir)); + break; + +#ifdef __LP64__ + case OPCODE_LDD_I: + case OPCODE_LDDA_I: + case OPCODE_LDD_S: + case OPCODE_LDDA_S: + ret = emulate_ldd(regs, R3(regs->iir)); break; case OPCODE_STD: case OPCODE_STDA: - ret = emulate_store(regs, 8, (regs->iir>>16)&0x1f); + ret = emulate_std(regs, R2(regs->iir)); + break; +#endif + + case OPCODE_LDCD_I: + case OPCODE_LDCW_I: + case OPCODE_LDCD_S: + case OPCODE_LDCW_S: + ret = -1; /* "undefined", but lets kill them. */ break; } +#ifdef __LP64__ switch (regs->iir & OPCODE2_MASK) { case OPCODE_LDD_L: case OPCODE_FLDD_L: - ret = emulate_load(regs, 8, (regs->iir>>16)&0x1f); + ret = emulate_ldd(regs, R2(regs->iir)); break; case OPCODE_STD_L: case OPCODE_FSTD_L: - ret = emulate_store(regs, 8, (regs->iir>>16)&0x1f); + ret = emulate_std(regs, R2(regs->iir)); break; } +#endif switch (regs->iir & OPCODE3_MASK) { case OPCODE_LDW_M: case OPCODE_FLDW_L: - ret = emulate_load(regs, 4, (regs->iir>>16)&0x1f); + ret = emulate_ldw(regs, R2(regs->iir)); break; case OPCODE_FSTW_L: case OPCODE_STW_M: - ret = emulate_store(regs, 4, (regs->iir>>16)&0x1f); + ret = emulate_stw(regs, R2(regs->iir)); break; } switch (regs->iir & OPCODE4_MASK) { case OPCODE_LDH_L: - ret = emulate_load(regs, 2, (regs->iir>>16)&0x1f); + ret = emulate_ldh(regs, R2(regs->iir)); break; case OPCODE_LDW_L: - case OPCODE_LDW_L2: - ret = emulate_load(regs, 4, (regs->iir>>16)&0x1f); + case OPCODE_LDWM: + ret = emulate_ldw(regs, R2(regs->iir)); break; case OPCODE_STH_L: - ret = emulate_store(regs, 2, (regs->iir>>16)&0x1f); + ret = emulate_sth(regs, R2(regs->iir)); break; case OPCODE_STW_L: - case OPCODE_STW_L2: - ret = emulate_store(regs, 4, (regs->iir>>16)&0x1f); + case OPCODE_STWM: + ret = emulate_stw(regs, R2(regs->iir)); break; } + /* XXX LJ - need to handle float load/store */ + + if (modify && R1(regs->iir)) + regs->gr[R1(regs->iir)] = newbase; + if (ret < 0) printk(KERN_CRIT "Not-handled unaligned insn 0x%08lx\n", regs->iir); @@ -368,7 +529,7 @@ { printk(KERN_CRIT "Unaligned handler failed, ret = %d\n", ret); die_if_kernel("Unaligned data reference", regs, 28); - +force_sigbus: /* couldn't handle it ... */ si.si_signo = SIGBUS; si.si_errno = 0; @@ -421,9 +582,9 @@ align_mask = 1UL; break; case OPCODE_LDW_L: - case OPCODE_LDW_L2: + case OPCODE_LDWM: case OPCODE_STW_L: - case OPCODE_STW_L2: + case OPCODE_STWM: align_mask = 3UL; break; } @@ -432,3 +593,4 @@ return (int)(regs->ior & align_mask); } + diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/lib/Makefile linux/arch/parisc/lib/Makefile --- linux-2.4.20/arch/parisc/lib/Makefile Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/lib/Makefile Sat Nov 16 05:53:35 2002 @@ -6,4 +6,6 @@ L_TARGET = lib.a obj-y := lusercopy.o bitops.o checksum.o io.o memset.o +obj-$(CONFIG_SMP) += locks.o + include $(TOPDIR)/Rules.make diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/lib/locks.c linux/arch/parisc/lib/locks.c --- linux-2.4.20/arch/parisc/lib/locks.c Wed Dec 31 17:00:00 1969 +++ linux/arch/parisc/lib/locks.c Sat Nov 16 00:28:08 2002 @@ -0,0 +1,68 @@ +/* + * debugging spinlocks for parisc + * + * Adapted from the ppc version + */ + + +#include +#include +#include +#include +#include +#include +#include + +#ifdef CONFIG_DEBUG_SPINLOCK + +#undef INIT_STUCK +#define INIT_STUCK 200000000 /*0xffffffff*/ + +#define __spin_trylock(x) (__ldcw(&(x)->lock) != 0) + +void spin_lock(spinlock_t *lock) +{ + int cpu = smp_processor_id(); + unsigned int stuck = INIT_STUCK; + while (!__spin_trylock(lock)) { + while ((unsigned volatile long)lock->lock == 0) { + if (!--stuck) { + printk("spin_lock(%p) CPU#%d NIP %p" + " holder: cpu %ld pc %08lX\n", + lock, cpu, __builtin_return_address(0), + lock->owner_cpu,lock->owner_pc); + stuck = INIT_STUCK; + /* steal the lock */ + /*xchg_u32((void *)&lock->lock,0);*/ + } + } + } + lock->owner_pc = (unsigned long)__builtin_return_address(0); + lock->owner_cpu = cpu; +} + +int spin_trylock(spinlock_t *lock) +{ + if (!__spin_trylock(lock)) + return 0; + lock->owner_cpu = smp_processor_id(); + lock->owner_pc = (unsigned long)__builtin_return_address(0); + return 1; +} + +void spin_unlock(spinlock_t *lp) +{ + if ( lp->lock ) + printk("spin_unlock(%p): no lock cpu %d curr PC %p %s/%d\n", + lp, smp_processor_id(), __builtin_return_address(0), + current->comm, current->pid); + if ( lp->owner_cpu != smp_processor_id() ) + printk("spin_unlock(%p): cpu %d trying clear of cpu %d pc %lx val %x\n", + lp, smp_processor_id(), (int)lp->owner_cpu, + lp->owner_pc,lp->lock); + lp->owner_pc = lp->owner_cpu = 0; + wmb(); + lp->lock = 1; +} + +#endif diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/dfadd.c linux/arch/parisc/math-emu/dfadd.c --- linux-2.4.20/arch/parisc/math-emu/dfadd.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/dfadd.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/dfadd.c $Revision: 1.1 $ + * @(#) pa/spmath/dfadd.c $Revision: $ * * Purpose: * Double_add: add two double precision values. diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/dfcmp.c linux/arch/parisc/math-emu/dfcmp.c --- linux-2.4.20/arch/parisc/math-emu/dfcmp.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/dfcmp.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/dfcmp.c $Revision: 1.1 $ + * @(#) pa/spmath/dfcmp.c $Revision: $ * * Purpose: * dbl_cmp: compare two values diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/dfdiv.c linux/arch/parisc/math-emu/dfdiv.c --- linux-2.4.20/arch/parisc/math-emu/dfdiv.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/dfdiv.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/dfdiv.c $Revision: 1.1 $ + * @(#) pa/spmath/dfdiv.c $Revision: $ * * Purpose: * Double Precision Floating-point Divide diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/dfmpy.c linux/arch/parisc/math-emu/dfmpy.c --- linux-2.4.20/arch/parisc/math-emu/dfmpy.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/dfmpy.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/dfmpy.c $Revision: 1.1 $ + * @(#) pa/spmath/dfmpy.c $Revision: $ * * Purpose: * Double Precision Floating-point Multiply diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/dfrem.c linux/arch/parisc/math-emu/dfrem.c --- linux-2.4.20/arch/parisc/math-emu/dfrem.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/dfrem.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/dfrem.c $Revision: 1.1 $ + * @(#) pa/spmath/dfrem.c $Revision: $ * * Purpose: * Double Precision Floating-point Remainder diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/dfsqrt.c linux/arch/parisc/math-emu/dfsqrt.c --- linux-2.4.20/arch/parisc/math-emu/dfsqrt.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/dfsqrt.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/dfsqrt.c $Revision: 1.1 $ + * @(#) pa/spmath/dfsqrt.c $Revision: $ * * Purpose: * Double Floating-point Square Root diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/dfsub.c linux/arch/parisc/math-emu/dfsub.c --- linux-2.4.20/arch/parisc/math-emu/dfsub.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/dfsub.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/dfsub.c $Revision: 1.1 $ + * @(#) pa/spmath/dfsub.c $Revision: $ * * Purpose: * Double_subtract: subtract two double precision values. diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/driver.c linux/arch/parisc/math-emu/driver.c --- linux-2.4.20/arch/parisc/math-emu/driver.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/driver.c Tue Jan 14 05:59:58 2003 @@ -80,14 +80,19 @@ int handle_fpe(struct pt_regs *regs) { - extern void printbinary(unsigned long x, int nbits); + extern int printbinary(char *buf, unsigned long x, int nbits); struct siginfo si; unsigned int orig_sw, sw; int signalcode; + char buf[128]; /* need an intermediate copy of float regs because FPU emulation * code expects an artificial last entry which contains zero + * + * also, the passed in fr registers contain one word that defines + * the fpu type. the fpu type information is constructed + * inside the emulation code */ - __u64 frcopy[33]; + __u64 frcopy[36]; memcpy(frcopy, regs->fr, sizeof regs->fr); frcopy[32] = 0; @@ -96,8 +101,8 @@ if (FPUDEBUG) { printk(KERN_DEBUG "FP VZOUICxxxxCQCQCQCQCQCRMxxTDVZOUI ->\n "); - printbinary(orig_sw, 32); - printk(KERN_DEBUG "\n"); + printbinary(buf, orig_sw, 32); + printk(KERN_DEBUG "%s\n", buf); } signalcode = decode_fpu(frcopy, 0x666); @@ -107,8 +112,8 @@ if (FPUDEBUG) { printk(KERN_DEBUG "VZOUICxxxxCQCQCQCQCQCRMxxTDVZOUI decode_fpu returns %d|0x%x\n", signalcode >> 24, signalcode & 0xffffff); - printbinary(sw, 32); - printk(KERN_DEBUG "\n"); + printbinary(buf, sw, 32); + printk(KERN_DEBUG "%s\n", buf); } memcpy(regs->fr, frcopy, sizeof regs->fr); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/fcnvff.c linux/arch/parisc/math-emu/fcnvff.c --- linux-2.4.20/arch/parisc/math-emu/fcnvff.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/fcnvff.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/fcnvff.c $Revision: 1.1 $ + * @(#) pa/spmath/fcnvff.c $Revision: $ * * Purpose: * Single Floating-point to Double Floating-point diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/fcnvfu.c linux/arch/parisc/math-emu/fcnvfu.c --- linux-2.4.20/arch/parisc/math-emu/fcnvfu.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/fcnvfu.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/fcnvfu.c $Revision: 1.1 $ + * @(#) pa/spmath/fcnvfu.c $Revision: $ * * Purpose: * Floating-point to Unsigned Fixed-point Converts diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/fcnvfut.c linux/arch/parisc/math-emu/fcnvfut.c --- linux-2.4.20/arch/parisc/math-emu/fcnvfut.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/fcnvfut.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/fcnvfut.c $Revision: 1.1 $ + * @(#) pa/spmath/fcnvfut.c $Revision: $ * * Purpose: * Floating-point to Unsigned Fixed-point Converts with Truncation diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/fcnvfx.c linux/arch/parisc/math-emu/fcnvfx.c --- linux-2.4.20/arch/parisc/math-emu/fcnvfx.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/fcnvfx.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/fcnvfx.c $Revision: 1.1 $ + * @(#) pa/spmath/fcnvfx.c $Revision: $ * * Purpose: * Single Floating-point to Single Fixed-point diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/fcnvfxt.c linux/arch/parisc/math-emu/fcnvfxt.c --- linux-2.4.20/arch/parisc/math-emu/fcnvfxt.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/fcnvfxt.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/fcnvfxt.c $Revision: 1.1 $ + * @(#) pa/spmath/fcnvfxt.c $Revision: $ * * Purpose: * Single Floating-point to Single Fixed-point /w truncated result diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/fcnvuf.c linux/arch/parisc/math-emu/fcnvuf.c --- linux-2.4.20/arch/parisc/math-emu/fcnvuf.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/fcnvuf.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/fcnvuf.c $Revision: 1.1 $ + * @(#) pa/spmath/fcnvuf.c $Revision: $ * * Purpose: * Fixed point to Floating-point Converts diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/fcnvxf.c linux/arch/parisc/math-emu/fcnvxf.c --- linux-2.4.20/arch/parisc/math-emu/fcnvxf.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/fcnvxf.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/fcnvxf.c $Revision: 1.1 $ + * @(#) pa/spmath/fcnvxf.c $Revision: $ * * Purpose: * Single Fixed-point to Single Floating-point diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/float.h linux/arch/parisc/math-emu/float.h --- linux-2.4.20/arch/parisc/math-emu/float.h Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/float.h Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/float.h $Revision: 1.2 $ + * @(#) pa/spmath/float.h $Revision: 1.1 $ * * Purpose: * <> diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/fmpyfadd.c linux/arch/parisc/math-emu/fmpyfadd.c --- linux-2.4.20/arch/parisc/math-emu/fmpyfadd.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/fmpyfadd.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/fmpyfadd.c $Revision: 1.1 $ + * @(#) pa/spmath/fmpyfadd.c $Revision: $ * * Purpose: * Double Floating-point Multiply Fused Add diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/fpu.h linux/arch/parisc/math-emu/fpu.h --- linux-2.4.20/arch/parisc/math-emu/fpu.h Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/fpu.h Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/fp/fpu.h $Revision: 1.2 $ + * @(#) pa/fp/fpu.h $Revision: $ * * Purpose: * <> diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/fpudispatch.c linux/arch/parisc/math-emu/fpudispatch.c --- linux-2.4.20/arch/parisc/math-emu/fpudispatch.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/fpudispatch.c Mon Jan 13 06:01:28 2003 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/fp/fpudispatch.c $Revision: 1.1 $ + * @(#) pa/fp/fpudispatch.c $Revision: $ * * Purpose: * <> @@ -51,6 +51,7 @@ #include "float.h" #include "types.h" +#include /* #include */ /* #include */ @@ -166,6 +167,20 @@ #define VASSERT(x) +static void parisc_linux_get_fpu_type(u_int fpregs[]) +{ + /* on pa-linux the fpu type is not filled in by the + * caller; it is constructed here + */ + if (boot_cpu_data.cpu_type == pcxs) + fpregs[FPU_TYPE_FLAG_POS] = TIMEX_EXTEN_FLAG; + else if (boot_cpu_data.cpu_type == pcxt || + boot_cpu_data.cpu_type == pcxt_) + fpregs[FPU_TYPE_FLAG_POS] = ROLEX_EXTEN_FLAG; + else if (boot_cpu_data.cpu_type >= pcxu) + fpregs[FPU_TYPE_FLAG_POS] = PA2_0_FPU_FLAG; +} + /* * this routine will decode the excepting floating point instruction and * call the approiate emulation routine. @@ -183,6 +198,8 @@ /* All FP emulation code assumes that ints are 4-bytes in length */ VASSERT(sizeof(int) == 4); + + parisc_linux_get_fpu_type(fpregs); fpu_type_flags=fpregs[FPU_TYPE_FLAG_POS]; /* get fpu type flags */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/sfadd.c linux/arch/parisc/math-emu/sfadd.c --- linux-2.4.20/arch/parisc/math-emu/sfadd.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/sfadd.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/sfadd.c $Revision: 1.1 $ + * @(#) pa/spmath/sfadd.c $Revision: $ * * Purpose: * Single_add: add two single precision values. diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/sfcmp.c linux/arch/parisc/math-emu/sfcmp.c --- linux-2.4.20/arch/parisc/math-emu/sfcmp.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/sfcmp.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/sfcmp.c $Revision: 1.1 $ + * @(#) pa/spmath/sfcmp.c $Revision: $ * * Purpose: * sgl_cmp: compare two values diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/sfdiv.c linux/arch/parisc/math-emu/sfdiv.c --- linux-2.4.20/arch/parisc/math-emu/sfdiv.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/sfdiv.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/sfdiv.c $Revision: 1.1 $ + * @(#) pa/spmath/sfdiv.c $Revision: $ * * Purpose: * Single Precision Floating-point Divide diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/sfmpy.c linux/arch/parisc/math-emu/sfmpy.c --- linux-2.4.20/arch/parisc/math-emu/sfmpy.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/sfmpy.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/sfmpy.c $Revision: 1.1 $ + * @(#) pa/spmath/sfmpy.c $Revision: $ * * Purpose: * Single Precision Floating-point Multiply diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/sfrem.c linux/arch/parisc/math-emu/sfrem.c --- linux-2.4.20/arch/parisc/math-emu/sfrem.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/sfrem.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/sfrem.c $Revision: 1.1 $ + * @(#) pa/spmath/sfrem.c $Revision: $ * * Purpose: * Single Precision Floating-point Remainder diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/sfsqrt.c linux/arch/parisc/math-emu/sfsqrt.c --- linux-2.4.20/arch/parisc/math-emu/sfsqrt.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/sfsqrt.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/sfsqrt.c $Revision: 1.1 $ + * @(#) pa/spmath/sfsqrt.c $Revision: $ * * Purpose: * Single Floating-point Square Root diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/math-emu/sfsub.c linux/arch/parisc/math-emu/sfsub.c --- linux-2.4.20/arch/parisc/math-emu/sfsub.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/math-emu/sfsub.c Wed Nov 13 05:53:36 2002 @@ -22,7 +22,7 @@ * BEGIN_DESC * * File: - * @(#) pa/spmath/sfsub.c $Revision: 1.1 $ + * @(#) pa/spmath/sfsub.c $Revision: $ * * Purpose: * Single_subtract: subtract two single precision values. diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/mm/fault.c linux/arch/parisc/mm/fault.c --- linux-2.4.20/arch/parisc/mm/fault.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/mm/fault.c Mon Nov 4 05:53:35 2002 @@ -257,7 +257,8 @@ } parisc_terminate("Bad Address (null pointer deref?)", regs, code, address); - + /* NOT REACHED! */ + out_of_memory: up_read(&mm->mmap_sem); printk(KERN_CRIT "VM: killing process %s\n", current->comm); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/mm/init.c linux/arch/parisc/mm/init.c --- linux-2.4.20/arch/parisc/mm/init.c Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/mm/init.c Sat Nov 16 05:53:36 2002 @@ -21,6 +21,7 @@ #include #include +#include mmu_gather_t mmu_gathers[NR_CPUS]; @@ -409,6 +410,9 @@ } printk("%luk freed\n", (unsigned long)(&__init_end - &__init_begin) >> 10); + + /* set up a new led state on systems shipped LED State panel */ + pdc_chassis_send_status(PDC_CHASSIS_DIRECT_BCOMPLETE); } /* @@ -574,13 +578,8 @@ for (tmp2 = start_pte; tmp2 < PTRS_PER_PTE; tmp2++,pg_table++) { pte_t pte; -#if !defined(CONFIG_KWDB) && !defined(CONFIG_STI_CONSOLE) +#if !defined(CONFIG_STI_CONSOLE) #warning STI console should explicitly allocate executable pages but does not -/* KWDB needs to write kernel text when setting break points. -** -** The right thing to do seems like KWDB modify only the pte which -** has a break point on it...otherwise we might mask worse bugs. -*/ /* * Map the fault vector writable so we can * write the HPMC checksum. diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/vmlinux.lds linux/arch/parisc/vmlinux.lds --- linux-2.4.20/arch/parisc/vmlinux.lds Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/vmlinux.lds Sat Nov 16 05:53:34 2002 @@ -14,12 +14,12 @@ *(.gnu.warning) } = 0 + _etext = .; /* End of text section */ + . = ALIGN(16); .rodata : { *(.rodata) *(.rodata.*) } .kstrtab : { *(.kstrtab) } - _etext = .; /* End of text section */ - .data BLOCK(8192) : { /* Data without special */ data_start = .; *(.data) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/parisc/vmlinux64.lds linux/arch/parisc/vmlinux64.lds --- linux-2.4.20/arch/parisc/vmlinux64.lds Thu Nov 28 16:53:10 2002 +++ linux/arch/parisc/vmlinux64.lds Sat Nov 16 05:53:34 2002 @@ -15,12 +15,12 @@ *(.gnu.warning) } = 0 + _etext = .; /* End of text section */ + . = ALIGN(16); .rodata : { *(.rodata) } .kstrtab : { *(.kstrtab) } - _etext = .; /* End of text section */ - .data BLOCK(8192) : { /* Data without special */ data_start = .; *(.data) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/ppc/mm/fault.c linux/arch/ppc/mm/fault.c --- linux-2.4.20/arch/ppc/mm/fault.c Thu Nov 28 16:53:11 2002 +++ linux/arch/ppc/mm/fault.c Thu Nov 14 05:54:00 2002 @@ -109,8 +109,6 @@ goto bad_area; if (vma->vm_start <= address) goto good_area; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; if (expand_stack(vma, address)) goto bad_area; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/sh/mm/fault.c linux/arch/sh/mm/fault.c --- linux-2.4.20/arch/sh/mm/fault.c Thu Nov 28 16:53:11 2002 +++ linux/arch/sh/mm/fault.c Thu Nov 14 05:54:04 2002 @@ -72,8 +72,6 @@ return 1; check_stack: - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; if (expand_stack(vma, start) == 0) goto good_area; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/arch/sparc/mm/fault.c linux/arch/sparc/mm/fault.c --- linux-2.4.20/arch/sparc/mm/fault.c Fri Dec 21 10:41:53 2001 +++ linux/arch/sparc/mm/fault.c Fri Jan 4 09:11:32 2002 @@ -249,8 +249,6 @@ goto bad_area; if(vma->vm_start <= address) goto good_area; - if(!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; if(expand_stack(vma, address)) goto bad_area; /* @@ -496,8 +494,6 @@ goto bad_area; if(vma->vm_start <= address) goto good_area; - if(!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; if(expand_stack(vma, address)) goto bad_area; good_area: diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/char/Config.in linux/drivers/char/Config.in --- linux-2.4.20/drivers/char/Config.in Thu Nov 28 16:53:12 2002 +++ linux/drivers/char/Config.in Fri Nov 29 05:53:33 2002 @@ -73,6 +73,14 @@ tristate ' Stallion EasyIO or EC8/32 support' CONFIG_STALLION tristate ' Stallion EC8/64, ONboard, Brumby support' CONFIG_ISTALLION fi + if [ "$CONFIG_PARISC" = "y" ]; then + if [ "$CONFIG_PDC_CONSOLE" != "y" ]; then + bool ' Serial MUX support' CONFIG_SERIAL_MUX CONFIG_SERIAL_NONSTANDARD + fi + if [ "$CONFIG_SERIAL_MUX" != "y" ]; then + bool ' PDC software console support' CONFIG_PDC_CONSOLE CONFIG_SERIAL_NONSTANDARD + fi + fi if [ "$CONFIG_MIPS" = "y" ]; then bool ' TX3912/PR31700 serial port support' CONFIG_SERIAL_TX3912 dep_bool ' Console on TX3912/PR31700 serial port' CONFIG_SERIAL_TX3912_CONSOLE $CONFIG_SERIAL_TX3912 @@ -238,6 +246,9 @@ bool ' Reboot Using Button' CONFIG_NWBUTTON_REBOOT fi tristate 'NetWinder flash support' CONFIG_NWFLASH +fi +if [ "$CONFIG_PARISC" = "y" ]; then + bool 'Generic RTC device support' CONFIG_GENRTC fi if [ "$CONFIG_X86" = "y" -o "$CONFIG_X86_64" = "y" ]; then diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/char/Makefile linux/drivers/char/Makefile --- linux-2.4.20/drivers/char/Makefile Thu Nov 28 16:53:12 2002 +++ linux/drivers/char/Makefile Fri Nov 29 05:53:33 2002 @@ -66,6 +66,20 @@ SERIAL = endif +ifeq ($(ARCH),parisc) + ifdef CONFIG_GSC_PS2 + KEYBD = hp_psaux.o hp_keyb.o + else + KEYBD = + endif + ifdef CONFIG_SERIAL_MUX + CONSOLE += mux.o + endif + ifdef CONFIG_PDC_CONSOLE + CONSOLE += pdc_console.o + endif +endif + ifdef CONFIG_Q40 KEYBD += q40_keyb.o SERIAL = serial.o @@ -222,6 +236,7 @@ obj-$(CONFIG_PC110_PAD) += pc110pad.o obj-$(CONFIG_MK712_MOUSE) += mk712.o obj-$(CONFIG_RTC) += rtc.o +obj-$(CONFIG_GENRTC) += genrtc.o obj-$(CONFIG_EFI_RTC) += efirtc.o ifeq ($(CONFIG_PPC),) obj-$(CONFIG_NVRAM) += nvram.o diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/char/genrtc.c linux/drivers/char/genrtc.c --- linux-2.4.20/drivers/char/genrtc.c Wed Dec 31 17:00:00 1969 +++ linux/drivers/char/genrtc.c Sun Jan 12 06:03:30 2003 @@ -0,0 +1,539 @@ +/* + * Real Time Clock interface for + * - q40 and other m68k machines, + * - HP PARISC machines + * - PowerPC machines + * emulate some RTC irq capabilities in software + * + * Copyright (C) 1999 Richard Zidlicky + * + * based on Paul Gortmaker's rtc.c device and + * Sam Creasey Generic rtc driver + * + * This driver allows use of the real time clock (built into + * nearly all computers) from user space. It exports the /dev/rtc + * interface supporting various ioctl() and also the /proc/dev/rtc + * pseudo-file for status information. + * + * The ioctls can be used to set the interrupt behaviour where + * supported. + * + * The /dev/rtc interface will block on reads until an interrupt + * has been received. If a RTC interrupt has already happened, + * it will output an unsigned long and then block. The output value + * contains the interrupt status in the low byte and the number of + * interrupts since the last read in the remaining high bytes. The + * /dev/rtc interface can also be used with the select(2) call. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. + * + + * 1.01 fix for 2.3.X rz@linux-m68k.org + * 1.02 merged with code from genrtc.c rz@linux-m68k.org + * 1.03 make it more portable zippel@linux-m68k.org + * 1.04 removed useless timer code rz@linux-m68k.org + * 1.05 portable RTC_UIE emulation rz@linux-m68k.org + * 1.06 set_rtc_time can return an error trini@kernel.crashing.org + * 1.07 ported to HP PARISC (hppa) Helge Deller + */ + +#define RTC_VERSION "1.07" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +/* + * We sponge a minor off of the misc major. No need slurping + * up another valuable major dev number for this. If you add + * an ioctl, make sure you don't conflict with SPARC's RTC + * ioctls. + */ + +static DECLARE_WAIT_QUEUE_HEAD(gen_rtc_wait); + +/* + * Bits in gen_rtc_status. + */ + +#define RTC_IS_OPEN 0x01 /* means /dev/rtc is in use */ + +static unsigned char gen_rtc_status; /* bitmapped status byte. */ +static unsigned long gen_rtc_irq_data; /* our output to the world */ + +/* months start at 0 now */ +static unsigned char days_in_mo[] = +{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; + +static int irq_active; + +#ifdef CONFIG_GEN_RTC_X +struct tq_struct genrtc_task; +static struct timer_list timer_task; + +static unsigned int oldsecs; +static int lostint; +static int tt_exp; + +static void gen_rtc_timer(unsigned long data); + +static volatile int stask_active; /* schedule_task */ +static volatile int ttask_active; /* timer_task */ +static int stop_rtc_timers; /* don't requeue tasks */ +static spinlock_t gen_rtc_lock = SPIN_LOCK_UNLOCKED; + +static void gen_rtc_interrupt(unsigned long arg); + +/* + * Routine to poll RTC seconds field for change as often as posible, + * after first RTC_UIE use timer to reduce polling + */ +static void genrtc_troutine(void *data) +{ + unsigned int tmp = get_rtc_ss(); + + if (stop_rtc_timers) { + stask_active = 0; + return; + } + + if (oldsecs != tmp){ + oldsecs = tmp; + + timer_task.function = gen_rtc_timer; + timer_task.expires = jiffies + HZ - (HZ/10); + tt_exp=timer_task.expires; + ttask_active=1; + stask_active=0; + add_timer(&timer_task); + + gen_rtc_interrupt(0); + } else if (schedule_task(&genrtc_task) == 0) + stask_active = 0; +} + +static void gen_rtc_timer(unsigned long data) +{ + lostint = get_rtc_ss() - oldsecs ; + if (lostint<0) + lostint = 60 - lostint; + if (time_after(jiffies, tt_exp)) + printk(KERN_INFO "genrtc: timer task delayed by %ld jiffies\n", + jiffies-tt_exp); + ttask_active=0; + stask_active=1; + if ((schedule_task(&genrtc_task) == 0)) + stask_active = 0; +} + +/* + * call gen_rtc_interrupt function to signal an RTC_UIE, + * arg is unused. + * Could be invoked either from a real interrupt handler or + * from some routine that periodically (eg 100HZ) monitors + * whether RTC_SECS changed + */ +static void gen_rtc_interrupt(unsigned long arg) +{ + /* We store the status in the low byte and the number of + * interrupts received since the last read in the remainder + * of rtc_irq_data. */ + + gen_rtc_irq_data += 0x100; + gen_rtc_irq_data &= ~0xff; + gen_rtc_irq_data |= RTC_UIE; + + if (lostint){ + printk("genrtc: system delaying clock ticks?\n"); + /* increment count so that userspace knows something is wrong */ + gen_rtc_irq_data += ((lostint-1)<<8); + lostint = 0; + } + + wake_up_interruptible(&gen_rtc_wait); +} + +/* + * Now all the various file operations that we export. + */ +static ssize_t gen_rtc_read(struct file *file, char *buf, + size_t count, loff_t *ppos) +{ + DECLARE_WAITQUEUE(wait, current); + unsigned long data; + ssize_t retval; + + if (count != sizeof (unsigned int) && count != sizeof (unsigned long)) + return -EINVAL; + + if (file->f_flags & O_NONBLOCK && !gen_rtc_irq_data) + return -EAGAIN; + + add_wait_queue(&gen_rtc_wait, &wait); + retval = -ERESTARTSYS; + + while (1) { + set_current_state(TASK_INTERRUPTIBLE); + data = xchg(&gen_rtc_irq_data, 0); + if (data) + break; + if (signal_pending(current)) + goto out; + schedule(); + } + + /* first test allows optimizer to nuke this case for 32-bit machines */ + if (sizeof (int) != sizeof (long) && count == sizeof (unsigned int)) { + unsigned int uidata = data; + retval = put_user(uidata, (unsigned long *)buf); + } + else { + retval = put_user(data, (unsigned long *)buf); + } + if (!retval) + retval = sizeof(unsigned long); + out: + current->state = TASK_RUNNING; + remove_wait_queue(&gen_rtc_wait, &wait); + + return retval; +} + +static unsigned int gen_rtc_poll(struct file *file, + struct poll_table_struct *wait) +{ + poll_wait(file, &gen_rtc_wait, wait); + if (gen_rtc_irq_data != 0) + return POLLIN | POLLRDNORM; + return 0; +} + +#endif + +/* + * Used to disable/enable interrupts, only RTC_UIE supported + * We also clear out any old irq data after an ioctl() that + * meddles with the interrupt enable/disable bits. + */ + +static inline void gen_clear_rtc_irq_bit(unsigned char bit) +{ +#ifdef CONFIG_GEN_RTC_X + stop_rtc_timers = 1; + if (ttask_active){ + del_timer_sync(&timer_task); + ttask_active = 0; + } + while (stask_active) + schedule(); + + spin_lock(&gen_rtc_lock); + irq_active = 0; + spin_unlock(&gen_rtc_lock); +#endif +} + +static inline int gen_set_rtc_irq_bit(unsigned char bit) +{ +#ifdef CONFIG_GEN_RTC_X + spin_lock(&gen_rtc_lock); + if ( !irq_active ) { + irq_active = 1; + stop_rtc_timers = 0; + lostint = 0; + genrtc_task.routine = genrtc_troutine; + oldsecs = get_rtc_ss(); + init_timer(&timer_task); + + stask_active = 1; + if (schedule_task(&genrtc_task) == 0){ + stask_active = 0; + } + } + spin_unlock(&gen_rtc_lock); + gen_rtc_irq_data = 0; + return 0; +#else + return -EINVAL; +#endif +} + +static int gen_rtc_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg) +{ + struct rtc_time wtime; + struct rtc_pll_info pll; + + switch (cmd) { + + case RTC_PLL_GET: + if (get_rtc_pll(&pll)) + return -EINVAL; + else + return copy_to_user((void *)arg, &pll, sizeof pll) ? -EFAULT : 0; + + case RTC_PLL_SET: + if (!capable(CAP_SYS_TIME)) + return -EACCES; + if (copy_from_user(&pll, (struct rtc_pll_info*)arg, + sizeof(pll))) + return -EFAULT; + return set_rtc_pll(&pll); + + case RTC_UIE_OFF: /* disable ints from RTC updates. */ + gen_clear_rtc_irq_bit(RTC_UIE); + return 0; + + case RTC_UIE_ON: /* enable ints for RTC updates. */ + return gen_set_rtc_irq_bit(RTC_UIE); + + case RTC_RD_TIME: /* Read the time/date from RTC */ + /* this doesn't get week-day, who cares */ + memset(&wtime, 0, sizeof(wtime)); + get_rtc_time(&wtime); + + return copy_to_user((void *)arg, &wtime, sizeof(wtime)) ? -EFAULT : 0; + + case RTC_SET_TIME: /* Set the RTC */ + { + int year; + unsigned char leap_yr; + + if (!capable(CAP_SYS_TIME)) + return -EACCES; + + if (copy_from_user(&wtime, (struct rtc_time *)arg, + sizeof(wtime))) + return -EFAULT; + + year = wtime.tm_year + 1900; + leap_yr = ((!(year % 4) && (year % 100)) || + !(year % 400)); + + if ((wtime.tm_mon < 0 || wtime.tm_mon > 11) || (wtime.tm_mday < 1)) + return -EINVAL; + + if (wtime.tm_mday < 0 || wtime.tm_mday > + (days_in_mo[wtime.tm_mon] + ((wtime.tm_mon == 1) && leap_yr))) + return -EINVAL; + + if (wtime.tm_hour < 0 || wtime.tm_hour >= 24 || + wtime.tm_min < 0 || wtime.tm_min >= 60 || + wtime.tm_sec < 0 || wtime.tm_sec >= 60) + return -EINVAL; + + return set_rtc_time(&wtime); + } + } + + return -EINVAL; +} + +/* + * We enforce only one user at a time here with the open/close. + * Also clear the previous interrupt data on an open, and clean + * up things on a close. + */ + +static int gen_rtc_open(struct inode *inode, struct file *file) +{ + if (gen_rtc_status & RTC_IS_OPEN) + return -EBUSY; + + MOD_INC_USE_COUNT; + + gen_rtc_status |= RTC_IS_OPEN; + gen_rtc_irq_data = 0; + irq_active = 0; + + return 0; +} + +static int gen_rtc_release(struct inode *inode, struct file *file) +{ + /* + * Turn off all interrupts once the device is no longer + * in use and clear the data. + */ + + gen_clear_rtc_irq_bit(RTC_PIE|RTC_AIE|RTC_UIE); + + gen_rtc_status &= ~RTC_IS_OPEN; + MOD_DEC_USE_COUNT; + + return 0; +} + +static int gen_rtc_read_proc(char *page, char **start, off_t off, + int count, int *eof, void *data); + + +/* + * The various file operations we support. + */ + +static struct file_operations gen_rtc_fops = { + .owner = THIS_MODULE, +#ifdef CONFIG_GEN_RTC_X + .read = gen_rtc_read, + .poll = gen_rtc_poll, +#endif + .ioctl = gen_rtc_ioctl, + .open = gen_rtc_open, + .release = gen_rtc_release, +}; + +static struct miscdevice rtc_gen_dev = +{ + .minor = RTC_MINOR, + .name = "rtc", + .fops = &gen_rtc_fops, +}; + +static int __init rtc_generic_init(void) +{ + int retval; + + printk(KERN_INFO "Generic RTC Driver v%s\n", RTC_VERSION); + + retval = misc_register(&rtc_gen_dev); + if(retval < 0) + return retval; + +#ifdef CONFIG_PROC_FS + if((create_proc_read_entry ("driver/rtc", 0, 0, gen_rtc_read_proc, NULL)) == NULL){ + misc_deregister(&rtc_gen_dev); + return -ENOMEM; + } +#endif + + return 0; +} + +static void __exit rtc_generic_exit(void) +{ + remove_proc_entry ("driver/rtc", NULL); + misc_deregister(&rtc_gen_dev); +} + +module_init(rtc_generic_init); +module_exit(rtc_generic_exit); +EXPORT_NO_SYMBOLS; + + +/* + * Info exported via "/proc/rtc". + */ + +#ifdef CONFIG_PROC_FS + +static int gen_rtc_proc_output(char *buf) +{ + char *p; + struct rtc_time tm; + unsigned int flags; + struct rtc_pll_info pll; + + p = buf; + + flags = get_rtc_time(&tm); + + p += sprintf(p, + "rtc_time\t: %02d:%02d:%02d\n" + "rtc_date\t: %04d-%02d-%02d\n" + "rtc_epoch\t: %04u\n", + tm.tm_hour, tm.tm_min, tm.tm_sec, + tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, 1900); + + tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + + p += sprintf(p, "alarm\t\t: "); + if (tm.tm_hour <= 24) + p += sprintf(p, "%02d:", tm.tm_hour); + else + p += sprintf(p, "**:"); + + if (tm.tm_min <= 59) + p += sprintf(p, "%02d:", tm.tm_min); + else + p += sprintf(p, "**:"); + + if (tm.tm_sec <= 59) + p += sprintf(p, "%02d\n", tm.tm_sec); + else + p += sprintf(p, "**\n"); + + p += sprintf(p, + "DST_enable\t: %s\n" + "BCD\t\t: %s\n" + "24hr\t\t: %s\n" + "square_wave\t: %s\n" + "alarm_IRQ\t: %s\n" + "update_IRQ\t: %s\n" + "periodic_IRQ\t: %s\n" + "periodic_freq\t: %ld\n" + "batt_status\t: %s\n", + (flags & RTC_DST_EN) ? "yes" : "no", + (flags & RTC_DM_BINARY) ? "no" : "yes", + (flags & RTC_24H) ? "yes" : "no", + (flags & RTC_SQWE) ? "yes" : "no", + (flags & RTC_AIE) ? "yes" : "no", + irq_active ? "yes" : "no", + (flags & RTC_PIE) ? "yes" : "no", + 0L /* freq */, + (flags & RTC_BATT_BAD) ? "bad" : "okay"); + if (!get_rtc_pll(&pll)) + p += sprintf(p, + "PLL adjustment\t: %d\n" + "PLL max +ve adjustment\t: %d\n" + "PLL max -ve adjustment\t: %d\n" + "PLL +ve adjustment factor\t: %d\n" + "PLL -ve adjustment factor\t: %d\n" + "PLL frequency\t: %ld\n", + pll.pll_value, + pll.pll_max, + pll.pll_min, + pll.pll_posmult, + pll.pll_negmult, + pll.pll_clock); + return p - buf; +} + +static int gen_rtc_read_proc(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + int len = gen_rtc_proc_output (page); + if (len <= off+count) *eof = 1; + *start = page + off; + len -= off; + if (len>count) len = count; + if (len<0) len = 0; + return len; +} + +#endif /* CONFIG_PROC_FS */ + + +MODULE_AUTHOR("Richard Zidlicky"); +MODULE_LICENSE("GPL"); + +/* + * Local variables: + * compile-command: "m68k-linux-gcc -D__KERNEL__ -I../../include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe -fno-strength-reduce -ffixed-a2 -c -o genrtc.o genrtc.c" + * End: + */ + diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/char/mux.c linux/drivers/char/mux.c --- linux-2.4.20/drivers/char/mux.c Wed Dec 31 17:00:00 1969 +++ linux/drivers/char/mux.c Fri Nov 15 05:53:55 2002 @@ -0,0 +1,638 @@ +/* +** mux.c: +** MUX console for the NOVA and K-Class systems. +** +** (c) Copyright 2002 Ryan Bradetich +** (c) Copyright 2002 Hewlett-Packard Company +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** +** This Driver used Christoph Plattner's pdc_console.c as a driver +** template. +** +** This Driver currently only supports the console (port 0) on the MUX. +** Additional work will be needed on this driver to enable the full +** functionality of the MUX. +** +*/ + +static char *mux_drv_version = "0.1"; + +#include +#include + +#undef SERIAL_PARANOIA_CHECK +#define CONFIG_SERIAL_NOPAUSE_IO +#define SERIAL_DO_RESTART + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef CONFIG_MAGIC_SYSRQ +#include +static unsigned long break_pressed; +#endif + +#ifdef CONFIG_GSC +#include +#endif + +static unsigned long hpa; + +#define MUX_OFFSET 0x800 +#define MUX_LINE_OFFSET 0x80 + +#define MUX_FIFO_SIZE 255 +#define MUX_MIN_FREE_SIZE 32 + +#define MUX_FIFO_DRAIN_DELAY 1 +#define MUX_POLL_DELAY (30 * HZ / 1000) + +#define IO_COMMAND_REG_OFFSET 0x30 +#define IO_STATUS_REG_OFFSET 0x34 +#define IO_DATA_REG_OFFSET 0x3c +#define IO_DCOUNT_REG_OFFSET 0x40 +#define IO_UCOUNT_REG_OFFSET 0x44 +#define IO_FIFOS_REG_OFFSET 0x48 + +#define MUX_EOFIFO(status) ((status & 0xF000) == 0xF000) +#define MUX_STATUS(status) ((status & 0xF000) == 0x8000) +#define MUX_BREAK(status) ((status & 0xF000) == 0x2000) + +static int mux_drv_refcount; /* = 0 */ +static struct tty_driver mux_drv_driver; +static struct async_struct *mux_drv_info; +static struct timer_list mux_drv_timer; + +#define NR_PORTS 1 +static struct tty_struct *mux_drv_table[NR_PORTS]; +static struct termios *mux_drv_termios[NR_PORTS]; +static struct termios *mux_drv_termios_locked[NR_PORTS]; + +/** + * mux_read_fifo - Read chars from the mux fifo. + * @info: Ptr to the async structure. + * + * This reads all available data from the mux's fifo and pushes + * the data to the tty layer. + */ +static void +mux_read_fifo(struct async_struct *info) +{ + int data; + struct tty_struct *tty = info->tty; + + while(1) { + data = __raw_readl((unsigned long)info->iomem_base + + IO_DATA_REG_OFFSET); + + if (MUX_STATUS(data)) + continue; + + if (MUX_EOFIFO(data)) + break; + + if (tty->flip.count >= TTY_FLIPBUF_SIZE) + continue; + + *tty->flip.char_buf_ptr = data & 0xffu; + *tty->flip.flag_buf_ptr = 0; + +#ifdef CONFIG_MAGIC_SYSRQ + if (MUX_BREAK(data) && !break_pressed) { + break_pressed = jiffies; + continue; + } + + if(MUX_BREAK(data)) { + *tty->flip.flag_buf_ptr = TTY_BREAK; + } + + if(break_pressed) { + if(time_before(jiffies, break_pressed + HZ * 5)) { + handle_sysrq(data & 0xffu, NULL, NULL, NULL); + break_pressed = 0; + continue; + } + break_pressed = 0; + } +#endif + + tty->flip.flag_buf_ptr++; + tty->flip.char_buf_ptr++; + tty->flip.count++; + } + + tty_flip_buffer_push(tty); +} + + +/** + * mux_drv_poll - Mux poll function. + * @unused: Unused variable + * + * This function periodically polls the Mux to check for new data. + */ +static void +mux_drv_poll(unsigned long unused) +{ + struct async_struct *info = mux_drv_info; + + if(info && info->tty && mux_drv_refcount) { + mux_read_fifo(info); + info->last_active = jiffies; + } + + mod_timer(&mux_drv_timer, jiffies + MUX_POLL_DELAY); +} + +/** + * mux_chars_in_buffer - Returns the number of chars present in the outbound fifo. + * @tty: Ptr to the tty structure. + * + * This function returns the number of chars sitting in the outbound fifo. + * [Note: This function is required for the normal_poll function in + * drivers/char/n_tty.c]. + */ +static int +mux_chars_in_buffer(struct tty_struct *tty) +{ + struct async_struct *info = (struct async_struct *)tty->driver_data; + return __raw_readl((unsigned long)info->iomem_base + + IO_DCOUNT_REG_OFFSET); +} + +/** + * mux_flush_buffer - Pause until the fifo is empty. + * @tty: Ptr to the tty structure. + * + * Since the mux fifo is self draining, this function just + * waits until the fifo has completely drained. + */ +static void +mux_flush_buffer(struct tty_struct *tty) +{ + while(mux_chars_in_buffer(tty)) + mdelay(MUX_FIFO_DRAIN_DELAY); +} + +/** + * mux_write_room - How much room is left in the fifo. + * @tty: Ptr to the tty structure. + * + * This function returns how much room is in the fifo for + * writing. + */ +static int +mux_write_room(struct tty_struct *tty) +{ + int room = mux_chars_in_buffer(tty); + if(room > MUX_FIFO_SIZE) + return 0; + + return MUX_FIFO_SIZE - room; +} + +/** + * mux_write - Write chars to the mux fifo. + * @tty: Ptr to the tty structure. + * @from_user: Is the buffer from user space? + * @buf: The buffer to write to the mux fifo. + * @count: The number of chars to write to the mux fifo. + * + * This function writes the data from buf to the mux fifo. + * [Note: we need the mux_flush_buffer() at the end of the + * function, otherwise the system will wait for LONG_MAX + * if the fifo is not empty when the TCSETSW ioctl is called.] + */ +static int +mux_write(struct tty_struct *tty, int from_user, + const unsigned char *buf, int count) +{ + int size, len, ret = count; + char buffer[MUX_FIFO_SIZE], *buf_p; + unsigned long iomem_base = + (unsigned long)((struct async_struct *)tty->driver_data)->iomem_base; + + while (count) { + size = mux_write_room(tty); + len = (size < count) ? size : count; + + if (from_user) { + copy_from_user(buffer, buf, len); + buf_p = buffer; + } else { + buf_p = (char *)buf; + } + + count -= len; + buf += len; + + if(size < MUX_MIN_FREE_SIZE) + mux_flush_buffer(tty); + + while(len--) { + __raw_writel(*buf_p++, iomem_base + IO_DATA_REG_OFFSET); + } + } + + mux_flush_buffer(tty); + return ret; +} + +/** + * mux_break - Turn break handling on or off. + * @tty: Ptr to the tty structure. + * @break_state: break value. + * + * This function must be defined because the send_break() in + * drivers/char/tty_io.c requires it. Currently the Serial Mux + * does nothing when this function is called. + */ +static void +mux_break(struct tty_struct *tty, int break_state) +{ +} + +/** + * get_serial_info - Return the serial structure to userspace. + * @info: Ptr to the async structure. + * @retinfo: Ptr to the users space buffer. + * + * Fill in this serial structure and return it to userspace. + */ +static int +get_serial_info(struct async_struct *info, + struct serial_struct *retinfo) +{ + struct serial_struct tmp; + + if (!retinfo) + return -EFAULT; + + memset(&tmp, 0, sizeof(tmp)); + tmp.line = info->line; + tmp.port = info->line; + tmp.flags = info->flags; + tmp.close_delay = info->close_delay; + return copy_to_user(retinfo, &tmp, sizeof(*retinfo)) ? -EFAULT : 0; +} + +/** + * get_modem_info - Return the modem control and status signals to userspace. + * @info: Ptr to the async structure. + * @value: The return buffer. + * + * The Serial MUX driver always returns these values to userspace: + * Data Terminal Ready, Carrier Detect, Clear To Send, + * Request To Send. + * + */ +static int +get_modem_info(struct async_struct *info, unsigned int *value) +{ + unsigned int result = TIOCM_DTR|TIOCM_CAR|TIOCM_CTS|TIOCM_RTS; + return copy_to_user(value, &result, sizeof(int)) ? -EFAULT : 0; +} + +/** + * get_lsr_info - Return line status register info to userspace. + * @info: Ptr to the async structure. + * @value: The return buffer. + * + * The Serial MUX driver always returns empty transmitter to userspace. + */ +static int +get_lsr_info(struct async_struct *info, unsigned int *value) +{ + unsigned int result = TIOCSER_TEMT; + return copy_to_user(value, &result, sizeof(int)) ? -EFAULT : 0; +} + +/** + * mux_ioctl - Handle driver specific ioctl commands. + * @tty: Ptr to the tty structure. + * @file: Unused. + * @cmd: The ioctl number. + * @arg: The ioctl argument. + * + * This function handles ioctls specific to the Serial MUX driver, + * or ioctls that need driver specific information. + * + */ +static int +mux_ioctl(struct tty_struct *tty, struct file *file, + unsigned int cmd, unsigned long arg) +{ + struct async_struct *info = (struct async_struct *) tty->driver_data; + + if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) && + (cmd != TIOCSERCONFIG) && (cmd != TIOCSERGSTRUCT) && + (cmd != TIOCMIWAIT) && (cmd != TIOCGICOUNT)) { + if (tty->flags & (1 << TTY_IO_ERROR)) + return -EIO; + } + + switch (cmd) { + case TIOCMGET: + return get_modem_info(info, (unsigned int *) arg); + + case TIOCMBIS: + case TIOCMBIC: + case TIOCMSET: + return 0; + + case TIOCGSERIAL: + return get_serial_info(info, (struct serial_struct *) arg); + + case TIOCSSERIAL: + return 0; + + case TIOCSERCONFIG: + return 0; + + case TIOCSERGETLSR: + return get_lsr_info(info, (unsigned int *) arg); + + case TIOCSERGSTRUCT: + if (copy_to_user((struct async_struct *) arg, + info, sizeof (struct async_struct))) + return -EFAULT; + return 0; + + case TIOCMIWAIT: + return 0; + + case TIOCGICOUNT: + return 0; + + case TIOCSERGWILD: + case TIOCSERSWILD: + /* "setserial -W" is called in Debian boot */ + printk("TIOCSER?WILD ioctl obsolete, ignored.\n"); + return 0; + + default: + return -ENOIOCTLCMD; + } + return 0; +} + +/** + * mux_close - Close the serial mux driver. + * @tty: Ptr to the tty structure. + * @filp: Unused. + * + * This routine is called when the serial port gets closed. First, we + * wait for the last remaining data to be sent. Then, we unlink its + * async structure from the interrupt chain if necessary, and we free + * that IRQ if nothing is left in the chain. + */ +static void +mux_close(struct tty_struct *tty, struct file *filp) +{ + struct async_struct *info = (struct async_struct *) tty->driver_data; + + mux_drv_refcount--; + if (mux_drv_refcount > 0) + return; + + info->flags |= ASYNC_CLOSING; + + /* + * Save the termios structure, since this port may have + * separate termios for callout and dialin. + */ + if (info->flags & ASYNC_NORMAL_ACTIVE) + info->state->normal_termios = *tty->termios; + if (info->flags & ASYNC_CALLOUT_ACTIVE) + info->state->callout_termios = *tty->termios; + + /* + * At this point we stop accepting input. To do this, we + * disable the receive line status interrupts, and tell the + * interrupt driver to stop checking the data ready bit in the + * line status register. + */ + + /* XXX CP: make mask for receive !!! */ + + if (tty->driver.flush_buffer) + tty->driver.flush_buffer(tty); + if (tty->ldisc.flush_buffer) + tty->ldisc.flush_buffer(tty); + tty->closing = 0; + info->event = 0; + info->tty = 0; + mux_drv_info = NULL; + if (info->blocked_open) { + if (info->close_delay) { + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(info->close_delay); + } + wake_up_interruptible(&info->open_wait); + } + info->flags &= ~(ASYNC_NORMAL_ACTIVE | ASYNC_CALLOUT_ACTIVE | + ASYNC_CLOSING); + wake_up_interruptible(&info->close_wait); + MOD_DEC_USE_COUNT; +} + +/** + * get_async_struct - Get the async structure. + * @line: Minor number of the tty device. + * @ret_info: Ptr to the newly allocated async structure. + * + * Allocate and return an async structure for the specified + * tty device line. + */ +static int +get_async_struct(int line, struct async_struct **ret_info) +{ + struct async_struct *info; + + info = kmalloc(sizeof (struct async_struct), GFP_KERNEL); + if (!info) { + return -ENOMEM; + } + memset(info, 0, sizeof (struct async_struct)); + init_waitqueue_head(&info->open_wait); + init_waitqueue_head(&info->close_wait); + init_waitqueue_head(&info->delta_msr_wait); + info->magic = SERIAL_MAGIC; + info->port = 0; + info->flags = 0; + info->io_type = 0; + info->iomem_base = (void *)(hpa + MUX_OFFSET); + info->iomem_reg_shift = 0; + info->xmit_fifo_size = MUX_FIFO_SIZE; + info->line = line; + info->tqueue.routine = NULL; + info->tqueue.data = info; + info->state = NULL; + *ret_info = info; + return 0; +} + +/** + * mux_open - Open the serial mux driver. + * @tty: Ptr to the tty structure. + * @filp: Unused. + * + * This routine is called whenever a serial port is opened. It + * enables interrupts for a serial port, linking in its async structure + * into the IRQ chain. It also performs the serial-specific + * initialization for the tty structure. + */ +static int +mux_open(struct tty_struct *tty, struct file *filp) +{ + struct async_struct *info; + int retval, line; + + MOD_INC_USE_COUNT; + line = MINOR(tty->device) - tty->driver.minor_start; + if ((line < 0) || (line >= NR_PORTS)) { + MOD_DEC_USE_COUNT; + return -ENODEV; + } + retval = get_async_struct(line, &info); + if (retval) { + MOD_DEC_USE_COUNT; + return retval; + } + + tty->driver_data = info; + info->tty = tty; + mux_drv_info = info; + info->tty->low_latency = 0; + info->session = current->session; + info->pgrp = current->pgrp; + mux_drv_refcount++; + return 0; +} + +/** + * mux_probe - Determine if the Serial Mux should claim this device. + * @dev: The parisc device. + * + * Deterimine if the Sserial Mux should claim this chip (return 0) + * or not (return 1). + */ +static int __init +mux_probe(struct parisc_device *dev) +{ + if(hpa) { + printk(KERN_INFO "Serial MUX driver already registered, skipping additonal MUXes for now.\n"); + return 1; + } + + init_timer(&mux_drv_timer); + mux_drv_timer.function = mux_drv_poll; + mod_timer(&mux_drv_timer, jiffies + MUX_POLL_DELAY); + + hpa = dev->hpa; + printk(KERN_INFO "Serial MUX driver version %s at 0x%lx\n", + mux_drv_version, hpa); + + /* Initialize the tty_driver structure */ + + memset(&mux_drv_driver, 0, sizeof (struct tty_driver)); + mux_drv_driver.magic = TTY_DRIVER_MAGIC; + mux_drv_driver.driver_name = "Serial MUX driver"; +#ifdef CONFIG_DEVFS_FS + mux_drv_driver.name = "ttb/%d"; +#else + mux_drv_driver.name = "ttyB"; +#endif + mux_drv_driver.major = MUX_MAJOR; + mux_drv_driver.minor_start = 0; + mux_drv_driver.num = NR_PORTS; + mux_drv_driver.type = TTY_DRIVER_TYPE_SERIAL; + mux_drv_driver.subtype = SERIAL_TYPE_NORMAL; + mux_drv_driver.init_termios = tty_std_termios; + mux_drv_driver.init_termios.c_cflag = + B9600 | CS8 | CREAD | HUPCL | CLOCAL; + mux_drv_driver.flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; + mux_drv_driver.refcount = &mux_drv_refcount; + mux_drv_driver.table = mux_drv_table; + mux_drv_driver.termios = mux_drv_termios; + mux_drv_driver.termios_locked = mux_drv_termios_locked; + + mux_drv_driver.open = mux_open; + mux_drv_driver.close = mux_close; + mux_drv_driver.write = mux_write; + mux_drv_driver.put_char = NULL; + mux_drv_driver.flush_chars = NULL; + mux_drv_driver.write_room = mux_write_room; + mux_drv_driver.chars_in_buffer = mux_chars_in_buffer; + mux_drv_driver.flush_buffer = mux_flush_buffer; + mux_drv_driver.ioctl = mux_ioctl; + mux_drv_driver.throttle = NULL; + mux_drv_driver.unthrottle = NULL; + mux_drv_driver.set_termios = NULL; + mux_drv_driver.stop = NULL; + mux_drv_driver.start = NULL; + mux_drv_driver.hangup = NULL; + mux_drv_driver.break_ctl = mux_break; + mux_drv_driver.send_xchar = NULL; + mux_drv_driver.wait_until_sent = NULL; + mux_drv_driver.read_proc = NULL; + + if (tty_register_driver(&mux_drv_driver)) + panic("Could not register the serial MUX driver\n"); + + return 0; +} + +static struct parisc_device_id mux_tbl[] = { + { HPHW_A_DIRECT, HVERSION_REV_ANY_ID, HVERSION_ANY_ID, 0x0000D }, + { 0, } +}; + +MODULE_DEVICE_TABLE(parisc, mux_tbl); + +static struct parisc_driver mux_driver = { + name: "Serial MUX driver", + id_table: mux_tbl, + probe: mux_probe, +}; + +/** + * mux_init - Serial MUX initalization procedure. + * + * Register the Serial MUX driver. + */ +static int __init mux_init(void) +{ + return register_parisc_driver(&mux_driver); +} + +/** + * mux_exit - Serial MUX cleanup procedure. + * + * Unregister the Serial MUX driver from the tty layer. + */ +static void __exit mux_exit(void) +{ + int status = tty_unregister_driver(&mux_drv_driver); + if(status) { + printk("MUX: failed to unregister the Serial MUX driver (%d)\n", status); + } +} + +module_init(mux_init); +module_exit(mux_exit); +MODULE_DESCRIPTION("Serial MUX driver"); +MODULE_AUTHOR("Ryan Bradetich"); +MODULE_LICENSE("GPL"); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/char/pdc_console.c linux/drivers/char/pdc_console.c --- linux-2.4.20/drivers/char/pdc_console.c Thu Nov 28 16:53:12 2002 +++ linux/drivers/char/pdc_console.c Fri Nov 15 05:53:55 2002 @@ -625,7 +625,7 @@ #else pdc_drv_driver.name = "ttyB"; #endif - pdc_drv_driver.major = PDCCONS_MAJOR; + pdc_drv_driver.major = MUX_MAJOR; pdc_drv_driver.minor_start = 0; pdc_drv_driver.num = NR_PORTS; pdc_drv_driver.type = TTY_DRIVER_TYPE_SERIAL; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/char/pty.c linux/drivers/char/pty.c --- linux-2.4.20/drivers/char/pty.c Fri Aug 2 18:39:43 2002 +++ linux/drivers/char/pty.c Tue Jan 28 02:13:33 2003 @@ -380,6 +380,10 @@ pty_driver.init_termios.c_iflag = 0; pty_driver.init_termios.c_oflag = 0; pty_driver.init_termios.c_cflag = B38400 | CS8 | CREAD; +#ifdef __hppa__ + /* HACK HACK HACK: workaround for gcc-3.2 compiler bug */ + barrier(); +#endif pty_driver.init_termios.c_lflag = 0; pty_driver.flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW; pty_driver.refcount = &pty_refcount; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/char/serial.c linux/drivers/char/serial.c --- linux-2.4.20/drivers/char/serial.c Thu Nov 28 16:53:12 2002 +++ linux/drivers/char/serial.c Sun Feb 9 02:13:34 2003 @@ -236,6 +236,14 @@ #include #include +#ifdef CONFIG_GSC +#include +#endif + +#ifdef CONFIG_SUPERIO +#include /* for superio_serial_init() proto */ +#endif + #if defined(CONFIG_MAC_SERIAL) #define SERIAL_DEV_OFFSET ((_machine == _MACH_prep || _machine == _MACH_chrp) ? 0 : 2) #else @@ -257,6 +265,12 @@ static struct timer_list serial_timer; +#ifdef CONFIG_SERIAL_SHARE_IRQ +#define HP_DIVA_CHECKTIME (1*HZ) +static struct timer_list hp_diva_timer; +static int hp_diva_count = 0; +#endif /* CONFIG_SERIAL_SHARE_IRQ */ + /* serial subtype definitions */ #ifndef SERIAL_TYPE_NORMAL #define SERIAL_TYPE_NORMAL 1 @@ -793,6 +807,41 @@ } #ifdef CONFIG_SERIAL_SHARE_IRQ +static inline int is_hp_diva_info(struct async_struct *info) +{ + struct pci_dev *dev = info->state->dev; + return (dev && dev->vendor == PCI_VENDOR_ID_HP && + dev->device == PCI_DEVICE_ID_HP_SAS); +} + +static inline int is_hp_diva_irq(int irq) +{ + struct async_struct *info = IRQ_ports[irq]; + return (info && is_hp_diva_info(info)); +} + +/* + * It is possible to "use up" transmit empty interrupts in some + * cases with HP Diva cards. Figure out if there _should_ be a + * transmit interrupt and if so, return a suitable iir value so + * that we can recover when called from rs_timer(). + */ +static inline int hp_diva_iir(int irq, struct async_struct *info) +{ + int iir = serial_in(info, UART_IIR); + + if (is_hp_diva_info(info) && + (iir & UART_IIR_NO_INT) != 0 && + (info->IER & UART_IER_THRI) != 0 && + (info->xmit.head != info->xmit.tail || info->x_char) && + (serial_in(info, UART_LSR) & UART_LSR_THRE) != 0) { + iir &= ~(UART_IIR_ID | UART_IIR_NO_INT); + iir |= UART_IIR_THRI; + } + + return iir; +} + /* * This is the serial driver's generic interrupt routine */ @@ -823,7 +872,7 @@ do { if (!info->tty || - ((iir=serial_in(info, UART_IIR)) & UART_IIR_NO_INT)) { + ((iir=hp_diva_iir(irq, info)) & UART_IIR_NO_INT)) { if (!end_mark) end_mark = info; goto next; @@ -1087,9 +1136,11 @@ #ifdef CONFIG_SERIAL_SHARE_IRQ if (info->next_port) { do { - serial_out(info, UART_IER, 0); - info->IER |= UART_IER_THRI; - serial_out(info, UART_IER, info->IER); + if (!is_hp_diva_info(info)) { + serial_out(info, UART_IER, 0); + info->IER |= UART_IER_THRI; + serial_out(info, UART_IER, info->IER); + } info = info->next_port; } while (info); #ifdef CONFIG_SERIAL_MULTIPORT @@ -1120,6 +1171,35 @@ } } +#ifdef CONFIG_SERIAL_SHARE_IRQ +/* + * This subroutine is called when the hp_diva_timer goes off. In certain + * cases (multiple gettys in particular) Diva seems + * to issue only a single transmit empty interrupt instead of one each + * time THRI is enabled, causing interrupts to be "used up". This + * serves to poll the Diva UARTS more frequently than rs_timer() does. + */ +static void hp_diva_check(unsigned long dummy) +{ + static unsigned long last_strobe; + unsigned long flags; + int i; + + if (time_after_eq(jiffies, last_strobe + HP_DIVA_CHECKTIME)) { + for (i = 0; i < NR_IRQS; i++) { + if (is_hp_diva_irq(i)) { + save_flags(flags); cli(); + rs_interrupt(i, NULL, NULL); + restore_flags(flags); + } + } + } + last_strobe = jiffies; + mod_timer(&hp_diva_timer, jiffies + HP_DIVA_CHECKTIME); +} +#endif /* CONFIG_SERIAL_SHARE_IRQ */ + + /* * --------------------------------------------------------------- * Low level utility subroutines for the serial driver: routines to @@ -4245,6 +4325,7 @@ return 0; } +#ifdef CONFIG_SERIAL_SHARE_IRQ /* * HP's Remote Management Console. The Diva chip came in several * different versions. N-class, L2000 and A500 have two Diva chips, each @@ -4276,8 +4357,15 @@ break; } + if (hp_diva_count++ == 0) { + init_timer(&hp_diva_timer); + hp_diva_timer.function = hp_diva_check; + mod_timer(&hp_diva_timer, jiffies + HP_DIVA_CHECKTIME); + } + return 0; } +#endif /* CONFIG_SERIAL_SHARE_IRQ */ static int __devinit pci_xircom_fn(struct pci_dev *dev, struct pci_board *board, int enable) @@ -4531,7 +4619,8 @@ if (ent->driver_data == pbn_default && serial_pci_guess_board(dev, board)) return -ENODEV; - else if (serial_pci_guess_board(dev, &tmp) == 0) { + else if ((board->num_ports == 1) && + serial_pci_guess_board(dev, &tmp) == 0) { printk(KERN_INFO "Redundant entry in serial pci_table. " "Please send the output of\n" "lspci -vv, this message (%04x,%04x,%04x,%04x)\n" @@ -4885,6 +4974,7 @@ 0x1048, 0x1500, 0, 0, pbn_b1_1_115200 }, + /* SGI IOC3 board */ { PCI_VENDOR_ID_SGI, PCI_DEVICE_ID_SGI_IOC3, 0xFF00, 0, 0, 0, pbn_sgi_ioc3 }, @@ -5537,11 +5627,20 @@ tty_register_devfs(&callout_driver, 0, callout_driver.minor_start + state->line); } +#ifdef CONFIG_SERIAL_GSC + probe_serial_gsc(); +#endif +#ifdef CONFIG_SUPERIO + superio_serial_init(); +#endif #ifdef ENABLE_SERIAL_PCI probe_serial_pci(); #endif #ifdef ENABLE_SERIAL_PNP - probe_serial_pnp(); + probe_serial_pnp(); +#endif +#ifdef CONFIG_SERIAL_CONSOLE + serial_console_init(); #endif return 0; } @@ -5714,6 +5813,10 @@ /* printk("Unloading %s: version %s\n", serial_name, serial_version); */ del_timer_sync(&serial_timer); +#ifdef CONFIG_SERIAL_SHARE_IRQ + if (hp_diva_count > 0) + del_timer_sync(&hp_diva_timer); +#endif /* CONFIG_SERIAL_SHARE_IRQ */ save_flags(flags); cli(); remove_bh(SERIAL_BH); if ((e1 = tty_unregister_driver(&serial_driver))) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/gsc/dino.c linux/drivers/gsc/dino.c --- linux-2.4.20/drivers/gsc/dino.c Thu Nov 28 16:53:12 2002 +++ linux/drivers/gsc/dino.c Thu Dec 5 05:53:52 2002 @@ -251,7 +251,7 @@ unsigned long flags; \ spin_lock_irqsave(&(DINO_DEV(d)->dinosaur_pen), flags); \ /* tell HW which IO Port address */ \ - gsc_writel((u32) addr & ~3, d->base_addr + DINO_PCI_ADDR); \ + gsc_writel((u32) addr, d->base_addr + DINO_PCI_ADDR); \ /* generate I/O PORT read cycle */ \ v = gsc_read##type(d->base_addr+DINO_IO_DATA+(addr&mask)); \ spin_unlock_irqrestore(&(DINO_DEV(d)->dinosaur_pen), flags); \ @@ -267,7 +267,7 @@ { \ unsigned long flags; \ spin_lock_irqsave(&(DINO_DEV(d)->dinosaur_pen), flags); \ - /* tell HW which CFG address */ \ + /* tell HW which IO port address */ \ gsc_writel((u32) addr, d->base_addr + DINO_PCI_ADDR); \ /* generate cfg write cycle */ \ gsc_write##type(cpu_to_le##size(val), d->base_addr+DINO_IO_DATA+(addr&mask)); \ @@ -436,7 +436,7 @@ if (mask) { if (--ilr_loop > 0) goto ilr_again; - printk("Dino %lx: stuck interrupt %d\n", dino_dev->hba.base_addr, mask); + printk("Dino %lx: IRQ base %d, stuck IRQ lines? 0x%x\n", dino_dev->hba.base_addr, dino_dev->dino_region->data.irqbase, mask); } } @@ -467,7 +467,7 @@ * to set up the addresses of the devices on this bus. */ #define _8MB 0x00800000UL -static void __init +static int __init dino_card_setup(struct pci_bus *bus, unsigned long base_addr) { int i; @@ -482,7 +482,7 @@ 0xffffffffffffffffUL &~ _8MB, _8MB, NULL, NULL) < 0) { printk(KERN_WARNING "Dino: Failed to allocate memory region\n"); - return; + return -ENODEV; } bus->resource[1] = res; bus->resource[0] = &(dino_dev->hba.io_space); @@ -495,6 +495,7 @@ gsc_writel(1 << i, base_addr + DINO_IO_ADDR_EN); pcibios_assign_unassigned_resources(bus); + return 0; } static void __init diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/gsc/lasi.c linux/drivers/gsc/lasi.c --- linux-2.4.20/drivers/gsc/lasi.c Thu Nov 28 16:53:12 2002 +++ linux/drivers/gsc/lasi.c Wed Sep 11 16:53:31 2002 @@ -26,7 +26,7 @@ #include #include #include - +#include #include "busdevice.h" @@ -77,7 +77,10 @@ /* Resets */ /* gsc_writel(0xFFFFFFFF, lasi_base+0x2000);*/ /* Parallel */ - gsc_writel(0xFFFFFFFF, lasi_base+0x4004); /* Audio */ + + if(pdc_add_valid(lasi_base+0x4004) == PDC_OK) + gsc_writel(0xFFFFFFFF, lasi_base+0x4004); /* Audio */ + /* gsc_writel(0xFFFFFFFF, lasi_base+0x5000);*/ /* Serial */ /* gsc_writel(0xFFFFFFFF, lasi_base+0x6000);*/ /* SCSI */ gsc_writel(0xFFFFFFFF, lasi_base+0x7000); /* LAN */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/hil/hil_kbd.c linux/drivers/hil/hil_kbd.c --- linux-2.4.20/drivers/hil/hil_kbd.c Thu Nov 28 16:53:12 2002 +++ linux/drivers/hil/hil_kbd.c Wed Nov 13 05:53:58 2002 @@ -431,9 +431,9 @@ struct serio_dev hil_kbd_serio_dev = { - connect: hil_kbd_connect, - disconnect: hil_kbd_disconnect, - interrupt: hil_kbd_interrupt + .connect = hil_kbd_connect, + .disconnect = hil_kbd_disconnect, + .interrupt = hil_kbd_interrupt }; static int __init hil_kbd_init(void) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/hil/hil_ptr.c linux/drivers/hil/hil_ptr.c --- linux-2.4.20/drivers/hil/hil_ptr.c Thu Nov 28 16:53:12 2002 +++ linux/drivers/hil/hil_ptr.c Wed Nov 13 05:53:58 2002 @@ -386,9 +386,9 @@ struct serio_dev hil_ptr_serio_dev = { - connect: hil_ptr_connect, - disconnect: hil_ptr_disconnect, - interrupt: hil_ptr_interrupt + .connect = hil_ptr_connect, + .disconnect = hil_ptr_disconnect, + .interrupt = hil_ptr_interrupt }; static int __init hil_ptr_init(void) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/hil/hilkbd.c linux/drivers/hil/hilkbd.c --- linux-2.4.20/drivers/hil/hilkbd.c Thu Nov 28 16:53:12 2002 +++ linux/drivers/hil/hilkbd.c Wed Nov 13 05:53:58 2002 @@ -348,9 +348,9 @@ MODULE_DEVICE_TABLE(parisc, hil_tbl); static struct parisc_driver hil_driver = { - name: "HIL", - id_table: hil_tbl, - probe: hil_init_chip, + .name = "HIL", + .id_table = hil_tbl, + .probe = hil_init_chip, }; #endif /* CONFIG_PARISC */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/hil/hp_sdc.c linux/drivers/hil/hp_sdc.c --- linux-2.4.20/drivers/hil/hp_sdc.c Thu Nov 28 16:53:12 2002 +++ linux/drivers/hil/hp_sdc.c Wed Nov 13 05:53:58 2002 @@ -745,10 +745,10 @@ static struct parisc_device_id hp_sdc_tbl[] = { { - hw_type: HPHW_FIO, - hversion_rev: HVERSION_REV_ANY_ID, - hversion: HVERSION_ANY_ID, - sversion: 0x73, + .hw_type = HPHW_FIO, + .hversion_rev = HVERSION_REV_ANY_ID, + .hversion = HVERSION_ANY_ID, + .sversion = 0x73, }, { 0, } }; @@ -758,9 +758,9 @@ static int __init hp_sdc_init(struct parisc_device *d); static struct parisc_driver hp_sdc_driver = { - name: "HP SDC", - id_table: hp_sdc_tbl, - probe: hp_sdc_init, + .name = "HP SDC", + .id_table = hp_sdc_tbl, + .probe = hp_sdc_init, }; static int __init hp_sdc_init(struct parisc_device *d) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/hil/hp_sdc_rtc.c linux/drivers/hil/hp_sdc_rtc.c --- linux-2.4.20/drivers/hil/hp_sdc_rtc.c Thu Nov 28 16:53:12 2002 +++ linux/drivers/hil/hp_sdc_rtc.c Wed Nov 13 05:53:58 2002 @@ -674,20 +674,20 @@ } static struct file_operations hp_sdc_rtc_fops = { - owner: THIS_MODULE, - llseek: hp_sdc_rtc_llseek, - read: hp_sdc_rtc_read, - poll: hp_sdc_rtc_poll, - ioctl: hp_sdc_rtc_ioctl, - open: hp_sdc_rtc_open, - release: hp_sdc_rtc_release, - fasync: hp_sdc_rtc_fasync, + .owner = THIS_MODULE, + .llseek = hp_sdc_rtc_llseek, + .read = hp_sdc_rtc_read, + .poll = hp_sdc_rtc_poll, + .ioctl = hp_sdc_rtc_ioctl, + .open = hp_sdc_rtc_open, + .release = hp_sdc_rtc_release, + .fasync = hp_sdc_rtc_fasync, }; static struct miscdevice hp_sdc_rtc_dev = { - minor: RTC_MINOR, - name: "rtc", - fops: &hp_sdc_rtc_fops + .minor = RTC_MINOR, + .name = "rtc", + .fops = &hp_sdc_rtc_fops }; static int __init hp_sdc_rtc_init(void) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/ide/ns87415.c linux/drivers/ide/ns87415.c --- linux-2.4.20/drivers/ide/ns87415.c Tue Jun 20 08:52:36 2000 +++ linux/drivers/ide/ns87415.c Sun Jul 15 14:02:06 2001 @@ -24,6 +24,10 @@ #include +#if defined(__hppa__) && defined(CONFIG_SUPERIO) +#include +#endif + static unsigned int ns87415_count = 0, ns87415_control[MAX_HWIFS] = { 0 }; /* @@ -180,7 +184,11 @@ outb(0x60, hwif->dma_base + 2); if (!using_inta) +#if defined(__hppa__) && defined(CONFIG_SUPERIO) + hwif->irq = superio_get_ide_irq(); /* legacy mode */ +#else hwif->irq = hwif->channel ? 15 : 14; /* legacy mode */ +#endif else if (!hwif->irq && hwif->mate && hwif->mate->irq) hwif->irq = hwif->mate->irq; /* share IRQ with mate */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/net/acenic.c linux/drivers/net/acenic.c --- linux-2.4.20/drivers/net/acenic.c Thu Nov 28 16:53:13 2002 +++ linux/drivers/net/acenic.c Fri Nov 22 06:00:49 2002 @@ -188,6 +188,11 @@ #define ACE_MOD_DEC_USE_COUNT do{} while(0) #endif +#if LINUX_VERSION_CODE < 0x20414 +#define local_irq_save(flags) do{__save_flags(flags) ; \ + __cli();} while(0) +#define local_irq_restore(flags) __restore_flags(flags) +#endif #if LINUX_VERSION_CODE >= 0x2051c #define ace_sync_irq(irq) synchronize_irq(irq) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/net/eepro100.c linux/drivers/net/eepro100.c --- linux-2.4.20/drivers/net/eepro100.c Thu Nov 28 16:53:13 2002 +++ linux/drivers/net/eepro100.c Thu Nov 14 05:54:46 2002 @@ -41,8 +41,8 @@ static int txdmacount = 128; static int rxdmacount /* = 0 */; -#if defined(__ia64__) || defined(__alpha__) || defined(__sparc__) || defined(__mips__) || \ - defined(__arm__) +#if defined(__ia64__) || defined(__alpha__) || defined(__sparc__) || \ + defined(__mips__) || defined(__arm__) || defined(__hppa__) /* align rx buffers to 2 bytes so that IP header is aligned */ # define rx_align(skb) skb_reserve((skb), 2) # define RxFD_ALIGNMENT __attribute__ ((aligned (2), packed)) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/net/lasi_82596.c linux/drivers/net/lasi_82596.c --- linux-2.4.20/drivers/net/lasi_82596.c Thu Nov 28 16:53:14 2002 +++ linux/drivers/net/lasi_82596.c Thu Nov 14 05:54:47 2002 @@ -97,7 +97,7 @@ #include static char version[] __devinitdata = - "82596.c $Revision: 1.29 $\n"; + "82596.c $Revision: 1.30 $\n"; /* DEBUG flags */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/net/pcnet32.c linux/drivers/net/pcnet32.c --- linux-2.4.20/drivers/net/pcnet32.c Thu Nov 28 16:53:14 2002 +++ linux/drivers/net/pcnet32.c Thu Nov 14 05:54:47 2002 @@ -1,5 +1,5 @@ -/* pcnet32.c: An AMD PCnet32 ethernet driver for linux. */ -/* +/* pcnet32.c: An AMD PCnet32 ethernet driver for linux. + * * Copyright 1996-1999 Thomas Bogendoerfer * * Derived from the lance driver written 1993,1994,1995 by Donald Becker. @@ -11,24 +11,14 @@ * of the GNU General Public License, incorporated herein by reference. * * This driver is for PCnet32 and PCnetPCI based ethercards - */ -/************************************************************************** - * 23 Oct, 2000. - * Fixed a few bugs, related to running the controller in 32bit mode. - * - * Carsten Langgaard, carstenl@mips.com - * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. * - *************************************************************************/ + **************************************************************************/ #define DRV_NAME "pcnet32" -#define DRV_VERSION "1.27b" +#define DRV_VERSION "1.27c" #define DRV_RELDATE "01.10.2002" #define PFX DRV_NAME ": " -static const char *version = -DRV_NAME ".c:v" DRV_VERSION " " DRV_RELDATE " tsbogend@alpha.franken.de\n"; - #include #include @@ -55,6 +45,9 @@ #include #include +static const char version[] __devinitdata = +DRV_NAME ".c:v" DRV_VERSION " " DRV_RELDATE " tsbogend@alpha.franken.de\n"; + /* * PCI device identifiers for "new style" Linux PCI Device Drivers */ @@ -201,7 +194,7 @@ * v1.25kf Added No Interrupt on successful Tx for some Tx's * v1.26 Converted to pci_alloc_consistent, Jamey Hicks / George France * - * - Fixed a few bugs, related to running the controller in 32bit mode. + * v1.26a Fixed a few bugs, related to running the controller in 32bit mode. * 23 Oct, 2000. Carsten Langgaard, carstenl@mips.com * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. * v1.26p Fix oops on rmmod+insmod; plug i/o resource leak - Paul Gortmaker @@ -216,6 +209,8 @@ * clean up and using new mii module * v1.27b Sep 30 2002 Kent Yoder * Added timer for cable connection state changes. + * v1.27c Sat Apr 13 2002 Helge Deller + * typo-fixes & cleanups */ @@ -694,7 +689,7 @@ } dev->base_addr = ioaddr; - if (request_region(ioaddr, PCNET32_TOTAL_SIZE, chipname) == NULL) + if (!request_region(ioaddr, PCNET32_TOTAL_SIZE, chipname)) return -EBUSY; /* pci_alloc_consistent returns page-aligned memory, so we do not have to check the alignment */ @@ -1731,7 +1726,8 @@ pcnet32_probe_vlbus(); if (cards_found) - printk(KERN_INFO PFX "%d cards_found.\n", cards_found); + printk(KERN_INFO PFX "%d card%s found.\n", cards_found, + cards_found==1 ? "":"s"); return cards_found ? 0 : -ENODEV; } diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/net/tulip/media.c linux/drivers/net/tulip/media.c --- linux-2.4.20/drivers/net/tulip/media.c Fri Aug 2 18:39:44 2002 +++ linux/drivers/net/tulip/media.c Fri Jan 24 02:13:48 2003 @@ -173,6 +173,24 @@ } +/* + * Reset the phy according to 802.3 spec "22.2.4 Management functions" + * References to DP83840A are just for convenience. + */ +static void tulip_mii_recover(struct net_device *dev, int phy_num, long ioaddr) +{ + int timeout = 20; /* 2 ms */ + + inl(ioaddr); /* flush posted writes */ + udelay(500); /* Sect 3.10.3 in DP83840A.pdf (p39) */ + + /* Section 4.2 in DP83840A.pdf (p43) */ + while (timeout-- && + (tulip_mdio_read (dev, phy_num, MII_BMCR) & BMCR_RESET)) + udelay(100); +} + + /* Set up the transceiver control registers for the selected media type. */ void tulip_select_media(struct net_device *dev, int startup) { @@ -215,6 +233,8 @@ dev->name); for (i = 0; i < rst[0]; i++) outl(get_u16(rst + 1 + (i<<1)) << 16, ioaddr + CSR15); + inl(ioaddr + CSR15); /* flush writes */ + mdelay(1); } if (tulip_debug > 1) printk(KERN_DEBUG "%s: 21143 non-MII %s transceiver control " @@ -266,9 +286,11 @@ u16 *reset_sequence = &((u16*)(p+3))[init_length]; int reset_length = p[2 + init_length*2]; misc_info = reset_sequence + reset_length; - if (startup) + if (startup) { for (i = 0; i < reset_length; i++) outl(get_u16(&reset_sequence[i]) << 16, ioaddr + CSR15); + tulip_mii_recover(dev, phy_num, ioaddr+CSR15); + } for (i = 0; i < init_length; i++) outl(get_u16(&init_sequence[i]) << 16, ioaddr + CSR15); } else { @@ -280,10 +302,15 @@ outl(mtable->csr12dir | 0x100, ioaddr + CSR12); for (i = 0; i < reset_length; i++) outl(reset_sequence[i], ioaddr + CSR12); + + tulip_mii_recover(dev, phy_num, ioaddr + CSR12); } for (i = 0; i < init_length; i++) outl(init_sequence[i], ioaddr + CSR12); + + inl(ioaddr + CSR12); /* flush posted writes */ } + tmp_info = get_u16(&misc_info[1]); if (tmp_info) tp->advertising[phy_num] = tmp_info | 1; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/net/wireless/airo.c linux/drivers/net/wireless/airo.c --- linux-2.4.20/drivers/net/wireless/airo.c Thu Nov 28 16:53:14 2002 +++ linux/drivers/net/wireless/airo.c Fri Dec 6 05:53:52 2002 @@ -1964,9 +1964,8 @@ u16 tmp[4]; } hdr; #pragma pack() - u16 gap; u16 tmpbuf[4]; - u16 *buffer; + u16 *buffer=NULL; fid = IN4500( apriv, RXFID ); @@ -2011,15 +2010,17 @@ } else hdrlen = ETH_ALEN * 2; - skb = dev_alloc_skb( len + hdrlen + 2 ); + skb = dev_alloc_skb( len + hdrlen + 2 + 2 ); if ( !skb ) { apriv->stats.rx_dropped++; len = 0; } } if (len) { + skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */ buffer = (u16*)skb_put (skb, len + hdrlen); if (apriv->flags & FLAG_802_11) { + u16 gap; buffer[0] = fc; bap_read (apriv, buffer + 1, hdrlen - 2, BAP0); if (hdrlen == 24) @@ -4007,6 +4008,10 @@ const struct pci_device_id *pent) { struct net_device *dev; + + if (pci_enable_device(pdev)) + return -ENODEV; + pci_set_master(pdev); dev = init_airo_card(pdev->irq, pdev->resource[2].start, 0); if (!dev) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/pci/setup-bus.c linux/drivers/pci/setup-bus.c --- linux-2.4.20/drivers/pci/setup-bus.c Thu Nov 28 16:53:14 2002 +++ linux/drivers/pci/setup-bus.c Sun Sep 1 16:53:39 2002 @@ -35,13 +35,13 @@ #define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1)) -static int __init +static void __init pbus_assign_resources_sorted(struct pci_bus *bus) { struct list_head *ln; struct resource *res; struct resource_list head, *list, *tmp; - int idx, found_vga = 0; + int idx; head.next = NULL; for (ln=bus->devices.next; ln != &bus->devices; ln=ln->next) { @@ -57,13 +57,15 @@ have VGA behind them. */ if (class == PCI_CLASS_DISPLAY_VGA || class == PCI_CLASS_NOT_DEFINED_VGA) - found_vga = 1; + bus->bridge_ctl |= PCI_BRIDGE_CTL_VGA; +#ifndef __hppa__ else if (class >> 8 != PCI_BASE_CLASS_BRIDGE) { pci_read_config_word(dev, PCI_COMMAND, &cmd); cmd &= ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER); pci_write_config_word(dev, PCI_COMMAND, cmd); } +#endif pdev_sort_resources(dev, &head); } @@ -77,7 +79,7 @@ kfree(tmp); } - return found_vga; + return; } /* Initialize bridges with base/limit values we have collected. @@ -159,10 +161,7 @@ } pci_write_config_dword(bridge, PCI_PREF_MEMORY_BASE, l); - /* Check if we have VGA behind the bridge. - Enable ISA in either case (FIXME!). */ - l = (bus->resource[0]->flags & IORESOURCE_BUS_HAS_VGA) ? 0x0c : 0x04; - pci_write_config_word(bridge, PCI_BRIDGE_CONTROL, l); + pci_write_config_word(bridge, PCI_BRIDGE_CONTROL, bus->bridge_ctl); } /* Check whether the bridge supports optional I/O and @@ -176,7 +175,7 @@ struct pci_dev *bridge = bus->self; struct resource *b_res; - if (!bridge || (bridge->class >> 8) != PCI_CLASS_BRIDGE_PCI) + if (!bridge) return; b_res = &bridge->resource[PCI_BRIDGE_RESOURCES]; @@ -228,8 +227,10 @@ struct resource *r = &dev->resource[i]; unsigned long r_size; - if (r->parent || !(r->flags & IORESOURCE_IO)) + if (!(r->flags & IORESOURCE_IO)) continue; + if (r->parent) + BUG(); r_size = r->end - r->start + 1; if (r_size < 0x400) @@ -281,8 +282,10 @@ struct resource *r = &dev->resource[i]; unsigned long r_size; - if (r->parent || (r->flags & mask) != type) + if ((r->flags & mask) != type) continue; + if (r->parent) + BUG(); r_size = r->end - r->start + 1; /* For bridges size != alignment */ align = (i < PCI_BRIDGE_RESOURCES) ? r_size : r->start; @@ -350,8 +353,7 @@ mask = type = IORESOURCE_MEM; /* If the bridge supports prefetchable range, size it separately. */ - if (bus->resource[2] && - bus->resource[2]->flags & IORESOURCE_PREFETCH) { + if (bus->resource[2]->flags & IORESOURCE_PREFETCH) { pbus_size_mem(bus, IORESOURCE_PREFETCH, IORESOURCE_PREFETCH); mask |= IORESOURCE_PREFETCH; /* Size non-prefetch only. */ } @@ -362,18 +364,21 @@ pbus_assign_resources(struct pci_bus *bus) { struct list_head *ln; - int found_vga = pbus_assign_resources_sorted(bus); - if (found_vga) { + pbus_assign_resources_sorted(bus); + + if (bus->bridge_ctl & PCI_BRIDGE_CTL_VGA) { struct pci_bus *b; /* Propagate presence of the VGA to upstream bridges */ for (b = bus; b->parent; b = b->parent) { - b->resource[0]->flags |= IORESOURCE_BUS_HAS_VGA; + b->bridge_ctl |= PCI_BRIDGE_CTL_VGA; } } for (ln=bus->children.next; ln != &bus->children; ln=ln->next) { struct pci_bus *b = pci_bus_b(ln); + + b->bridge_ctl = PCI_BRIDGE_CTL_NO_ISA; pbus_assign_resources(b); pci_setup_bridge(b); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/scsi/Config.in linux/drivers/scsi/Config.in --- linux-2.4.20/drivers/scsi/Config.in Thu Nov 28 16:53:14 2002 +++ linux/drivers/scsi/Config.in Thu Nov 14 05:55:04 2002 @@ -145,27 +145,46 @@ bool ' use normal IO' CONFIG_SCSI_SYM53C8XX_IOMAPPED fi fi +define_bool CONFIG_ASK_ZALON n +define_bool CONFIG_ASK_NCR53C8XX n +define_bool CONFIG_ASK_SYM53C8XX n +if [ "$CONFIG_PARISC" = "y" ]; then + dep_tristate 'Zalon SCSI support' CONFIG_SCSI_ZALON $CONFIG_GSC $CONFIG_SCSI + if [ "$CONFIG_SCSI_ZALON" != "n" ]; then + define_bool CONFIG_ASK_ZALON y + fi +else + if [ "$CONFIG_PCI" = "y" -a "$CONFIG_SCSI_SYM53C8XX_2" != "y" ]; then + dep_tristate 'NCR53C8XX SCSI support' CONFIG_SCSI_NCR53C8XX $CONFIG_SCSI + if [ "$CONFIG_SCSI_NCR53C8XX" != "n" ]; then + define_bool CONFIG_ASK_NCR53C8XX y + fi + fi +fi if [ "$CONFIG_PCI" = "y" -a "$CONFIG_SCSI_SYM53C8XX_2" != "y" ]; then - dep_tristate 'NCR53C8XX SCSI support' CONFIG_SCSI_NCR53C8XX $CONFIG_SCSI dep_tristate 'SYM53C8XX SCSI support' CONFIG_SCSI_SYM53C8XX $CONFIG_SCSI - if [ "$CONFIG_PARISC" = "y" ]; then - dep_tristate 'Zalon SCSI support' CONFIG_SCSI_ZALON $CONFIG_GSC $CONFIG_SCSI + if [ "$CONFIG_SCSI_SYM53C8XX" != "n" ]; then + define_bool CONFIG_ASK_SYM53C8XX y fi - if [ "$CONFIG_SCSI_NCR53C8XX" != "n" -o "$CONFIG_SCSI_ZALON" = "y" -o "$CONFIG_SCSI_ZALON" = "m" -o "$CONFIG_SCSI_SYM53C8XX" != "n" ]; then - int ' default tagged command queue depth' CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS 8 - int ' maximum number of queued commands' CONFIG_SCSI_NCR53C8XX_MAX_TAGS 32 - int ' synchronous transfers frequency in MHz' CONFIG_SCSI_NCR53C8XX_SYNC 20 - bool ' enable profiling' CONFIG_SCSI_NCR53C8XX_PROFILE +fi +if [ "$CONFIG_ASK_ZALON" = "y" -o "$CONFIG_ASK_NCR53C8XX" = "y" -o "$CONFIG_ASK_SYM53C8XX" = "y" ]; then + int ' default tagged command queue depth' CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS 8 + int ' maximum number of queued commands' CONFIG_SCSI_NCR53C8XX_MAX_TAGS 32 + int ' synchronous transfers frequency in MHz' CONFIG_SCSI_NCR53C8XX_SYNC 20 + bool ' enable profiling' CONFIG_SCSI_NCR53C8XX_PROFILE + if [ "$CONFIG_ASK_ZALON" = "y" ]; then + define_bool CONFIG_SCSI_NCR53C8XX_IOMAPPED n + else bool ' use normal IO' CONFIG_SCSI_NCR53C8XX_IOMAPPED - if [ "$CONFIG_SCSI_SYM53C8XX" != "n" ]; then - bool ' include support for the NCR PQS/PDS SCSI card' CONFIG_SCSI_NCR53C8XX_PQS_PDS - fi - if [ "$CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS" = "0" ]; then - bool ' not allow targets to disconnect' CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT - fi - if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then - bool ' assume boards are SYMBIOS compatible (EXPERIMENTAL)' CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT - fi + fi + if [ "$CONFIG_ASK_SYM53C8XX" = "y" ]; then + bool ' include support for the NCR PQS/PDS SCSI card' CONFIG_SCSI_NCR53C8XX_PQS_PDS + fi + if [ "$CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS" = "0" ]; then + bool ' not allow targets to disconnect' CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT + fi + if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then + bool ' assume boards are SYMBIOS compatible (EXPERIMENTAL)' CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT fi fi if [ "$CONFIG_MCA" = "y" ]; then diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/scsi/cpqfcTScontrol.c linux/drivers/scsi/cpqfcTScontrol.c --- linux-2.4.20/drivers/scsi/cpqfcTScontrol.c Thu Oct 25 14:53:50 2001 +++ linux/drivers/scsi/cpqfcTScontrol.c Tue Aug 20 18:11:35 2002 @@ -383,14 +383,11 @@ { PFC_LOGGEDIN_PORT pLoggedInPort = fcChip->fcPorts.pNextPort; PFC_LOGGEDIN_PORT ptr; -// printk("checking for allocated LoggedInPorts...\n"); - + while( pLoggedInPort ) { ptr = pLoggedInPort; pLoggedInPort = ptr->pNextPort; -// printk("kfree(%p) on FC LoggedInPort port_id 0x%06lX\n", -// ptr, ptr->port_id); kfree( ptr ); } } @@ -406,7 +403,9 @@ // However, CPQ 64-bit HBAs have a "health // circuit" which keeps laser ON for a brief // period after it is turned off ( < 1s) - + + readb( fcChip->Registers.ReMapMemBase + IINTEN); /* flush posted write */ + fcChip->LaserControl( fcChip->Registers.ReMapMemBase, 0); @@ -424,9 +423,10 @@ ulBuff = readl( fcChip->Registers.ReMapMemBase + TL_MEM_SOFTRST); // clear the soft reset - for( i=0; i<8; i++) + for( i=0; i<8; i++) { writel( 0, (fcChip->Registers.ReMapMemBase + TL_MEM_SOFTRST)); - + (void) readl( fcChip->Registers.ReMapMemBase + TL_MEM_SOFTRST); + } // clear out our copy of Tach regs, @@ -457,22 +457,19 @@ - - - -// 'addrBase' is IOBaseU for both TachLite and (older) Tachyon int CpqTsLaserControl( void* addrBase, int opcode ) { - ULONG dwBuff; + u32 dwBuff; - dwBuff = readl((addrBase + TL_MEM_TACH_CONTROL) ); // read TL Control reg - // (change only bit 4) - if( opcode == 1) - dwBuff |= ~0xffffffefL; // set - ON - else - dwBuff &= 0xffffffefL; // clear - OFF - writel( dwBuff, (addrBase + TL_MEM_TACH_CONTROL)); // write TL Control reg - return 0; + dwBuff = readl(addrBase + TL_MEM_TACH_CONTROL); + + dwBuff &= ~0x10; /* assume Laser OFF - clear */ + if( opcode == 1) + dwBuff |= 0x10; /* nope - really want it ON - set */ + + writel( dwBuff, (addrBase + TL_MEM_TACH_CONTROL)); + readl((addrBase + TL_MEM_TACH_CONTROL) ); /* flush posted PCI write */ + return 0; } @@ -1669,17 +1666,12 @@ { case 1: // restore hardware to power-on (hard) restart + DEBUG_PCI(printk(" ResetTachyon\n")); iStatus = fcChip->ResetTachyon( cpqfcHBAdata, opcode2); // laser off, reset hardware // de-allocate aligned buffers - -/* TBD // reset FC link Q (producer and consumer = 0) - fcLinkQReset(cpqfcHBAdata); - -*/ - if( iStatus ) break; @@ -1690,17 +1682,11 @@ ulBuff = 0x80000000; // TachLite Configuration Register - writel( ulBuff, fcChip->Registers.TYconfig.address); -// ulBuff = 0x0147L; // CpqTs PCI CFGCMD register -// WritePCIConfiguration( fcChip->Backplane.bus, -// fcChip->Backplane.slot, TLCFGCMD, ulBuff, 4); -// ulBuff = 0x0L; // test! -// ReadPCIConfiguration( fcChip->Backplane.bus, -// fcChip->Backplane.slot, TLCFGCMD, &ulBuff, 4); - - // read back for reference... - fcChip->Registers.TYconfig.value = - readl( fcChip->Registers.TYconfig.address ); + writel( ulBuff, fcChip->Registers.TYconfig.address); + + // read back for reference... + fcChip->Registers.TYconfig.value = + readl( fcChip->Registers.TYconfig.address ); // what is the PCI bus width? pci_read_config_byte( cpqfcHBAdata->PciDev, @@ -1735,7 +1721,11 @@ } else if( (Major == 2) && (Minor == 1) ) { - sprintf( cpqfcHBAdata->fcChip.Name, SAGILENT_XL2_21); + sprintf( cpqfcHBAdata->fcChip.Name, SAGILENT_XL2 "/2.1"); + } + else if( (Major == 2) && (Minor == 2) ) + { + sprintf( cpqfcHBAdata->fcChip.Name, SAGILENT_XL2 "/2.2"); } else sprintf( cpqfcHBAdata->fcChip.Name, STACHLITE_UNKNOWN); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/scsi/cpqfcTSi2c.c linux/drivers/scsi/cpqfcTSi2c.c --- linux-2.4.20/drivers/scsi/cpqfcTSi2c.c Thu Sep 21 14:22:05 2000 +++ linux/drivers/scsi/cpqfcTSi2c.c Tue Aug 20 18:11:35 2002 @@ -136,6 +136,7 @@ // Now or in the new data and send it back out writel( temp | value, gpioregOUT); + readl( gpioregOUT ); /* flush posted PCI write */ } //----------------------------------------------------------------------------- // @@ -327,6 +328,7 @@ ret_val = readl( gpioreg ); ret_val &= 0xffffffFBL; // clear GPIO2 (SCL) writel( ret_val, gpioreg); + readl(gpioreg); /* flush posted PCI write */ } static void tl_clr_clock(void* gpioreg) @@ -336,6 +338,7 @@ ret_val = readl( gpioreg ); ret_val |= SET_CLOCK_LO; writel( ret_val, gpioreg); + readl( gpioreg ); /* flush posted PCI write */ } //***************************************************************** @@ -366,6 +369,7 @@ ret_val |= value; // the data ret_val |= SET_CLOCK_LO; // the clock writel( ret_val, GPIOout ); + readl( GPIOout ); /* flush posted PCI write */ i2c_delay(0); @@ -463,30 +467,19 @@ -// define a short 5 micro sec delay, and longer (ms) delay -static void i2c_delay(ULONG mstime) -{ - ULONG i; - -// NOTE: we only expect to use these delays when reading +// We only expect to use these delays when reading // our adapter's NVRAM, which happens only during adapter reset. // Delay technique from "Linux Device Drivers", A. Rubini // (1st Ed.) pg 137. +static void i2c_delay(ULONG mstime) +{ // printk(" delay %lx ", mstime); - if( mstime ) // ms delay? - { - // delay technique - for( i=0; i < mstime; i++) - udelay(1000); // 1ms per loop - - } - else // 5 micro sec delay - - udelay( 5 ); // micro secs - -// printk("done\n"); + if( mstime ) { + mdelay(mstime); + } else + udelay(5); } diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/scsi/cpqfcTSinit.c linux/drivers/scsi/cpqfcTSinit.c --- linux-2.4.20/drivers/scsi/cpqfcTSinit.c Thu Nov 28 16:53:14 2002 +++ linux/drivers/scsi/cpqfcTSinit.c Sat Nov 16 05:54:20 2002 @@ -39,8 +39,8 @@ #include #include #include -#include // request_region() prototype -#include // ioremap() +#include /* request_region() prototype */ +#include /* ioremap() */ #if LINUX_VERSION_CODE >= LinuxVersionCode(2,4,7) #include #endif @@ -61,6 +61,7 @@ #include "cpqfcTS.h" +#include /* __initdata */ #include #include #include @@ -137,7 +138,7 @@ cpqfcHBAdata->fcChip.Registers.SROMBase = // NULL for HP TS adapter PciDev->resource[5].start; - + // now the Tachlite chip registers // the REGISTER struct holds both the physical address & last // written value (some TL registers are WRITE ONLY) @@ -400,41 +401,37 @@ continue; } - // OK, we should be able to grab everything we need now. - request_region( cpqfcHBAdata->fcChip.Registers.IOBaseL, 0xff, DEV_NAME); - request_region( cpqfcHBAdata->fcChip.Registers.IOBaseU, 0xff, DEV_NAME); - DEBUG_PCI(printk(" Requesting 255 I/O addresses @ %x\n", - cpqfcHBAdata->fcChip.Registers.IOBaseL )); - DEBUG_PCI(printk(" Requesting 255 I/O addresses @ %x\n", - cpqfcHBAdata->fcChip.Registers.IOBaseU )); - - - // start our kernel worker thread - - launch_FCworker_thread(HostAdapter); - - - // start our TimerTask... - - cpqfcTStimer = &cpqfcHBAdata->cpqfcTStimer; - - init_timer( cpqfcTStimer); // Linux clears next/prev values - cpqfcTStimer->expires = jiffies + HZ; // one second - cpqfcTStimer->data = (unsigned long)cpqfcHBAdata; // this adapter - cpqfcTStimer->function = cpqfcTSheartbeat; // handles timeouts, housekeeping - - add_timer( cpqfcTStimer); // give it to Linux - - - // now initialize our hardware... - if (cpqfcHBAdata->fcChip.InitializeTachyon( cpqfcHBAdata, 1,1)) { - printk(KERN_WARNING "cpqfc: initialization of HBA hardware failed.\n"); - // FIXME: might want to do something better than nothing here. - } + // OK, we should be able to grab everything we need now. + DEBUG_PCI(printk(" Requesting 255 I/O addresses @ %x\n", + cpqfcHBAdata->fcChip.Registers.IOBaseL )); + request_region( cpqfcHBAdata->fcChip.Registers.IOBaseL, 0xff, DEV_NAME); + + DEBUG_PCI(printk(" Requesting 255 I/O addresses @ %x\n", + cpqfcHBAdata->fcChip.Registers.IOBaseU )); + request_region( cpqfcHBAdata->fcChip.Registers.IOBaseU, 0xff, DEV_NAME); + pci_enable_device(PciDev); + + launch_FCworker_thread(HostAdapter); + + cpqfcTStimer = &cpqfcHBAdata->cpqfcTStimer; + + init_timer( cpqfcTStimer); /* Linux clears next/prev values */ + cpqfcTStimer->expires = jiffies + HZ; /* one second */ + cpqfcTStimer->data = (unsigned long)cpqfcHBAdata; + cpqfcTStimer->function = cpqfcTSheartbeat; + + add_timer( cpqfcTStimer); /* start timer */ + + /* now initialize our hardware... */ + if (cpqfcHBAdata->fcChip.InitializeTachyon( cpqfcHBAdata, 1,1)) { + printk(KERN_WARNING "cpqfc: initialization of HBA hardware failed.\n"); + BUG(); + } cpqfcHBAdata->fcStatsTime = jiffies; // (for FC Statistics delta) // give our HBA time to initialize and login current devices... + DEBUG_PCI(printk(" Waiting for broken Brocade switch...\n")); { // The Brocade switch (e.g. 2400, 2010, etc.) as of March 2000, // has the following algorithm for FL_Port startup: @@ -1131,24 +1128,23 @@ void cpqfcTS_print_scsi_cmd(Scsi_Cmnd * cmd) { -printk("cpqfcTS: (%s) chnl 0x%02x, trgt = 0x%02x, lun = 0x%02x, cmd_len = 0x%02x\n", - ScsiToAscii( cmd->cmnd[0]), cmd->channel, cmd->target, cmd->lun, cmd->cmd_len); - -if( cmd->cmnd[0] == 0) // Test Unit Ready? -{ - int i; - - printk("Cmnd->request_bufflen = 0x%X, ->use_sg = %d, ->bufflen = %d\n", - cmd->request_bufflen, cmd->use_sg, cmd->bufflen); - printk("Cmnd->request_buffer = %p, ->sglist_len = %d, ->buffer = %p\n", - cmd->request_buffer, cmd->sglist_len, cmd->buffer); - for (i = 0; i < cmd->cmd_len; i++) - printk("0x%02x ", cmd->cmnd[i]); - printk("\n"); -} - + printk("cpqfcTS: (%s) chnl 0x%02x, trgt = 0x%02x," + " lun = 0x%02x, cmd_len = 0x%02x\n", + ScsiToAscii( cmd->cmnd[0]), cmd->channel, + cmd->target, cmd->lun, cmd->cmd_len); + + if( cmd->cmnd[0] == TEST_UNIT_READY) { + int i; + + printk("Cmnd request_bufflen 0x%X, use_sg %d, bufflen %d\n", + cmd->request_bufflen, cmd->use_sg, cmd->bufflen); + printk("Cmnd->request_buffer 0x%p, sglist_len %d, buffer %p\n", + cmd->request_buffer, cmd->sglist_len, cmd->buffer); + for (i = 0; i < cmd->cmd_len; i++) + printk("0x%02x ", cmd->cmnd[i]); + printk("\n"); + } } - #endif /* DEBUG_CMND */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/scsi/cpqfcTSstructs.h linux/drivers/scsi/cpqfcTSstructs.h --- linux-2.4.20/drivers/scsi/cpqfcTSstructs.h Thu Nov 28 16:53:14 2002 +++ linux/drivers/scsi/cpqfcTSstructs.h Thu Nov 14 05:55:04 2002 @@ -63,7 +63,7 @@ #define DEBUG(x) #endif /* DEBUG_CPQFCTS */ -//#define DEBUG_CPQFCTS_PCI 1 +#define DEBUG_CPQFCTS_PCI 1 //#undef DEBUG_CPQFCTS_PCI #if DEBUG_CPQFCTS_PCI #define DEBUG_PCI(x) x @@ -74,7 +74,7 @@ #define STACHLITE66_TS12 "Compaq FibreChannel HBA Tachyon TS HPFC-5166A/1.2" #define STACHLITE66_TS13 "Compaq FibreChannel HBA Tachyon TS HPFC-5166A/1.3" #define STACHLITE_UNKNOWN "Compaq FibreChannel HBA Tachyon Chip/Board Ver??" -#define SAGILENT_XL2_21 "Agilent FC HBA, Tachyon XL2 HPFC-5200B/2.1" +#define SAGILENT_XL2 "Agilent FC HBA, Tachyon XL2 HPFC-5200B" // PDA is Peripheral Device Address, VSA is Volume Set Addressing // Linux SCSI parameters @@ -413,7 +413,7 @@ } TachLiteERQ; // for now, just 32 bit DMA, eventually 40something, with code changes -#define CPQFCTS_DMA_MASK ((unsigned long) (0x00000000FFFFFFFF)) +#define CPQFCTS_DMA_MASK 0xFFFFFFFFUL #define TL_MAX_SG_ELEM_LEN 0x7ffff // Max buffer length a single S/G entry // may represent (a hardware limitation). The diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/scsi/cpqfcTSworker.c linux/drivers/scsi/cpqfcTSworker.c --- linux-2.4.20/drivers/scsi/cpqfcTSworker.c Thu Nov 28 16:53:14 2002 +++ linux/drivers/scsi/cpqfcTSworker.c Thu Nov 14 05:55:04 2002 @@ -5111,13 +5111,6 @@ *maplen, PCI_DMA_TODEVICE); *hw_paddr = (ULONG) *umap_paddr; -# if BITS_PER_LONG > 32 - if( *umap_paddr >>32 ) { - printk("cqpfcTS:Tach SG DMA addr %p>32 bits\n", - (void*)umap_paddr); - return 0; - } -# endif return *umap_paddr; } diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/scsi/ncr53c8xx.c linux/drivers/scsi/ncr53c8xx.c --- linux-2.4.20/drivers/scsi/ncr53c8xx.c Thu Nov 28 16:53:14 2002 +++ linux/drivers/scsi/ncr53c8xx.c Thu Nov 14 05:55:05 2002 @@ -82,6 +82,7 @@ ** Etc... ** ** Supported NCR/SYMBIOS chips: +** 53C720 (Wide, Fast SCSI-2, HP Zalon) ** 53C810 (8 bits, Fast SCSI-2, no rom BIOS) ** 53C815 (8 bits, Fast SCSI-2, on board rom BIOS) ** 53C820 (Wide, Fast SCSI-2, no rom BIOS) @@ -180,6 +181,23 @@ typedef u32 u_int32; typedef u64 u_int64; typedef u_long vm_offset_t; + +#ifdef __hppa__ +/* Yuck. Current plan is to use ncr58c8xx.c for non-pci big endian +** chips, and sym53c8xx.c for pci little endian chips. Define this +** here so it gets seen by sym53c8xx_defs.h, pulled in via ncr53c8xx.h. +*/ +#define SCSI_NCR_BIG_ENDIAN +/* INTFLY interrupts don't always seem to get serviced atm..... +*/ +#define SIMULATED_INTFLY +#endif + +#if defined(CONFIG_SCSI_ZALON) || defined(CONFIG_SCSI_ZALON_MODULE) +#define ENABLE_SCSI_ZALON +#include "zalon7xx.h" +#endif + #include "ncr53c8xx.h" /* @@ -383,6 +401,8 @@ struct Scsi_Host *host, struct scsi_device *devlist); static void ncr53c8xx_intr(int irq, void *dev_id, struct pt_regs * regs); static void ncr53c8xx_timeout(unsigned long np); +static int ncr53c8xx_proc_info(char *buffer, char **start, off_t offset, + int length, int hostno, int func); #define initverbose (driver_setup.verbose) #define bootverbose (np->verbose) @@ -454,7 +474,8 @@ #define SIR_RESEL_BAD_I_T_L (15) #define SIR_RESEL_BAD_I_T_L_Q (16) #define SIR_DONE_OVERFLOW (17) -#define SIR_MAX (17) +#define SIR_INTFLY (18) +#define SIR_MAX (18) /*========================================================== ** @@ -626,6 +647,15 @@ ** negotiation of wide and synch transfer and device quirks. **---------------------------------------------------------------- */ +#ifdef SCSI_NCR_BIG_ENDIAN +/*0*/ u_short period; +/*2*/ u_char sval; +/*3*/ u_char minsync; +/*0*/ u_char wval; +/*1*/ u_char widedone; +/*2*/ u_char quirks; +/*3*/ u_char maxoffs; +#else /*0*/ u_char minsync; /*1*/ u_char sval; /*2*/ u_short period; @@ -633,6 +663,7 @@ /*1*/ u_char quirks; /*2*/ u_char widedone; /*3*/ u_char wval; +#endif #ifdef SCSI_NCR_INTEGRITY_CHECKING u_char ic_min_sync; @@ -843,10 +874,17 @@ /* ** Last four bytes (host) */ +#ifdef SCSI_NCR_BIG_ENDIAN +#define actualquirks phys.header.status[3] +#define host_status phys.header.status[2] +#define scsi_status phys.header.status[1] +#define parity_status phys.header.status[0] +#else #define actualquirks phys.header.status[0] #define host_status phys.header.status[1] #define scsi_status phys.header.status[2] #define parity_status phys.header.status[3] +#endif /* ** First four bytes (script) @@ -1030,8 +1068,8 @@ ** be used for probing adapter implementation differences. **---------------------------------------------------------------- */ - u_char sv_scntl0, sv_scntl3, sv_dmode, sv_dcntl, sv_ctest3, sv_ctest4, - sv_ctest5, sv_gpcntl, sv_stest2, sv_stest4; + u_char sv_scntl0, sv_scntl3, sv_dmode, sv_dcntl, sv_ctest0, sv_ctest3, + sv_ctest4, sv_ctest5, sv_gpcntl, sv_stest2, sv_stest4; /*---------------------------------------------------------------- ** Actual initial value of IO register bits used by the @@ -1039,8 +1077,8 @@ ** features that are to be enabled. **---------------------------------------------------------------- */ - u_char rv_scntl0, rv_scntl3, rv_dmode, rv_dcntl, rv_ctest3, rv_ctest4, - rv_ctest5, rv_stest2; + u_char rv_scntl0, rv_scntl3, rv_dmode, rv_dcntl, rv_ctest0, rv_ctest3, + rv_ctest4, rv_ctest5, rv_stest2; /*---------------------------------------------------------------- ** Targets management. @@ -1162,7 +1200,7 @@ */ struct ccb *ccb; /* Global CCB */ struct usrcmd user; /* Command from user */ - u_char release_stage; /* Synchronisation stage on release */ + volatile u_char release_stage; /* Synchronisation stage on release */ #ifdef SCSI_NCR_INTEGRITY_CHECKING /*---------------------------------------------------------------- @@ -1201,6 +1239,23 @@ */ /* +** For HP Zalon/53c720 systems, the Zalon interface +** between CPU and 53c720 does prefetches, which causes +** problems with self modifying scripts. The problem +** is overcome by calling a dummy subroutine after each +** modification, to force a refetch of the script on +** return from the subroutine. +*/ + +#ifdef ENABLE_SCSI_ZALON +#define PREFETCH_FLUSH_CNT 2 +#define PREFETCH_FLUSH SCR_CALL, PADDRH (wait_dma), +#else +#define PREFETCH_FLUSH_CNT 0 +#define PREFETCH_FLUSH +#endif + +/* ** Script fragments which are loaded into the on-chip RAM ** of 825A, 875 and 895 chips. */ @@ -1208,7 +1263,7 @@ ncrcmd start [ 5]; ncrcmd startpos [ 1]; ncrcmd select [ 6]; - ncrcmd select2 [ 9]; + ncrcmd select2 [ 9 + PREFETCH_FLUSH_CNT]; ncrcmd loadpos [ 4]; ncrcmd send_ident [ 9]; ncrcmd prepare [ 6]; @@ -1224,7 +1279,7 @@ ncrcmd setmsg [ 7]; ncrcmd cleanup [ 6]; ncrcmd complete [ 9]; - ncrcmd cleanup_ok [ 8]; + ncrcmd cleanup_ok [ 8 + PREFETCH_FLUSH_CNT]; ncrcmd cleanup0 [ 1]; #ifndef SCSI_NCR_CCB_DONE_SUPPORT ncrcmd signal [ 12]; @@ -1242,11 +1297,11 @@ ncrcmd idle [ 2]; ncrcmd reselect [ 8]; ncrcmd reselected [ 8]; - ncrcmd resel_dsa [ 6]; + ncrcmd resel_dsa [ 6 + PREFETCH_FLUSH_CNT]; ncrcmd loadpos1 [ 4]; ncrcmd resel_lun [ 6]; ncrcmd resel_tag [ 6]; - ncrcmd jump_to_nexus [ 4]; + ncrcmd jump_to_nexus [ 4 + PREFETCH_FLUSH_CNT]; ncrcmd nexus_indirect [ 4]; ncrcmd resel_notag [ 4]; ncrcmd data_in [MAX_SCATTERL * 4]; @@ -1267,7 +1322,7 @@ #endif ncrcmd select_no_atn [ 8]; ncrcmd cancel [ 4]; - ncrcmd skip [ 9]; + ncrcmd skip [ 9 + PREFETCH_FLUSH_CNT]; ncrcmd skip2 [ 19]; ncrcmd par_err_data_in [ 6]; ncrcmd par_err_other [ 4]; @@ -1300,9 +1355,10 @@ ncrcmd bad_i_t_l_q [ 4]; ncrcmd bad_target [ 8]; ncrcmd bad_status [ 8]; - ncrcmd start_ram [ 4]; + ncrcmd start_ram [ 4 + PREFETCH_FLUSH_CNT]; ncrcmd start_ram0 [ 4]; ncrcmd sto_restart [ 5]; + ncrcmd wait_dma [ 2]; ncrcmd snooptest [ 9]; ncrcmd snoopend [ 2]; }; @@ -1328,6 +1384,7 @@ static void ncr_getclock (ncb_p np, int mult); static void ncr_selectclock (ncb_p np, u_char scntl3); static ccb_p ncr_get_ccb (ncb_p np, u_char tn, u_char ln); +static void ncr_chip_reset (ncb_p np, int delay); static void ncr_init (ncb_p np, int reset, char * msg, u_long code); static int ncr_int_sbmc (ncb_p np); static int ncr_int_par (ncb_p np); @@ -1527,6 +1584,10 @@ RADDR (dsa), PADDR (loadpos), /* + ** Flush script prefetch if required + */ + PREFETCH_FLUSH + /* ** then we do the actual copy. */ SCR_COPY (sizeof (struct head)), @@ -1827,6 +1888,10 @@ SCR_COPY_F (4), RADDR (dsa), PADDR (cleanup0), + /* + ** Flush script prefetch if required + */ + PREFETCH_FLUSH SCR_COPY (sizeof (struct head)), NADDR (header), }/*-------------------------< CLEANUP0 >--------------------*/,{ @@ -1856,8 +1921,13 @@ /* ** ... signal completion to the host */ +#ifdef SIMULATED_INTFLY + SCR_INT, + SIR_INTFLY, +#else SCR_INT_FLY, 0, +#endif /* ** Auf zu neuen Schandtaten! */ @@ -1876,8 +1946,13 @@ SCR_INT, SIR_DONE_OVERFLOW, }/*------------------------< DONE_END >---------------------*/,{ +#ifdef SIMULATED_INTFLY + SCR_INT, + SIR_INTFLY, +#else SCR_INT_FLY, 0, +#endif SCR_COPY (4), RADDR (temp), PADDR (done_pos), @@ -2055,6 +2130,10 @@ RADDR (dsa), PADDR (loadpos1), /* + ** Flush script prefetch if required + */ + PREFETCH_FLUSH + /* ** then we do the actual copy. */ SCR_COPY (sizeof (struct head)), @@ -2116,6 +2195,10 @@ SCR_COPY_F (4), RADDR (temp), PADDR (nexus_indirect), + /* + ** Flush script prefetch if required + */ + PREFETCH_FLUSH SCR_COPY (4), }/*-------------------------< NEXUS_INDIRECT >-------------------*/,{ 0, @@ -2272,6 +2355,10 @@ RADDR (dsa), PADDRH (skip2), /* + ** Flush script prefetch if required + */ + PREFETCH_FLUSH + /* ** then we do the actual copy. */ SCR_COPY (sizeof (struct head)), @@ -2782,6 +2869,10 @@ SCR_COPY_F (4), RADDR (scratcha), PADDRH (start_ram0), + /* + ** Flush script prefetch if required + */ + PREFETCH_FLUSH SCR_COPY (sizeof (struct script)), }/*-------------------------< START_RAM0 >--------------------*/,{ 0, @@ -2799,6 +2890,17 @@ PADDR (startpos), SCR_JUMP, PADDR (start), +}/*-------------------------< WAIT_DMA >-------------------*/,{ + /* + ** For HP Zalon/53c720 systems, the Zalon interface + ** between CPU and 53c720 does prefetches, which causes + ** problems with self modifying scripts. The problem + ** is overcome by calling a dummy subroutine after each + ** modification, to force a refetch of the script on + ** return from the subroutine. + */ + SCR_RETURN, + 0, }/*-------------------------< SNOOPTEST >-------------------*/,{ /* ** Read the variable. @@ -3132,9 +3234,12 @@ #define burst_length(bc) (!(bc))? 0 : 1 << (bc) /* - * Burst code from io register bits. + * Burst code from io register bits. Burst enable is ctest0 for c720, + * ctest4 for others. */ -#define burst_code(dmode, ctest4, ctest5) \ +#define burst_code(dmode, ctest0, ctest4, ctest5) \ + (np->device_id == PSEUDO_ZALON_720_ID) ? \ + (ctest0) & 0x80? 0 : (((dmode) & 0xc0) >> 6) + 1 : \ (ctest4) & 0x80? 0 : (((dmode) & 0xc0) >> 6) + ((ctest5) & 0x04) + 1 /* @@ -3142,12 +3247,15 @@ */ static inline void ncr_init_burst(ncb_p np, u_char bc) { - np->rv_ctest4 &= ~0x80; + u_char *be = (np->device_id == PSEUDO_ZALON_720_ID) ? + &np->rv_ctest0 : &np->rv_ctest4; + + *be &= ~0x80; np->rv_dmode &= ~(0x3 << 6); np->rv_ctest5 &= ~0x4; if (!bc) { - np->rv_ctest4 |= 0x80; + *be |= 0x80; } else { --bc; @@ -3224,6 +3332,7 @@ np->sv_scntl3 = INB(nc_scntl3) & 0x07; np->sv_dmode = INB(nc_dmode) & 0xce; np->sv_dcntl = INB(nc_dcntl) & 0xa8; + np->sv_ctest0 = INB(nc_ctest0) & 0x84; np->sv_ctest3 = INB(nc_ctest3) & 0x01; np->sv_ctest4 = INB(nc_ctest4) & 0x80; np->sv_ctest5 = INB(nc_ctest5) & 0x24; @@ -3310,10 +3419,11 @@ np->rv_scntl0 = np->sv_scntl0; np->rv_dmode = np->sv_dmode; np->rv_dcntl = np->sv_dcntl; + np->rv_ctest0 = np->sv_ctest0; np->rv_ctest3 = np->sv_ctest3; np->rv_ctest4 = np->sv_ctest4; np->rv_ctest5 = np->sv_ctest5; - burst_max = burst_code(np->sv_dmode, np->sv_ctest4, np->sv_ctest5); + burst_max = burst_code(np->sv_dmode, np->sv_ctest0, np->sv_ctest4, np->sv_ctest5); #else /* @@ -3321,7 +3431,7 @@ */ burst_max = driver_setup.burst_max; if (burst_max == 255) - burst_max = burst_code(np->sv_dmode, np->sv_ctest4, np->sv_ctest5); + burst_max = burst_code(np->sv_dmode, np->sv_ctest0, np->sv_ctest4, np->sv_ctest5); if (burst_max > 7) burst_max = 7; if (burst_max > np->maxburst) @@ -3344,6 +3454,12 @@ np->rv_ctest3 |= WRIE; /* Write and Invalidate */ if (np->features & FE_DFS) np->rv_ctest5 |= DFS; /* Dma Fifo Size */ + if (np->features & FE_MUX) + np->rv_ctest4 |= MUX; /* Host bus multiplex mode */ + if (np->features & FE_EA) + np->rv_dcntl |= EA; /* Enable ACK */ + if (np->features & FE_EHP) + np->rv_ctest0 |= EHP; /* Even host parity */ /* ** Select some other @@ -3523,6 +3639,7 @@ return 0; } + /* ** Host attach and initialisations. ** @@ -3543,6 +3660,7 @@ ncr_nvram *nvram = device->nvram; int i; +#ifndef ENABLE_SCSI_ZALON printk(KERN_INFO "ncr53c%s-%d: rev 0x%x on pci bus %d device %d function %d " #ifdef __sparc__ "irq %s\n", @@ -3557,6 +3675,7 @@ #else device->slot.irq); #endif +#endif /* ** Allocate host_data structure @@ -3645,7 +3764,6 @@ ** Now the INB INW INL OUTB OUTW OUTL macros ** can be used safely. */ - np->reg = (struct ncr_reg*) np->vaddr; #endif /* !defined SCSI_NCR_IOMAPPED */ @@ -3654,7 +3772,9 @@ ** Try to map the controller chip into iospace. */ +#ifndef ENABLE_SCSI_ZALON request_region(device->slot.io_port, 128, "ncr53c8xx"); +#endif np->base_io = device->slot.io_port; #ifdef SCSI_NCR_NVRAM_SUPPORT @@ -3768,9 +3888,7 @@ ** Reset chip. */ - OUTB (nc_istat, SRST); - UDELAY (100); - OUTB (nc_istat, 0 ); + ncr_chip_reset(np, 100); /* ** Now check the cache handling of the pci chipset. @@ -3887,7 +4005,9 @@ #ifdef DEBUG_NCR53C8XX printk(KERN_DEBUG "%s: releasing IO region %x[%d]\n", ncr_name(np), np->base_io, 128); #endif +#ifndef ENABLE_SCSI_ZALON release_region(np->base_io, 128); +#endif } if (np->irq) { #ifdef DEBUG_NCR53C8XX @@ -3912,7 +4032,7 @@ scsi_unregister(instance); return -1; - } +} /*========================================================== @@ -4699,9 +4819,7 @@ "command processing suspended for %d seconds\n", ncr_name(np), settle_delay); - OUTB (nc_istat, SRST); - UDELAY (100); - OUTB (nc_istat, 0); + ncr_chip_reset(np, 100); UDELAY (2000); /* The 895 needs time for the bus mode to settle */ if (enab_int) OUTW (nc_sien, RST); @@ -4710,7 +4828,8 @@ ** properly set IRQ mode, prior to resetting the bus. */ OUTB (nc_stest3, TE); - OUTB (nc_dcntl, (np->rv_dcntl & IRQM)); + if (np->device_id != PSEUDO_ZALON_720_ID) + OUTB (nc_dcntl, (np->rv_dcntl & IRQM)); OUTB (nc_scntl1, CRST); UDELAY (200); @@ -4917,6 +5036,10 @@ lcb_p lp; int target, lun; int i; + char inst_name[16]; + + /* Local copy so we don't access np after freeing it! */ + strncpy(inst_name, ncr_name(np), 16); printk("%s: releasing host resources\n", ncr_name(np)); @@ -4963,12 +5086,11 @@ */ printk("%s: resetting chip\n", ncr_name(np)); - OUTB (nc_istat, SRST); - UDELAY (100); - OUTB (nc_istat, 0 ); + ncr_chip_reset(np, 100); OUTB(nc_dmode, np->sv_dmode); OUTB(nc_dcntl, np->sv_dcntl); + OUTB(nc_ctest0, np->sv_ctest0); OUTB(nc_ctest3, np->sv_ctest3); OUTB(nc_ctest4, np->sv_ctest4); OUTB(nc_ctest5, np->sv_ctest5); @@ -4991,7 +5113,9 @@ #ifdef DEBUG_NCR53C8XX printk("%s: releasing IO region %x[%d]\n", ncr_name(np), np->base_io, 128); #endif +#ifndef ENABLE_SCSI_ZALON release_region(np->base_io, 128); +#endif /* ** Free allocated ccb(s) @@ -5036,7 +5160,7 @@ m_free_dma(np->ccb, sizeof(struct ccb), "CCB"); m_free_dma(np, sizeof(struct ncb), "NCB"); - printk("%s: host resources successfully released\n", ncr_name(np)); + printk("%s: host resources successfully released\n", inst_name); return 1; } @@ -5061,7 +5185,6 @@ /* ** Sanity check */ - if (!cp || cp->magic != CCB_MAGIC || !cp->cmd) return; @@ -5428,6 +5551,28 @@ } } +/* +** Reset ncr chip. +*/ + +/* Some initialisation must be done immediately following reset, for 53c720, + * at least. EA (dcntl bit 5) isn't set here as it is set once only in + * the _detect function. + */ + +static void ncr_chip_reset(ncb_p np, int delay) +{ + OUTB (nc_istat, SRST); + UDELAY (delay); + OUTB (nc_istat, 0 ); + + if (np->features & FE_EHP) + OUTB (nc_ctest0, EHP); + if (np->features & FE_MUX) + OUTB (nc_ctest4, MUX); +} + + /*========================================================== ** ** @@ -5473,7 +5618,7 @@ */ np->squeueput = 0; np->script0->startpos[0] = cpu_to_scr(NCB_SCRIPTH_PHYS (np, tryloop)); - +#ifdef SCSI_NCR_CCB_DONE_SUPPORT /* ** Clear Done Queue */ @@ -5490,7 +5635,7 @@ np->ccb_done_ic = MAX_DONE-1; np->scripth0->done_queue[5*(MAX_DONE-1) + 4] = cpu_to_scr(NCB_SCRIPT_PHYS (np, done_plug)); - +#endif /* ** Wakeup all pending jobs. */ @@ -5500,8 +5645,10 @@ ** Init chip. */ - OUTB (nc_istat, 0x00 ); /* Remove Reset, abort */ - UDELAY (2000); /* The 895 needs time for the bus mode to settle */ + /* Remove reset; big delay because the 895 needs time for the + * bus mode to settle + */ + ncr_chip_reset(np, 2000); OUTB (nc_scntl0, np->rv_scntl0 | 0xc0); /* full arb., ena parity, par->ATN */ @@ -5516,6 +5663,7 @@ OUTB (nc_ctest5, np->rv_ctest5); /* Large fifo + large burst */ OUTB (nc_dcntl , NOCOM|np->rv_dcntl); /* Protect SFBR */ + OUTB (nc_ctest0, np->rv_ctest0); /* 720: CDIS and EHP */ OUTB (nc_ctest3, np->rv_ctest3); /* Write and invalidate */ OUTB (nc_ctest4, np->rv_ctest4); /* Master parity checking */ @@ -7100,6 +7248,18 @@ if (DEBUG_FLAGS & DEBUG_TINY) printk ("I#%d", num); switch (num) { + case SIR_INTFLY: + /* + ** This is used for HP Zalon/53c720 where INTFLY + ** operation is currently broken. + */ + ncr_wakeup_done(np); +#ifdef SCSI_NCR_CCB_DONE_SUPPORT + OUTL(nc_dsp, NCB_SCRIPT_PHYS (np, done_end) + 8); +#else + OUTL(nc_dsp, NCB_SCRIPT_PHYS (np, start)); +#endif + return; case SIR_RESEL_NO_MSG_IN: case SIR_RESEL_NO_IDENTIFY: /* @@ -7846,7 +8006,11 @@ */ tp->getscr[0] = cpu_to_scr(copy_1); tp->getscr[1] = cpu_to_scr(vtobus (&tp->sval)); +#ifdef SCSI_NCR_BIG_ENDIAN + tp->getscr[2] = cpu_to_scr(ncr_reg_bus_addr(nc_sxfer) ^ 3); +#else tp->getscr[2] = cpu_to_scr(ncr_reg_bus_addr(nc_sxfer)); +#endif /* ** Load the timing register. @@ -7854,7 +8018,11 @@ */ tp->getscr[3] = cpu_to_scr(copy_1); tp->getscr[4] = cpu_to_scr(vtobus (&tp->wval)); +#ifdef SCSI_NCR_BIG_ENDIAN + tp->getscr[5] = cpu_to_scr(ncr_reg_bus_addr(nc_scntl3) ^ 3); +#else tp->getscr[5] = cpu_to_scr(ncr_reg_bus_addr(nc_scntl3)); +#endif /* ** Get the IDENTIFY message and the lun. @@ -7883,10 +8051,17 @@ /* ** These assert's should be moved at driver initialisations. */ +#ifdef SCSI_NCR_BIG_ENDIAN + assert (( (offsetof(struct ncr_reg, nc_sxfer) ^ + offsetof(struct tcb , sval )) &3) == 3); + assert (( (offsetof(struct ncr_reg, nc_scntl3) ^ + offsetof(struct tcb , wval )) &3) == 3); +#else assert (( (offsetof(struct ncr_reg, nc_sxfer) ^ offsetof(struct tcb , sval )) &3) == 0); assert (( (offsetof(struct ncr_reg, nc_scntl3) ^ offsetof(struct tcb , wval )) &3) == 0); +#endif } @@ -8230,9 +8405,7 @@ /* ** Reset ncr chip */ - OUTB (nc_istat, SRST); - UDELAY (100); - OUTB (nc_istat, 0 ); + ncr_chip_reset(np, 100); /* ** check for timeout */ @@ -8459,7 +8632,7 @@ if (np->multiplier != mult || (scntl3 & 7) < 3 || !(scntl3 & 1)) { unsigned f2; - OUTB(nc_istat, SRST); UDELAY (5); OUTB(nc_istat, 0); + ncr_chip_reset(np, 5); (void) ncrgetfreq (np, 11); /* throw away first result */ f1 = ncrgetfreq (np, 11); @@ -9210,6 +9383,7 @@ */ static u_short ncr_chip_ids[] __initdata = { + PSEUDO_ZALON_720_ID, PCI_DEVICE_ID_NCR_53C810, PCI_DEVICE_ID_NCR_53C815, PCI_DEVICE_ID_NCR_53C820, @@ -9224,6 +9398,89 @@ PCI_DEVICE_ID_NCR_53C1510D }; +#ifdef ENABLE_SCSI_ZALON +/* +** Attach a 53c720 interfaced via Zalon chip on HP boxes. +*/ + +int +zalon_attach(Scsi_Host_Template *tpnt, unsigned long io_port, + struct parisc_device *dev, int irq, int unit) +{ + u_short device_id; + u_char revision; + int i; + ncr_chip *chip; + ncr_device device; + + tpnt->proc_name = NAME53C8XX; + tpnt->proc_info = ncr53c8xx_proc_info; + +#if defined(SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT) && defined(MODULE) + if (ncr53c8xx) + ncr53c8xx_setup(ncr53c8xx); +#endif + +#ifdef SCSI_NCR_DEBUG_INFO_SUPPORT + ncr_debug = driver_setup.debug; +#endif + if (initverbose >= 2) + ncr_print_driver_setup(); + + memset(&device, 0, sizeof(ncr_device)); + chip = 0; + device_id = PSEUDO_ZALON_720_ID; + revision = 0; + for (i = 0; i < sizeof(ncr_chip_table)/sizeof(ncr_chip_table[0]); i++) { + if (device_id != ncr_chip_table[i].device_id) + continue; + chip = &device.chip; + memcpy(chip, &ncr_chip_table[i], sizeof(*chip)); + chip->revision_id = revision; + break; + } + + if (!chip) { + printk(NAME53C8XX ": not initializing, device not supported\n"); + return -1; + } + + /* + ** Fix some features according to driver setup. + */ + + driver_setup.diff_support = 2; + + /* + ** The following three are needed before any other access. + */ + + writeb(0x20, io_port + 0x38); /* DCNTL_REG, EA */ + writeb(0x04, io_port + 0x1b); /* CTEST0_REG, EHP */ + writeb(0x80, io_port + 0x22); /* CTEST4_REG, MUX */ + + /* + ** Initialise ncr_device structure with items required by ncr_attach. + */ + device.host_id = driver_setup.host_id; + device.pdev = ccio_get_fake(dev); + device.slot.bus = 0; + device.slot.device_fn = 0; + device.slot.base = (u_long)io_port; + device.slot.base_c = (u_long)io_port; + device.slot.base_2 = 0; + device.slot.base_2_c = 0; + device.slot.io_port = io_port; + device.slot.irq = irq; + device.attach_done = 0; + + printk(KERN_INFO NAME53C8XX ": 53c%s detected\n", device.chip.name); + + return ncr_attach(tpnt, unit, &device); +} +#endif + + /*========================================================== ** ** Chip detection entry point. @@ -9273,6 +9530,10 @@ static #endif #if LINUX_VERSION_CODE >= LinuxVersionCode(2,4,0) || defined(MODULE) +#ifdef ENABLE_SCSI_ZALON +Scsi_Host_Template driver_template = SCSI_ZALON; +#else Scsi_Host_Template driver_template = NCR53C8XX; +#endif #include "scsi_module.c" #endif diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/scsi/sym53c8xx.c linux/drivers/scsi/sym53c8xx.c --- linux-2.4.20/drivers/scsi/sym53c8xx.c Thu Nov 28 16:53:14 2002 +++ linux/drivers/scsi/sym53c8xx.c Thu Nov 14 05:55:06 2002 @@ -4915,6 +4915,11 @@ u_long period; int i; +#ifdef CONFIG_PARISC + char scsi_mode = -1; + struct hardware_path hwpath; +#endif + /* ** Wide ? */ @@ -4986,6 +4991,29 @@ */ period = (4 * div_10M[0] + np->clock_khz - 1) / np->clock_khz; + +#if defined(CONFIG_PARISC) + /* Host firmware (PDC) keeps a table for crippling SCSI capabilities. + * Many newer machines export one channel of 53c896 chip + * as SE, 50-pin HD. Also used for Multi-initiator SCSI clusters + * to set the SCSI Initiator ID. + */ + get_pci_node_path(np->pdev, &hwpath); + if (pdc_get_initiator(&hwpath, &np->myaddr, &period, &np->maxwide, &scsi_mode)) + { + if (scsi_mode >= 0) { + /* C3000 PDC reports period/mode */ + driver_setup.diff_support = 0; + switch(scsi_mode) { + case 0: np->scsi_mode = SMODE_SE; break; + case 1: np->scsi_mode = SMODE_HVD; break; + case 2: np->scsi_mode = SMODE_LVD; break; + default: break; + } + } + } +#endif + if (period <= 250) np->minsync = 10; else if (period <= 303) np->minsync = 11; else if (period <= 500) np->minsync = 12; @@ -5128,7 +5156,6 @@ np->rv_ctest4 |= MPEE; /* Master parity checking */ if (driver_setup.scsi_parity) np->rv_scntl0 |= 0x0a; /* full arb., ena parity, par->ATN */ - #ifdef SCSI_NCR_NVRAM_SUPPORT /* ** Get parity checking, host ID and verbose mode from NVRAM @@ -5196,7 +5223,7 @@ if (np->sv_stest2 & 0x20) np->scsi_mode = SMODE_HVD; break; - default:/* Don't care about HVD */ + default: /* Don't care about HVD */ break; } } @@ -5239,6 +5266,7 @@ tcb_p tp = &np->target[i]; tp->usrsync = 255; + #ifdef SCSI_NCR_NVRAM_SUPPORT if (nvram) { switch(nvram->type) { @@ -5256,10 +5284,11 @@ if (driver_setup.use_nvram & 0x8) tp->usrflag &= ~UF_NOSCAN; } - else { + else #else - if (1) { + if (1) #endif + { tp->usrsync = driver_setup.default_sync; tp->usrwide = driver_setup.max_wide; tp->usrtags = MAX_TAGS; @@ -7074,7 +7103,11 @@ ((INW(nc_sbdl) & 0xff00) << 10) | /* d15-8 */ INB(nc_sbcl); /* req ack bsy sel atn msg cd io */ +#ifdef CONFIG_PARISC + if (!np->maxwide) +#else if (!(np->features & FE_WIDE)) +#endif term &= 0x3ffff; if (term != (2<<7)) { @@ -12974,6 +13007,7 @@ } if (i != count) /* Ignore this device if we already have it */ continue; + pci_set_master(pcidev); devp = &devtbl[count]; devp->host_id = driver_setup.host_id; devp->attach_done = 0; @@ -13217,7 +13251,7 @@ return -1; } -#ifdef __powerpc__ +#if defined(__powerpc__) || defined(__hppa__) /* ** Fix-up for power/pc. ** Should not be performed by the driver. diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/scsi/sym53c8xx_2/sym_glue.c linux/drivers/scsi/sym53c8xx_2/sym_glue.c --- linux-2.4.20/drivers/scsi/sym53c8xx_2/sym_glue.c Thu Nov 28 16:53:14 2002 +++ linux/drivers/scsi/sym53c8xx_2/sym_glue.c Sat Nov 16 05:54:23 2002 @@ -142,10 +142,24 @@ #define SYM_LOCK_HCB(np, flags) spin_lock_irqsave(&np->s.smp_lock, flags) #define SYM_UNLOCK_HCB(np, flags) spin_unlock_irqrestore(&np->s.smp_lock, flags) +/* Warning! + * sym2 driver used to hold iorl in sym53c8xx_intr and sym_timer + * with these macros. However, we have observed that this causes + * a deadlock with the iorl held by scsi_register_host. A survey + * of a couple of other scsi drivers that uses the "new" eh + * code seems to suggest that this is not required. I've disabled + * these for now, without having completely understood if this + * is correct. + */ +#ifndef CONFIG_PARISC /* hack */ #define SYM_LOCK_SCSI(np, flags) \ spin_lock_irqsave(&io_request_lock, flags) #define SYM_UNLOCK_SCSI(np, flags) \ spin_unlock_irqrestore(&io_request_lock, flags) +#else +#define SYM_LOCK_SCSI(np, flags) +#define SYM_UNLOCK_SCSI(np, flags) +#endif /* Ugly, but will make things easier if this locking will ever disappear */ #define SYM_LOCK_SCSI_NOSAVE(np) spin_lock_irq(&io_request_lock) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/scsi/sym53c8xx_2/sym_hipd.c linux/drivers/scsi/sym53c8xx_2/sym_hipd.c --- linux-2.4.20/drivers/scsi/sym53c8xx_2/sym_hipd.c Fri Aug 2 18:39:44 2002 +++ linux/drivers/scsi/sym53c8xx_2/sym_hipd.c Sun Aug 4 18:12:40 2002 @@ -289,7 +289,11 @@ ((INW(nc_sbdl) & 0xff00) << 10) | /* d15-8 */ INB(nc_sbcl); /* req ack bsy sel atn msg cd io */ +#ifdef CONFIG_PARISC + if (!np->maxwide) +#else if (!(np->features & FE_WIDE)) +#endif term &= 0x3ffff; if (term != (2<<7)) { @@ -744,6 +748,12 @@ u32 period; int i; +#ifdef CONFIG_PARISC + unsigned long pdc_period; + char scsi_mode = -1; + struct hardware_path hwpath; +#endif + /* * Wide ? */ @@ -800,6 +810,31 @@ * Btw, 'period' is in tenths of nanoseconds. */ period = (4 * div_10M[0] + np->clock_khz - 1) / np->clock_khz; + +#if defined(CONFIG_PARISC) + /* Host firmware (PDC) keeps a table for crippling SCSI capabilities. + * Many newer machines export one channel of 53c896 chip + * as SE, 50-pin HD. Also used for Multi-initiator SCSI clusters + * to set the SCSI Initiator ID. + */ + get_pci_node_path(np->s.device, &hwpath); + if (pdc_get_initiator(&hwpath, &np->myaddr, &pdc_period, &np->maxwide, &scsi_mode)) + { + if (scsi_mode >= 0) { + /* C3000 PDC reports period/mode */ + SYM_SETUP_SCSI_DIFF = 0; + switch(scsi_mode) { + case 0: np->scsi_mode = SMODE_SE; break; + case 1: np->scsi_mode = SMODE_HVD; break; + case 2: np->scsi_mode = SMODE_LVD; break; + default: break; + } + } + + period = (u32) pdc_period; + } +#endif + if (period <= 250) np->minsync = 10; else if (period <= 303) np->minsync = 11; else if (period <= 500) np->minsync = 12; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/scsi/sym53c8xx_defs.h linux/drivers/scsi/sym53c8xx_defs.h --- linux-2.4.20/drivers/scsi/sym53c8xx_defs.h Fri Aug 2 18:39:44 2002 +++ linux/drivers/scsi/sym53c8xx_defs.h Sun Feb 9 02:26:08 2003 @@ -82,9 +82,11 @@ /* * No more an option, enabled by default. */ +#ifndef ENABLE_SCSI_ZALON #ifndef CONFIG_SCSI_NCR53C8XX_NVRAM_DETECT #define CONFIG_SCSI_NCR53C8XX_NVRAM_DETECT #endif +#endif /* ** These options are not tunable from 'make config' @@ -185,6 +187,24 @@ #endif #elif defined(__sparc__) #undef SCSI_NCR_IOMAPPED +#elif defined(__hppa__) +#if defined(ENABLE_SCSI_ZALON) +#undef SCSI_NCR_IOMAPPED +#endif +#endif + +/* + * Should we enable DAC cycles on Sparc64 platform? + * Until further investigation we do not enable it + * at the moment. + * We may want to enable it for __ia64__ (untested) + */ +#if defined(__ia64__) +# if !defined(SCSI_NCR_USE_64BIT_DAC) +# define SCSI_NCR_USE_64BIT_DAC +# endif +#else +# undef SCSI_NCR_USE_64BIT_DAC #endif /* @@ -383,25 +403,24 @@ #define readb_raw readb #define writeb_raw writeb -#if defined(__hppa__) -#define readw_l2b(a) le16_to_cpu(readw(a)) -#define readl_l2b(a) le32_to_cpu(readl(a)) -#define writew_b2l(v,a) writew(cpu_to_le16(v),a) -#define writel_b2l(v,a) writel(cpu_to_le32(v),a) -#elif defined(__mips__) -#define readw_l2b readw -#define readl_l2b readl -#define writew_b2l writew -#define writel_b2l writel -#define inw_l2b inw -#define inl_l2b inl -#define outw_b2l outw -#define outl_b2l outl +#if defined(SCSI_NCR_BIG_ENDIAN) +#define readw_l2b __raw_readw +#define readl_l2b __raw_readl +#define writew_b2l __raw_writew +#define writel_b2l __raw_writel +#define readw_raw __raw_readw +#define readl_raw(a) __raw_readl((unsigned long)(a)) +#define writew_raw __raw_writew +#define writel_raw(v,a) __raw_writel(v,(unsigned long)(a)) #else /* Other big-endian */ #define readw_l2b readw #define readl_l2b readl #define writew_b2l writew #define writel_b2l writel +#define readw_raw readw +#define readl_raw readl +#define writew_raw writew +#define writel_raw writel #endif #else /* little endian */ @@ -430,9 +449,11 @@ #endif #endif +#if !defined(__hppa__) && !defined(__mips__) #ifdef SCSI_NCR_BIG_ENDIAN #error "The NCR in BIG ENDIAN addressing mode is not (yet) supported" #endif +#endif /* @@ -585,10 +606,20 @@ #else +#ifdef ENABLE_SCSI_ZALON +/* Only 8 or 32 bit transfers allowed */ +#define INW_OFF(o) (readb((char *)np->reg + ncr_offw(o)) << 8 | readb((char *)np->reg + ncr_offw(o) + 1)) +#else #define INW_OFF(o) readw_raw((char *)np->reg + ncr_offw(o)) +#endif #define INL_OFF(o) readl_raw((char *)np->reg + (o)) +#ifdef ENABLE_SCSI_ZALON +/* Only 8 or 32 bit transfers allowed */ +#define OUTW_OFF(o, val) do { writeb((char)((val) >> 8), (char *)np->reg + ncr_offw(o)); writeb((char)(val), (char *)np->reg + ncr_offw(o) + 1); } while (0) +#else #define OUTW_OFF(o, val) writew_raw((val), (char *)np->reg + ncr_offw(o)) +#endif #define OUTL_OFF(o, val) writel_raw((val), (char *)np->reg + (o)) #endif @@ -636,6 +667,10 @@ ** NCR53C8XX Device Ids */ +#ifndef PSEUDO_ZALON_720_ID +#define PSEUDO_ZALON_720_ID 0x5a00 +#endif + #ifndef PCI_DEVICE_ID_NCR_53C810 #define PCI_DEVICE_ID_NCR_53C810 1 #endif @@ -739,6 +774,9 @@ #define FE_DAC (1<<24) /* Support DAC cycles (64 bit addressing) */ #define FE_ISTAT1 (1<<25) /* Have ISTAT1, MBOX0, MBOX1 registers */ #define FE_DAC_IN_USE (1<<26) /* Platform does DAC cycles */ +#define FE_EHP (1<<27) /* 720: Even host parity */ +#define FE_MUX (1<<28) /* 720: Multiplexed bus */ +#define FE_EA (1<<29) /* 720: Enable Ack */ #define FE_CACHE_SET (FE_ERL|FE_CLSE|FE_WRIE|FE_ERMP) #define FE_SCSI_SET (FE_WIDE|FE_ULTRA|FE_ULTRA2|FE_DBLR|FE_QUAD|F_CLK80) @@ -760,6 +798,9 @@ #define SCSI_NCR_CHIP_TABLE \ { \ + {PSEUDO_ZALON_720_ID, 0x0f, "720", 3, 8, 4, \ + FE_WIDE|FE_DIFF|FE_EHP|FE_MUX|FE_EA} \ + , \ {PCI_DEVICE_ID_NCR_53C810, 0x0f, "810", 4, 8, 4, \ FE_ERL} \ , \ @@ -832,6 +873,7 @@ */ #define SCSI_NCR_CHIP_IDS \ { \ + PSEUDO_ZALON_720_ID, \ PCI_DEVICE_ID_NCR_53C810, \ PCI_DEVICE_ID_NCR_53C815, \ PCI_DEVICE_ID_NCR_53C820, \ @@ -1183,6 +1225,7 @@ /*17*/ u_char nc_mbox1; /* 896 and later cores only */ /*18*/ u_char nc_ctest0; + #define EHP 0x04 /* 720 even host parity */ /*19*/ u_char nc_ctest1; /*1a*/ u_char nc_ctest2; @@ -1200,6 +1243,7 @@ /*20*/ u_char nc_dfifo; /*21*/ u_char nc_ctest4; + #define MUX 0x80 /* 720 host bus multiplex mode */ #define BDIS 0x80 /* mod: burst disable */ #define MPEE 0x08 /* mod: master parity error enable */ @@ -1232,6 +1276,7 @@ #define CLSE 0x80 /* mod: cache line size enable */ #define PFF 0x40 /* cmd: pre-fetch flush */ #define PFEN 0x20 /* mod: pre-fetch enable */ + #define EA 0x20 /* mod: 720 enable-ack */ #define SSM 0x10 /* mod: single step mode */ #define IRQM 0x08 /* mod: irq mode (1 = totem pole !) */ #define STD 0x04 /* cmd: start dma mode */ @@ -1274,6 +1319,7 @@ /*4e*/ u_char nc_stest2; #define ROF 0x40 /* reset scsi offset (after gross error!) */ + #define DIF 0x20 /* 720 SCSI differential mode */ #define EXT 0x02 /* extended filtering */ /*4f*/ u_char nc_stest3; @@ -1452,12 +1498,21 @@ #define SCR_SEL_TBL 0x42000000 #define SCR_SEL_TBL_ATN 0x43000000 +#ifdef SCSI_NCR_BIG_ENDIAN +struct scr_tblsel { + u_char sel_scntl3; + u_char sel_id; + u_char sel_sxfer; + u_char sel_scntl4; +}; +#else struct scr_tblsel { u_char sel_scntl4; u_char sel_sxfer; u_char sel_id; u_char sel_scntl3; }; +#endif #define SCR_JMP_REL 0x04000000 #define SCR_ID(id) (((u_int32)(id)) << 16) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/sound/Config.in linux/drivers/sound/Config.in --- linux-2.4.20/drivers/sound/Config.in Thu Nov 28 16:53:14 2002 +++ linux/drivers/sound/Config.in Thu Nov 14 05:55:10 2002 @@ -133,6 +133,7 @@ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then dep_tristate ' AD1816(A) based cards (EXPERIMENTAL)' CONFIG_SOUND_AD1816 $CONFIG_SOUND_OSS + dep_tristate ' AD1889 based cards (AD1819 codec) (EXPERIMENTAL)' CONFIG_SOUND_AD1889 $CONFIG_SOUND_OSS fi dep_tristate ' Aztech Sound Galaxy (non-PnP) cards' CONFIG_SOUND_SGALAXY $CONFIG_SOUND_OSS dep_tristate ' Adlib Cards' CONFIG_SOUND_ADLIB $CONFIG_SOUND_OSS diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/sound/Makefile linux/drivers/sound/Makefile --- linux-2.4.20/drivers/sound/Makefile Thu Nov 28 16:53:14 2002 +++ linux/drivers/sound/Makefile Thu Nov 14 05:55:10 2002 @@ -45,6 +45,7 @@ obj-$(CONFIG_SOUND_WAVEARTIST) += waveartist.o obj-$(CONFIG_SOUND_SGALAXY) += sgalaxy.o ad1848.o obj-$(CONFIG_SOUND_AD1816) += ad1816.o +obj-$(CONFIG_SOUND_AD1889) += ad1889.o ac97_codec.o obj-$(CONFIG_SOUND_ACI_MIXER) += aci.o obj-$(CONFIG_SOUND_AWE32_SYNTH) += awe_wave.o diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/sound/ad1889.c linux/drivers/sound/ad1889.c --- linux-2.4.20/drivers/sound/ad1889.c Wed Dec 31 17:00:00 1969 +++ linux/drivers/sound/ad1889.c Sun Oct 20 05:54:22 2002 @@ -0,0 +1,1077 @@ +/* + * Copyright 2001 Randolph Chung + * + * Analog Devices 1889 PCI audio driver (AD1819 AC97-compatible codec) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Notes: + * 1. Only flat DMA is supported; s-g is not supported right now + * + * + tausq: Anyway, to set up sample rates for D to A, you just use the sample rate on the codec. For A to D, you need to set the codec always to 48K (using the split sample rate feature on the codec) and then set the resampler on the AD1889 to the sample rate you want. + Also, when changing the sample rate on the codec you need to power it down and re power it up for the change to take effect! + * + * $Id: ad1889.c,v 1.3 2002/10/19 21:31:44 grundler Exp $ + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "ad1889.h" + +#define DBG(fmt, arg...) printk(fmt, ##arg) +#define DEVNAME "ad1889" + +#define NR_HW_CH 4 +#define DAC_RUNNING 1 +#define ADC_RUNNING 2 + +#define UNDERRUN(dev) (0) + +#define AD1889_READW(dev,reg) readw(dev->regbase + reg) +#define AD1889_WRITEW(dev,reg,val) writew((val), dev->regbase + reg) +#define AD1889_READL(dev,reg) readl(dev->regbase + reg) +#define AD1889_WRITEL(dev,reg,val) writel((val), dev->regbase + reg) + +//now 100ms +#define WAIT_10MS() do { int __i; for (__i = 0; __i < 100; __i++) udelay(1000); } while(0) + +/* currently only support a single device */ +static ad1889_dev_t *ad1889_dev = NULL; + +/************************* helper routines ***************************** */ +static inline void ad1889_set_wav_rate(ad1889_dev_t *dev, int rate) +{ + dev->state[AD_WAV_STATE].dmabuf.rate = rate; + AD1889_WRITEW(dev, AD_DSWAS, rate); +} + +static inline void ad1889_set_adc_rate(ad1889_dev_t *dev, int rate) +{ + dev->state[AD_ADC_STATE].dmabuf.rate = rate; + AD1889_WRITEW(dev, AD_DSRES, rate); +} + +static inline void ad1889_set_wav_fmt(ad1889_dev_t *dev, int fmt) +{ + u16 tmp; + + tmp = AD1889_READW(ad1889_dev, AD_DSWSMC); + if (fmt == AFMT_S16_LE) { + //tmp |= 0x0100; /* set WA16 */ + tmp |= 0x0300; /* set WA16 stereo */ + } else if (fmt == AFMT_U8) { + tmp &= ~0x0100; /* clear WA16 */ + } + AD1889_WRITEW(ad1889_dev, AD_DSWSMC, tmp); +} + +static inline void ad1889_set_adc_fmt(ad1889_dev_t *dev, int fmt) +{ + u16 tmp; + + tmp = AD1889_READW(ad1889_dev, AD_DSRAMC); + if (fmt == AFMT_S16_LE) { + tmp |= 0x0100; /* set WA16 */ + } else if (fmt == AFMT_U8) { + tmp &= ~0x0100; /* clear WA16 */ + } + AD1889_WRITEW(ad1889_dev, AD_DSRAMC, tmp); +} + +static void ad1889_start_wav(ad1889_state_t *state) +{ + unsigned long flags; + struct dmabuf *dmabuf = &state->dmabuf; + int cnt; + u16 tmp; + + spin_lock_irqsave(&state->card->lock, flags); + + if (dmabuf->dma_len) /* DMA already in flight */ + goto skip_dma; + + /* setup dma */ + cnt = dmabuf->wr_ptr - dmabuf->rd_ptr; + if (cnt == 0) /* done - don't need to do anything */ + goto skip_dma; + + /* If the wr_ptr has wrapped, only map to the end */ + if (cnt < 0) + cnt = DMA_SIZE - dmabuf->rd_ptr; + + dmabuf->dma_handle = pci_map_single(ad1889_dev->pci, + dmabuf->rawbuf + dmabuf->rd_ptr, + cnt, PCI_DMA_TODEVICE); + dmabuf->dma_len = cnt; + dmabuf->ready = 1; + + /* load up the current register set */ + AD1889_WRITEL(ad1889_dev, AD_DMAWAVCC, cnt); + AD1889_WRITEL(ad1889_dev, AD_DMAWAVICC, cnt); + AD1889_WRITEL(ad1889_dev, AD_DMAWAVCA, dmabuf->dma_handle); + + /* TODO: for now we load the base registers with the same thing */ + AD1889_WRITEL(ad1889_dev, AD_DMAWAVBC, cnt); + AD1889_WRITEL(ad1889_dev, AD_DMAWAVIBC, cnt); + AD1889_WRITEL(ad1889_dev, AD_DMAWAVBA, dmabuf->dma_handle); + + /* and we're off to the races... */ + AD1889_WRITEL(ad1889_dev, AD_DMACHSS, 0x8); + tmp = AD1889_READW(ad1889_dev, AD_DSWSMC); + tmp |= 0x0400; /* set WAEN */ + AD1889_WRITEW(ad1889_dev, AD_DSWSMC, tmp); + (void) AD1889_READW(ad1889_dev, AD_DSWSMC); /* flush posted PCI write */ + + dmabuf->enable |= DAC_RUNNING; + +skip_dma: + spin_unlock_irqrestore(&state->card->lock, flags); +} + + +static void ad1889_stop_wav(ad1889_state_t *state) +{ + unsigned long flags; + struct dmabuf *dmabuf = &state->dmabuf; + + spin_lock_irqsave(&state->card->lock, flags); + + if (dmabuf->enable & DAC_RUNNING) { + u16 tmp; + unsigned long cnt = dmabuf->dma_len; + + tmp = AD1889_READW(ad1889_dev, AD_DSWSMC); + tmp &= ~0x0400; /* clear WAEN */ + AD1889_WRITEW(ad1889_dev, AD_DSWSMC, tmp); + (void) AD1889_READW(ad1889_dev, AD_DSWSMC); /* flush posted PCI write */ + pci_unmap_single(ad1889_dev->pci, dmabuf->dma_handle, + cnt, PCI_DMA_TODEVICE); + + dmabuf->enable &= ~DAC_RUNNING; + + /* update dma pointers */ + dmabuf->rd_ptr += cnt; + dmabuf->rd_ptr &= (DMA_SIZE - 1); + + dmabuf->dma_handle = 0; + dmabuf->dma_len = 0; + dmabuf->ready = 0; + + wake_up(&dmabuf->wait); + } + + spin_unlock_irqrestore(&state->card->lock, flags); +} + + +#if 0 +static void ad1889_startstop_adc(ad1889_state_t *state, int start) +{ + u16 tmp; + unsigned long flags; + + spin_lock_irqsave(&state->card->lock, flags); + + tmp = AD1889_READW(ad1889_dev, AD_DSRAMC); + if (start) { + state->dmabuf.enable |= ADC_RUNNING; + tmp |= 0x0004; /* set ADEN */ + } else { + state->dmabuf.enable &= ~ADC_RUNNING; + tmp &= ~0x0004; /* clear ADEN */ + } + AD1889_WRITEW(ad1889_dev, AD_DSRAMC, tmp); + + spin_unlock_irqrestore(&state->card->lock, flags); +} +#endif + +static ad1889_dev_t *ad1889_alloc_dev(struct pci_dev *pci) +{ + ad1889_dev_t *dev; + struct dmabuf *dmabuf; + int i; + + if ((dev = kmalloc(sizeof(ad1889_dev_t), GFP_KERNEL)) == NULL) + return NULL; + memset(dev, 0, sizeof(ad1889_dev_t)); + spin_lock_init(&dev->lock); + dev->pci = pci; + + for (i = 0; i < AD_MAX_STATES; i++) { + dev->state[i].card = dev; + init_MUTEX(&dev->state[i].sem); + init_waitqueue_head(&dev->state[i].dmabuf.wait); + } + + /* allocate dma buffer */ + + for (i = 0; i < AD_MAX_STATES; i++) { + dmabuf = &dev->state[i].dmabuf; + if ((dmabuf->rawbuf = kmalloc(DMA_SIZE, GFP_KERNEL|GFP_DMA)) == NULL) + return NULL; + dmabuf->rawbuf_size = DMA_SIZE; + dmabuf->dma_handle = 0; + dmabuf->rd_ptr = dmabuf->wr_ptr = dmabuf->dma_len = 0UL; + dmabuf->ready = 0; + dmabuf->rate = 44100; + } + + return dev; +} + +static void ad1889_free_dev(ad1889_dev_t *dev) +{ + int j; + struct dmabuf *dmabuf; + + if (dev == NULL) + return; + + if (dev->ac97_codec) + kfree(dev->ac97_codec); + + for (j = 0; j < AD_MAX_STATES; j++) { + dmabuf = &dev->state[j].dmabuf; + if (dmabuf->rawbuf != NULL) + kfree(dmabuf->rawbuf); + } + + kfree(dev); +} + +static inline void ad1889_trigger_playback(ad1889_dev_t *dev) +{ +#if 0 + u32 val; + struct dmabuf *dmabuf = &dev->state[AD_WAV_STATE].dmabuf; +#endif + + ad1889_start_wav(&dev->state[AD_WAV_STATE]); +} + +int ad1889_read_proc (char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + char *out = page; + int len, i; + ad1889_dev_t *dev = data; + ad1889_reg_t regs[] = { + { "WSMC", AD_DSWSMC, 16 }, + { "RAMC", AD_DSRAMC, 16 }, + { "WADA", AD_DSWADA, 16 }, + { "SYDA", AD_DSSYDA, 16 }, + { "WAS", AD_DSWAS, 16 }, + { "RES", AD_DSRES, 16 }, + { "CCS", AD_DSCCS, 16 }, + { "ADCBA", AD_DMAADCBA, 32 }, + { "ADCCA", AD_DMAADCCA, 32 }, + { "ADCBC", AD_DMAADCBC, 32 }, + { "ADCCC", AD_DMAADCCC, 32 }, + { "ADCIBC", AD_DMAADCIBC, 32 }, + { "ADCICC", AD_DMAADCICC, 32 }, + { "ADCCTRL", AD_DMAADCCTRL, 16 }, + { "WAVBA", AD_DMAWAVBA, 32 }, + { "WAVCA", AD_DMAWAVCA, 32 }, + { "WAVBC", AD_DMAWAVBC, 32 }, + { "WAVCC", AD_DMAWAVCC, 32 }, + { "WAVIBC", AD_DMAWAVIBC, 32 }, + { "WAVICC", AD_DMAWAVICC, 32 }, + { "WAVCTRL", AD_DMAWAVCTRL, 16 }, + { "DISR", AD_DMADISR, 32 }, + { "CHSS", AD_DMACHSS, 32 }, + { "IPC", AD_GPIOIPC, 16 }, + { "OP", AD_GPIOOP, 16 }, + { "IP", AD_GPIOIP, 16 }, + { "ACIC", AD_ACIC, 16 }, + { "AC97_RESET", 0x100 + AC97_RESET, 16 }, + { "AC97_MASTER_VOL_STEREO", 0x100 + AC97_MASTER_VOL_STEREO, 16 }, + { "AC97_HEADPHONE_VOL", 0x100 + AC97_HEADPHONE_VOL, 16 }, + { "AC97_MASTER_VOL_MONO", 0x100 + AC97_MASTER_VOL_MONO, 16 }, + { "AC97_MASTER_TONE", 0x100 + AC97_MASTER_TONE, 16 }, + { "AC97_PCBEEP_VOL", 0x100 + AC97_PCBEEP_VOL, 16 }, + { "AC97_PHONE_VOL", 0x100 + AC97_PHONE_VOL, 16 }, + { "AC97_MIC_VOL", 0x100 + AC97_MIC_VOL, 16 }, + { "AC97_LINEIN_VOL", 0x100 + AC97_LINEIN_VOL, 16 }, + { "AC97_CD_VOL", 0x100 + AC97_CD_VOL, 16 }, + { "AC97_VIDEO_VOL", 0x100 + AC97_VIDEO_VOL, 16 }, + { "AC97_AUX_VOL", 0x100 + AC97_AUX_VOL, 16 }, + { "AC97_PCMOUT_VOL", 0x100 + AC97_PCMOUT_VOL, 16 }, + { "AC97_RECORD_SELECT", 0x100 + AC97_RECORD_SELECT, 16 }, + { "AC97_RECORD_GAIN", 0x100 + AC97_RECORD_GAIN, 16 }, + { "AC97_RECORD_GAIN_MIC", 0x100 + AC97_RECORD_GAIN_MIC, 16 }, + { "AC97_GENERAL_PURPOSE", 0x100 + AC97_GENERAL_PURPOSE, 16 }, + { "AC97_3D_CONTROL", 0x100 + AC97_3D_CONTROL, 16 }, + { "AC97_MODEM_RATE", 0x100 + AC97_MODEM_RATE, 16 }, + { "AC97_POWER_CONTROL", 0x100 + AC97_POWER_CONTROL, 16 }, + { 0 } + }; + + if (dev == NULL) + return -ENODEV; + + for (i = 0; regs[i].name != 0; i++) + out += sprintf(out, "%s: 0x%0*x\n", regs[i].name, + regs[i].width >> 2, + (regs[i].width == 16 + ? AD1889_READW(dev, regs[i].offset) + : AD1889_READL(dev, regs[i].offset))); + + for (i = 0; i < AD_MAX_STATES; i++) { + out += sprintf(out, "DMA status for %s:\n", + (i == AD_WAV_STATE ? "WAV" : "ADC")); + out += sprintf(out, "\t\t0x%p (IOVA: 0x%u)\n", + dev->state[i].dmabuf.rawbuf, + dev->state[i].dmabuf.dma_handle); + + out += sprintf(out, "\tread ptr: offset %u\n", + (unsigned int)dev->state[i].dmabuf.rd_ptr); + out += sprintf(out, "\twrite ptr: offset %u\n", + (unsigned int)dev->state[i].dmabuf.wr_ptr); + out += sprintf(out, "\tdma len: offset %u\n", + (unsigned int)dev->state[i].dmabuf.dma_len); + } + + len = out - page - off; + if (len < count) { + *eof = 1; + if (len <= 0) return 0; + } else { + len = count; + } + *start = page + off; + return len; +} + +/***************************** DMA interfaces ************************** */ +#if 0 +static inline unsigned long ad1889_get_dma_addr(ad1889_state_t *state) +{ + struct dmabuf *dmabuf = &state->dmabuf; + u32 offset; + + if (!(dmabuf->enable & (DAC_RUNNING | ADC_RUNNING))) { + printk(KERN_ERR DEVNAME ": get_dma_addr called without dma enabled\n"); + return 0; + } + + if (dmabuf->enable & DAC_RUNNING) + offset = le32_to_cpu(AD1889_READL(state->card, AD_DMAWAVBA)); + else + offset = le32_to_cpu(AD1889_READL(state->card, AD_DMAADCBA)); + + return (unsigned long)bus_to_virt((unsigned long)offset) - (unsigned long)dmabuf->rawbuf; +} + +static void ad1889_update_ptr(ad1889_dev_t *dev, int wake) +{ + ad1889_state_t *state; + struct dmabuf *dmabuf; + unsigned long hwptr; + int diff; + + /* check ADC first */ + state = &dev->adc_state; + dmabuf = &state->dmabuf; + if (dmabuf->enable & ADC_RUNNING) { + hwptr = ad1889_get_dma_addr(state); + diff = (dmabuf->dmasize + hwptr - dmabuf->hwptr) % dmabuf->dmasize; + + dmabuf->hwptr = hwptr; + dmabuf->total_bytes += diff; + dmabuf->count += diff; + if (dmabuf->count > dmabuf->dmasize) + dmabuf->count = dmabuf->dmasize; + + if (dmabuf->mapped) { + if (wake & dmabuf->count >= dmabuf->fragsize) + wake_up(&dmabuf->wait); + } else { + if (wake & dmabuf->count > 0) + wake_up(&dmabuf->wait); + } + } + + /* check DAC */ + state = &dev->wav_state; + dmabuf = &state->dmabuf; + if (dmabuf->enable & DAC_RUNNING) { +XXX + +} +#endif + +/************************* /dev/dsp interfaces ************************* */ + +static ssize_t ad1889_read(struct file *file, char *buffer, size_t count, + loff_t *ppos) +{ + return 0; +} + +static ssize_t ad1889_write(struct file *file, const char *buffer, size_t count, + loff_t *ppos) +{ + ad1889_dev_t *dev = (ad1889_dev_t *)file->private_data; + ad1889_state_t *state = &dev->state[AD_WAV_STATE]; + volatile struct dmabuf *dmabuf = &state->dmabuf; + ssize_t ret = 0; + DECLARE_WAITQUEUE(wait, current); + + if (ppos != &file->f_pos) + return -ESPIPE; + + down(&state->sem); +#if 0 + if (dmabuf->mapped) { + ret = -ENXIO; + goto err1; + } +#endif + if (!access_ok(VERIFY_READ, buffer, count)) { + ret = -EFAULT; + goto err1; + } + + add_wait_queue(&state->dmabuf.wait, &wait); + + /* start filling dma buffer.... */ + while (count > 0) { + long rem; + long cnt = count; + unsigned long flags; + + + for (;;) { + long used_bytes; + long timeout; /* max time for DMA in jiffies */ + + /* buffer is full if wr catches up to rd */ + spin_lock_irqsave(&state->card->lock, flags); + used_bytes = dmabuf->wr_ptr - dmabuf->rd_ptr; + timeout = (dmabuf->dma_len * HZ) / dmabuf->rate; + spin_unlock_irqrestore(&state->card->lock, flags); + + /* adjust for buffer wrap around */ + used_bytes = (used_bytes + DMA_SIZE) & (DMA_SIZE - 1); + + /* If at least one page unused */ + if (used_bytes < (DMA_SIZE - 0x1000)) + break; + + /* dma buffer full */ + + if (file->f_flags & O_NONBLOCK) { + ret = -EAGAIN; + goto err2; + } + + set_current_state(TASK_INTERRUPTIBLE); + if (!schedule_timeout(timeout + 1)) + printk(KERN_WARNING "AD1889 timeout(%ld) r/w %lx/%lx len %lx\n", + timeout+1, + dmabuf->rd_ptr, dmabuf->wr_ptr, + dmabuf->dma_len); + + if (signal_pending(current)) { + ret = -ERESTARTSYS; + goto err2; + } + + } + + /* watch out for wrapping around static buffer */ + spin_lock_irqsave(&state->card->lock, flags); + rem = DMA_SIZE - dmabuf->wr_ptr; + if (cnt > rem) + cnt = rem; + + rem = dmabuf->wr_ptr; + + /* update dma pointers */ + dmabuf->wr_ptr += cnt; + dmabuf->wr_ptr &= DMA_SIZE - 1; /* wrap ptr if necessary */ + spin_unlock_irqrestore(&state->card->lock, flags); + + /* transfer unwrapped chunk */ + if (copy_from_user(dmabuf->rawbuf + rem, buffer, cnt)) { + ret = -EFAULT; + goto err2; + } + + DBG("Writing 0x%lx bytes to +0x%lx\n", cnt, rem); + + /* update counters */ + count -= cnt; + buffer += cnt; + ret += cnt; + + /* we have something to play - go play it! */ + ad1889_trigger_playback(dev); + } + +err2: + remove_wait_queue(&state->dmabuf.wait, &wait); +err1: + up(&state->sem); + return ret; +} + +static unsigned int ad1889_poll(struct file *file, struct poll_table_struct *wait) +{ + unsigned int mask = 0; +#if 0 + ad1889_dev_t *dev = (ad1889_dev_t *)file->private_data; + ad1889_state_t *state = NULL; + struct dmabuf *dmabuf; + unsigned long flags; + + if (!(file->f_mode & (FMODE_READ | FMODE_WRITE))) + return -EINVAL; + + if (file->f_mode & FMODE_WRITE) { + state = &dev->state[AD_WAV_STATE]; + if (!state) return 0; + dmabuf = &state->dmabuf; + poll_wait(file, &dmabuf->wait, wait); + } + + if (file->f_mode & FMODE_READ) { + state = &dev->state[AD_ADC_STATE]; + if (!state) return 0; + dmabuf = &state->dmabuf; + poll_wait(file, &dmabuf->wait, wait); + } + + spin_lock_irqsave(&dev->lock, flags); + ad1889_update_ptr(dev, 0); + + if (file->f_mode & FMODE_WRITE) { + state = &dev->state[WAV_STATE]; + dmabuf = &state->dmabuf; + if (dmabuf->mapped) { + if (dmabuf->count >= (int)dmabuf->fragsize) + mask |= POLLOUT | POLLWRNORM; + } else { + if ((int)dmabuf->dmasize >= dmabuf->count + + (int)dmabuf->fragsize) + mask |= POLLOUT | POLLWRNORM; + } + } + + if (file ->f_mode & FMODE_READ) { + state = &dev->state[AD_ADC_STATE]; + dmabuf = &state->dmabuf; + if (dmabuf->count >= (int)dmabuf->fragsize) + mask |= POLLIN | POLLRDNORM; + } + spin_unlock_irqrestore(&dev->lock, flags); + +#endif + return mask; +} + +static int ad1889_mmap(struct file *file, struct vm_area_struct *vma) +{ + return 0; +} + +static int ad1889_ioctl(struct inode *inode, struct file *file, unsigned int cmd, + unsigned long arg) +{ + int val = 0; + ad1889_dev_t *dev = (ad1889_dev_t *)file->private_data; + struct dmabuf *dmabuf; + audio_buf_info abinfo; + + switch (cmd) + { + case OSS_GETVERSION: + return put_user(SOUND_VERSION, (int *)arg); + + case SNDCTL_DSP_RESET: + break; + + case SNDCTL_DSP_SYNC: + break; + + case SNDCTL_DSP_SPEED: + /* set sampling rate */ + if (get_user(val, (int *)arg)) + return -EFAULT; + if (val > 5400 && val < 48000) + { + if (file->f_mode & FMODE_WRITE) + AD1889_WRITEW(ad1889_dev, AD_DSWAS, val); + if (file->f_mode & FMODE_READ) + AD1889_WRITEW(ad1889_dev, AD_DSRES, val); + } + return 0; + + case SNDCTL_DSP_STEREO: /* undocumented? */ + if (get_user(val, (int *)arg)) + return -EFAULT; + if (file->f_mode & FMODE_READ) { + val = AD1889_READW(ad1889_dev, AD_DSWSMC); + if (val) { + val |= 0x0200; /* set WAST */ + } else { + val &= ~0x0200; /* clear WAST */ + } + AD1889_WRITEW(ad1889_dev, AD_DSWSMC, val); + } + if (file->f_mode & FMODE_WRITE) { + val = AD1889_READW(ad1889_dev, AD_DSRAMC); + if (val) { + val |= 0x0002; /* set ADST */ + } else { + val &= ~0x0002; /* clear ADST */ + } + AD1889_WRITEW(ad1889_dev, AD_DSRAMC, val); + } + + return 0; + + case SNDCTL_DSP_GETBLKSIZE: + return put_user(DMA_SIZE, (int *)arg); + + case SNDCTL_DSP_GETFMTS: + return put_user(AFMT_S16_LE|AFMT_U8, (int *)arg); + + case SNDCTL_DSP_SETFMT: + if (get_user(val, (int *)arg)) + return -EFAULT; + + if (file->f_mode & FMODE_READ) + ad1889_set_adc_fmt(dev, val); + + if (file->f_mode & FMODE_WRITE) + ad1889_set_wav_fmt(dev, val); + + return put_user(val, (int *)arg); + + case SNDCTL_DSP_CHANNELS: + break; + + case SNDCTL_DSP_POST: + /* send all data to device */ + break; + + case SNDCTL_DSP_SUBDIVIDE: + break; + + case SNDCTL_DSP_SETFRAGMENT: + /* not supported; uses fixed fragment sizes */ + return put_user(DMA_SIZE, (int *)arg); + + case SNDCTL_DSP_GETOSPACE: + case SNDCTL_DSP_GETISPACE: + /* space left in dma buffers */ + if (cmd == SNDCTL_DSP_GETOSPACE) + dmabuf = &dev->state[AD_WAV_STATE].dmabuf; + else + dmabuf = &dev->state[AD_ADC_STATE].dmabuf; + abinfo.fragments = 1; + abinfo.fragstotal = 1; + abinfo.fragsize = DMA_SIZE; + abinfo.bytes = DMA_SIZE; + return copy_to_user((void *)arg, &abinfo, sizeof(abinfo)) ? -EFAULT : 0; + case SNDCTL_DSP_NONBLOCK: + file->f_flags |= O_NONBLOCK; + return 0; + + case SNDCTL_DSP_GETCAPS: + return put_user(0, (int *)arg); + + case SNDCTL_DSP_GETTRIGGER: + case SNDCTL_DSP_SETTRIGGER: + break; + + case SNDCTL_DSP_GETIPTR: + case SNDCTL_DSP_GETOPTR: + break; + + case SNDCTL_DSP_SETDUPLEX: + break; + + case SNDCTL_DSP_GETODELAY: + break; + + case SOUND_PCM_READ_RATE: + return put_user(AD1889_READW(ad1889_dev, AD_DSWAS), (int *)arg); + + case SOUND_PCM_READ_CHANNELS: + case SOUND_PCM_READ_BITS: + break; + + case SNDCTL_DSP_MAPINBUF: + case SNDCTL_DSP_MAPOUTBUF: + case SNDCTL_DSP_SETSYNCRO: + case SOUND_PCM_WRITE_FILTER: + case SOUND_PCM_READ_FILTER: + break; + + default: + break; + } + + return -ENOTTY; +} + +static int ad1889_open(struct inode *inode, struct file *file) +{ + /* check minor; only support /dev/dsp atm */ + if (MINOR(inode->i_rdev) != 3) + return -ENXIO; + + file->private_data = ad1889_dev; + + ad1889_set_wav_rate(ad1889_dev, 44100); + ad1889_set_wav_fmt(ad1889_dev, AFMT_S16_LE); + AD1889_WRITEW(ad1889_dev, AD_DSWADA, 0x0404); /* attenuation */ + MOD_INC_USE_COUNT; + return 0; +} + +static int ad1889_release(struct inode *inode, struct file *file) +{ + /* if we have state free it here */ + MOD_DEC_USE_COUNT; + return 0; +} + +static struct file_operations ad1889_fops = { + llseek: no_llseek, + read: ad1889_read, + write: ad1889_write, + poll: ad1889_poll, + ioctl: ad1889_ioctl, + mmap: ad1889_mmap, + open: ad1889_open, + release: ad1889_release, +}; + +/************************* /dev/mixer interfaces ************************ */ +static int ad1889_mixer_open(struct inode *inode, struct file *file) +{ + if (ad1889_dev->ac97_codec->dev_mixer != MINOR(inode->i_rdev)) + return -ENODEV; + + file->private_data = ad1889_dev->ac97_codec; + MOD_INC_USE_COUNT; + return 0; +} + +static int ad1889_mixer_release(struct inode *inode, struct file *file) +{ + MOD_DEC_USE_COUNT; + return 0; +} + +static int ad1889_mixer_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg) +{ + struct ac97_codec *codec = (struct ac97_codec *)file->private_data; + return codec->mixer_ioctl(codec, cmd, arg); +} + +static struct file_operations ad1889_mixer_fops = { + llseek: no_llseek, + ioctl: ad1889_mixer_ioctl, + open: ad1889_mixer_open, + release: ad1889_mixer_release, +}; + +/************************* AC97 interfaces ****************************** */ +static void ad1889_codec_write(struct ac97_codec *ac97, u8 reg, u16 val) +{ + ad1889_dev_t *dev = ac97->private_data; + + //DBG("Writing 0x%x to 0x%lx\n", val, dev->regbase + 0x100 + reg); + return AD1889_WRITEW(dev, 0x100 + reg, val); +} + +static u16 ad1889_codec_read(struct ac97_codec *ac97, u8 reg) +{ + ad1889_dev_t *dev = ac97->private_data; + //DBG("Reading from 0x%lx\n", dev->regbase + 0x100 + reg); + return AD1889_READW(dev, 0x100 + reg); +} + +static int ad1889_ac97_init(ad1889_dev_t *dev, int id) +{ + struct ac97_codec *ac97; + u16 eid; + + if ((ac97 = kmalloc(sizeof(struct ac97_codec), GFP_KERNEL)) == NULL) + return -ENOMEM; + memset(ac97, 0, sizeof(struct ac97_codec)); + + ac97->private_data = dev; + ac97->id = id; + + ac97->codec_read = ad1889_codec_read; + ac97->codec_write = ad1889_codec_write; + + if (ac97_probe_codec(ac97) == 0) { + printk(DEVNAME ": ac97_probe_codec failed\n"); + goto out_free; + } + + eid = ad1889_codec_read(ac97, AC97_EXTENDED_ID); + if (eid == 0xffffff) { + printk(KERN_WARNING DEVNAME ": no codec attached?\n"); + goto out_free; + } + + dev->ac97_features = eid; + + if ((ac97->dev_mixer = register_sound_mixer(&ad1889_mixer_fops, -1)) < 0) { + printk(KERN_ERR DEVNAME ": cannot register mixer\n"); + goto out_free; + } + + dev->ac97_codec = ac97; + return 0; + +out_free: + kfree(ac97); + return -ENODEV; +} + +static int ad1889_aclink_reset(struct pci_dev * pcidev) +{ + u16 stat; + int retry = 200; + ad1889_dev_t *dev = pci_get_drvdata(pcidev); + + AD1889_WRITEW(dev, AD_DSCCS, 0x8000); /* turn on clock */ + AD1889_READW(dev, AD_DSCCS); + + WAIT_10MS(); + + stat = AD1889_READW(dev, AD_ACIC); + stat |= 0x0002; /* Reset Disable */ + AD1889_WRITEW(dev, AD_ACIC, stat); + (void) AD1889_READW(dev, AD_ACIC); /* flush posted write */ + + udelay(10); + + stat = AD1889_READW(dev, AD_ACIC); + stat |= 0x0001; /* Interface Enable */ + AD1889_WRITEW(dev, AD_ACIC, stat); + + do { + if (AD1889_READW(dev, AD_ACIC) & 0x8000) /* Ready */ + break; + WAIT_10MS(); + retry--; + } while (retry > 0); + + if (!retry) { + printk(KERN_ERR "ad1889_aclink_reset: codec is not ready [0x%x]\n", + AD1889_READW(dev, AD_ACIC)); + return -EBUSY; + } + + /* TODO reset AC97 codec */ + /* TODO set wave/adc pci ctrl status */ + + stat = AD1889_READW(dev, AD_ACIC); + stat |= 0x0004; /* Audio Stream Output Enable */ + AD1889_WRITEW(dev, AD_ACIC, stat); + return 0; +} + +/************************* PCI interfaces ****************************** */ +/* PCI device table */ +static struct pci_device_id ad1889_id_tbl[] __devinitdata = { + { PCI_VENDOR_ID_ANALOG_DEVICES, PCI_DEVICE_ID_AD1889JS, PCI_ANY_ID, + PCI_ANY_ID, 0, 0, (unsigned long)DEVNAME }, + { }, +}; +MODULE_DEVICE_TABLE(pci, ad1889_id_tbl); + +static void ad1889_interrupt(int irq, void *dev_id, struct pt_regs *regs) +{ + u32 stat; + ad1889_dev_t *dev = (ad1889_dev_t *)dev_id; + + stat = AD1889_READL(dev, AD_DMADISR); + + /* clear ISR */ + AD1889_WRITEL(dev, AD_DMADISR, stat); + + if (stat & 0x8) { /* WAVI */ + DBG("WAV interrupt\n"); + dev->stats.wav_intrs++; + if (dev->state[AD_WAV_STATE].dmabuf.ready) { + ad1889_stop_wav(&dev->state[AD_WAV_STATE]); /* clean up */ + ad1889_start_wav(&dev->state[AD_WAV_STATE]); /* start new */ + } + + } + + if (stat & 0x2 && dev->state[AD_ADC_STATE].dmabuf.ready) { /* ADCI */ + DBG("ADC interrupt\n"); + dev->stats.adc_intrs++; + } +} + +static void ad1889_initcfg(ad1889_dev_t *dev) +{ + u16 tmp; + + /* make sure the interrupt bits are setup the way we want */ + tmp = AD1889_READW(dev, AD_DMAWAVCTRL); + tmp &= ~0x00ff; /* flat dma, no sg, mask out the intr bits */ + tmp |= 0x0004; /* intr on count, loop */ + AD1889_WRITEW(dev, AD_DMAWAVCTRL, tmp); + + /* unmute... */ + tmp = AD1889_READW(dev, AD_DSWADA); + tmp &= ~0x8080; + AD1889_WRITEW(dev, AD_DSWADA, tmp); +} + +static int __devinit ad1889_probe(struct pci_dev *pcidev, const struct pci_device_id *ent) +{ + int err; + ad1889_dev_t *dev; + unsigned long bar; + struct proc_dir_entry *proc_root = NULL; + + if ((err = pci_enable_device(pcidev)) != 0) { + printk(KERN_ERR DEVNAME ": pci_enable_device failed\n"); + return err; + } + + pci_set_master(pcidev); + if ((dev = ad1889_alloc_dev(pcidev)) == NULL) { + printk(KERN_ERR DEVNAME ": cannot allocate memory for device\n"); + return -ENOMEM; + } + pci_set_drvdata(pcidev, dev); + bar = pci_resource_start(pcidev, 0); + + if (!(pci_resource_flags(pcidev, 0) & IORESOURCE_MEM)) { + printk(KERN_ERR DEVNAME ": memory region not assigned\n"); + goto err_free_mem; + } + + if (request_irq(pcidev->irq, ad1889_interrupt, SA_SHIRQ, DEVNAME, dev) != 0) { + printk(KERN_ERR DEVNAME ": unable to request interrupt\n"); + goto err_free_mem; + } + + request_mem_region(bar, AD_DSIOMEMSIZE, DEVNAME); + dev->regbase = (unsigned long)ioremap_nocache(bar, AD_DSIOMEMSIZE); + + printk(KERN_INFO DEVNAME ": %s at 0x%lx IRQ %d\n", + (char *)ent->driver_data, dev->regbase, pcidev->irq); + + if (ad1889_aclink_reset(pcidev) != 0) + goto err_free_mem; + + /* register /dev/dsp */ + if ((dev->dev_audio = register_sound_dsp(&ad1889_fops, -1)) < 0) { + printk(KERN_ERR DEVNAME ": cannot register /dev/dsp\n"); + goto err_free_irq; + } + + if ((err = ad1889_ac97_init(dev, 0)) != 0) + goto err_free_dsp; + + if (((proc_root = proc_mkdir("driver/ad1889", 0)) == NULL) || + create_proc_read_entry("ac97", S_IFREG|S_IRUGO, proc_root, ac97_read_proc, dev->ac97_codec) == NULL || + create_proc_read_entry("info", S_IFREG|S_IRUGO, proc_root, ad1889_read_proc, dev) == NULL) + goto err_free_dsp; + + ad1889_initcfg(dev); + + //DBG(DEVNAME ": Driver initialization done!\n"); + + ad1889_dev = dev; + + return 0; + +err_free_dsp: + unregister_sound_dsp(dev->dev_audio); + +err_free_irq: + free_irq(pcidev->irq, dev); + +err_free_mem: + ad1889_free_dev(dev); + pci_set_drvdata(pcidev, 0); + + return -ENODEV; +} + +static void __devexit ad1889_remove(struct pci_dev *pcidev) +{ + ad1889_dev_t *dev = pci_get_drvdata(pcidev); + + if (dev == NULL) return; + + unregister_sound_mixer(dev->ac97_codec->dev_mixer); + unregister_sound_dsp(dev->dev_audio); + free_irq(pcidev->irq, dev); + release_mem_region(dev->regbase, AD_DSIOMEMSIZE); + + /* any hw programming needed? */ + ad1889_free_dev(dev); +} + +MODULE_AUTHOR("Randolph Chung"); +MODULE_DESCRIPTION("Analog Devices AD1889 PCI Audio"); +MODULE_LICENSE("GPL"); + +static struct pci_driver ad1889_driver = { + name: DEVNAME, + id_table: ad1889_id_tbl, + probe: ad1889_probe, + remove: ad1889_remove, +}; + +static int __init ad1889_init_module(void) +{ + return pci_module_init(&ad1889_driver); +} + +static void ad1889_exit_module(void) +{ + pci_unregister_driver(&ad1889_driver); + return; +} + +module_init(ad1889_init_module); +module_exit(ad1889_exit_module); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/sound/ad1889.h linux/drivers/sound/ad1889.h --- linux-2.4.20/drivers/sound/ad1889.h Wed Dec 31 17:00:00 1969 +++ linux/drivers/sound/ad1889.h Wed Oct 16 05:54:22 2002 @@ -0,0 +1,134 @@ +#ifndef _AD1889_H_ +#define _AD1889_H_ + +#define AD_DSWSMC 0x00 /* DMA input wave/syn mixer control */ +#define AD_DSRAMC 0x02 /* DMA output resamp/ADC mixer control */ +#define AD_DSWADA 0x04 /* DMA input wave attenuation */ +#define AD_DSSYDA 0x06 /* DMA input syn attentuation */ +#define AD_DSWAS 0x08 /* wave input sample rate */ +#define AD_DSRES 0x0a /* resampler output sample rate */ +#define AD_DSCCS 0x0c /* chip control/status */ + +#define AD_DMARESBA 0x40 /* RES base addr */ +#define AD_DMARESCA 0x44 /* RES current addr */ +#define AD_DMARESBC 0x48 /* RES base cnt */ +#define AD_DMARESCC 0x4c /* RES current count */ +#define AD_DMAADCBA 0x50 /* ADC */ +#define AD_DMAADCCA 0x54 +#define AD_DMAADCBC 0x58 +#define AD_DMAADCCC 0x5c +#define AD_DMASYNBA 0x60 /* SYN */ +#define AD_DMASYNCA 0x64 +#define AD_DMASYNBC 0x68 +#define AD_DMASYNCC 0x6c +#define AD_DMAWAVBA 0x70 /* WAV */ +#define AD_DMAWAVCA 0x74 +#define AD_DMAWAVBC 0x78 +#define AD_DMAWAVCC 0x7c +#define AD_DMARESICC 0x80 /* RES interrupt current count */ +#define AD_DMARESIBC 0x84 /* RES interrupt base count */ +#define AD_DMAADCICC 0x88 /* ADC interrupt current count */ +#define AD_DMAADCIBC 0x8c /* ADC interrupt base count */ +#define AD_DMASYNICC 0x90 /* SYN interrupt current count */ +#define AD_DMASYNIBC 0x94 /* SYN interrupt base count */ +#define AD_DMAWAVICC 0x98 /* WAV interrupt current count */ +#define AD_DMAWAVIBC 0x9c /* WAV interrupt base count */ +#define AD_DMARESCTRL 0xa0 /* RES PCI control/status */ +#define AD_DMAADCCTRL 0xa8 /* RES PCI control/status */ +#define AD_DMASYNCTRL 0xb0 /* RES PCI control/status */ +#define AD_DMAWAVCTRL 0xb8 /* RES PCI control/status */ +#define AD_DMADISR 0xc0 /* PCI DMA intr status */ +#define AD_DMACHSS 0xc4 /* PCI DMA channel stop status */ + +#define AD_GPIOIPC 0xc8 /* IO port ctrl */ +#define AD_GPIOOP 0xca /* IO output status */ +#define AD_GPIOIP 0xcc /* IO input status */ + +/* AC97 registers, 0x100 - 0x17f; see ac97.h */ +#define AD_ACIC 0x180 /* AC Link interface ctrl */ + +/* OPL3; BAR1 */ +#define AD_OPLM0AS 0x00 /* Music0 address/status */ +#define AD_OPLM0DATA 0x01 /* Music0 data */ +#define AD_OPLM1A 0x02 /* Music1 address */ +#define AD_OPLM1DATA 0x03 /* Music1 data */ +/* 0x04-0x0f reserved */ + +/* MIDI; BAR2 */ +#define AD_MIDA 0x00 /* MIDI data */ +#define AD_MISC 0x01 /* MIDI status/cmd */ +/* 0x02-0xff reserved */ + +#define AD_DSIOMEMSIZE 512 +#define AD_OPLMEMSIZE 16 +#define AD_MIDIMEMSIZE 16 + +#define AD_WAV_STATE 0 +#define AD_ADC_STATE 1 +#define AD_MAX_STATES 2 + +#define DMA_SIZE (128*1024) + +#define DMA_FLAG_MAPPED 1 + +struct ad1889_dev; + +typedef struct ad1889_state { + struct ad1889_dev *card; + + mode_t open_mode; + struct dmabuf { + unsigned int rate; + unsigned char fmt, enable; + + /* buf management */ + size_t rawbuf_size; + void *rawbuf; + dma_addr_t dma_handle; /* mapped address */ + unsigned long dma_len; /* number of bytes mapped */ + + /* indexes into rawbuf for setting up DMA engine */ + volatile unsigned long rd_ptr, wr_ptr; + + wait_queue_head_t wait; /* to wait for buf servicing */ + + /* OSS bits */ + unsigned int mapped:1; + unsigned int ready:1; + unsigned int ossfragshift; + int ossmaxfrags; + unsigned int subdivision; + } dmabuf; + + struct semaphore sem; +} ad1889_state_t; + +typedef struct ad1889_dev { + unsigned long regbase; + struct pci_dev *pci; + + spinlock_t lock; + + int dev_audio; + + /* states; one per channel; right now only WAV and ADC */ + struct ad1889_state state[AD_MAX_STATES]; + + /* AC97 codec */ + struct ac97_codec *ac97_codec; + u16 ac97_features; + + /* debugging stuff */ + struct stats { + unsigned int wav_intrs, adc_intrs; + unsigned int blocks, underrun, error; + } stats; +} ad1889_dev_t; + +typedef struct ad1889_reg { + const char *name; + int offset; + int width; +} ad1889_reg_t; + +#endif diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/video/Config.in linux/drivers/video/Config.in --- linux-2.4.20/drivers/video/Config.in Thu Nov 28 16:53:15 2002 +++ linux/drivers/video/Config.in Thu Nov 14 05:55:24 2002 @@ -306,7 +306,7 @@ "$CONFIG_FB_VALKYRIE" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \ "$CONFIG_FB_IGA" = "m" -o "$CONFIG_FB_MATROX" = "m" -o \ "$CONFIG_FB_CT65550" = "m" -o "$CONFIG_FB_PM2" = "m" -o \ - "$CONFIG_FB_PM3" = "m" -o "$CONFIG_FB_TRIDENT" = "y" -o \ + "$CONFIG_FB_PM3" = "m" -o "$CONFIG_FB_TRIDENT" = "m" -o \ "$CONFIG_FB_P9100" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \ "$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_3DFX" = "m" -o \ "$CONFIG_FB_SGIVW" = "m" -o "$CONFIG_FB_CYBER2000" = "m" -o \ @@ -344,7 +344,7 @@ "$CONFIG_FB_VALKYRIE" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \ "$CONFIG_FB_CT65550" = "m" -o "$CONFIG_FB_MATROX" = "m" -o \ "$CONFIG_FB_PM2" = "m" -o "$CONFIG_FB_SGIVW" = "m" -o \ - "$CONFIG_FB_PM3" = "m" -o "$CONFIG_FB_TRIDENT" = "y" -o \ + "$CONFIG_FB_PM3" = "m" -o "$CONFIG_FB_TRIDENT" = "m" -o \ "$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \ "$CONFIG_FB_CYBER2000" = "m" -o "$CONFIG_FB_SIS" = "m" -o \ "$CONFIG_FB_SA1100" = "m" -o "$CONFIG_FB_RADEON" = "m" -o \ @@ -389,12 +389,12 @@ "$CONFIG_FB_CONTROL" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \ "$CONFIG_FB_TGA" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \ "$CONFIG_FB_MATROX" = "m" -o "$CONFIG_FB_PM2" = "m" -o \ - "$CONFIG_FB_PM3" = "m" -o "$CONFIG_FB_TRIDENT" = "y" -o \ + "$CONFIG_FB_PM3" = "m" -o "$CONFIG_FB_TRIDENT" = "m" -o \ "$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \ "$CONFIG_FB_3DFX" = "m" -o "$CONFIG_FB_RADEON" = "m" -o \ "$CONFIG_FB_SGIVW" = "m" -o "$CONFIG_FB_SIS" = "m" -o \ "$CONFIG_FB_PVR2" = "m" -o "$CONFIG_FB_VOODOO1" = "m" -o \ - "$CONFIG_FB_CYBER2000" = "m" -o "$CONFIG_FB_STI" = "y" ]; then + "$CONFIG_FB_CYBER2000" = "m" -o "$CONFIG_FB_STI" = "m" ]; then define_tristate CONFIG_FBCON_CFB32 m fi fi @@ -441,9 +441,9 @@ define_tristate CONFIG_FBCON_HGA m fi fi - if [ "$CONFIG_FB_STI" = "y" ]; then - define_tristate CONFIG_FBCON_STI y - fi + fi + if [ "$CONFIG_FB_STI" = "y" ]; then + define_tristate CONFIG_FBCON_STI y fi bool ' Support only 8 pixels wide fonts' CONFIG_FBCON_FONTWIDTH8_ONLY if [ "$CONFIG_SPARC32" = "y" -o "$CONFIG_SPARC64" = "y" ]; then diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/video/dummycon.c linux/drivers/video/dummycon.c --- linux-2.4.20/drivers/video/dummycon.c Tue Dec 5 13:29:39 2000 +++ linux/drivers/video/dummycon.c Thu Jun 14 06:12:43 2001 @@ -21,8 +21,14 @@ #define DUMMY_COLUMNS ORIG_VIDEO_COLS #define DUMMY_ROWS ORIG_VIDEO_LINES #elif defined(__hppa__) -#define DUMMY_COLUMNS 80 /* fixme ! (mine uses 160x64 at 1280x1024) */ -#define DUMMY_ROWS 25 +#warning "FIXME: vc_resize() in console.c seems to have problems downsampling a console" +/* until this is fixed or I have more clue about it you may enter here the columns/rows + * for your screen or you will loose most of the bootup-messages on a STI console + * (which isn't really a serious problem). + * Values: 160x64 for a 1280x1024, 200x150 for a 1600x1200 screen. + */ +#define DUMMY_COLUMNS 160 /* Maximum initial screensize */ +#define DUMMY_ROWS 64 /* FIXME: 1280x1024 -> 160x64, 1600x1200 -> 200x150, */ #else #define DUMMY_COLUMNS 80 #define DUMMY_ROWS 25 diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/video/fbmem.c linux/drivers/video/fbmem.c --- linux-2.4.20/drivers/video/fbmem.c Thu Nov 28 16:53:15 2002 +++ linux/drivers/video/fbmem.c Thu Nov 14 05:55:25 2002 @@ -647,6 +647,8 @@ vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); #elif defined(__sh__) pgprot_val(vma->vm_page_prot) &= ~_PAGE_CACHABLE; +#elif defined(__hppa__) + pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE; #elif defined(__ia64__) vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); #elif defined(__hppa__) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/video/sstfb.c linux/drivers/video/sstfb.c --- linux-2.4.20/drivers/video/sstfb.c Thu Nov 28 16:53:15 2002 +++ linux/drivers/video/sstfb.c Thu Nov 14 05:55:25 2002 @@ -333,7 +333,7 @@ #if (SST_DEBUG_REG > 0) static void sst_dbg_print_read_reg (u32 reg, u32 val) { - char * regname =NULL; + char * regname = NULL; switch (reg) { case FBIINIT0: regname="FbiInit0"; break; case FBIINIT1: regname="FbiInit1"; break; @@ -367,8 +367,8 @@ r_dprintk(" sst_write(%s, %#x)\n", regname, val); } #else /* (SST_DEBUG_REG > 0) */ -# define sst_dbg_print_read_reg(reg, val) do {}while(0) -# define sst_dbg_print_write_reg(reg, val) do {}while(0) +# define sst_dbg_print_read_reg(reg, val) do {} while(0) +# define sst_dbg_print_write_reg(reg, val) do {} while(0) #endif /* (SST_DEBUG_REG > 0) */ /* register access */ @@ -531,20 +531,15 @@ break; #endif #ifdef EN_24_32_BPP -#ifdef FBCON_HAS_CFB24 +#if defined(FBCON_HAS_CFB24) || defined(FBCON_HAS_CFB32) case 24: - sst_info->fbcon_cmap.cfb32[regno]=col; - break; -#endif -#ifdef FBCON_HAS_CFB32 case 32: sst_info->fbcon_cmap.cfb32[regno]=col; break; #endif #endif default: - eprintk("bug line %d: bad depth '%u'\n",__LINE__, - disp->var.bits_per_pixel); + BUG(); break; } f_dddprintk("bpp: %d . encoded color: %#x\n", @@ -736,6 +731,7 @@ #ifdef EN_24_32_BPP case 24: /* RGB 888 LfbMode 4 */ case 32: /* ARGB 8888 LfbMode 5 */ + /* in 24bpp we fake a 32 bpp mode */ var->red.length = 8; var->green.length = 8; var->blue.length = 8; @@ -744,11 +740,11 @@ var->red.offset = 16; var->green.offset = 8; var->blue.offset = 0; - var->transp.offset = 0; /* in 24bpp we fake a 32 bpp mode */ + var->transp.offset = 0; break; #endif default: - eprintk ("bug line %d: bad depth '%u'\n", __LINE__, par->bpp); + eprintk("bug line %d: bad depth '%u'\n", __LINE__, par->bpp); break; } return 0; @@ -775,18 +771,16 @@ { #define sst_info ((struct sstfb_info *) info) - struct fb_var_screeninfo *var; - struct fb_var_screeninfo var2; + struct fb_var_screeninfo *var; + struct fb_var_screeninfo var2; f_dprintk("sstfb_get_fix(con: %d)\n",con); memset(fix, 0, sizeof(struct fb_fix_screeninfo)); - if (con == -1) - { + if (con == -1) { sstfb_encode_var(&var2, &sst_info->current_par, sst_info); var = &var2; - } - else + } else var = &fb_display[con].var; strcpy(fix->id, sst_info->info.modename); @@ -974,27 +968,27 @@ struct fb_info *info) { #define sst_info ((struct sstfb_info *) info) -#if (SST_DEBUG_IOCTL >0) int i; u_long p; u32 tmp, val; u32 fbiinit0; struct pci_dev * sst_dev = sst_info->dev; -#endif f_dprintk("sstfb_ioctl(%x)\n", cmd); -#if (SST_DEBUG_IOCTL >0) + switch (cmd) { -# if (SST_DEBUG_VAR >0) -/* tmp ioctl : dumps fb_display[0-5] */ + +#if (SST_DEBUG_VAR >0) + /* tmp ioctl : dumps fb_display[0-5] */ case _IO('F', 0xdb): /* 0x46db */ f_dprintk("dumping fb_display[0-5].var\n"); for (i = 0 ; i< 6 ; i++) { print_var(&fb_display[i].var, "var(%d)", i); } return 0; -# endif /* (SST_DEBUG_VAR >0) */ -/* fills the lfb up to *(u32*)arg */ +#endif /* (SST_DEBUG_VAR >0) */ + + /* fills the lfb up to given count of pixels */ case _IOW('F', 0xdc, u32): /* 0x46dc */ if (copy_from_user(&val, (void *) arg, sizeof(val))) return -EFAULT; @@ -1004,7 +998,8 @@ for (p = 0 ; p < val; p+=2) writew( p >> 6 , sst_info->video.vbase + p); return 0; -/* change VGA pass_through */ + + /* enable/disable VGA pass_through */ case _IOW('F', 0xdd, u32): /* 0x46dd */ if (copy_from_user(&val, (void *) arg, sizeof(val))) return -EFAULT; @@ -1022,28 +1017,29 @@ } pci_write_config_dword(sst_dev, PCI_INIT_ENABLE, tmp); return 0; + + /* display test pattern */ case _IO('F', 0xde): /* 0x46de */ f_dprintk("test color display\n"); f_ddprintk("currcon: %d, bpp %d\n", sst_info->currcon, sst_info->current_par.bpp); memset_io(sst_info->video.vbase, 0, sst_info->video.len); - switch (sst_info->current_par.bpp) { + switch (sst_info->current_par.bpp) { case 16: sstfb_test16(sst_info); break; -# ifdef EN_24_32_BPP +#ifdef EN_24_32_BPP case 24: case 32: sstfb_test32(sst_info); break; -# endif +#endif default: - dprintk("bug line %d: bad depth '%u'\n", __LINE__, - sst_info->current_par.bpp); - } + return -EFAULT; + } return 0; } -#endif /* (SST_DEBUG_IOCTL >0) */ + return -EINVAL; #undef sst_info } @@ -1506,7 +1502,7 @@ pci_write_config_dword(sst_dev, PCI_INIT_ENABLE, PCI_EN_FIFO_WR); /* set lfbmode : set mode + front buffer for reads/writes - + disable pipeline */ + + disable pipeline */ switch(par->bpp) { case 16: lfbmode = LFB_565; @@ -1520,18 +1516,16 @@ break; #endif default: - dprintk("bug line %d: bad depth '%u'\n", __LINE__, - par->bpp ); + BUG(); return 0; - break; } #if defined(__BIG_ENDIAN) /* enable byte-swizzle functionality in hardware */ - lfbmode |= ( LFB_WORD_SWIZZLE_WR | LFB_BYTE_SWIZZLE_WR | + lfbmode |= ( LFB_WORD_SWIZZLE_WR | LFB_BYTE_SWIZZLE_WR | LFB_WORD_SWIZZLE_RD | LFB_BYTE_SWIZZLE_RD ); #endif - + if (clipping) { sst_write(LFBMODE, lfbmode | EN_PXL_PIPELINE); /* @@ -1539,7 +1533,7 @@ * writes to offscreen areas of the framebuffer are performed, * the "behaviour is undefined" (_very_ undefined) - Urs */ - /* btw, it requires enabling pixel pipeline in LFBMODE . + /* btw, it requires enabling pixel pipeline in LFBMODE. off screen read/writes will just wrap and read/print pixels on screen. Ugly but not that dangerous */ @@ -1554,7 +1548,7 @@ sst_write(LFBMODE, lfbmode ); } - sst_info->current_par = *par ; + sst_info->current_par = *par; return 1; } @@ -1589,8 +1583,7 @@ break; #endif default: - dprintk("bug line %d: bad depth '%u'\n", __LINE__, bpp); - break; + BUG(); } } @@ -1608,8 +1601,7 @@ break; #endif default: - dprintk("bug line %d: bad depth '%u'\n", __LINE__, bpp); - break; + BUG(); } } @@ -2005,34 +1997,34 @@ u_long fbbase_virt = sst_info->video.vbase; f_dprintk("sstfb_test16\n"); - /* rect blanc 20x100+200+0 */ + /* white rectangle 20x100+200+0 */ for (i=0 ; i< 100; i++) { p = fbbase_virt + 2048 *i+400; - for (j=0 ; j < 10 ; j++) { - writel( 0xffffffff, p); + for (j=0; j < 10; j++) { + writel(0xffffffff, p); p+=4; } } - /* rect bleu 180x200+0+0 */ + /* blue rectangle 180x200+0+0 */ for (i=0 ; i< 200; i++) { p = fbbase_virt + 2048 *i; - for (j=0 ; j < 90 ; j++) { - writel(0x001f001f,p); + for (j=0; j < 90; j++) { + writel(0x001f001f, p); p+=4; } } - /* carre vert 40x40+100+0 */ + /* green rectangle 40x40+100+0 */ for (i=0 ; i< 40 ; i++) { p = fbbase_virt + 2048 *i + 200; - for (j=0; j <20;j++) { + for (j=0; j <20; j++) { writel(0x07e007e0, p); p+=4; } } - /*carre rouge 40x40+100+40 */ + /* red rectangle 40x40+100+40 */ for (i=0; i<40; i++) { p = fbbase_virt + 2048 * (i+40) + 200; - for (j=0; j <20;j++) { + for (j=0; j <20; j++) { writel( 0xf800f800, p); p+=4; } @@ -2052,22 +2044,22 @@ for (i=0 ; i< 100; i++) { p = fbbase_virt + 4096*i + 800; for (j=0 ; j < 20 ; j++) { - writel( 0x00ffffff, p); + writel(0x00ffffff, p); p+=4; } } /* rect bleu 180x200+0+0 */ for (i=0 ; i< 200; i++) { p = fbbase_virt + 4096 * i; - for (j=0 ; j < 180 ; j++) { - writel(0x000000ff,p); + for (j=0 ; j < 180; j++) { + writel(0x000000ff, p); p+=4; } } /* carre vert 40x40+100+0 */ for (i=0 ; i< 40 ; i++) { p = fbbase_virt + 4096 *i + 400; - for (j=0; j <40;j++) { + for (j=0; j <40; j++) { writel(0x0000ff00, p); p+=4; } @@ -2075,8 +2067,8 @@ /*carre rouge 40x40+100+10 */ for (i=0; i<40; i++) { p = fbbase_virt + 4096 * (i+40) + 400; - for (j=0; j <40;j++) { - writel( 0x00ff0000, p); + for (j=0; j <40; j++) { + writel(0x00ff0000, p); p+=4; } } diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/video/sti/sticore.c linux/drivers/video/sti/sticore.c --- linux-2.4.20/drivers/video/sti/sticore.c Thu Nov 28 16:53:15 2002 +++ linux/drivers/video/sti/sticore.c Wed Nov 13 05:54:29 2002 @@ -467,6 +467,7 @@ return 0; } +#ifdef CONFIG_FB struct sti_cooked_font * __init sti_select_fbfont( struct sti_cooked_rom *cooked_rom, char *fbfont_name ) { @@ -523,6 +524,13 @@ return cooked_font; } +#else +struct sti_cooked_font * __init +sti_select_fbfont(struct sti_cooked_rom *cooked_rom, char *fbfont_name) +{ + return NULL; +} +#endif struct sti_cooked_font * __init sti_select_font(struct sti_cooked_rom *rom, diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/drivers/video/sti/stifb.c linux/drivers/video/sti/stifb.c --- linux-2.4.20/drivers/video/sti/stifb.c Thu Nov 28 16:53:15 2002 +++ linux/drivers/video/sti/stifb.c Wed Nov 13 05:54:29 2002 @@ -133,7 +133,7 @@ #endif }; -static int stifb_force_bpp[MAX_STI_ROMS] = {0, }; +static int stifb_force_bpp[MAX_STI_ROMS]; /* ------------------- chipset specific functions -------------------------- */ @@ -1290,7 +1290,10 @@ fb->id = S9000_ID_A1659A; break; case S9000_ID_A1439A: /* CRX24/A1439A */ - bpp = 32; + if (force_bpp == 8 || force_bpp == 32) + bpp = force_bpp; + else + bpp = 32; break; case S9000_ID_HCRX: /* Hyperdrive/HCRX */ memset(&fb->ngle_rom, 0, sizeof(fb->ngle_rom)); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/fs/Makefile linux/fs/Makefile --- linux-2.4.20/fs/Makefile Thu Nov 28 16:53:15 2002 +++ linux/fs/Makefile Thu Nov 14 05:55:27 2002 @@ -71,6 +71,7 @@ obj-$(CONFIG_BINFMT_AOUT) += binfmt_aout.o +obj-$(CONFIG_BINFMT_SOM) += binfmt_som.o obj-$(CONFIG_BINFMT_EM86) += binfmt_em86.o obj-$(CONFIG_BINFMT_MISC) += binfmt_misc.o diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/fs/binfmt_elf.c linux/fs/binfmt_elf.c --- linux-2.4.20/fs/binfmt_elf.c Fri Aug 2 18:39:45 2002 +++ linux/fs/binfmt_elf.c Sun Aug 4 18:12:56 2002 @@ -9,6 +9,8 @@ * Copyright 1993, 1994: Eric Youngdale (ericy@cais.com). */ +#define RGH_FIX + #include #include @@ -38,19 +40,16 @@ #include #include -#define DLINFO_ITEMS 13 - #include static int load_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs); static int load_elf_library(struct file*); static unsigned long elf_map (struct file *, unsigned long, struct elf_phdr *, int, int); extern int dump_fpu (struct pt_regs *, elf_fpregset_t *); -extern void dump_thread(struct pt_regs *, struct user *); #ifndef elf_addr_t #define elf_addr_t unsigned long -#define elf_caddr_t char * +typedef char * elf_caddr_t; #endif /* @@ -83,9 +82,9 @@ { start = ELF_PAGEALIGN(start); end = ELF_PAGEALIGN(end); - if (end <= start) - return; - do_brk(start, end - start); + if (end > start) + do_brk(start, end - start); + current->mm->start_brk = current->mm->brk = end; } @@ -106,135 +105,156 @@ } } -static elf_addr_t * -create_elf_tables(char *p, int argc, int envc, - struct elfhdr * exec, - unsigned long load_addr, - unsigned long load_bias, - unsigned long interp_load_addr, int ibcs) +/* Let's use some macros to make this stack manipulation a litle clearer */ +#ifdef ARCH_STACK_GROWSUP +#define STACK_ADD(sp, items) ((elf_addr_t *)(sp) + (items)) +#define STACK_ROUND(sp, items) \ + ((15 + (unsigned long) ((sp) + (items))) &~ 15UL) +#define STACK_ALLOC(sp, len) ({ elf_addr_t old_sp = sp; sp += len; old_sp; }) +#else +#define STACK_ADD(sp, items) ((elf_addr_t *)(sp) - (items)) +#define STACK_ROUND(sp, items) \ + (((unsigned long) (sp - items)) &~ 15UL) +#define STACK_ALLOC(sp, len) sp -= len +#endif + +static void +create_elf_tables(struct linux_binprm *bprm, struct elfhdr * exec, + int interp_aout, unsigned long load_addr, + unsigned long interp_load_addr) { - elf_caddr_t *argv; - elf_caddr_t *envp; - elf_addr_t *sp, *csp; - char *k_platform, *u_platform; - long hwcap; - size_t platform_len = 0; - size_t len; + unsigned long p; + int argc = bprm->argc; + int envc = bprm->envc; + elf_caddr_t *argv, *envp; + elf_addr_t *sp, u_platform; + char *k_platform; + int items; + elf_addr_t elf_info[30]; + int ei_index = 0; /* - * Get hold of platform and hardware capabilities masks for - * the machine we are running on. In some cases (Sparc), - * this info is impossible to get, in others (i386) it is + * Get hold of the platform capability string for the machine we + * are running on. In some cases (Sparc), this info is impossible + * for userspace to get any other way, in others (i386) it is * merely difficult. */ - hwcap = ELF_HWCAP; k_platform = ELF_PLATFORM; if (k_platform) { - platform_len = strlen(k_platform) + 1; - u_platform = p - platform_len; - __copy_to_user(u_platform, k_platform, platform_len); - } else - u_platform = p; - + size_t len = strlen(k_platform) + 1; + u_platform = STACK_ALLOC(bprm->p, len); #if defined(__i386__) && defined(CONFIG_SMP) - /* - * In some cases (e.g. Hyper-Threading), we want to avoid L1 evictions - * by the processes running on the same package. One thing we can do - * is to shuffle the initial stack for them. - * - * The conditionals here are unneeded, but kept in to make the - * code behaviour the same as pre change unless we have hyperthreaded - * processors. This keeps Mr Marcelo Person happier but should be - * removed for 2.5 - */ - - if(smp_num_siblings > 1) - u_platform = u_platform - ((current->pid % 64) << 7); -#endif + /* + * In some cases (e.g. Hyper-Threading), we want to avoid L1 + * evictions by the processes running on the same package. One + * thing we can do is to shuffle the initial stack for them. + * + * The conditionals here are unneeded, but kept in to make the + * code behaviour the same as pre change unless we have + * hyperthreaded processors. This keeps Mr Marcelo Person + * happier but should be removed for 2.5 + */ - /* - * Force 16 byte _final_ alignment here for generality. - */ - sp = (elf_addr_t *)(~15UL & (unsigned long)(u_platform)); - csp = sp; - csp -= (1+DLINFO_ITEMS)*2 + (k_platform ? 2 : 0); -#ifdef DLINFO_ARCH_ITEMS - csp -= DLINFO_ARCH_ITEMS*2; -#endif - csp -= envc+1; - csp -= argc+1; - csp -= (!ibcs ? 3 : 1); /* argc itself */ - if ((unsigned long)csp & 15UL) - sp -= ((unsigned long)csp & 15UL) / sizeof(*sp); + if(smp_num_siblings > 1) + u_platform = u_platform - ((current->pid % 64) << 7); +#endif + __copy_to_user((void *)u_platform, k_platform, len); + } - /* - * Put the ELF interpreter info on the stack - */ -#define NEW_AUX_ENT(nr, id, val) \ - __put_user ((id), sp+(nr*2)); \ - __put_user ((val), sp+(nr*2+1)); \ + /* Create the ELF interpreter info */ +#define NEW_AUX_ENT(id, val) \ + do { elf_info[ei_index++] = id; elf_info[ei_index++] = val; } while (0) - sp -= 2; - NEW_AUX_ENT(0, AT_NULL, 0); - if (k_platform) { - sp -= 2; - NEW_AUX_ENT(0, AT_PLATFORM, (elf_addr_t)(unsigned long) u_platform); - } - sp -= DLINFO_ITEMS*2; - NEW_AUX_ENT( 0, AT_HWCAP, hwcap); - NEW_AUX_ENT( 1, AT_PAGESZ, ELF_EXEC_PAGESIZE); - NEW_AUX_ENT( 2, AT_CLKTCK, CLOCKS_PER_SEC); - NEW_AUX_ENT( 3, AT_PHDR, load_addr + exec->e_phoff); - NEW_AUX_ENT( 4, AT_PHENT, sizeof (struct elf_phdr)); - NEW_AUX_ENT( 5, AT_PHNUM, exec->e_phnum); - NEW_AUX_ENT( 6, AT_BASE, interp_load_addr); - NEW_AUX_ENT( 7, AT_FLAGS, 0); - NEW_AUX_ENT( 8, AT_ENTRY, load_bias + exec->e_entry); - NEW_AUX_ENT( 9, AT_UID, (elf_addr_t) current->uid); - NEW_AUX_ENT(10, AT_EUID, (elf_addr_t) current->euid); - NEW_AUX_ENT(11, AT_GID, (elf_addr_t) current->gid); - NEW_AUX_ENT(12, AT_EGID, (elf_addr_t) current->egid); #ifdef ARCH_DLINFO /* - * ARCH_DLINFO must come last so platform specific code can enforce - * special alignment requirements on the AUXV if necessary (eg. PPC). + * ARCH_DLINFO must come first so PPC can do its special alignment of + * AUXV. */ ARCH_DLINFO; #endif +#ifdef RGH_FIX + if (exec) +#endif + { + NEW_AUX_ENT(AT_PHDR, load_addr + exec->e_phoff); + NEW_AUX_ENT(AT_PHENT, sizeof (struct elf_phdr)); + NEW_AUX_ENT(AT_PHNUM, exec->e_phnum); + NEW_AUX_ENT(AT_BASE, interp_load_addr); + NEW_AUX_ENT(AT_FLAGS, 0); + NEW_AUX_ENT(AT_ENTRY, exec->e_entry); + NEW_AUX_ENT(AT_UID, current->uid); + NEW_AUX_ENT(AT_EUID, current->euid); + NEW_AUX_ENT(AT_GID, current->gid); + NEW_AUX_ENT(AT_EGID, current->egid); + } + NEW_AUX_ENT(AT_HWCAP, ELF_HWCAP); + NEW_AUX_ENT(AT_PAGESZ, ELF_EXEC_PAGESIZE); + NEW_AUX_ENT(AT_CLKTCK, CLOCKS_PER_SEC); + if (k_platform) { + NEW_AUX_ENT(AT_PLATFORM, u_platform); + } + NEW_AUX_ENT(AT_NULL, 0); + #undef NEW_AUX_ENT - sp -= envc+1; - envp = (elf_caddr_t *) sp; - sp -= argc+1; - argv = (elf_caddr_t *) sp; - if (!ibcs) { - __put_user((elf_addr_t)(unsigned long) envp,--sp); - __put_user((elf_addr_t)(unsigned long) argv,--sp); + sp = STACK_ADD(bprm->p, ei_index); + + items = (argc + 1) + (envc + 1); + if (interp_aout) { + items += 3; /* a.out interpreters require argv & envp too */ + } else { + items += 1; /* ELF interpreters only put argc on the stack */ } + bprm->p = STACK_ROUND(sp, items); + + /* Point sp at the lowest address on the stack */ +#ifdef ARCH_STACK_GROWSUP + sp = (elf_addr_t *)bprm->p - items - ei_index; + bprm->exec = (unsigned long) sp; /* XXX: PARISC HACK */ +#else + sp = (elf_addr_t *)bprm->p; +#endif - __put_user((elf_addr_t)argc,--sp); - current->mm->arg_start = (unsigned long) p; - while (argc-->0) { - __put_user((elf_caddr_t)(unsigned long)p,argv++); + /* Now, let's put argc (and argv, envp if appropriate) on the stack */ + __put_user(argc, sp++); + if (interp_aout) { + argv = (elf_caddr_t *) sp + 2; + envp = argv + argc + 1; + __put_user(argv, sp++); + __put_user(envp, sp++); + } else { + argv = (elf_caddr_t *) sp; + envp = argv + argc + 1; + } + + /* Populate argv and envp */ + p = current->mm->arg_start; + while (argc-- > 0) { + size_t len; + __put_user((elf_caddr_t)p, argv++); len = strnlen_user(p, PAGE_SIZE*MAX_ARG_PAGES); if (!len || len > PAGE_SIZE*MAX_ARG_PAGES) return NULL; p += len; } __put_user(NULL, argv); - current->mm->arg_end = current->mm->env_start = (unsigned long) p; - while (envc-->0) { - __put_user((elf_caddr_t)(unsigned long)p,envp++); + current->mm->arg_end = current->mm->env_start = p; + while (envc-- > 0) { + size_t len; + __put_user((elf_caddr_t)p,envp++); len = strnlen_user(p, PAGE_SIZE*MAX_ARG_PAGES); if (!len || len > PAGE_SIZE*MAX_ARG_PAGES) return NULL; p += len; } __put_user(NULL, envp); - current->mm->env_end = (unsigned long) p; - return sp; + current->mm->env_end = p; + + /* Put the elf_info on the stack in the right place. */ + sp = (elf_addr_t *)envp + 1; + copy_to_user(sp, elf_info, ei_index * sizeof(elf_addr_t)); } #ifndef elf_map @@ -314,6 +334,16 @@ if (eppnt->p_flags & PF_R) elf_prot = PROT_READ; if (eppnt->p_flags & PF_W) elf_prot |= PROT_WRITE; if (eppnt->p_flags & PF_X) elf_prot |= PROT_EXEC; + +#if 1 + /* FIXME: remove this hack once the dynamic linker + * is fixed to not write to read only sections. + * (or uses mprotect to allow it). + */ + + elf_prot |= PROT_WRITE; +#endif + vaddr = eppnt->p_vaddr; if (interp_elf_ex->e_type == ET_EXEC || load_addr_set) elf_type |= MAP_FIXED; @@ -434,7 +464,7 @@ unsigned char ibcs2_interpreter = 0; unsigned long error; struct elf_phdr * elf_ppnt, *elf_phdata; - unsigned long elf_bss, k, elf_brk; + unsigned long elf_bss, elf_brk; int elf_exec_fileno; int retval, i; unsigned int size; @@ -573,18 +603,16 @@ and then start this sucker up */ if (!bprm->sh_bang) { - char * passed_p; - if (interpreter_type == INTERPRETER_AOUT) { - sprintf(passed_fileno, "%d", elf_exec_fileno); - passed_p = passed_fileno; - - if (elf_interpreter) { - retval = copy_strings_kernel(1,&passed_p,bprm); - if (retval) - goto out_free_dentry; - bprm->argc++; - } + char *passed_p = passed_fileno; + sprintf(passed_fileno, "%d", elf_exec_fileno); + + if (elf_interpreter) { + retval = copy_strings_kernel(1, &passed_p,bprm); + if (retval) + goto out_free_dentry; + bprm->argc++; + } } } @@ -599,7 +627,10 @@ current->mm->end_code = 0; current->mm->mmap = NULL; current->flags &= ~PF_FORKNOEXEC; - elf_entry = (unsigned long) elf_ex.e_entry; + + /* Do this immediately, since STACK_TOP as used in setup_arg_pages + may depend on the personality. */ + SET_PERSONALITY(elf_ex, ibcs2_interpreter); /* Do this so that we can load the interpreter, if need be. We will change some of these later */ @@ -619,7 +650,7 @@ for(i = 0, elf_ppnt = elf_phdata; i < elf_ex.e_phnum; i++, elf_ppnt++) { int elf_prot = 0, elf_flags; - unsigned long vaddr; + unsigned long k, vaddr; if (elf_ppnt->p_type != PT_LOAD) continue; @@ -652,7 +683,7 @@ } else if (elf_ex.e_type == ET_DYN) { /* Try and get dynamic programs out of the way of the default mmap base, as well as whatever program they might try to exec. This - is because the brk will follow the loader, and is not movable. */ + is because the brk will follow the loader, and is not movable. */ load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr); } @@ -677,7 +708,7 @@ if (k > elf_bss) elf_bss = k; - if ((elf_ppnt->p_flags & PF_X) && end_code < k) + if ((elf_ppnt->p_flags & PF_X) && end_code < k) end_code = k; if (end_data < k) end_data = k; @@ -686,7 +717,7 @@ elf_brk = k; } - elf_entry += load_bias; + elf_ex.e_entry += load_bias; elf_bss += load_bias; elf_brk += load_bias; start_code += load_bias; @@ -713,6 +744,8 @@ send_sig(SIGSEGV, current, 0); return 0; } + } else { + elf_entry = elf_ex.e_entry; } kfree(elf_phdata); @@ -724,18 +757,17 @@ compute_creds(bprm); current->flags &= ~PF_FORKNOEXEC; - bprm->p = (unsigned long) - create_elf_tables((char *)bprm->p, - bprm->argc, - bprm->envc, - &elf_ex, - load_addr, load_bias, - interp_load_addr, - (interpreter_type == INTERPRETER_AOUT ? 0 : 1)); +#ifdef RGH_FIX + create_elf_tables(bprm, (interpreter_type == INTERPRETER_ELF ? &elf_ex : NULL), + (interpreter_type == INTERPRETER_AOUT), + load_addr, interp_load_addr); +#else + create_elf_tables(bprm, &elf_ex, (interpreter_type == INTERPRETER_AOUT), + load_addr, interp_load_addr); +#endif /* N.B. passed_fileno might not be initialized? */ if (interpreter_type == INTERPRETER_AOUT) current->mm->arg_start += strlen(passed_fileno) + 1; - current->mm->start_brk = current->mm->brk = elf_brk; current->mm->end_code = end_code; current->mm->start_code = start_code; current->mm->start_data = start_data; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/fs/exec.c linux/fs/exec.c --- linux-2.4.20/fs/exec.c Thu Nov 28 16:53:15 2002 +++ linux/fs/exec.c Thu Nov 14 05:55:28 2002 @@ -315,11 +315,51 @@ int setup_arg_pages(struct linux_binprm *bprm) { unsigned long stack_base; - struct vm_area_struct *mpnt; int i; + struct vm_area_struct *mpnt; + struct mm_struct *mm = current->mm; + +#ifdef ARCH_STACK_GROWSUP + /* Move the argument and environment strings to the bottom of the + * stack space. + */ + int offset, j; + char *to, *from; - stack_base = STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE; + /* Start by shifting all the pages down */ + i = 0; + for (j = 0; j < MAX_ARG_PAGES; j++) { + struct page *page = bprm->page[j]; + if (!page) + continue; + bprm->page[i++] = page; + } + /* Now move them within their pages */ + offset = bprm->p % PAGE_SIZE; + to = kmap(bprm->page[0]); + for (j = 1; j < i; j++) { + memmove(to, to + offset, PAGE_SIZE - offset); + from = kmap(bprm->page[j]); + memcpy(to + PAGE_SIZE - offset, from, offset); + kunmap(bprm[j - 1]); + to = from; + } + memmove(to, to + offset, PAGE_SIZE - offset); + kunmap(bprm[j - 1]); + + /* Adjust bprm->p to point to the end of the strings. */ + bprm->p = PAGE_SIZE * i - offset; + stack_base = STACK_TOP - current->rlim[RLIMIT_STACK].rlim_max; + mm->arg_start = stack_base; + + /* zero pages that were copied above */ + while (i < MAX_ARG_PAGES) + bprm->page[i++] = NULL; +#else + stack_base = STACK_TOP - MAX_ARG_PAGES * PAGE_SIZE; + mm->arg_start = bprm->p + stack_base; +#endif bprm->p += stack_base; if (bprm->loader) bprm->loader += stack_base; @@ -331,17 +371,23 @@ down_write(¤t->mm->mmap_sem); { - mpnt->vm_mm = current->mm; + mpnt->vm_mm = mm; +#ifdef ARCH_STACK_GROWSUP + mpnt->vm_start = stack_base; + mpnt->vm_end = PAGE_MASK & + (PAGE_SIZE - 1 + (unsigned long) bprm->p); +#else mpnt->vm_start = PAGE_MASK & (unsigned long) bprm->p; mpnt->vm_end = STACK_TOP; +#endif mpnt->vm_page_prot = PAGE_COPY; mpnt->vm_flags = VM_STACK_FLAGS; mpnt->vm_ops = NULL; mpnt->vm_pgoff = 0; mpnt->vm_file = NULL; mpnt->vm_private_data = (void *) 0; - insert_vm_struct(current->mm, mpnt); - current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT; + insert_vm_struct(mm, mpnt); + mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT; } for (i = 0 ; i < MAX_ARG_PAGES ; i++) { @@ -751,7 +797,6 @@ current->keep_capabilities = 0; } - void remove_arg_zero(struct linux_binprm *bprm) { if (bprm->argc) { @@ -869,7 +914,6 @@ return retval; } - /* * sys_execve() executes a new program. */ @@ -886,42 +930,41 @@ if (IS_ERR(file)) return retval; - bprm.p = PAGE_SIZE*MAX_ARG_PAGES-sizeof(void *); - memset(bprm.page, 0, MAX_ARG_PAGES*sizeof(bprm.page[0])); + bprm.p = MAX_ARG_PAGES * PAGE_SIZE - sizeof(void *); + memset(bprm.page, 0, sizeof(bprm.page)); bprm.file = file; bprm.filename = filename; bprm.sh_bang = 0; bprm.loader = 0; bprm.exec = 0; - if ((bprm.argc = count(argv, bprm.p / sizeof(void *))) < 0) { - allow_write_access(file); - fput(file); - return bprm.argc; - } - if ((bprm.envc = count(envp, bprm.p / sizeof(void *))) < 0) { - allow_write_access(file); - fput(file); - return bprm.envc; - } + retval = count(argv, MAX_ARG_PAGES * PAGE_SIZE / sizeof(void *)); + if (retval < 0) + goto out; + bprm.argc = retval; + + retval = count(envp, MAX_ARG_PAGES * PAGE_SIZE / sizeof(void *)); + if (retval < 0) + goto out; + bprm.envc = retval; retval = prepare_binprm(&bprm); - if (retval < 0) - goto out; + if (retval < 0) + goto out; retval = copy_strings_kernel(1, &bprm.filename, &bprm); - if (retval < 0) - goto out; + if (retval < 0) + goto out; bprm.exec = bprm.p; retval = copy_strings(bprm.envc, envp, &bprm); - if (retval < 0) - goto out; + if (retval < 0) + goto out; retval = copy_strings(bprm.argc, argv, &bprm); - if (retval < 0) - goto out; + if (retval < 0) + goto out; retval = search_binary_handler(&bprm,regs); if (retval >= 0) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/fs/open.c linux/fs/open.c --- linux-2.4.20/fs/open.c Thu Nov 28 16:53:15 2002 +++ linux/fs/open.c Thu Nov 14 05:55:28 2002 @@ -227,17 +227,29 @@ return do_sys_ftruncate(fd, length, 1); } -/* LFS versions of truncate are only needed on 32 bit machines */ +/* LFS versions of truncate are only needed on 32 bit machines. + * Unfortunately, they were declared with an `loff_t' in their arguments, + * despite syscalls only taking word-size parameters. The calling + * conventions allowed this mistake to work by coincidence on some + * machines. Hence the ugly LOFF_T macro below. The only excuse is + * that we can't think of a better way of solving this misbegottenry. + */ #if BITS_PER_LONG == 32 -asmlinkage long sys_truncate64(const char * path, loff_t length) +#ifdef __BIG_ENDIAN +#define LOFF_T(high, low) unsigned int high, unsigned int low +#else +#define LOFF_T(high, low) unsigned int low, unsigned int high +#endif +asmlinkage long sys_truncate64(const char * path, LOFF_T(high, low)) { - return do_sys_truncate(path, length); + return do_sys_truncate(path, (loff_t)high << 32 | low); } -asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length) +asmlinkage long sys_ftruncate64(unsigned int fd, LOFF_T(high, low)) { - return do_sys_ftruncate(fd, length, 0); + return do_sys_ftruncate(fd, (loff_t)high << 32 | low, 0); } +#undef LOFF_T #endif #if !(defined(__alpha__) || defined(__ia64__)) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/fs/read_write.c linux/fs/read_write.c --- linux-2.4.20/fs/read_write.c Fri Aug 2 18:39:45 2002 +++ linux/fs/read_write.c Sun Aug 4 18:12:56 2002 @@ -363,8 +363,8 @@ lseek back to original location. They fail just like lseek does on non-seekable files. */ -asmlinkage ssize_t sys_pread(unsigned int fd, char * buf, - size_t count, loff_t pos) +static inline +ssize_t do_pread(unsigned int fd, char * buf, size_t count, loff_t pos) { ssize_t ret; struct file * file; @@ -394,8 +394,8 @@ return ret; } -asmlinkage ssize_t sys_pwrite(unsigned int fd, const char * buf, - size_t count, loff_t pos) +static inline +ssize_t do_pwrite(unsigned int fd, const char * buf, size_t count, loff_t pos) { ssize_t ret; struct file * file; @@ -425,3 +425,35 @@ bad_file: return ret; } + +#if BITS_PER_LONG == 32 +#ifdef __BIG_ENDIAN +#define LOFF_T(high, low) unsigned int high, unsigned int low +#else +#define LOFF_T(high, low) unsigned int low, unsigned int high +#endif + +asmlinkage +ssize_t sys_pread(unsigned int fd, char *buf, size_t count, LOFF_T(high, low)) +{ + return do_pread(fd, buf, count, (loff_t)high << 32 | low); +} + +ssize_t sys_pwrite(unsigned int fd, char *buf, size_t count, LOFF_T(high, low)) +{ + return do_pwrite(fd, buf, count, (loff_t)high << 32 | low); +} + + +#else /* BITS_PER_LONG != 32 */ +asmlinkage +ssize_t sys_pread(unsigned int fd, char *buf, size_t count, loff_t pos) +{ + return do_pread(fd, buf, count, pos); +} + +ssize_t sys_pwrite(unsigned int fd, char *buf, size_t count, loff_t pos) +{ + return do_pwrite(fd, buf, count, pos); +} +#endif diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-generic/xor.h linux/include/asm-generic/xor.h --- linux-2.4.20/include/asm-generic/xor.h Sun Nov 12 20:39:51 2000 +++ linux/include/asm-generic/xor.h Thu Mar 1 18:43:58 2001 @@ -13,6 +13,8 @@ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include + static void xor_8regs_2(unsigned long bytes, unsigned long *p1, unsigned long *p2) { @@ -299,6 +301,364 @@ } while (--lines > 0); } +static void +xor_8regs_p_2(unsigned long bytes, unsigned long *p1, unsigned long *p2) +{ + long lines = bytes / (sizeof (long)) / 8; + prefetchw(p1); + prefetch(p2); + + do { + prefetchw(p1+8); + prefetch(p2+8); + p1[0] ^= p2[0]; + p1[1] ^= p2[1]; + p1[2] ^= p2[2]; + p1[3] ^= p2[3]; + p1[4] ^= p2[4]; + p1[5] ^= p2[5]; + p1[6] ^= p2[6]; + p1[7] ^= p2[7]; + p1 += 8; + p2 += 8; + } while (--lines > 0); +} + +static void +xor_8regs_p_3(unsigned long bytes, unsigned long *p1, unsigned long *p2, + unsigned long *p3) +{ + long lines = bytes / (sizeof (long)) / 8; + prefetchw(p1); + prefetch(p2); + prefetch(p3); + + do { + prefetchw(p1+8); + prefetch(p2+8); + prefetch(p3+8); + p1[0] ^= p2[0] ^ p3[0]; + p1[1] ^= p2[1] ^ p3[1]; + p1[2] ^= p2[2] ^ p3[2]; + p1[3] ^= p2[3] ^ p3[3]; + p1[4] ^= p2[4] ^ p3[4]; + p1[5] ^= p2[5] ^ p3[5]; + p1[6] ^= p2[6] ^ p3[6]; + p1[7] ^= p2[7] ^ p3[7]; + p1 += 8; + p2 += 8; + p3 += 8; + } while (--lines > 0); +} + +static void +xor_8regs_p_4(unsigned long bytes, unsigned long *p1, unsigned long *p2, + unsigned long *p3, unsigned long *p4) +{ + long lines = bytes / (sizeof (long)) / 8; + + prefetchw(p1); + prefetch(p2); + prefetch(p3); + prefetch(p4); + + do { + prefetchw(p1+8); + prefetch(p2+8); + prefetch(p3+8); + prefetch(p4+8); + + p1[0] ^= p2[0] ^ p3[0] ^ p4[0]; + p1[1] ^= p2[1] ^ p3[1] ^ p4[1]; + p1[2] ^= p2[2] ^ p3[2] ^ p4[2]; + p1[3] ^= p2[3] ^ p3[3] ^ p4[3]; + p1[4] ^= p2[4] ^ p3[4] ^ p4[4]; + p1[5] ^= p2[5] ^ p3[5] ^ p4[5]; + p1[6] ^= p2[6] ^ p3[6] ^ p4[6]; + p1[7] ^= p2[7] ^ p3[7] ^ p4[7]; + p1 += 8; + p2 += 8; + p3 += 8; + p4 += 8; + } while (--lines > 0); +} + +static void +xor_8regs_p_5(unsigned long bytes, unsigned long *p1, unsigned long *p2, + unsigned long *p3, unsigned long *p4, unsigned long *p5) +{ + long lines = bytes / (sizeof (long)) / 8; + + prefetchw(p1); + prefetch(p2); + prefetch(p3); + prefetch(p4); + prefetch(p5); + + do { + prefetchw(p1+8); + prefetch(p2+8); + prefetch(p3+8); + prefetch(p4+8); + prefetch(p5+8); + + p1[0] ^= p2[0] ^ p3[0] ^ p4[0] ^ p5[0]; + p1[1] ^= p2[1] ^ p3[1] ^ p4[1] ^ p5[1]; + p1[2] ^= p2[2] ^ p3[2] ^ p4[2] ^ p5[2]; + p1[3] ^= p2[3] ^ p3[3] ^ p4[3] ^ p5[3]; + p1[4] ^= p2[4] ^ p3[4] ^ p4[4] ^ p5[4]; + p1[5] ^= p2[5] ^ p3[5] ^ p4[5] ^ p5[5]; + p1[6] ^= p2[6] ^ p3[6] ^ p4[6] ^ p5[6]; + p1[7] ^= p2[7] ^ p3[7] ^ p4[7] ^ p5[7]; + p1 += 8; + p2 += 8; + p3 += 8; + p4 += 8; + p5 += 8; + } while (--lines > 0); +} + +static void +xor_32regs_p_2(unsigned long bytes, unsigned long *p1, unsigned long *p2) +{ + long lines = bytes / (sizeof (long)) / 8; + + prefetchw(p1); + prefetch(p2); + + do { + register long d0, d1, d2, d3, d4, d5, d6, d7; + + prefetchw(p1+8); + prefetch(p2+8); + + d0 = p1[0]; /* Pull the stuff into registers */ + d1 = p1[1]; /* ... in bursts, if possible. */ + d2 = p1[2]; + d3 = p1[3]; + d4 = p1[4]; + d5 = p1[5]; + d6 = p1[6]; + d7 = p1[7]; + d0 ^= p2[0]; + d1 ^= p2[1]; + d2 ^= p2[2]; + d3 ^= p2[3]; + d4 ^= p2[4]; + d5 ^= p2[5]; + d6 ^= p2[6]; + d7 ^= p2[7]; + p1[0] = d0; /* Store the result (in burts) */ + p1[1] = d1; + p1[2] = d2; + p1[3] = d3; + p1[4] = d4; + p1[5] = d5; + p1[6] = d6; + p1[7] = d7; + p1 += 8; + p2 += 8; + } while (--lines > 0); +} + +static void +xor_32regs_p_3(unsigned long bytes, unsigned long *p1, unsigned long *p2, + unsigned long *p3) +{ + long lines = bytes / (sizeof (long)) / 8; + + prefetchw(p1); + prefetch(p2); + prefetch(p3); + + do { + register long d0, d1, d2, d3, d4, d5, d6, d7; + + prefetchw(p1+8); + prefetch(p2+8); + prefetch(p3+8); + + d0 = p1[0]; /* Pull the stuff into registers */ + d1 = p1[1]; /* ... in bursts, if possible. */ + d2 = p1[2]; + d3 = p1[3]; + d4 = p1[4]; + d5 = p1[5]; + d6 = p1[6]; + d7 = p1[7]; + d0 ^= p2[0]; + d1 ^= p2[1]; + d2 ^= p2[2]; + d3 ^= p2[3]; + d4 ^= p2[4]; + d5 ^= p2[5]; + d6 ^= p2[6]; + d7 ^= p2[7]; + d0 ^= p3[0]; + d1 ^= p3[1]; + d2 ^= p3[2]; + d3 ^= p3[3]; + d4 ^= p3[4]; + d5 ^= p3[5]; + d6 ^= p3[6]; + d7 ^= p3[7]; + p1[0] = d0; /* Store the result (in burts) */ + p1[1] = d1; + p1[2] = d2; + p1[3] = d3; + p1[4] = d4; + p1[5] = d5; + p1[6] = d6; + p1[7] = d7; + p1 += 8; + p2 += 8; + p3 += 8; + } while (--lines > 0); +} + +static void +xor_32regs_p_4(unsigned long bytes, unsigned long *p1, unsigned long *p2, + unsigned long *p3, unsigned long *p4) +{ + long lines = bytes / (sizeof (long)) / 8; + + prefetchw(p1); + prefetch(p2); + prefetch(p3); + prefetch(p4); + + do { + register long d0, d1, d2, d3, d4, d5, d6, d7; + + prefetchw(p1+8); + prefetch(p2+8); + prefetch(p3+8); + prefetch(p4+8); + + d0 = p1[0]; /* Pull the stuff into registers */ + d1 = p1[1]; /* ... in bursts, if possible. */ + d2 = p1[2]; + d3 = p1[3]; + d4 = p1[4]; + d5 = p1[5]; + d6 = p1[6]; + d7 = p1[7]; + d0 ^= p2[0]; + d1 ^= p2[1]; + d2 ^= p2[2]; + d3 ^= p2[3]; + d4 ^= p2[4]; + d5 ^= p2[5]; + d6 ^= p2[6]; + d7 ^= p2[7]; + d0 ^= p3[0]; + d1 ^= p3[1]; + d2 ^= p3[2]; + d3 ^= p3[3]; + d4 ^= p3[4]; + d5 ^= p3[5]; + d6 ^= p3[6]; + d7 ^= p3[7]; + d0 ^= p4[0]; + d1 ^= p4[1]; + d2 ^= p4[2]; + d3 ^= p4[3]; + d4 ^= p4[4]; + d5 ^= p4[5]; + d6 ^= p4[6]; + d7 ^= p4[7]; + p1[0] = d0; /* Store the result (in burts) */ + p1[1] = d1; + p1[2] = d2; + p1[3] = d3; + p1[4] = d4; + p1[5] = d5; + p1[6] = d6; + p1[7] = d7; + p1 += 8; + p2 += 8; + p3 += 8; + p4 += 8; + } while (--lines > 0); +} + +static void +xor_32regs_p_5(unsigned long bytes, unsigned long *p1, unsigned long *p2, + unsigned long *p3, unsigned long *p4, unsigned long *p5) +{ + long lines = bytes / (sizeof (long)) / 8; + + prefetchw(p1); + prefetch(p2); + prefetch(p3); + prefetch(p4); + prefetch(p5); + + do { + register long d0, d1, d2, d3, d4, d5, d6, d7; + + prefetchw(p1+8); + prefetch(p2+8); + prefetch(p3+8); + prefetch(p4+8); + prefetch(p5+8); + + d0 = p1[0]; /* Pull the stuff into registers */ + d1 = p1[1]; /* ... in bursts, if possible. */ + d2 = p1[2]; + d3 = p1[3]; + d4 = p1[4]; + d5 = p1[5]; + d6 = p1[6]; + d7 = p1[7]; + d0 ^= p2[0]; + d1 ^= p2[1]; + d2 ^= p2[2]; + d3 ^= p2[3]; + d4 ^= p2[4]; + d5 ^= p2[5]; + d6 ^= p2[6]; + d7 ^= p2[7]; + d0 ^= p3[0]; + d1 ^= p3[1]; + d2 ^= p3[2]; + d3 ^= p3[3]; + d4 ^= p3[4]; + d5 ^= p3[5]; + d6 ^= p3[6]; + d7 ^= p3[7]; + d0 ^= p4[0]; + d1 ^= p4[1]; + d2 ^= p4[2]; + d3 ^= p4[3]; + d4 ^= p4[4]; + d5 ^= p4[5]; + d6 ^= p4[6]; + d7 ^= p4[7]; + d0 ^= p5[0]; + d1 ^= p5[1]; + d2 ^= p5[2]; + d3 ^= p5[3]; + d4 ^= p5[4]; + d5 ^= p5[5]; + d6 ^= p5[6]; + d7 ^= p5[7]; + p1[0] = d0; /* Store the result (in burts) */ + p1[1] = d1; + p1[2] = d2; + p1[3] = d3; + p1[4] = d4; + p1[5] = d5; + p1[6] = d6; + p1[7] = d7; + p1 += 8; + p2 += 8; + p3 += 8; + p4 += 8; + p5 += 8; + } while (--lines > 0); +} + static struct xor_block_template xor_block_8regs = { name: "8regs", do_2: xor_8regs_2, @@ -315,8 +675,26 @@ do_5: xor_32regs_5, }; +static struct xor_block_template xor_block_8regs_p = { + name: "8regs_prefetch", + do_2: xor_8regs_p_2, + do_3: xor_8regs_p_3, + do_4: xor_8regs_p_4, + do_5: xor_8regs_p_5, +}; + +static struct xor_block_template xor_block_32regs_p = { + name: "32regs_prefetch", + do_2: xor_32regs_p_2, + do_3: xor_32regs_p_3, + do_4: xor_32regs_p_4, + do_5: xor_32regs_p_5, +}; + #define XOR_TRY_TEMPLATES \ do { \ xor_speed(&xor_block_8regs); \ + xor_speed(&xor_block_8regs_p); \ xor_speed(&xor_block_32regs); \ + xor_speed(&xor_block_32regs_p); \ } while (0) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-m68k/machdep.h linux/include/asm-m68k/machdep.h --- linux-2.4.20/include/asm-m68k/machdep.h Fri Aug 2 18:39:45 2002 +++ linux/include/asm-m68k/machdep.h Sun Jan 12 06:07:12 2003 @@ -5,6 +5,7 @@ struct kbd_repeat; struct mktime; struct rtc_time; +struct rtc_pll_info; struct gendisk; struct buffer_head; @@ -29,6 +30,9 @@ extern void (*mach_gettod)(int *year, int *mon, int *day, int *hour, int *min, int *sec); extern int (*mach_hwclk)(int, struct rtc_time*); +extern unsigned int (*mach_get_ss)(void); +extern int (*mach_get_rtc_pll)(struct rtc_pll_info *); +extern int (*mach_set_rtc_pll)(struct rtc_pll_info *); extern int (*mach_set_clock_mmss)(unsigned long); extern void (*mach_reset)( void ); extern void (*mach_halt)( void ); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-m68k/rtc.h linux/include/asm-m68k/rtc.h --- linux-2.4.20/include/asm-m68k/rtc.h Fri Aug 2 18:39:45 2002 +++ linux/include/asm-m68k/rtc.h Sun Jan 12 06:07:13 2003 @@ -13,24 +13,64 @@ #ifdef __KERNEL__ -#include #include -#include +#include #include #define RTC_PIE 0x40 /* periodic interrupt enable */ #define RTC_AIE 0x20 /* alarm interrupt enable */ #define RTC_UIE 0x10 /* update-finished interrupt enable */ -extern void gen_rtc_interrupt(unsigned long); - /* some dummy definitions */ +#define RTC_BATT_BAD 0x100 /* battery bad */ #define RTC_SQWE 0x08 /* enable square-wave output */ #define RTC_DM_BINARY 0x04 /* all time/date values are BCD if clear */ #define RTC_24H 0x02 /* 24 hour mode - else hours bit 7 means pm */ #define RTC_DST_EN 0x01 /* auto switch DST - works f. USA only */ +static inline unsigned int get_rtc_time(struct rtc_time *time) +{ + /* + * Only the values that we read from the RTC are set. We leave + * tm_wday, tm_yday and tm_isdst untouched. Even though the + * RTC has RTC_DAY_OF_WEEK, we ignore it, as it is only updated + * by the RTC when initially set to a non-zero value. + */ + mach_hwclk(0, time); + return RTC_24H; +} + +static inline int set_rtc_time(struct rtc_time *time) +{ + return mach_hwclk(1, time); +} + +static inline unsigned int get_rtc_ss(void) +{ + if (mach_get_ss) + return mach_get_ss(); + else{ + struct rtc_time h; + + get_rtc_time(&h); + return h.tm_sec; + } +} +static inline int get_rtc_pll(struct rtc_pll_info *pll) +{ + if (mach_get_rtc_pll) + return mach_get_rtc_pll(pll); + else + return -EINVAL; +} +static inline int set_rtc_pll(struct rtc_pll_info *pll) +{ + if (mach_set_rtc_pll) + return mach_set_rtc_pll(pll); + else + return -EINVAL; +} #endif /* __KERNEL__ */ #endif /* _ASM__RTC_H */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/atomic.h linux/include/asm-parisc/atomic.h --- linux-2.4.20/include/asm-parisc/atomic.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/atomic.h Sun Feb 9 02:23:07 2003 @@ -13,8 +13,9 @@ * And probably incredibly slow on parisc. OTOH, we don't * have to write any serious assembly. prumpf */ - #ifdef CONFIG_SMP +#include + /* Use an array of spinlocks for our atomic_ts. ** Hash function to index into a different SPINLOCK. ** Since "a" is usually an address, ">>8" makes one spinlock per 64-bytes. @@ -23,25 +24,33 @@ # define ATOMIC_HASH(a) (&__atomic_hash[(((unsigned long) a)>>8)&(ATOMIC_HASH_SIZE-1)]) extern spinlock_t __atomic_hash[ATOMIC_HASH_SIZE]; -/* copied from and modified */ -# define SPIN_LOCK(x) \ - do { while(__ldcw(&(x)->lock) == 0); } while(0) - -# define SPIN_UNLOCK(x) \ - do { (x)->lock = 1; } while(0) -#else -# define ATOMIC_HASH_SIZE 1 -# define ATOMIC_HASH(a) (0) -/* copied from and modified */ -# define SPIN_LOCK(x) (void)(x) - -# define SPIN_UNLOCK(x) do { } while(0) -#endif +/* copied from and modified. + * No CONFIG_DEBUG_SPINLOCK support. + * + * XXX REVISIT these could be renamed and moved to spinlock_t.h as well + */ +#define SPIN_LOCK(x) do { while(__ldcw(&(x)->lock) == 0); } while(0) +#define SPIN_UNLOCK(x) do { (x)->lock = 1; } while(0) + +#else /* CONFIG_SMP */ + +#define ATOMIC_HASH_SIZE 1 +#define ATOMIC_HASH(a) (0) + +#define SPIN_LOCK(x) (void)(x) +#define SPIN_UNLOCK(x) do { } while(0) + +#endif /* CONFIG_SMP */ /* copied from and modified */ -#define SPIN_LOCK_IRQSAVE(lock, flags) do { local_irq_save(flags); SPIN_LOCK(lock); } while (0) -#define SPIN_UNLOCK_IRQRESTORE(lock, flags) do { SPIN_UNLOCK(lock); local_irq_restore(flags); } while (0) +#define SPIN_LOCK_IRQSAVE(lock, flags) do { \ + local_irq_save(flags); SPIN_LOCK(lock); \ +} while (0) + +#define SPIN_UNLOCK_IRQRESTORE(lock, flags) do { \ + SPIN_UNLOCK(lock); local_irq_restore(flags); \ +} while (0) /* Note that we need not lock read accesses - aligned word writes/reads * are atomic, so a reader never sees unconsistent values. @@ -54,22 +63,10 @@ } atomic_t; -/* -** xchg/cmpxchg moved from asm/system.h - ggg -*/ - -#if 1 /* This should get optimized out since it's never called. ** Or get a link error if xchg is used "wrong". */ extern void __xchg_called_with_bad_pointer(void); -#else -static inline void __xchg_called_with_bad_pointer(void) -{ - extern void panic(const char * fmt, ...); - panic("xchg called with bad pointer"); -} -#endif /* __xchg32/64 defined in arch/parisc/lib/bitops.c */ extern unsigned long __xchg8(char, char *); @@ -98,7 +95,7 @@ /* ** REVISIT - Abandoned use of LDCW in xchg() for now: ** o need to test sizeof(*ptr) to avoid clearing adjacent bytes -** o and while we are at it, could __LP64__ code use LDCD too? +** o and while we are at it, could 64-bit code use LDCD too? ** ** if (__builtin_constant_p(x) && (x == NULL)) ** if (((unsigned long)p & 0xf) == 0) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/checksum.h linux/include/asm-parisc/checksum.h --- linux-2.4.20/include/asm-parisc/checksum.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/checksum.h Fri Dec 6 05:54:28 2002 @@ -53,8 +53,6 @@ /* * Optimized for IP headers, which always checksum on 4 octet boundaries. - * - * Written by Randolph Chung */ static inline unsigned short ip_fast_csum(unsigned char * iph, unsigned int ihl) { @@ -63,27 +61,23 @@ __asm__ __volatile__ ( " ldws,ma 4(%1), %0\n" -" addi -4, %2, %2\n" -" comib,>= 0, %2, 2f\n" +" addib,<= -4, %2, 2f\n" "\n" -" ldws,ma 4(%1), %%r19\n" -" add %0, %%r19, %0\n" -" ldws,ma 4(%1), %%r19\n" -" addc %0, %%r19, %0\n" -" ldws,ma 4(%1), %%r19\n" +" ldws 4(%1), %%r20\n" +" ldws 8(%1), %%r21\n" +" add %0, %%r20, %0\n" +" ldws,ma 12(%1), %%r19\n" +" addc %0, %%r21, %0\n" " addc %0, %%r19, %0\n" "1: ldws,ma 4(%1), %%r19\n" -" addib,<> -1, %2, 1b\n" +" addib,< 0, %2, 1b\n" " addc %0, %%r19, %0\n" -" addc %0, %%r0, %0\n" "\n" -" zdepi -1, 31, 16, %%r19\n" -" and %0, %%r19, %%r20\n" +" extru %0, 31, 16, %%r20\n" " extru %0, 15, 16, %%r21\n" -" add %%r20, %%r21, %0\n" -" and %0, %%r19, %%r20\n" +" addc %%r20, %%r21, %0\n" " extru %0, 15, 16, %%r21\n" -" add %%r20, %%r21, %0\n" +" add %0, %%r21, %0\n" " subi -1, %0, %0\n" "2:\n" : "=r" (sum), "=r" (iph), "=r" (ihl) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/ide.h linux/include/asm-parisc/ide.h --- linux-2.4.20/include/asm-parisc/ide.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/ide.h Sun Feb 9 02:24:30 2003 @@ -20,6 +20,8 @@ #define MAX_HWIFS 2 #endif +#define ide__sti() __sti() + static __inline__ int ide_default_irq(ide_ioreg_t base) { switch (base) { @@ -77,6 +79,29 @@ } #endif /* CONFIG_BLK_DEV_IDEPCI */ } + +typedef union { + unsigned all : 8; /* all of the bits together */ + struct { + unsigned bit7 : 1; /* always 1 */ + unsigned lba : 1; /* using LBA instead of CHS */ + unsigned bit5 : 1; /* always 1 */ + unsigned unit : 1; /* drive select number, 0 or 1 */ + unsigned head : 4; /* always zeros here */ + } b; +} select_t; + +typedef union { + unsigned all : 8; /* all of the bits together */ + struct { + unsigned bit0 : 1; + unsigned nIEN : 1; /* device INTRQ to host */ + unsigned SRST : 1; /* host soft reset bit */ + unsigned bit3 : 1; /* ATA-2 thingy */ + unsigned reserved456 : 3; + unsigned HOB : 1; /* 48-bit address ordering */ + } b; +} control_t; #define ide_request_irq(irq,hand,flg,dev,id) request_irq((irq),(hand),(flg),(dev),(id)) #define ide_free_irq(irq,dev_id) free_irq((irq), (dev_id)) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/io.h linux/include/asm-parisc/io.h --- linux-2.4.20/include/asm-parisc/io.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/io.h Mon Feb 10 02:19:10 2003 @@ -51,7 +51,7 @@ __asm__ __volatile__( " rsm 2,%0\n" - " ldbx 0(%2),%1\n" + " ldb,ma 0(%2),%1\n" " mtsm %0\n" : "=&r" (flags), "=r" (ret) : "r" (addr) ); @@ -65,7 +65,7 @@ __asm__ __volatile__( " rsm 2,%0\n" - " ldhx 0(%2),%1\n" + " ldh,ma 0(%2),%1\n" " mtsm %0\n" : "=&r" (flags), "=r" (ret) : "r" (addr) ); @@ -77,7 +77,7 @@ u32 ret; __asm__ __volatile__( - " ldwax 0(%1),%0\n" + " ldwa,ma 0(%1),%0\n" : "=r" (ret) : "r" (addr) ); return ret; @@ -88,7 +88,7 @@ unsigned long long ret; #ifdef __LP64__ __asm__ __volatile__( - " ldda 0(%1),%0\n" + " ldda,ma 0(%1),%0\n" : "=r" (ret) : "r" (addr) ); #else /* two reads may have side effects.. */ @@ -103,7 +103,7 @@ long flags; __asm__ __volatile__( " rsm 2,%0\n" - " stbs %1,0(%2)\n" + " stb,ma %1,0(%2)\n" " mtsm %0\n" : "=&r" (flags) : "r" (val), "r" (addr) ); } @@ -113,7 +113,7 @@ long flags; __asm__ __volatile__( " rsm 2,%0\n" - " sths %1,0(%2)\n" + " sth,ma %1,0(%2)\n" " mtsm %0\n" : "=&r" (flags) : "r" (val), "r" (addr) ); } @@ -121,7 +121,7 @@ extern __inline__ void __raw_writel(unsigned int val, unsigned long addr) { __asm__ __volatile__( - " stwas %0,0(%1)\n" + " stwa,ma %0,0(%1)\n" : : "r" (val), "r" (addr) ); } @@ -129,7 +129,7 @@ { #ifdef __LP64__ __asm__ __volatile__( - " stda %0,0(%1)\n" + " stda,ma %0,0(%1)\n" : : "r" (val), "r" (addr) ); #else /* two writes may have side effects.. */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/linux_logo.h linux/include/asm-parisc/linux_logo.h --- linux-2.4.20/include/asm-parisc/linux_logo.h Mon Jun 11 20:15:27 2001 +++ linux/include/asm-parisc/linux_logo.h Sun Dec 22 06:03:22 2002 @@ -1,27 +1,1438 @@ -/* $Id: linux_logo.h,v 1.1.1.1 1999/03/15 19:41:01 pjlahaie Exp $ - * include/asm-parisc/linux_logo.h: This is a linux logo - * to be displayed on boot. +/* linux_logo.h created with fblogo, 2002/12/21 04:44:04 + * include/linux/linux_logo.h: This is a linux logo + * to be displayed on boot. * * Copyright (C) 1996 Larry Ewing (lewing@isc.tamu.edu) - * Copyright (C) 1996 Jakub Jelinek (jj@sunsite.mff.cuni.cz) + * Copyright (C) 1996,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) + * + * You can put anything here, but: + * LINUX_LOGO_COLORS has to be less than 224 + * Generated by fblogo version 0.5.0 + * + * + * Remember to modify drivers/video/fbcon.c: + * Change "#define LOGO_H 80" to "#define LOGO_H 80" + * Change "#define LOGO_W 80" to "#define LOGO_W 80" * * You can put anything here, but: * LINUX_LOGO_COLORS has to be less than 224 * image size has to be 80x80 * values have to start from 0x20 * (i.e. RGB(linux_logo_red[0], - * linux_logo_green[0], - * linux_logo_blue[0]) is color 0x20) + * linux_logo_green[0], + * linux_logo_blue[0]) is color 0x20) * BW image has to be 80x80 as well, with MS bit * on the left * Serial_console ascii image can be any size, * but should contain %s to display the version */ - -#include -#include -#define linux_logo_banner "Linux/PA-RISC version " UTS_RELEASE +#ifndef __HAVE_ARCH_LINUX_LOGO +#define LINUX_LOGO_COLORS 223 +#endif +#ifdef INCLUDE_LINUX_LOGO_DATA +#ifndef __HAVE_ARCH_LINUX_LOGO +unsigned char linux_logo_red[] __initdata = { + 0x02, 0xFD, 0xF1, 0x02, 0xA2, 0x02, 0x76, 0xFE, + 0xB8, 0x32, 0x52, 0xCA, 0x66, 0x8E, 0x46, 0xFD, + 0x66, 0xB2, 0xB6, 0x3E, 0xA4, 0xFE, 0x21, 0xDB, + 0xEE, 0x2A, 0xCC, 0x9A, 0x1A, 0xFE, 0xFE, 0xA6, + 0xC2, 0xFE, 0x94, 0x12, 0xBA, 0xED, 0x8E, 0xFE, + 0xAE, 0xBC, 0xC2, 0xCE, 0xE2, 0x4A, 0x0E, 0x6F, + 0xBE, 0xA2, 0x02, 0x57, 0x78, 0xFE, 0xDA, 0xDA, + 0xFE, 0xEE, 0x8A, 0xF5, 0xB3, 0x0A, 0xCA, 0x77, + 0x52, 0xFE, 0x5A, 0x64, 0xFA, 0x96, 0xC2, 0x96, + 0xC2, 0x92, 0x4E, 0x52, 0xBE, 0xFE, 0x66, 0x8C, + 0xDA, 0xFE, 0xAA, 0x6E, 0xB6, 0x7A, 0xE2, 0x3F, + 0xA3, 0x06, 0xE6, 0xD6, 0xE6, 0x56, 0xF2, 0xB6, + 0x7E, 0xDD, 0xD6, 0xF9, 0x37, 0x26, 0xE7, 0xEC, + 0xBE, 0xDE, 0xA3, 0xFE, 0x92, 0xDE, 0x36, 0xC2, + 0x82, 0xEA, 0x26, 0xA7, 0x2D, 0xF2, 0xA6, 0x6A, + 0xDA, 0x2E, 0xE2, 0xFE, 0x69, 0xFE, 0x46, 0x9E, + 0x5E, 0xFE, 0x82, 0xFE, 0xFC, 0xAA, 0xB8, 0xFE, + 0xCE, 0xC6, 0x1D, 0x76, 0xF8, 0x92, 0xE2, 0xD6, + 0xFE, 0x9C, 0xCC, 0xB6, 0xE4, 0x0C, 0xE2, 0xC6, + 0xD2, 0x16, 0xD3, 0x9C, 0x59, 0x3A, 0xFE, 0x70, + 0xBB, 0xA6, 0xF6, 0xFA, 0x76, 0xB6, 0xAE, 0xB7, + 0xEE, 0x3E, 0x82, 0xCA, 0xBA, 0x17, 0xAB, 0xAF, + 0xCF, 0x86, 0x32, 0xB4, 0x2A, 0xFE, 0xEE, 0xE2, + 0x5A, 0xFE, 0x02, 0xFE, 0xEA, 0xFE, 0x77, 0x64, + 0xFE, 0xFD, 0xD5, 0xBF, 0x4E, 0xBB, 0xF8, 0x9B, + 0x78, 0x6E, 0xFA, 0xC6, 0xFE, 0xB2, 0x12, 0xF2, + 0xBE, 0x06, 0xAE, 0xC4, 0xEA, 0xAE, 0xFE, 0xD5, + 0x42, 0xBC, 0x86, 0xFE, 0x7A, 0xF0, 0xF1 +}; + +unsigned char linux_logo_green[] __initdata = { + 0x02, 0xCF, 0xB7, 0x9A, 0x7A, 0x66, 0x4C, 0xCF, + 0xBA, 0x9A, 0x3A, 0x98, 0xCE, 0x66, 0x2E, 0xE0, + 0x9A, 0xB6, 0xB6, 0x27, 0x7C, 0xE2, 0x22, 0x9B, + 0xE6, 0x1E, 0x9A, 0xCE, 0x1A, 0xE6, 0xEA, 0x6E, + 0x86, 0xCE, 0x59, 0x12, 0x96, 0xEE, 0x5A, 0xD4, + 0x7E, 0x9A, 0xBA, 0xCE, 0xBE, 0x4A, 0x0E, 0x43, + 0xA7, 0x8A, 0x66, 0x3D, 0x4E, 0xEA, 0xDA, 0xAD, + 0xE6, 0xCA, 0x62, 0xF6, 0xA4, 0x0A, 0x82, 0x77, + 0x52, 0xE9, 0x34, 0x64, 0xC2, 0x7E, 0xB2, 0x96, + 0xC2, 0x62, 0x3A, 0x33, 0x91, 0xEC, 0x9A, 0x8C, + 0xB6, 0xE2, 0x70, 0x56, 0x76, 0x6A, 0xBE, 0x3E, + 0xA2, 0x06, 0xE6, 0xD6, 0xEA, 0x56, 0xC6, 0x9E, + 0x7E, 0x9A, 0xAA, 0xFA, 0x22, 0x26, 0xA6, 0xAE, + 0xC6, 0xB6, 0x8F, 0xDE, 0x7A, 0xDE, 0x36, 0x83, + 0x82, 0xBE, 0x16, 0x9B, 0x1A, 0xBE, 0xA6, 0x5C, + 0x9F, 0x2E, 0xAE, 0xD8, 0x6B, 0xBA, 0x46, 0x9E, + 0x5E, 0xC6, 0x72, 0xBE, 0xDA, 0x8E, 0xB0, 0xC2, + 0x89, 0x92, 0x1E, 0x6A, 0xB7, 0x92, 0xA2, 0xA2, + 0xFE, 0x65, 0xD0, 0xAA, 0xB0, 0x0E, 0xE2, 0xC6, + 0xD2, 0x16, 0x91, 0x6E, 0x3B, 0x3A, 0xCA, 0x70, + 0xBB, 0xAE, 0xBE, 0xD6, 0x5A, 0x8A, 0x86, 0xBA, + 0xC6, 0x42, 0x58, 0xCA, 0x7C, 0x0E, 0xAA, 0x7F, + 0x8F, 0x86, 0x32, 0x72, 0x2A, 0xC2, 0xA7, 0xA0, + 0x5A, 0xC6, 0x02, 0xFE, 0xEA, 0xEA, 0x7A, 0x3F, + 0xC6, 0xCA, 0xA3, 0xBF, 0x4E, 0x91, 0xB8, 0x99, + 0x70, 0x5E, 0xBE, 0x7E, 0xFE, 0xB1, 0x06, 0xB1, + 0xC2, 0x0A, 0xA2, 0x9D, 0xAA, 0x77, 0xC2, 0x96, + 0x42, 0xBE, 0x52, 0xE8, 0x7E, 0xAE, 0xF2 +}; + +unsigned char linux_logo_blue[] __initdata = { + 0x02, 0x03, 0x07, 0x9A, 0x02, 0x66, 0x02, 0x0E, + 0xC3, 0x9A, 0x02, 0x02, 0xCE, 0x02, 0x02, 0x1C, + 0x9A, 0xBE, 0xB6, 0x02, 0x38, 0x2E, 0x23, 0x14, + 0x36, 0x02, 0x32, 0xCE, 0x1C, 0x46, 0x42, 0x0A, + 0x0A, 0x12, 0x03, 0x12, 0x4A, 0xEF, 0x05, 0x16, + 0x26, 0x52, 0xAE, 0xCE, 0x02, 0x4A, 0x0F, 0x03, + 0x6C, 0x56, 0x9A, 0x0D, 0x0C, 0xA2, 0xDB, 0x02, + 0x9A, 0x02, 0x12, 0xF8, 0x85, 0x0B, 0x02, 0x76, + 0x52, 0x07, 0x02, 0x66, 0x0D, 0x46, 0x92, 0x97, + 0xC3, 0x16, 0x1A, 0x07, 0x02, 0x0E, 0xCE, 0x8D, + 0x4E, 0x04, 0x04, 0x2A, 0x03, 0x52, 0x4E, 0x3F, + 0xA1, 0x07, 0xE7, 0xD7, 0xEB, 0x56, 0x02, 0x72, + 0x7F, 0x06, 0x1A, 0xFB, 0x03, 0x27, 0x07, 0x08, + 0xD6, 0x42, 0x6D, 0x07, 0x4E, 0xDF, 0x37, 0x06, + 0x84, 0x02, 0x02, 0x86, 0x02, 0x3A, 0xA7, 0x44, + 0x03, 0x2F, 0x38, 0x0E, 0x70, 0x07, 0x47, 0x9E, + 0x5F, 0x06, 0x56, 0x0B, 0x06, 0x32, 0x9E, 0x02, + 0x03, 0x36, 0x1F, 0x56, 0x03, 0x92, 0x10, 0x03, + 0xF2, 0x03, 0xDB, 0x92, 0x1C, 0x1A, 0xE2, 0xC8, + 0xD2, 0x17, 0x03, 0x02, 0x03, 0x3B, 0x0D, 0x70, + 0xBA, 0xBA, 0x0D, 0x03, 0x06, 0x16, 0x26, 0xBE, + 0x0E, 0x50, 0x02, 0xCA, 0x04, 0x02, 0xA7, 0x03, + 0x0C, 0x86, 0x33, 0x04, 0x2B, 0x09, 0x05, 0x06, + 0x5A, 0x0D, 0x0A, 0xFA, 0xEB, 0x2A, 0x82, 0x04, + 0x02, 0x02, 0x32, 0xBE, 0x4F, 0x35, 0x0C, 0x98, + 0x6C, 0x46, 0x0B, 0x02, 0xFE, 0xB1, 0x02, 0x07, + 0xD2, 0x18, 0x96, 0x48, 0x06, 0x04, 0x0E, 0x07, + 0x43, 0xC6, 0x02, 0x3A, 0x8C, 0x16, 0xF4 +}; + +unsigned char linux_logo[] __initdata = { + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x79, 0x79, + 0x79, 0x79, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x79, 0xB9, 0x99, 0xBD, 0x9E, 0x60, + 0x60, 0xF8, 0x8E, 0x85, 0xB9, 0x79, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x79, 0xAA, 0x9E, 0xDE, 0x96, 0xE3, 0xB7, 0x4B, + 0x4B, 0x68, 0x32, 0x9F, 0x5F, 0x9E, 0xAA, 0x5D, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4E, + 0x8E, 0x80, 0xE3, 0xB6, 0xCB, 0x90, 0x80, 0x63, + 0x63, 0xDE, 0x78, 0xCB, 0xB6, 0xE3, 0xD1, 0x4D, + 0x3C, 0x79, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x4D, + 0x9F, 0x8D, 0x32, 0x77, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x77, 0x96, 0x7A, 0xE3, + 0x5F, 0x99, 0x5D, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5D, 0xF8, 0x96, + 0x8D, 0xBF, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x99, 0x68, + 0x7B, 0x6F, 0x8E, 0x5D, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x85, 0x6F, 0xB6, + 0xD8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5D, 0x36, 0xB9, 0x20, 0x79, + 0x6F, 0x8D, 0x6F, 0xD4, 0x79, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x4E, 0x7D, 0xCB, 0xAD, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x63, 0xBF, 0xD4, 0x20, + 0x20, 0x78, 0xB8, 0x9C, 0xB9, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x36, 0xAD, 0xB6, 0x36, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0xAA, 0x5F, 0x90, 0x9E, 0x3C, + 0x20, 0x5D, 0x4B, 0xED, 0x77, 0x79, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x79, 0x9E, 0xE3, 0x78, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0xAA, 0xE4, 0x77, 0xAA, 0x43, + 0x20, 0x20, 0x7D, 0x8D, 0x5F, 0xB9, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x4E, 0x63, 0x56, 0x9E, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5D, 0x4E, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x79, 0xB7, 0xCE, 0x8E, 0x79, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0xB9, 0x80, 0x7A, 0xB9, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0xBF, 0x4B, 0x7D, 0x5D, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0xAA, 0xAD, 0xB8, 0x79, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x85, 0xB6, 0x5F, 0x43, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x36, 0x67, 0xCB, 0x20, 0x20, + 0x20, 0x20, 0xB9, 0x3C, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x79, 0x8E, 0x79, 0x20, + 0x20, 0x20, 0x20, 0x43, 0xB6, 0x6F, 0x3C, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x36, 0x67, 0xCB, 0x20, 0x20, + 0x5D, 0xE4, 0x8E, 0x4E, 0x43, 0x20, 0x20, 0x20, + 0x20, 0x8E, 0x90, 0xCE, 0x90, 0x4E, 0xAA, 0x20, + 0x20, 0x20, 0x20, 0x20, 0xB7, 0xE7, 0x36, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x36, 0x67, 0xCB, 0x20, 0x20, + 0xD1, 0x8D, 0x7B, 0xD8, 0x20, 0x20, 0x20, 0x20, + 0x9E, 0x32, 0x56, 0x45, 0xFE, 0x6F, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0xCB, 0x96, 0xD4, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x36, 0x67, 0xCB, 0x20, 0x85, + 0xDC, 0xEC, 0xEC, 0xEC, 0xAA, 0x20, 0x20, 0xDA, + 0x56, 0xEC, 0xEC, 0xB8, 0xEC, 0x83, 0x8E, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x6F, 0xED, 0x8E, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x36, 0x67, 0xCB, 0x20, 0x9C, + 0x45, 0xAA, 0x9C, 0xEC, 0xDE, 0x20, 0x20, 0xAA, + 0xEC, 0x83, 0x79, 0xBD, 0xBF, 0xEC, 0x96, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x6F, 0x32, 0x8E, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0xAA, 0xAD, 0xB7, 0x20, 0x80, + 0x80, 0x20, 0xE4, 0x31, 0x67, 0xDA, 0x3C, 0xD4, + 0xEC, 0xDE, 0x20, 0xDA, 0x8E, 0xB6, 0x7A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x6F, 0x32, 0x8E, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0xD1, 0xDC, 0xB9, 0x5F, + 0x90, 0x20, 0xF1, 0xFC, 0x7D, 0x39, 0x94, 0xCD, + 0x28, 0x63, 0x20, 0x20, 0x20, 0xB8, 0xDC, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x6F, 0xC0, 0xBD, 0x79, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x43, 0x5F, 0x7A, 0xB9, 0x9E, + 0x8D, 0x20, 0x20, 0x5A, 0x87, 0xE0, 0xC2, 0x2B, + 0x82, 0x51, 0x20, 0x20, 0xB5, 0xEC, 0xC7, 0x20, + 0x20, 0x20, 0x20, 0x20, 0xAD, 0x68, 0x9E, 0x79, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x43, 0xBF, 0xB6, 0xB9, 0x79, + 0x83, 0x93, 0xCC, 0xF4, 0xE0, 0xE1, 0x21, 0xC8, + 0x47, 0x9B, 0x57, 0xC4, 0xB8, 0xEC, 0x77, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x60, 0x4B, 0x60, 0x5D, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x43, 0xBF, 0xB6, 0xB9, 0x20, + 0x75, 0xD0, 0xF4, 0xA7, 0xE0, 0x21, 0xA4, 0xDD, + 0x3E, 0xDD, 0x61, 0x71, 0x21, 0xB4, 0x2E, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x60, 0x7B, 0xA0, 0x5D, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x43, 0xBF, 0xB6, 0x85, 0xCD, + 0xCC, 0x81, 0xAC, 0xE0, 0xE1, 0xC3, 0x8B, 0x3D, + 0x3E, 0x61, 0x61, 0x6D, 0x71, 0x47, 0xAF, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x8E, 0xB6, 0x5F, 0xB9, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5D, 0xA0, 0x7B, 0x7D, 0xDF, + 0xA8, 0xD6, 0xA3, 0xE0, 0x21, 0xA4, 0x35, 0xFB, + 0x61, 0x61, 0x61, 0x4C, 0x2B, 0x86, 0xCF, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x5D, 0x8D, 0x78, 0x99, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5D, 0x60, 0xB8, 0x7D, 0x39, + 0xF5, 0xAC, 0xA7, 0xE1, 0x21, 0x8B, 0x35, 0x71, + 0x8B, 0x59, 0x6C, 0xD0, 0xD7, 0xD6, 0x5A, 0x20, + 0x20, 0xB9, 0x20, 0x20, 0x20, 0x90, 0xCB, 0x60, + 0x5D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5D, 0x60, 0xB8, 0x7D, 0x20, + 0xBC, 0xBB, 0x22, 0x21, 0x2F, 0x8B, 0xC3, 0x57, + 0xCF, 0x3F, 0xBA, 0xD7, 0x81, 0x3A, 0x77, 0x20, + 0x20, 0xA0, 0x63, 0x36, 0x20, 0xD2, 0x7A, 0x6F, + 0x36, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x4E, 0xA0, 0x7B, 0x7D, 0x20, + 0xDE, 0x51, 0x46, 0xF5, 0x6C, 0xCF, 0x72, 0xCC, + 0x5E, 0xA8, 0x5E, 0xE5, 0x4A, 0xB2, 0xED, 0x20, + 0x20, 0x43, 0x6F, 0x90, 0x4E, 0x20, 0xED, 0xB7, + 0x7D, 0x4E, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x36, 0xD1, 0x7A, 0x8E, 0x20, + 0xAD, 0xCB, 0x34, 0xB1, 0xF7, 0xBA, 0xA8, 0xEB, + 0xD3, 0x74, 0x7F, 0xF9, 0xB2, 0x7A, 0x7B, 0x36, + 0x20, 0x20, 0xE4, 0xA0, 0x79, 0x20, 0xAA, 0xB6, + 0x67, 0xD4, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x4E, 0x60, 0x68, 0xC0, 0x79, 0x20, + 0x6F, 0xB2, 0x68, 0x8A, 0x42, 0x42, 0x42, 0x42, + 0x34, 0xA6, 0x28, 0xB2, 0xEC, 0xEC, 0xEC, 0x9F, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6F, + 0x4B, 0x63, 0x43, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x79, 0x8E, 0x9F, 0xB6, 0xD2, 0x20, 0x20, + 0xDC, 0x7C, 0xB7, 0xF0, 0x28, 0xF2, 0xF2, 0xED, + 0xC7, 0xF9, 0xB2, 0x5B, 0xEC, 0xEC, 0xEC, 0xEC, + 0x85, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xAA, + 0x56, 0xCE, 0xBD, 0x79, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x79, 0x85, 0xD1, 0x8D, 0xE8, 0x20, 0x20, 0x67, + 0xEC, 0xEC, 0xB8, 0xF9, 0xF9, 0x28, 0xC7, 0xC7, + 0x68, 0x8D, 0x83, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x8D, 0xDE, 0xAA, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0xBF, 0x4B, 0xCE, 0x79, 0x20, 0x99, 0xEC, + 0xEC, 0xEC, 0xFE, 0xF9, 0xC0, 0xC7, 0xC7, 0x4B, + 0xFE, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0x99, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x79, 0x68, 0x68, 0xD8, 0x43, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, + 0x7D, 0xE3, 0x4B, 0x3C, 0x20, 0x20, 0x4B, 0xEC, + 0xEC, 0xEC, 0xEC, 0x5B, 0x56, 0x56, 0xDC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xCE, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x99, 0xB6, 0xED, 0x4D, 0x4E, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4E, 0x9E, + 0xCE, 0xB6, 0x99, 0x20, 0x20, 0x4D, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0x83, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x77, 0xDC, 0x78, 0xF8, 0x4E, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x79, 0x8E, 0xE7, + 0x7A, 0x60, 0x20, 0x20, 0x20, 0x68, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0x3C, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0xBF, 0x7A, 0xE7, 0xBD, 0x79, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0xAA, 0x80, 0x8D, + 0xBF, 0x20, 0x20, 0x20, 0x4E, 0x56, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0x83, 0x83, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xDB, 0xEC, 0xD8, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0xBF, 0x8D, 0xD1, 0x85, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x5D, 0x4D, 0xE3, 0x32, + 0x79, 0x20, 0x20, 0x20, 0x99, 0x32, 0xDC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xDC, 0x8D, 0x8D, 0x45, 0x83, + 0x83, 0x83, 0x83, 0x7A, 0x8D, 0x56, 0x7B, 0xB8, + 0xB8, 0x8D, 0x78, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x79, 0x78, 0xCB, 0xD8, + 0x4E, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0xAA, 0xD1, 0x7A, 0xD2, + 0x20, 0x20, 0x20, 0x20, 0xE4, 0xED, 0x7B, 0xFE, + 0xEC, 0xEC, 0xEC, 0xDB, 0xB6, 0x5B, 0xEC, 0xEC, + 0xEC, 0xEC, 0xDB, 0xFE, 0x8D, 0x4B, 0xB7, 0x68, + 0x68, 0xB7, 0xDC, 0x5F, 0x20, 0x20, 0xAA, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x8D, 0x67, + 0x85, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x79, 0xBD, 0xED, 0xCE, 0x20, + 0x20, 0x20, 0x20, 0x79, 0x67, 0xDC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xDB, 0x45, 0xEC, 0xDB, 0xDB, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x45, + 0x8D, 0x4B, 0xB8, 0x83, 0x99, 0x20, 0x20, 0x85, + 0x5D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0xB7, + 0x60, 0x5D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5D, 0x7D, 0xB8, 0xBF, 0x20, + 0x20, 0x43, 0x20, 0xBF, 0xFE, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xDB, 0xDB, 0xDB, 0xDB, + 0xDB, 0xDB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xDC, 0xB6, 0x7B, 0x20, 0x20, 0x20, + 0xD4, 0x5D, 0x20, 0x20, 0x20, 0x20, 0x99, 0x7A, + 0xD1, 0xAA, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x80, 0x7A, 0xD2, 0x20, + 0x36, 0x20, 0x4E, 0x68, 0xEC, 0xEC, 0x5B, 0xEC, + 0xEC, 0x7C, 0x4B, 0x4B, 0x4B, 0x4B, 0x3B, 0x3B, + 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x30, 0x30, 0xC1, + 0xB6, 0xEC, 0x5B, 0x5B, 0x5B, 0x9E, 0x20, 0x20, + 0x20, 0x85, 0x20, 0x20, 0x20, 0x20, 0x20, 0xED, + 0xED, 0xBD, 0x79, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0xD2, 0x96, 0xB8, 0x79, 0x79, + 0x4E, 0x20, 0xD1, 0x45, 0x83, 0xEC, 0xEC, 0xEC, + 0xEC, 0x30, 0x25, 0x52, 0x25, 0x25, 0x25, 0x25, + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x29, + 0xDC, 0xEC, 0xEC, 0xEC, 0x83, 0xB7, 0x20, 0x43, + 0xD2, 0xB9, 0xAA, 0x20, 0x20, 0x20, 0x20, 0x9C, + 0x7B, 0x63, 0x4E, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x5D, 0x7D, 0x4B, 0x80, 0x20, 0x85, + 0x20, 0x79, 0x7A, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0x30, 0x25, 0x25, 0x23, 0x29, 0x2C, 0x3B, + 0x4B, 0x7C, 0x4B, 0x3B, 0x30, 0x52, 0x25, 0x29, + 0x5B, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x4E, 0xAA, + 0xD2, 0x5D, 0xD4, 0x20, 0x20, 0x20, 0x20, 0x5D, + 0xB6, 0x67, 0x36, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0xAA, 0xD1, 0x7A, 0x99, 0x20, 0xB9, + 0x20, 0xE4, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0x29, 0x29, 0x3B, 0x7C, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x3B, 0x52, 0x23, + 0xFE, 0xEC, 0x83, 0xEC, 0xEC, 0xEC, 0x4D, 0x20, + 0x20, 0x20, 0x5D, 0x85, 0x20, 0x20, 0x20, 0x20, + 0x96, 0xE3, 0xF8, 0x79, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x79, 0xF8, 0x32, 0x32, 0x20, 0xAA, 0x20, + 0x20, 0xCB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x7C, + 0x30, 0x3B, 0x7C, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x29, 0x25, + 0x4B, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x6F, 0x20, + 0x20, 0x20, 0x20, 0x99, 0x20, 0x20, 0x20, 0x20, + 0xD8, 0x7B, 0x63, 0x4E, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0xDE, 0x8D, 0xE4, 0x20, 0x36, 0x20, + 0x36, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x7C, 0x30, + 0x4B, 0xEC, 0xEC, 0xEC, 0x7C, 0x3B, 0x30, 0x29, + 0x29, 0x29, 0x29, 0x3B, 0x7C, 0xEC, 0x29, 0x25, + 0x3B, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xE3, 0x20, + 0x20, 0x20, 0x20, 0xD2, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x7A, 0x80, 0xB9, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5D, 0x4D, 0xC0, 0x68, 0x79, 0x20, 0x5D, 0x20, + 0x90, 0xEC, 0xEC, 0xEC, 0xEC, 0x7C, 0x3B, 0x7C, + 0xEC, 0xEC, 0x3B, 0x29, 0x52, 0x52, 0x29, 0x29, + 0x29, 0x29, 0x25, 0x25, 0x29, 0x4B, 0x29, 0x25, + 0x2C, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xB6, 0x20, + 0x20, 0x20, 0x20, 0xD4, 0x20, 0x20, 0x20, 0x20, + 0x79, 0x7B, 0x67, 0x36, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x85, 0x6F, 0x7A, 0x77, 0x20, 0xB9, 0x20, 0x20, + 0xB8, 0xEC, 0xEC, 0xEC, 0xEC, 0x4B, 0xEC, 0xEC, + 0x3B, 0x29, 0x29, 0x6E, 0x4B, 0x7C, 0xEC, 0xEC, + 0xEC, 0x7C, 0x4B, 0x30, 0x25, 0x52, 0x52, 0x25, + 0x30, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x5B, 0x20, + 0x20, 0x20, 0x20, 0x36, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x68, 0xCE, 0x99, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4E, + 0xD8, 0xCB, 0x67, 0x20, 0x20, 0xAA, 0x20, 0x20, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x7C, 0x30, + 0x29, 0x3B, 0x7C, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0x6E, 0x25, 0x52, 0x25, + 0x29, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x20, + 0x20, 0x20, 0x20, 0xAA, 0x20, 0x20, 0x20, 0x20, + 0x20, 0xD1, 0xC0, 0xBD, 0x79, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xAA, + 0x6F, 0x8D, 0x3C, 0x20, 0x20, 0x36, 0x20, 0xB5, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x7C, 0x30, 0x3B, + 0xEC, 0xEC, 0x7C, 0xEC, 0xEC, 0xEC, 0x7C, 0x7C, + 0x7C, 0xEC, 0xEC, 0xEC, 0x7C, 0x52, 0x52, 0x25, + 0x29, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x20, + 0x20, 0x20, 0x79, 0x43, 0x20, 0x20, 0x20, 0x20, + 0x20, 0xD1, 0xC0, 0xBD, 0x79, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x99, + 0xCE, 0x68, 0x20, 0x20, 0x20, 0xBD, 0xF1, 0x36, + 0xEC, 0xEC, 0xEC, 0xEC, 0x7C, 0x6E, 0x7C, 0xEC, + 0xEC, 0xEC, 0x3B, 0x6E, 0x29, 0x29, 0x52, 0x52, + 0x23, 0x29, 0x3B, 0xEC, 0x7C, 0x23, 0x52, 0x52, + 0x23, 0x7C, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x20, + 0x20, 0x20, 0x3C, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0xD1, 0xC0, 0xBD, 0x79, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xBD, + 0xC0, 0xD1, 0x20, 0x20, 0x20, 0x36, 0x3C, 0x8E, + 0xEC, 0xEC, 0xEC, 0xEC, 0x4B, 0xEC, 0xEC, 0xEC, + 0x3B, 0x29, 0x52, 0x29, 0x29, 0x30, 0x30, 0x30, + 0x29, 0x25, 0x25, 0x29, 0x3B, 0x52, 0x52, 0x52, + 0x52, 0x7C, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x20, + 0x20, 0x20, 0x3C, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0xD1, 0xC0, 0xBD, 0x79, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x79, 0xBD, + 0xC0, 0xD1, 0x20, 0x20, 0x20, 0x20, 0xB5, 0x8E, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x3B, 0x30, + 0x30, 0x3B, 0x4B, 0x7C, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0x4B, 0x29, 0x25, 0x52, 0x52, 0x52, 0x52, + 0x52, 0x3B, 0xEC, 0xEC, 0xEC, 0xEC, 0x45, 0x20, + 0x20, 0x3C, 0x4E, 0x4E, 0xB5, 0x20, 0x20, 0x20, + 0x20, 0x78, 0x32, 0x8E, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x8E, + 0x32, 0x68, 0xEE, 0xCA, 0x24, 0x84, 0x20, 0xC9, + 0xEC, 0xEC, 0xEC, 0xEC, 0x7C, 0x30, 0x30, 0x7C, + 0xEC, 0xEC, 0x7C, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0x29, 0x25, 0x25, 0x25, 0x25, + 0x25, 0x2C, 0xEC, 0xEC, 0xEC, 0xEC, 0xF9, 0x20, + 0x79, 0x20, 0x20, 0x20, 0xDA, 0xAA, 0xF8, 0xB9, + 0x20, 0xCB, 0x78, 0xD4, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x79, 0x5D, 0x5D, 0x43, 0x4D, + 0x68, 0x8D, 0xAE, 0x47, 0x21, 0xE1, 0x53, 0x20, + 0x90, 0xEC, 0xEC, 0x7C, 0x30, 0x4B, 0xEC, 0xEC, + 0xEC, 0xEC, 0x7C, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0x4B, 0x30, 0x30, 0x30, 0x29, + 0x29, 0x30, 0xEC, 0xB0, 0x58, 0x55, 0x65, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x85, 0xC9, + 0x5D, 0xFE, 0x9F, 0xD4, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x5D, 0xAA, 0x77, 0x7D, 0xA0, 0x63, 0x9F, + 0x7A, 0x44, 0xAC, 0xBE, 0x21, 0x21, 0xE0, 0xBC, + 0x20, 0x9C, 0xEC, 0x3B, 0x7C, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0x7C, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0x7C, 0x7C, 0xEC, 0x95, 0x21, 0x71, 0xC3, 0xCD, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x36, 0x4E, + 0xA5, 0x56, 0x68, 0xE4, 0x5D, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5D, 0xBD, 0xD1, 0xC0, 0xB8, 0x7B, 0x56, 0xDC, + 0xA6, 0x98, 0x9D, 0xBE, 0x21, 0xE1, 0xE1, 0xC2, + 0x92, 0x20, 0xC9, 0x5B, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0x7A, 0xFE, 0xEC, 0xEC, 0xDB, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xB4, 0x9D, 0x21, 0x91, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xDA, 0x53, + 0x6D, 0x38, 0x7A, 0x90, 0x3C, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0xD4, 0xAD, 0xB6, 0xA6, 0x7F, 0xF3, 0x44, 0xE5, + 0xF7, 0x87, 0xF6, 0xBE, 0xBE, 0xE1, 0xE0, 0xE0, + 0xAF, 0x20, 0x20, 0xB5, 0x7B, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xDB, + 0xDB, 0xDB, 0xDB, 0xDB, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0x9A, 0x9D, 0xA7, 0x98, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x79, 0x22, + 0x8B, 0x8B, 0x68, 0xE7, 0x36, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5D, + 0x7D, 0x4B, 0x5C, 0xF4, 0x9D, 0xE6, 0xEF, 0x87, + 0xE6, 0xA3, 0xD9, 0xD9, 0xD9, 0xA1, 0xA1, 0xE0, + 0x21, 0x2D, 0x20, 0x20, 0x20, 0x96, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xDB, + 0xDB, 0xDB, 0xDB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xFE, 0xB2, 0xE2, 0xAC, 0x9D, 0x81, 0xDF, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xCF, 0xBE, + 0x47, 0x47, 0x68, 0x96, 0xD4, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, + 0x5F, 0x7A, 0xE2, 0x9D, 0xBE, 0xBE, 0xD9, 0xF6, + 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xA1, 0xD5, + 0xE0, 0x7E, 0x92, 0x20, 0x20, 0x20, 0x63, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xDB, + 0xDB, 0xDB, 0xDB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xB2, 0xF0, 0xE2, 0xEF, 0xEF, 0xD7, 0xCC, + 0x26, 0x84, 0x94, 0x84, 0x26, 0x40, 0xEF, 0xD9, + 0x41, 0x41, 0xE3, 0xB7, 0x7D, 0x43, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, + 0xDE, 0x7A, 0x37, 0xA3, 0xBE, 0x41, 0xBE, 0xBE, + 0xD9, 0xD9, 0xF6, 0x64, 0x64, 0xD5, 0xD5, 0xA1, + 0xA1, 0x21, 0x6C, 0x20, 0x20, 0x20, 0x20, 0xD2, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xDB, + 0xDB, 0xDB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xB2, 0x88, 0x3A, 0xF4, 0xAC, 0xF4, 0xBA, + 0xA8, 0x8F, 0x8F, 0x40, 0xBA, 0xF4, 0xD9, 0x41, + 0x41, 0x41, 0x89, 0x8D, 0x96, 0x9E, 0x4E, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4E, + 0x9C, 0x8D, 0xF3, 0xAC, 0xD9, 0x41, 0xBE, 0xD9, + 0xF6, 0x64, 0x64, 0x64, 0x64, 0x64, 0xD5, 0xD5, + 0xA1, 0xA1, 0x21, 0x2A, 0x20, 0x20, 0x20, 0x20, + 0x7D, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0x7B, 0x88, 0xE5, 0xD7, 0x22, 0x22, 0x86, + 0x98, 0x81, 0x81, 0x98, 0x87, 0xEA, 0xBE, 0xBE, + 0x41, 0xBE, 0xBE, 0x50, 0x7A, 0x78, 0x4D, 0xB9, + 0x79, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5D, + 0xD8, 0x7B, 0x49, 0xFD, 0xF6, 0xBE, 0xD9, 0xD9, + 0x64, 0x64, 0xC2, 0xC2, 0xC2, 0xEA, 0x64, 0xD5, + 0xD9, 0xA1, 0xE1, 0x57, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x83, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0x7C, 0x88, 0xC6, 0x81, 0xAC, 0xEA, 0x22, + 0x87, 0x87, 0xF4, 0x87, 0x22, 0xF6, 0xD9, 0xD9, + 0xBE, 0xBE, 0xBE, 0xD9, 0x50, 0xDC, 0x32, 0xBF, + 0xD2, 0x5D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x79, + 0x4D, 0xCB, 0x5C, 0x86, 0xA3, 0xBE, 0xD9, 0xF6, + 0x64, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0x64, 0x64, + 0xD5, 0xD9, 0xA1, 0x21, 0xBB, 0x20, 0x20, 0x20, + 0x20, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xFE, 0x9C, 0x46, 0x81, 0x22, 0xD5, 0xA3, + 0x9D, 0x22, 0x22, 0xE6, 0xEA, 0xF6, 0xD9, 0xD9, + 0xD9, 0xBE, 0xBE, 0x41, 0x41, 0x70, 0x7B, 0x7B, + 0x6F, 0x85, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x79, + 0xF8, 0x68, 0xF2, 0xAE, 0xEA, 0xD9, 0xD9, 0x64, + 0x64, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xEA, 0x64, + 0xD5, 0xD5, 0xA1, 0xE1, 0xE1, 0x33, 0x20, 0xF1, + 0x31, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xFC, 0x20, 0x46, 0x98, 0xAC, 0xD5, 0xD9, + 0xD9, 0xD5, 0x64, 0x64, 0x64, 0x64, 0xF6, 0xD9, + 0xD9, 0xBE, 0xBE, 0x41, 0x47, 0x9B, 0x41, 0x66, + 0xB7, 0x4D, 0x79, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5D, + 0xE4, 0xCB, 0x5C, 0xAE, 0xEA, 0xD9, 0xD9, 0x64, + 0x64, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0x64, + 0x64, 0xD5, 0xA1, 0xD5, 0x21, 0xAF, 0xCE, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0x63, 0x20, 0x20, 0xB1, 0xD7, 0xE6, 0xD5, 0xD9, + 0xD5, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0xF6, + 0xD9, 0xBE, 0xBE, 0x41, 0x47, 0x9B, 0x9B, 0x76, + 0x7B, 0xD8, 0x5D, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, + 0xBF, 0x8D, 0x44, 0xAE, 0xF6, 0xD9, 0xD9, 0xF6, + 0x64, 0xEA, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0x64, + 0x64, 0xD5, 0xD5, 0xD5, 0xE0, 0x7E, 0xC5, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFE, 0x99, + 0x20, 0x20, 0x20, 0xB1, 0xD7, 0x9D, 0xD5, 0xD9, + 0xD5, 0x64, 0x64, 0x64, 0x64, 0x64, 0xF6, 0xD9, + 0xD9, 0xBE, 0x41, 0x41, 0x47, 0x41, 0xD9, 0x66, + 0x4B, 0x60, 0x5D, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xD4, + 0x9F, 0xB6, 0xBA, 0x87, 0xD9, 0xBE, 0xD9, 0xD9, + 0xF6, 0x64, 0x64, 0x64, 0x64, 0xEA, 0x64, 0x64, + 0x64, 0xD5, 0xD5, 0xD5, 0xD5, 0x7E, 0xAF, 0x8C, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0x90, 0x20, 0x20, + 0x20, 0x20, 0xEE, 0xB1, 0x86, 0xEA, 0xD9, 0xD9, + 0xD5, 0x64, 0x64, 0x64, 0x64, 0xF6, 0xD9, 0xD9, + 0xBE, 0xBE, 0x41, 0x41, 0xBE, 0xE6, 0x9A, 0x8D, + 0x9F, 0xD2, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x79, 0x9E, + 0xB7, 0xB3, 0xD7, 0xD5, 0x41, 0xBE, 0xBE, 0xD9, + 0xD9, 0xD9, 0xF6, 0x64, 0x64, 0x64, 0x64, 0x64, + 0x64, 0xD5, 0xD9, 0xA1, 0xA1, 0x22, 0x86, 0x46, + 0x77, 0x7B, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, + 0xEC, 0xEC, 0x7A, 0xD1, 0x79, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x92, 0x3F, 0x86, 0xEA, 0xD9, 0xD9, + 0xD9, 0xF6, 0xF6, 0xF6, 0xD9, 0xD9, 0xD9, 0xBE, + 0xBE, 0xBE, 0xF6, 0xE6, 0xFD, 0x5C, 0xDC, 0xED, + 0x60, 0x4E, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5D, 0xD8, + 0x7B, 0xF3, 0x86, 0xA3, 0xBE, 0xBE, 0xBE, 0xD9, + 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, + 0xD9, 0xD5, 0xD9, 0xD9, 0xA1, 0x9D, 0x86, 0x72, + 0x94, 0x20, 0xB5, 0xE4, 0x5F, 0x80, 0xBF, 0xA0, + 0x8E, 0x79, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x84, 0x72, 0x86, 0xA3, 0xBE, 0xBE, + 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xF6, 0xD9, + 0xF6, 0xFD, 0x37, 0x5C, 0x7B, 0xB8, 0x67, 0x4D, + 0x43, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5D, 0xD8, + 0xB8, 0xF3, 0x81, 0xF4, 0xAC, 0xE6, 0xEA, 0xEA, + 0xA3, 0xF6, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, + 0xD9, 0xD9, 0xBE, 0xBE, 0xBE, 0xEA, 0xD7, 0x72, + 0x62, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x6B, 0x74, 0xAE, 0xEA, 0xBE, 0xBE, + 0xBE, 0xBE, 0xD9, 0xD9, 0xD9, 0xEA, 0xE6, 0x87, + 0xF7, 0x93, 0xB6, 0xB8, 0x78, 0x63, 0x99, 0x5D, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x79, 0xF8, + 0xC0, 0xCB, 0xA9, 0x8F, 0xA8, 0xD0, 0xF7, 0x81, + 0xAE, 0x86, 0x87, 0x22, 0xE6, 0xEA, 0xD9, 0xD9, + 0xBE, 0xBE, 0xBE, 0xBE, 0xD9, 0xEF, 0xD0, 0xB1, + 0xDF, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x6B, 0x72, 0xF7, 0xEF, 0xD9, 0xD9, + 0xBE, 0xD9, 0xD9, 0xF6, 0x22, 0x86, 0x81, 0xE5, + 0x4B, 0x56, 0x78, 0x63, 0x99, 0x43, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x9C, 0xC0, 0xB6, 0xB6, 0x32, 0x8A, 0x48, 0xD3, + 0xCC, 0xCC, 0x8F, 0x40, 0xD0, 0x81, 0xF4, 0x22, + 0xA3, 0xF6, 0xD9, 0xF6, 0xAC, 0x81, 0x74, 0x46, + 0x62, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x2E, 0xB1, 0x40, 0xAE, 0xAC, 0xF6, + 0xF6, 0xF6, 0xAC, 0xF4, 0x81, 0xCC, 0x8A, 0xDC, + 0xC0, 0x5F, 0x8E, 0x4E, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x79, + 0x3C, 0x4D, 0xBF, 0x67, 0x32, 0xB8, 0x7A, 0xCB, + 0xCE, 0x8C, 0x69, 0x46, 0xB1, 0x3F, 0xCC, 0xA8, + 0xBA, 0x98, 0x86, 0xAE, 0xBA, 0x74, 0x42, 0x4F, + 0x84, 0xD2, 0x32, 0x32, 0xCB, 0x45, 0xDC, 0xDC, + 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0x56, 0x32, + 0xED, 0x80, 0x6A, 0xCA, 0x74, 0xA8, 0x81, 0x86, + 0x86, 0xAE, 0xBA, 0x40, 0x3F, 0xF2, 0xB6, 0x78, + 0xE4, 0x3C, 0x79, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x79, 0x43, 0x36, 0xBD, 0xD8, 0x90, 0x78, + 0x68, 0x56, 0xDC, 0xCB, 0x93, 0xA2, 0x26, 0x46, + 0xB1, 0x3F, 0x72, 0x72, 0xB1, 0xFA, 0x4F, 0xBC, + 0xAD, 0x56, 0x4B, 0xCE, 0xE7, 0x6F, 0x90, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0xD1, 0x67, 0x96, + 0xE3, 0xDC, 0x90, 0xDF, 0xB1, 0x74, 0xCC, 0x8F, + 0x8F, 0xCC, 0x72, 0x46, 0xCE, 0x56, 0xAD, 0x77, + 0x4E, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x79, 0x5D, 0x3C, 0xD4, + 0xF8, 0x63, 0xD1, 0x96, 0x68, 0x8D, 0x7A, 0xE7, + 0x73, 0x4F, 0x4F, 0x26, 0x4F, 0xDF, 0x6B, 0x32, + 0x56, 0x9F, 0xA0, 0xD2, 0x36, 0x3C, 0xB9, 0xB9, + 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x3C, 0x36, 0xD4, + 0xE4, 0x96, 0xB6, 0xE8, 0xBC, 0xFA, 0x42, 0xB1, + 0xB1, 0x46, 0x54, 0xCE, 0x56, 0xD1, 0xD2, 0x5D, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x79, 0x4E, 0x3C, 0x99, 0x9E, 0xBF, 0xE7, 0xB7, + 0x7A, 0xCB, 0x6F, 0xE9, 0xE9, 0xE7, 0x56, 0xCB, + 0x80, 0xD2, 0x4E, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x4E, 0x4D, 0x78, 0x8D, 0xE3, 0x5F, 0x97, 0xE9, + 0xAB, 0x67, 0xB6, 0xCB, 0x90, 0x99, 0x79, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x79, 0x43, 0xD4, 0xE4, + 0x80, 0xCE, 0xB7, 0x7B, 0x7B, 0x68, 0xE7, 0x63, + 0x36, 0x79, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x4E, 0xBD, 0x80, 0xED, 0x4B, 0x7B, 0x7B, + 0xB8, 0x68, 0x67, 0xD8, 0x85, 0x79, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5D, + 0x3C, 0x99, 0x4D, 0xD8, 0xD8, 0x9E, 0x85, 0x4E, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x79, 0x3C, 0x8E, 0x60, 0xD8, 0xA0, + 0x7D, 0xF8, 0x85, 0x4E, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 +}; + +#endif /* !__HAVE_ARCH_LINUX_LOGO */ + +#ifndef __HAVE_ARCH_LINUX_LOGOBW + +unsigned char linux_logo_bw[] __initdata = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf3, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfc, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfd, 0xff, 0xf3, 0xdf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfd, 0xff, 0xf7, 0xef, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0x9f, 0x87, 0xfb, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0x0f, 0x03, 0xfb, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0x67, 0x33, 0xfb, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0xe7, 0x79, 0xfb, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0xf7, 0x79, 0xfb, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0xff, 0xf9, 0xf7, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0x60, 0x3b, 0xf7, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0x89, 0x07, 0xfb, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0x00, 0x0d, 0xfb, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0x80, 0x33, 0xfd, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0xc0, 0xc3, 0xfd, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0xff, 0x0d, 0xdd, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0x40, 0x31, 0xee, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf7, 0x20, 0xc1, 0xee, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf7, 0x1f, 0x00, 0xff, 0x7f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xef, 0x00, 0x00, 0x7f, 0xbf, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xee, 0x00, 0x00, 0x7f, 0xbf, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xde, 0x00, 0x00, 0x7f, 0xdf, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xbc, 0x00, 0x00, 0x3f, 0xef, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x7c, 0x00, 0x00, 0x3f, 0xf7, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x7c, 0x00, 0x00, 0x1f, 0xf7, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0x1c, 0x07, 0xdf, 0xfb, 0xff, 0xff, + 0xff, 0xff, 0xfd, 0xfc, 0x08, 0x0f, 0xef, 0xfd, 0xff, 0xff, + 0xff, 0xff, 0xfd, 0xf8, 0x00, 0x01, 0xef, 0xfd, 0xff, 0xff, + 0xff, 0xff, 0xfb, 0xf0, 0x00, 0x00, 0x7f, 0xfe, 0xff, 0xff, + 0xff, 0xff, 0xfb, 0xe0, 0x00, 0x00, 0x1f, 0xfe, 0xff, 0xff, + 0xff, 0xff, 0xf7, 0xe0, 0x00, 0x00, 0x07, 0xbf, 0x7f, 0xff, + 0xff, 0xff, 0xf7, 0xc0, 0x00, 0x00, 0x03, 0xbf, 0x7f, 0xff, + 0xff, 0xff, 0xef, 0xc0, 0x00, 0x00, 0x03, 0xdf, 0xbf, 0xff, + 0xff, 0xff, 0xef, 0x80, 0x00, 0x00, 0x03, 0xdf, 0xbf, 0xff, + 0xff, 0xff, 0xdf, 0x80, 0x00, 0x00, 0x03, 0xdf, 0xbf, 0xff, + 0xff, 0xff, 0xdf, 0x80, 0x00, 0x00, 0x01, 0xef, 0xdf, 0xff, + 0xff, 0xff, 0xdf, 0x80, 0x00, 0x00, 0x01, 0xef, 0xdf, 0xff, + 0xff, 0xff, 0xbf, 0x00, 0x20, 0x00, 0x01, 0xef, 0xdf, 0xff, + 0xff, 0xff, 0xbf, 0x00, 0x20, 0x00, 0x01, 0xef, 0xdf, 0xff, + 0xff, 0xff, 0xbf, 0x00, 0x20, 0x00, 0x01, 0xef, 0xdf, 0xff, + 0xff, 0xff, 0xbf, 0x00, 0x20, 0x00, 0x01, 0xef, 0xdf, 0xff, + 0xff, 0xff, 0xbf, 0x00, 0x20, 0x00, 0x03, 0x03, 0xdf, 0xff, + 0xff, 0xff, 0xbf, 0x00, 0x20, 0x00, 0x02, 0xfd, 0xdf, 0xff, + 0xff, 0xff, 0xa3, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xdf, 0xff, + 0xff, 0xff, 0xc1, 0xc0, 0x00, 0x00, 0x11, 0xff, 0x3f, 0xff, + 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x21, 0xfe, 0x3f, 0xff, + 0xff, 0xff, 0x00, 0x70, 0x00, 0x00, 0x21, 0xfc, 0x3f, 0xff, + 0xff, 0xfe, 0x00, 0x3c, 0x00, 0x00, 0x20, 0xf8, 0x3f, 0xff, + 0xff, 0xf0, 0x00, 0x3e, 0x00, 0x00, 0x20, 0x00, 0x3f, 0xff, + 0xff, 0xc0, 0x00, 0x1f, 0x00, 0x00, 0x20, 0x00, 0x3f, 0xff, + 0xff, 0xc0, 0x00, 0x1f, 0x80, 0x00, 0x20, 0x00, 0x1f, 0xff, + 0xff, 0xc0, 0x00, 0x0f, 0x80, 0x00, 0x20, 0x00, 0x07, 0xff, + 0xff, 0xc0, 0x00, 0x07, 0x80, 0x00, 0x20, 0x00, 0x03, 0xff, + 0xff, 0xc0, 0x00, 0x07, 0x80, 0x00, 0x60, 0x00, 0x01, 0xff, + 0xff, 0xc0, 0x00, 0x02, 0x00, 0x00, 0xe0, 0x00, 0x01, 0xff, + 0xff, 0xc0, 0x00, 0x01, 0x00, 0x01, 0xe0, 0x00, 0x01, 0xff, + 0xff, 0xc0, 0x00, 0x00, 0x80, 0x07, 0xe0, 0x00, 0x03, 0xff, + 0xff, 0xc0, 0x00, 0x00, 0x80, 0x3f, 0xe0, 0x00, 0x0f, 0xff, + 0xff, 0xc0, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x1f, 0xff, + 0xff, 0xc0, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x7f, 0xff, + 0xff, 0xe0, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0xff, 0xff, + 0xff, 0xfc, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x03, 0xff, 0xff, + 0xff, 0xff, 0xc0, 0x00, 0x70, 0x00, 0xc0, 0x07, 0xff, 0xff, + 0xff, 0xff, 0xfc, 0x00, 0x8f, 0xff, 0x20, 0x0f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xe0, 0x1f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + +#endif /* !__HAVE_ARCH_LINUX_LOGOBW */ + +#ifndef __HAVE_ARCH_LINUX_LOGO16 + +unsigned char linux_logo16[] __initdata = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x88, 0x80, 0x00, 0x00, 0x08, 0x88, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x80, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x08, 0x70, 0x00, 0x00, 0x00, 0x77, 0x70, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x87, 0x77, 0x00, 0x00, 0x07, 0xff, 0xf7, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, + 0x77, 0xff, 0x00, 0x00, 0x7f, 0x77, 0xf7, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, + 0x70, 0x0f, 0x80, 0x00, 0xf7, 0x08, 0x7f, 0x70, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, + 0x80, 0x07, 0x80, 0x00, 0xf8, 0x00, 0x8f, 0x70, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, + 0x70, 0x07, 0x88, 0x88, 0xf8, 0x00, 0x8f, 0x70, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0xf0, 0x06, 0xe6, 0xe6, 0xe6, 0x00, 0x8f, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x77, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x77, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x06, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x60, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, + 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0x60, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, + 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x66, 0x66, 0x80, + 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, + 0x86, 0xe6, 0xe6, 0xe6, 0x66, 0x66, 0x66, 0x80, + 0x08, 0x78, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, + 0x86, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x70, + 0x00, 0x77, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x87, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x78, + 0x00, 0x88, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x87, 0x76, 0x66, 0x66, 0x77, 0x77, 0xff, 0xf7, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, + 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, + 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, + 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, + 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x8f, + 0xff, 0xf7, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x7f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf7, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x87, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x87, 0x77, + 0xff, 0xf7, 0x77, 0xff, 0xff, 0xff, 0x77, 0x77, + 0x77, 0x78, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x77, 0x7f, + 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, + 0x77, 0x78, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf7, 0x77, 0x00, 0x08, 0x80, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x80, 0x08, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x77, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x80, 0x07, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x78, 0x00, 0x08, 0x80, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x08, 0x00, 0x8f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf7, 0x08, 0x80, 0x80, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x08, 0x08, 0x7f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf7, 0x08, 0x80, 0x80, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x08, 0x07, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x80, 0x00, 0x08, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x80, 0x0f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x70, 0x00, 0x08, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x80, 0x8f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x70, 0x00, 0x08, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x08, 0x00, 0x7f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x70, 0x00, 0x08, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x08, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf0, 0x00, 0x08, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x08, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf0, 0x00, 0x08, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x08, 0x08, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf0, 0x00, 0x08, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x08, 0x08, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf0, 0x00, 0x08, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x88, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf0, 0x00, 0x08, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x08, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf0, 0x88, 0x88, 0x80, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x06, 0xe6, 0x00, 0x8f, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x80, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6e, 0x6e, 0x60, 0x08, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xe6, 0xe0, 0x00, 0x00, 0x00, 0x88, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0xe6, 0xe6, 0xe6, 0x00, 0x8f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0x6e, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x6e, 0x6e, 0x6e, 0x60, 0x08, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xf6, 0xe6, 0xe0, 0x00, 0x00, 0x00, 0x06, + 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xe6, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe6, 0xe0, 0x00, 0x8f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0x6e, 0x60, 0x00, 0x00, 0x00, 0x0e, + 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x00, 0x08, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x76, 0xe6, 0xe6, 0x00, 0x00, 0x00, 0xe6, + 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe0, 0x00, 0x8f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf7, 0x7e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, + 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x60, 0x00, 0x08, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf7, 0x76, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0x00, 0x00, + 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf7, 0x7e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x60, 0x00, + 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf7, 0x76, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe6, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe0, 0x00, + 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf7, 0x8e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x88, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x78, 0x86, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xef, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, + 0x80, 0x06, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6e, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, + 0x00, 0x06, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, + 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x80, + 0x00, 0x06, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x66, + 0x67, 0xff, 0xff, 0xff, 0xff, 0x78, 0x80, 0x00, + 0x00, 0x86, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe6, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x86, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, + 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x66, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x86, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x86, 0x6e, 0x6e, 0x6e, 0x6e, 0x66, 0x66, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, + 0x66, 0x66, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x66, + 0x60, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, + 0x00, 0x06, 0x66, 0xe6, 0xe6, 0xe6, 0x66, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x66, 0x66, 0x66, 0x66, 0xe6, 0xe6, 0x66, + 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x88, 0x86, 0x66, 0x6e, 0x6e, 0x66, 0x60, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x66, 0x66, 0x66, 0x66, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x66, 0x66, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x66, 0x66, 0x66, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +#endif /* !__HAVE_ARCH_LINUX_LOGO16 */ + +#else /* !INCLUDE_LINUX_LOGO_DATA */ + +/* prototypes only */ +extern unsigned char linux_logo_red[]; +extern unsigned char linux_logo_green[]; +extern unsigned char linux_logo_blue[]; +extern unsigned char linux_logo[]; +extern unsigned char linux_logo_bw[]; +extern unsigned char linux_logo16[]; -#include +#endif /* !INCLUDE_LINUX_LOGO_DATA */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/pci.h linux/include/asm-parisc/pci.h --- linux-2.4.20/include/asm-parisc/pci.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/pci.h Sun Feb 9 02:24:03 2003 @@ -81,6 +81,11 @@ #define PCI_BUS_ADDR(hba,a) ((a) - hba->lmmio_space_offset) #define PCI_HOST_ADDR(hba,a) ((a) + hba->lmmio_space_offset) +/* The PCI address space equals the physical memory address space. + The networking and block device layers use this boolean for bounce buffer + decisions. */ +#define PCI_DMA_BUS_IS_PHYS 1 + /* ** KLUGE: linux/pci.h include asm/pci.h BEFORE declaring struct pci_bus ** (This eliminates some of the warnings). @@ -273,7 +278,7 @@ int ccio_allocate_resource(const struct parisc_device *dev, struct resource *res, unsigned long size, unsigned long min, unsigned long max, unsigned long align, - void (*alignf)(void *, struct resource *, unsigned long), + void (*alignf)(void *, struct resource *, unsigned long, unsigned long), void *alignf_data); #else /* !CONFIG_IOMMU_CCIO */ #define ccio_get_iommu(dev) NULL diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/pdc.h linux/include/asm-parisc/pdc.h --- linux-2.4.20/include/asm-parisc/pdc.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/pdc.h Sun Feb 9 02:23:07 2003 @@ -476,7 +476,7 @@ #define PDC_TYPE_SYSTEM_MAP 1 /* 32-bit, but supports PDC_SYSTEM_MAP */ #define PDC_TYPE_SNAKE 2 /* Doesn't support SYSTEM_MAP */ -#define is_pdc_pat() (pdc_type == PDC_TYPE_PAT) +#define is_pdc_pat() (pdc_type == PDC_TYPE_PAT) struct pdc_chassis_info { /* for PDC_CHASSIS_INFO */ unsigned long actcnt; /* actual number of bytes returned */ @@ -817,10 +817,13 @@ /* IODC ENTRY_IO() */ #define ENTRY_IO_BOOTIN 0 +#define ENTRY_IO_BOOTOUT 1 #define ENTRY_IO_CIN 2 #define ENTRY_IO_COUT 3 #define ENTRY_IO_CLOSE 4 #define ENTRY_IO_GETMSG 9 +#define ENTRY_IO_BBLOCK_IN 16 +#define ENTRY_IO_BBLOCK_OUT 17 /* IODC ENTRY_SPA() */ @@ -912,6 +915,7 @@ int pdc_add_valid(unsigned long address); int pdc_chassis_info(struct pdc_chassis_info *chassis_info, void *led_info, unsigned long len); +int pdc_chassis_disp(unsigned long disp); int pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info); int pdc_iodc_read(unsigned long *actcnt, unsigned long hpa, unsigned int index, void *iodc_data, unsigned int iodc_data_size); @@ -958,6 +962,8 @@ unsigned long glob_cfg); #ifdef __LP64__ +int pdc_pat_chassis_send_log(unsigned long status, unsigned long data); + int pdc_pat_cell_get_number(struct pdc_pat_cell_num *cell_info); int pdc_pat_cell_module(unsigned long *actcnt, unsigned long ploc, unsigned long mod, unsigned long view_type, void *mem_addr); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/pdc_chassis.h linux/include/asm-parisc/pdc_chassis.h --- linux-2.4.20/include/asm-parisc/pdc_chassis.h Wed Dec 31 17:00:00 1969 +++ linux/include/asm-parisc/pdc_chassis.h Thu Oct 3 09:33:29 2002 @@ -0,0 +1,382 @@ +/* + * include/asm-parisc/pdc_chassis.h + * + * Copyright (C) 2002 Laurent Canet + * Copyright (C) 2002 Thibaut Varene + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * TODO: - handle processor number on SMP systems (Reporting Entity ID) + * - handle message ID + * - handle timestamps + */ + + +#ifndef _PARISC_PDC_CHASSIS_H +#define _PARISC_PDC_CHASSIS_H + +/* + * ---------- + * Prototypes + * ---------- + */ + +int pdc_chassis_send_status(int message); +void __init parisc_pdc_chassis_init(void); + + +/* + * ----------------- + * Direct call names + * ----------------- + * They setup everything for you, the Log message and the corresponding LED state + */ + +#define PDC_CHASSIS_DIRECT_BSTART 0 +#define PDC_CHASSIS_DIRECT_BCOMPLETE 1 +#define PDC_CHASSIS_DIRECT_SHUTDOWN 2 +#define PDC_CHASSIS_DIRECT_PANIC 3 +#define PDC_CHASSIS_DIRECT_HPMC 4 +#define PDC_CHASSIS_DIRECT_LPMC 5 +#define PDC_CHASSIS_DIRECT_DUMP 6 /* not yet implemented */ +#define PDC_CHASSIS_DIRECT_OOPS 7 /* not yet implemented */ + + +/* + * ------------ + * LEDs control + * ------------ + * Set the three LEDs -- Run, Attn, and Fault. + */ + +/* Old PDC LED control */ +#define PDC_CHASSIS_DISP_DATA(v) ((unsigned long)(v) << 17) + +/* + * Available PDC PAT LED states + */ + +#define PDC_CHASSIS_LED_RUN_OFF (0ULL << 4) +#define PDC_CHASSIS_LED_RUN_FLASH (1ULL << 4) +#define PDC_CHASSIS_LED_RUN_ON (2ULL << 4) +#define PDC_CHASSIS_LED_RUN_NC (3ULL << 4) +#define PDC_CHASSIS_LED_ATTN_OFF (0ULL << 6) +#define PDC_CHASSIS_LED_ATTN_FLASH (1ULL << 6) +#define PDC_CHASSIS_LED_ATTN_NC (3ULL << 6) /* ATTN ON is invalid */ +#define PDC_CHASSIS_LED_FAULT_OFF (0ULL << 8) +#define PDC_CHASSIS_LED_FAULT_FLASH (1ULL << 8) +#define PDC_CHASSIS_LED_FAULT_ON (2ULL << 8) +#define PDC_CHASSIS_LED_FAULT_NC (3ULL << 8) +#define PDC_CHASSIS_LED_VALID (1ULL << 10) + +/* + * Valid PDC PAT LED states combinations + */ + +/* System running normally */ +#define PDC_CHASSIS_LSTATE_RUN_NORMAL (PDC_CHASSIS_LED_RUN_ON | \ + PDC_CHASSIS_LED_ATTN_OFF | \ + PDC_CHASSIS_LED_FAULT_OFF | \ + PDC_CHASSIS_LED_VALID ) +/* System crashed and rebooted itself successfully */ +#define PDC_CHASSIS_LSTATE_RUN_CRASHREC (PDC_CHASSIS_LED_RUN_ON | \ + PDC_CHASSIS_LED_ATTN_OFF | \ + PDC_CHASSIS_LED_FAULT_FLASH | \ + PDC_CHASSIS_LED_VALID ) +/* There was a system interruption that did not take the system down */ +#define PDC_CHASSIS_LSTATE_RUN_SYSINT (PDC_CHASSIS_LED_RUN_ON | \ + PDC_CHASSIS_LED_ATTN_FLASH | \ + PDC_CHASSIS_LED_FAULT_OFF | \ + PDC_CHASSIS_LED_VALID ) +/* System running and unexpected reboot or non-critical error detected */ +#define PDC_CHASSIS_LSTATE_RUN_NCRIT (PDC_CHASSIS_LED_RUN_ON | \ + PDC_CHASSIS_LED_ATTN_FLASH | \ + PDC_CHASSIS_LED_FAULT_FLASH | \ + PDC_CHASSIS_LED_VALID ) +/* Executing non-OS code */ +#define PDC_CHASSIS_LSTATE_NONOS (PDC_CHASSIS_LED_RUN_FLASH | \ + PDC_CHASSIS_LED_ATTN_OFF | \ + PDC_CHASSIS_LED_FAULT_OFF | \ + PDC_CHASSIS_LED_VALID ) +/* Boot failed - Executing non-OS code */ +#define PDC_CHASSIS_LSTATE_NONOS_BFAIL (PDC_CHASSIS_LED_RUN_FLASH | \ + PDC_CHASSIS_LED_ATTN_OFF | \ + PDC_CHASSIS_LED_FAULT_ON | \ + PDC_CHASSIS_LED_VALID ) +/* Unexpected reboot occured - Executing non-OS code */ +#define PDC_CHASSIS_LSTATE_NONOS_UNEXP (PDC_CHASSIS_LED_RUN_FLASH | \ + PDC_CHASSIS_LED_ATTN_OFF | \ + PDC_CHASSIS_LED_FAULT_FLASH | \ + PDC_CHASSIS_LED_VALID ) +/* Executing non-OS code - Non-critical error detected */ +#define PDC_CHASSIS_LSTATE_NONOS_NCRIT (PDC_CHASSIS_LED_RUN_FLASH | \ + PDC_CHASSIS_LED_ATTN_FLASH | \ + PDC_CHASSIS_LED_FAULT_OFF | \ + PDC_CHASSIS_LED_VALID ) +/* Boot failed - Executing non-OS code - Non-critical error detected */ +#define PDC_CHASSIS_LSTATE_BFAIL_NCRIT (PDC_CHASSIS_LED_RUN_FLASH | \ + PDC_CHASSIS_LED_ATTN_FLASH | \ + PDC_CHASSIS_LED_FAULT_ON | \ + PDC_CHASSIS_LED_VALID ) +/* Unexpected reboot/recovering - Executing non-OS code - Non-critical error detected */ +#define PDC_CHASSIS_LSTATE_UNEXP_NCRIT (PDC_CHASSIS_LED_RUN_FLASH | \ + PDC_CHASSIS_LED_ATTN_FLASH | \ + PDC_CHASSIS_LED_FAULT_FLASH | \ + PDC_CHASSIS_LED_VALID ) +/* Cannot execute PDC */ +#define PDC_CHASSIS_LSTATE_CANNOT_PDC (PDC_CHASSIS_LED_RUN_OFF | \ + PDC_CHASSIS_LED_ATTN_OFF | \ + PDC_CHASSIS_LED_FAULT_OFF | \ + PDC_CHASSIS_LED_VALID ) +/* Boot failed - OS not up - PDC has detected a failure that prevents boot */ +#define PDC_CHASSIS_LSTATE_FATAL_BFAIL (PDC_CHASSIS_LED_RUN_OFF | \ + PDC_CHASSIS_LED_ATTN_OFF | \ + PDC_CHASSIS_LED_FAULT_ON | \ + PDC_CHASSIS_LED_VALID ) +/* No code running - Non-critical error detected (double fault situation) */ +#define PDC_CHASSIS_LSTATE_NOCODE_NCRIT (PDC_CHASSIS_LED_RUN_OFF | \ + PDC_CHASSIS_LED_ATTN_FLASH | \ + PDC_CHASSIS_LED_FAULT_OFF | \ + PDC_CHASSIS_LED_VALID ) +/* Boot failed - OS not up - Fatal failure detected - Non-critical error detected */ +#define PDC_CHASSIS_LSTATE_FATAL_NCRIT (PDC_CHASSIS_LED_RUN_OFF | \ + PDC_CHASSIS_LED_ATTN_FLASH | \ + PDC_CHASSIS_LED_FAULT_ON | \ + PDC_CHASSIS_LED_VALID ) +/* All other states are invalid */ + + +/* + * -------------- + * PDC Log events + * -------------- + * Here follows bits needed to fill up the log event sent to PDC_CHASSIS + * The log message contains: Alert level, Source, Source detail, + * Source ID, Problem detail, Caller activity, Activity status, + * Caller subactivity, Reporting entity type, Reporting entity ID, + * Data type, Unique message ID and EOM. + */ + +/* Alert level */ +#define PDC_CHASSIS_ALERT_FORWARD (0ULL << 36) /* no failure detected */ +#define PDC_CHASSIS_ALERT_SERPROC (1ULL << 36) /* service proc - no failure */ +#define PDC_CHASSIS_ALERT_NURGENT (2ULL << 36) /* non-urgent operator attn */ +#define PDC_CHASSIS_ALERT_BLOCKED (3ULL << 36) /* system blocked */ +#define PDC_CHASSIS_ALERT_CONF_CHG (4ULL << 36) /* unexpected configuration change */ +#define PDC_CHASSIS_ALERT_ENV_PB (5ULL << 36) /* boot possible, environmental pb */ +#define PDC_CHASSIS_ALERT_PENDING (6ULL << 36) /* boot possible, pending failure */ +#define PDC_CHASSIS_ALERT_PERF_IMP (8ULL << 36) /* boot possible, performance impaired */ +#define PDC_CHASSIS_ALERT_FUNC_IMP (10ULL << 36) /* boot possible, functionality impaired */ +#define PDC_CHASSIS_ALERT_SOFT_FAIL (12ULL << 36) /* software failure */ +#define PDC_CHASSIS_ALERT_HANG (13ULL << 36) /* system hang */ +#define PDC_CHASSIS_ALERT_ENV_FATAL (14ULL << 36) /* fatal power or environmental pb */ +#define PDC_CHASSIS_ALERT_HW_FATAL (15ULL << 36) /* fatal hardware problem */ + +/* Source */ +#define PDC_CHASSIS_SRC_NONE (0ULL << 28) /* unknown, no source stated */ +#define PDC_CHASSIS_SRC_PROC (1ULL << 28) /* processor */ +/* For later use ? */ +#define PDC_CHASSIS_SRC_PROC_CACHE (2ULL << 28) /* processor cache*/ +#define PDC_CHASSIS_SRC_PDH (3ULL << 28) /* processor dependent hardware */ +#define PDC_CHASSIS_SRC_PWR (4ULL << 28) /* power */ +#define PDC_CHASSIS_SRC_FAB (5ULL << 28) /* fabric connector */ +#define PDC_CHASSIS_SRC_PLATi (6ULL << 28) /* platform */ +#define PDC_CHASSIS_SRC_MEM (7ULL << 28) /* memory */ +#define PDC_CHASSIS_SRC_IO (8ULL << 28) /* I/O */ +#define PDC_CHASSIS_SRC_CELL (9ULL << 28) /* cell */ +#define PDC_CHASSIS_SRC_PD (10ULL << 28) /* protected domain */ + +/* Source detail field */ +#define PDC_CHASSIS_SRC_D_PROC (1ULL << 24) /* processor general */ + +/* Source ID - platform dependent */ +#define PDC_CHASSIS_SRC_ID_UNSPEC (0ULL << 16) + +/* Problem detail - problem source dependent */ +#define PDC_CHASSIS_PB_D_PROC_NONE (0ULL << 32) /* no problem detail */ +#define PDC_CHASSIS_PB_D_PROC_TIMEOUT (4ULL << 32) /* timeout */ + +/* Caller activity */ +#define PDC_CHASSIS_CALL_ACT_HPUX_BL (7ULL << 12) /* Boot Loader */ +#define PDC_CHASSIS_CALL_ACT_HPUX_PD (8ULL << 12) /* SAL_PD activities */ +#define PDC_CHASSIS_CALL_ACT_HPUX_EVENT (9ULL << 12) /* SAL_EVENTS activities */ +#define PDC_CHASSIS_CALL_ACT_HPUX_IO (10ULL << 12) /* SAL_IO activities */ +#define PDC_CHASSIS_CALL_ACT_HPUX_PANIC (11ULL << 12) /* System panic */ +#define PDC_CHASSIS_CALL_ACT_HPUX_INIT (12ULL << 12) /* System initialization */ +#define PDC_CHASSIS_CALL_ACT_HPUX_SHUT (13ULL << 12) /* System shutdown */ +#define PDC_CHASSIS_CALL_ACT_HPUX_WARN (14ULL << 12) /* System warning */ +#define PDC_CHASSIS_CALL_ACT_HPUX_DU (15ULL << 12) /* Display_Activity() update */ + +/* Activity status - implementation dependent */ +#define PDC_CHASSIS_ACT_STATUS_UNSPEC (0ULL << 0) + +/* Caller subactivity - implementation dependent */ +/* FIXME: other subactivities ? */ +#define PDC_CHASSIS_CALL_SACT_UNSPEC (0ULL << 4) /* implementation dependent */ + +/* Reporting entity type */ +#define PDC_CHASSIS_RET_GENERICOS (12ULL << 52) /* generic OSes */ +#define PDC_CHASSIS_RET_IA64_NT (13ULL << 52) /* IA-64 NT */ +#define PDC_CHASSIS_RET_HPUX (14ULL << 52) /* HP-UX */ +#define PDC_CHASSIS_RET_DIAG (15ULL << 52) /* offline diagnostics & utilities */ + +/* Reporting entity ID */ +#define PDC_CHASSIS_REID_UNSPEC (0ULL << 44) + +/* Data type */ +#define PDC_CHASSIS_DT_NONE (0ULL << 59) /* data field unused */ +/* For later use ? Do we need these ? */ +#define PDC_CHASSIS_DT_PHYS_ADDR (1ULL << 59) /* physical address */ +#define PDC_CHASSIS_DT_DATA_EXPECT (2ULL << 59) /* expected data */ +#define PDC_CHASSIS_DT_ACTUAL (3ULL << 59) /* actual data */ +#define PDC_CHASSIS_DT_PHYS_LOC (4ULL << 59) /* physical location */ +#define PDC_CHASSIS_DT_PHYS_LOC_EXT (5ULL << 59) /* physical location extension */ +#define PDC_CHASSIS_DT_TAG (6ULL << 59) /* tag */ +#define PDC_CHASSIS_DT_SYNDROME (7ULL << 59) /* syndrome */ +#define PDC_CHASSIS_DT_CODE_ADDR (8ULL << 59) /* code address */ +#define PDC_CHASSIS_DT_ASCII_MSG (9ULL << 59) /* ascii message */ +#define PDC_CHASSIS_DT_POST (10ULL << 59) /* POST code */ +#define PDC_CHASSIS_DT_TIMESTAMP (11ULL << 59) /* timestamp */ +#define PDC_CHASSIS_DT_DEV_STAT (12ULL << 59) /* device status */ +#define PDC_CHASSIS_DT_DEV_TYPE (13ULL << 59) /* device type */ +#define PDC_CHASSIS_DT_PB_DET (14ULL << 59) /* problem detail */ +#define PDC_CHASSIS_DT_ACT_LEV (15ULL << 59) /* activity level/timeout */ +#define PDC_CHASSIS_DT_SER_NUM (16ULL << 59) /* serial number */ +#define PDC_CHASSIS_DT_REV_NUM (17ULL << 59) /* revision number */ +#define PDC_CHASSIS_DT_INTERRUPT (18ULL << 59) /* interruption information */ +#define PDC_CHASSIS_DT_TEST_NUM (19ULL << 59) /* test number */ +#define PDC_CHASSIS_DT_STATE_CHG (20ULL << 59) /* major changes in system state */ +#define PDC_CHASSIS_DT_PROC_DEALLOC (21ULL << 59) /* processor deallocate */ +#define PDC_CHASSIS_DT_RESET (30ULL << 59) /* reset type and cause */ +#define PDC_CHASSIS_DT_PA_LEGACY (31ULL << 59) /* legacy PA hex chassis code */ + +/* System states - part of major changes in system state data field */ +#define PDC_CHASSIS_SYSTATE_BSTART (0ULL << 0) /* boot start */ +#define PDC_CHASSIS_SYSTATE_BCOMP (1ULL << 0) /* boot complete */ +#define PDC_CHASSIS_SYSTATE_CHANGE (2ULL << 0) /* major change */ +#define PDC_CHASSIS_SYSTATE_LED (3ULL << 0) /* LED change */ +#define PDC_CHASSIS_SYSTATE_PANIC (9ULL << 0) /* OS Panic */ +#define PDC_CHASSIS_SYSTATE_DUMP (10ULL << 0) /* memory dump */ +#define PDC_CHASSIS_SYSTATE_HPMC (11ULL << 0) /* processing HPMC */ +#define PDC_CHASSIS_SYSTATE_HALT (15ULL << 0) /* system halted */ + +/* Message ID */ +#define PDC_CHASSIS_MSG_ID (0ULL << 40) /* we do not handle msg IDs atm */ + +/* EOM - separates log entries */ +#define PDC_CHASSIS_EOM_CLEAR (0ULL << 43) +#define PDC_CHASSIS_EOM_SET (1ULL << 43) + +/* + * Preformated well known messages + */ + +/* Boot started */ +#define PDC_CHASSIS_PMSG_BSTART (PDC_CHASSIS_ALERT_SERPROC | \ + PDC_CHASSIS_SRC_PROC | \ + PDC_CHASSIS_SRC_D_PROC | \ + PDC_CHASSIS_SRC_ID_UNSPEC | \ + PDC_CHASSIS_PB_D_PROC_NONE | \ + PDC_CHASSIS_CALL_ACT_HPUX_INIT | \ + PDC_CHASSIS_ACT_STATUS_UNSPEC | \ + PDC_CHASSIS_CALL_SACT_UNSPEC | \ + PDC_CHASSIS_RET_HPUX | \ + PDC_CHASSIS_REID_UNSPEC | \ + PDC_CHASSIS_DT_STATE_CHG | \ + PDC_CHASSIS_SYSTATE_BSTART | \ + PDC_CHASSIS_MSG_ID | \ + PDC_CHASSIS_EOM_SET ) + +/* Boot complete */ +#define PDC_CHASSIS_PMSG_BCOMPLETE (PDC_CHASSIS_ALERT_SERPROC | \ + PDC_CHASSIS_SRC_PROC | \ + PDC_CHASSIS_SRC_D_PROC | \ + PDC_CHASSIS_SRC_ID_UNSPEC | \ + PDC_CHASSIS_PB_D_PROC_NONE | \ + PDC_CHASSIS_CALL_ACT_HPUX_INIT | \ + PDC_CHASSIS_ACT_STATUS_UNSPEC | \ + PDC_CHASSIS_CALL_SACT_UNSPEC | \ + PDC_CHASSIS_RET_HPUX | \ + PDC_CHASSIS_REID_UNSPEC | \ + PDC_CHASSIS_DT_STATE_CHG | \ + PDC_CHASSIS_SYSTATE_BCOMP | \ + PDC_CHASSIS_MSG_ID | \ + PDC_CHASSIS_EOM_SET ) + +/* Shutdown */ +#define PDC_CHASSIS_PMSG_SHUTDOWN (PDC_CHASSIS_ALERT_SERPROC | \ + PDC_CHASSIS_SRC_PROC | \ + PDC_CHASSIS_SRC_D_PROC | \ + PDC_CHASSIS_SRC_ID_UNSPEC | \ + PDC_CHASSIS_PB_D_PROC_NONE | \ + PDC_CHASSIS_CALL_ACT_HPUX_SHUT | \ + PDC_CHASSIS_ACT_STATUS_UNSPEC | \ + PDC_CHASSIS_CALL_SACT_UNSPEC | \ + PDC_CHASSIS_RET_HPUX | \ + PDC_CHASSIS_REID_UNSPEC | \ + PDC_CHASSIS_DT_STATE_CHG | \ + PDC_CHASSIS_SYSTATE_HALT | \ + PDC_CHASSIS_MSG_ID | \ + PDC_CHASSIS_EOM_SET ) + +/* Panic */ +#define PDC_CHASSIS_PMSG_PANIC (PDC_CHASSIS_ALERT_SOFT_FAIL | \ + PDC_CHASSIS_SRC_PROC | \ + PDC_CHASSIS_SRC_D_PROC | \ + PDC_CHASSIS_SRC_ID_UNSPEC | \ + PDC_CHASSIS_PB_D_PROC_NONE | \ + PDC_CHASSIS_CALL_ACT_HPUX_PANIC| \ + PDC_CHASSIS_ACT_STATUS_UNSPEC | \ + PDC_CHASSIS_CALL_SACT_UNSPEC | \ + PDC_CHASSIS_RET_HPUX | \ + PDC_CHASSIS_REID_UNSPEC | \ + PDC_CHASSIS_DT_STATE_CHG | \ + PDC_CHASSIS_SYSTATE_PANIC | \ + PDC_CHASSIS_MSG_ID | \ + PDC_CHASSIS_EOM_SET ) + +// FIXME: extrapolated data +/* HPMC */ +#define PDC_CHASSIS_PMSG_HPMC (PDC_CHASSIS_ALERT_CONF_CHG /*?*/ | \ + PDC_CHASSIS_SRC_PROC | \ + PDC_CHASSIS_SRC_D_PROC | \ + PDC_CHASSIS_SRC_ID_UNSPEC | \ + PDC_CHASSIS_PB_D_PROC_NONE | \ + PDC_CHASSIS_CALL_ACT_HPUX_WARN | \ + PDC_CHASSIS_RET_HPUX | \ + PDC_CHASSIS_DT_STATE_CHG | \ + PDC_CHASSIS_SYSTATE_HPMC | \ + PDC_CHASSIS_MSG_ID | \ + PDC_CHASSIS_EOM_SET ) + +/* LPMC */ +#define PDC_CHASSIS_PMSG_LPMC (PDC_CHASSIS_ALERT_BLOCKED /*?*/| \ + PDC_CHASSIS_SRC_PROC | \ + PDC_CHASSIS_SRC_D_PROC | \ + PDC_CHASSIS_SRC_ID_UNSPEC | \ + PDC_CHASSIS_PB_D_PROC_NONE | \ + PDC_CHASSIS_CALL_ACT_HPUX_WARN | \ + PDC_CHASSIS_ACT_STATUS_UNSPEC | \ + PDC_CHASSIS_CALL_SACT_UNSPEC | \ + PDC_CHASSIS_RET_HPUX | \ + PDC_CHASSIS_REID_UNSPEC | \ + PDC_CHASSIS_DT_STATE_CHG | \ + PDC_CHASSIS_SYSTATE_CHANGE | \ + PDC_CHASSIS_MSG_ID | \ + PDC_CHASSIS_EOM_SET ) + +#endif /* _PARISC_PDC_CHASSIS_H */ +/* vim: set ts=8 */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/pgalloc.h linux/include/asm-parisc/pgalloc.h --- linux-2.4.20/include/asm-parisc/pgalloc.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/pgalloc.h Sun Feb 9 02:23:07 2003 @@ -123,6 +123,9 @@ #define flush_icache_page(vma,page) do { flush_kernel_dcache_page(page_address(page)); flush_kernel_icache_page(page_address(page)); } while (0) +#define flush_icache_user_range(vma, page, addr, len) \ + flush_user_icache_range(addr, addr + len); + #define flush_icache_range(s,e) do { flush_kernel_dcache_range_asm(s,e); flush_kernel_icache_range_asm(s,e); } while (0) /* TLB flushing routines.... */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/pgtable.h linux/include/asm-parisc/pgtable.h --- linux-2.4.20/include/asm-parisc/pgtable.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/pgtable.h Sun Feb 9 02:23:07 2003 @@ -281,6 +281,11 @@ __pte; \ }) +/* + * Change "struct page" to physical address. + */ +#define page_to_phys(page) PAGE_TO_PA(page) + #ifdef CONFIG_DISCONTIGMEM #define PAGE_TO_PA(page) \ ((((page)-(page)->zone->zone_mem_map) << PAGE_SHIFT) \ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/processor.h linux/include/asm-parisc/processor.h --- linux-2.4.20/include/asm-parisc/processor.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/processor.h Sun Feb 9 02:23:07 2003 @@ -9,6 +9,7 @@ #define __ASM_PARISC_PROCESSOR_H #ifndef __ASSEMBLY__ +#include #include #include @@ -17,6 +18,9 @@ #include #include #include +#ifdef CONFIG_SMP +#include +#endif #endif /* __ASSEMBLY__ */ /* @@ -71,7 +75,6 @@ */ struct cpuinfo_parisc { - struct irq_region *region; unsigned long it_value; /* Interval Timer value at last timer Intr */ unsigned long it_delta; /* Interval Timer delta (tic_10ms / HZ * 100) */ unsigned long irq_count; /* number of IRQ's since boot */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/rtc.h linux/include/asm-parisc/rtc.h --- linux-2.4.20/include/asm-parisc/rtc.h Wed Dec 31 17:00:00 1969 +++ linux/include/asm-parisc/rtc.h Sun Jan 12 06:29:00 2003 @@ -0,0 +1,132 @@ +/* include/asm-parisc/rtc.h */ + +#ifndef _ASM_RTC_H +#define _ASM_RTC_H + +#ifdef __KERNEL__ + +#include +#include + +#define RTC_PIE 0x40 /* periodic interrupt enable */ +#define RTC_AIE 0x20 /* alarm interrupt enable */ +#define RTC_UIE 0x10 /* update-finished interrupt enable */ + +#define RTC_BATT_BAD 0x100 /* battery bad */ + +/* some dummy definitions */ +#define RTC_SQWE 0x08 /* enable square-wave output */ +#define RTC_DM_BINARY 0x04 /* all time/date values are BCD if clear */ +#define RTC_24H 0x02 /* 24 hour mode - else hours bit 7 means pm */ +#define RTC_DST_EN 0x01 /* auto switch DST - works f. USA only */ + + +/* constants for calculation */ +#define SECS_PER_HOUR (60 * 60) +#define SECS_PER_DAY (SECS_PER_HOUR * 24) + +#define __isleap(year) \ + ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) + + +/* How many days come before each month (0-12). */ +static const unsigned short int __mon_yday[2][13] = +{ + /* Normal years. */ + { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }, + /* Leap years. */ + { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 } +}; + +static inline unsigned int get_rtc_time(struct rtc_time *wtime) +{ + /* + * Only the values that we read from the RTC are set. We leave + * tm_wday, tm_yday and tm_isdst untouched. Even though the + * RTC has RTC_DAY_OF_WEEK, we ignore it, as it is only updated + * by the RTC when initially set to a non-zero value. + */ + + struct pdc_tod tod_data; + long int days, rem, y; + const unsigned short int *ip; + + if (pdc_tod_read(&tod_data) < 0) + return (RTC_24H | RTC_BATT_BAD); + + + // most of the remainder of this function is: + // Copyright (C) 1991, 1993, 1997, 1998 Free Software Foundation, Inc. + // This was originally a part of the GNU C Library. + // It is distributed under the GPL, and was swiped from offtime.c + + + days = tod_data.tod_sec / SECS_PER_DAY; + rem = tod_data.tod_sec % SECS_PER_DAY; + + wtime->tm_hour = rem / SECS_PER_HOUR; + rem %= SECS_PER_HOUR; + wtime->tm_min = rem / 60; + wtime->tm_sec = rem % 60; + + y = 1970; + +#define DIV(a, b) ((a) / (b) - ((a) % (b) < 0)) +#define LEAPS_THRU_END_OF(y) (DIV (y, 4) - DIV (y, 100) + DIV (y, 400)) + + while (days < 0 || days >= (__isleap (y) ? 366 : 365)) + { + /* Guess a corrected year, assuming 365 days per year. */ + long int yg = y + days / 365 - (days % 365 < 0); + + /* Adjust DAYS and Y to match the guessed year. */ + days -= ((yg - y) * 365 + + LEAPS_THRU_END_OF (yg - 1) + - LEAPS_THRU_END_OF (y - 1)); + y = yg; + } + wtime->tm_year = y - 1900; +#undef DIV +#undef LEAPS_THRU_END_OF + + ip = __mon_yday[__isleap(y)]; + for (y = 11; days < (long int) ip[y]; --y) + continue; + days -= ip[y]; + wtime->tm_mon = y; + wtime->tm_mday = days + 1; + + return (RTC_24H); +} + +static inline int set_rtc_time(struct rtc_time *wtime) +{ + u_int32_t secs; + + secs = mktime(wtime->tm_year + 1900, wtime->tm_mon + 1, wtime->tm_mday, + wtime->tm_hour, wtime->tm_min, wtime->tm_sec); + + if (pdc_tod_set(secs, 0) < 0) + return -EINVAL; + else + return 0; +} + +static inline unsigned int get_rtc_ss(void) +{ + return -EINVAL; +} + +static inline int get_rtc_pll(struct rtc_pll_info *pll) +{ + return -EINVAL; +} +static inline int set_rtc_pll(struct rtc_pll_info *pll) +{ + return -EINVAL; +} + +#endif /* __KERNEL__ */ + +#endif /* _ASM__RTC_H */ + diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/scatterlist.h linux/include/asm-parisc/scatterlist.h --- linux-2.4.20/include/asm-parisc/scatterlist.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/scatterlist.h Sun Feb 9 02:24:03 2003 @@ -23,7 +23,7 @@ }; #define sg_virt_addr(sg) (((sg)->address) ? ((sg)->address) : \ - ((sg)->page->virtual + (sg)->offset)) + (page_address((sg)->page) + (sg)->offset)) #define sg_dma_address(sg) ((sg)->iova) #define sg_dma_len(sg) ((sg)->iova_length) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/spinlock.h linux/include/asm-parisc/spinlock.h --- linux-2.4.20/include/asm-parisc/spinlock.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/spinlock.h Sun Feb 9 02:23:07 2003 @@ -1,35 +1,9 @@ #ifndef __ASM_SPINLOCK_H #define __ASM_SPINLOCK_H -#include - -/* Note that PA-RISC has to use `1' to mean unlocked and `0' to mean locked - * since it only has load-and-zero. - */ - -#undef SPIN_LOCK_UNLOCKED -#define SPIN_LOCK_UNLOCKED (spinlock_t) { 1 } - -#define spin_lock_init(x) do { (x)->lock = 1; } while(0) - -#define spin_is_locked(x) ((x)->lock == 0) - -#define spin_unlock_wait(x) do { barrier(); } while(((volatile spinlock_t *)(x))->lock == 0) - -#if 1 -#define spin_lock(x) do { \ - while (__ldcw (&(x)->lock) == 0) \ - while (((x)->lock) == 0) ; } while (0) - -#else -#define spin_lock(x) \ - do { while(__ldcw(&(x)->lock) == 0); } while(0) -#endif - -#define spin_unlock(x) \ - do { (x)->lock = 1; } while(0) - -#define spin_trylock(x) (__ldcw(&(x)->lock) != 0) +#include /* get spinlock primitives */ +#include /* local_* primitives need PSW_I */ +#include /* get local_* primitives */ /* * Read-write spinlocks, allowing multiple readers diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/spinlock_t.h linux/include/asm-parisc/spinlock_t.h --- linux-2.4.20/include/asm-parisc/spinlock_t.h Wed Dec 31 17:00:00 1969 +++ linux/include/asm-parisc/spinlock_t.h Mon Feb 10 02:19:11 2003 @@ -0,0 +1,95 @@ +#ifndef __PARISC_SPINLOCK_T_H +#define __PARISC_SPINLOCK_T_H + +/* LDCW, the only atomic read-write operation PA-RISC has. *sigh*. + * + * Note that PA-RISC has to use `1' to mean unlocked and `0' to mean locked + * since it only has load-and-zero. + */ +#ifdef CONFIG_PA20 +/* +> From: "Jim Hull" +> Delivery-date: Wed, 29 Jan 2003 13:57:05 -0500 +> I've attached a summary of the change, but basically, for PA 2.0, as +> long as the ",CO" (coherent operation) completer is specified, then the +> 16-byte alignment requirement for ldcw and ldcd is relaxed, and instead +> they only require "natural" alignment (4-byte for ldcw, 8-byte for +> ldcd). +*/ + +#define __ldcw(a) ({ \ + unsigned __ret; \ + __asm__ __volatile__("ldcw,co 0(%1),%0" : "=r" (__ret) : "r" (a)); \ + __ret; \ +}) +#else +#define __ldcw(a) ({ \ + unsigned __ret; \ + __asm__ __volatile__("ldcw 0(%1),%0" : "=r" (__ret) : "r" (a)); \ + __ret; \ +}) +#endif + +/* + * Your basic SMP spinlocks, allowing only a single CPU anywhere + */ + +typedef struct { +#ifdef CONFIG_PA20 + volatile unsigned int lock; +#else + volatile unsigned int __attribute__((aligned(16))) lock; +#endif +#ifdef CONFIG_DEBUG_SPINLOCK + volatile unsigned long owner_pc; + volatile unsigned long owner_cpu; +#endif +} spinlock_t; + +#ifndef CONFIG_DEBUG_SPINLOCK +#define SPIN_LOCK_UNLOCKED (spinlock_t) { 1 } + +/* Define 6 spinlock primitives that don't depend on anything else. */ + +#define spin_lock_init(x) do { (x)->lock = 1; } while(0) +#define spin_is_locked(x) ((x)->lock == 0) +#define spin_trylock(x) (__ldcw(&(x)->lock) != 0) + +/* + * PA2.0 is not strongly ordered. PA1.X is strongly ordered. + * ldcw enforces ordering and we need to make sure ordering is + * enforced on the unlock too. + * "stw,ma" with Zero index is an alias for "stw,o". + * But PA 1.x can assemble the "stw,ma" while it doesn't know about "stw,o". + * And PA 2.0 will generate the right insn using either form. + * Thanks to John David Anglin for this cute trick. + * + * Writing this with asm also ensures that the unlock doesn't + * get reordered + */ +#define spin_unlock(x) \ + __asm__ __volatile__ ("stw,ma %%sp,0(%0)" : : "r" (&(x)->lock) : "memory" ) + +#define spin_unlock_wait(x) do { barrier(); } while(((volatile spinlock_t *)(x))->lock == 0) + +#define spin_lock(x) do { \ + while (__ldcw (&(x)->lock) == 0) \ + while ((x)->lock == 0) ; \ +} while (0) + +#else + +#define SPIN_LOCK_UNLOCKED (spinlock_t) { 1, 0, 0 } + +/* Define 6 spinlock primitives that don't depend on anything else. */ + +#define spin_lock_init(x) do { (x)->lock = 1; (x)->owner_cpu = 0; (x)->owner_pc = 0; } while(0) +#define spin_is_locked(x) ((x)->lock == 0) +void spin_lock(spinlock_t *lock); +int spin_trylock(spinlock_t *lock); +void spin_unlock(spinlock_t *lock); +#define spin_unlock_wait(x) do { barrier(); } while(((volatile spinlock_t *)(x))->lock == 0) + +#endif + +#endif /* __PARISC_SPINLOCK_T_H */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/system.h linux/include/asm-parisc/system.h --- linux-2.4.20/include/asm-parisc/system.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/system.h Sun Feb 9 02:23:07 2003 @@ -3,6 +3,11 @@ #include #include +#include + +#ifdef CONFIG_SMP +#include +#endif /* The program status word as bitfields. */ struct pa_psw { @@ -51,22 +56,6 @@ } while(0) - -/* interrupt control */ -#define __save_flags(x) __asm__ __volatile__("ssm 0, %0" : "=r" (x) : : "memory") -#define __restore_flags(x) __asm__ __volatile__("mtsm %0" : : "r" (x) : "memory") -#define __cli() __asm__ __volatile__("rsm %0,%%r0\n" : : "i" (PSW_I) : "memory" ) -#define __sti() __asm__ __volatile__("ssm %0,%%r0\n" : : "i" (PSW_I) : "memory" ) - -#define local_irq_save(x) \ - __asm__ __volatile__("rsm %1,%0" : "=r" (x) :"i" (PSW_I) : "memory" ) -#define local_irq_set(x) \ - __asm__ __volatile__("ssm %1,%0" : "=r" (x) :"i" (PSW_I) : "memory" ) -#define local_irq_restore(x) \ - __asm__ __volatile__("mtsm %0" : : "r" (x) : "memory" ) -#define local_irq_disable() __cli() -#define local_irq_enable() __sti() - #ifdef CONFIG_SMP extern void __global_cli(void); extern void __global_sti(void); @@ -77,7 +66,7 @@ #define sti() __global_sti() #define save_flags(x) ((x)=__global_save_flags()) #define restore_flags(x) __global_restore_flags(x) - + #else #define cli() __cli() @@ -152,24 +141,5 @@ #define smp_wmb() mb() #define set_mb(var, value) do { var = value; mb(); } while (0) - - -/* LDCW, the only atomic read-write operation PA-RISC has. *sigh*. */ -#define __ldcw(a) ({ \ - unsigned __ret; \ - __asm__ __volatile__("ldcw 0(%1),%0" : "=r" (__ret) : "r" (a)); \ - __ret; \ -}) - - -#ifdef CONFIG_SMP -/* - * Your basic SMP spinlocks, allowing only a single CPU anywhere - */ - -typedef struct { - volatile unsigned int __attribute__((aligned(16))) lock; -} spinlock_t; -#endif #endif diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/system_irqsave.h linux/include/asm-parisc/system_irqsave.h --- linux-2.4.20/include/asm-parisc/system_irqsave.h Wed Dec 31 17:00:00 1969 +++ linux/include/asm-parisc/system_irqsave.h Fri Sep 13 15:43:37 2002 @@ -0,0 +1,17 @@ +#ifndef __PARISC_SYSTEM_IRQSAVE_H +#define __PARISC_SYSTEM_IRQSAVE_H + +/* interrupt control */ +#define __save_flags(x) __asm__ __volatile__("ssm 0, %0" : "=r" (x) : : "memory") +#define __restore_flags(x) __asm__ __volatile__("mtsm %0" : : "r" (x) : "memory") +#define __cli() __asm__ __volatile__("rsm %0,%%r0\n" : : "i" (PSW_I) : "memory" ) +#define __sti() __asm__ __volatile__("ssm %0,%%r0\n" : : "i" (PSW_I) : "memory" ) + +#define local_irq_save(x) \ + __asm__ __volatile__("rsm %1,%0" : "=r" (x) :"i" (PSW_I) : "memory" ) +#define local_irq_restore(x) \ + __asm__ __volatile__("mtsm %0" : : "r" (x) : "memory" ) +#define local_irq_disable() __cli() +#define local_irq_enable() __sti() + +#endif /* __PARISC_SYSTEM_IRQSAVE_H */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/uaccess.h linux/include/asm-parisc/uaccess.h --- linux-2.4.20/include/asm-parisc/uaccess.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/uaccess.h Sun Feb 9 02:23:07 2003 @@ -37,8 +37,8 @@ #if BITS_PER_LONG == 32 #define LDD_KERNEL(ptr) BUG() #define LDD_USER(ptr) BUG() -#define STD_KERNEL(x, ptr) BUG() -#define STD_USER(x, ptr) BUG() +#define STD_KERNEL(x, ptr) __put_kernel_asm64(x,ptr) +#define STD_USER(x, ptr) __put_user_asm64(x,ptr) #else #define LDD_KERNEL(ptr) __get_kernel_asm("ldd",ptr) #define LDD_USER(ptr) __get_user_asm("ldd",ptr) @@ -210,6 +210,43 @@ "\t.previous" \ : "=r"(__pu_err) \ : "r"(ptr), "r"(x), "0"(__pu_err)) + +static inline void __put_kernel_asm64(u64 x, void *ptr) +{ + u32 hi = x>>32; + u32 lo = x&0xffffffff; + __asm__ __volatile__ ( + "\n1:\tstw %1,0(%0)\n" + "\n2:\tstw %2,4(%0)\n" + "3:\n" + "\t.section __ex_table,\"a\"\n" + "\t.word\t1b\n" + "\t.word\t(3b-1b)+1\n" + "\t.word\t2b\n" + "\t.word\t(3b-2b)+1\n" + "\t.previous" + : : "r"(ptr), "r"(hi), "r"(lo)); + +} + +static inline void __put_user_asm64(u64 x, void *ptr) +{ + u32 hi = x>>32; + u32 lo = x&0xffffffff; + __asm__ __volatile__ ( + "\n1:\tstw %1,0(%%sr3,%0)\n" + "\n2:\tstw %2,4(%%sr3,%0)\n" + "3:\n" + "\t.section __ex_table,\"a\"\n" + "\t.word\t1b\n" + "\t.word\t(3b-1b)+1\n" + "\t.word\t2b\n" + "\t.word\t(3b-2b)+1\n" + "\t.previous" + : : "r"(ptr), "r"(hi), "r"(lo)); + +} + #endif diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/asm-parisc/unistd.h linux/include/asm-parisc/unistd.h --- linux-2.4.20/include/asm-parisc/unistd.h Thu Nov 28 16:53:15 2002 +++ linux/include/asm-parisc/unistd.h Sun Aug 4 18:13:26 2002 @@ -700,8 +700,9 @@ #define __NR_acl_set (__NR_Linux + 205) #define __NR_gettid (__NR_Linux + 206) #define __NR_readahead (__NR_Linux + 207) +#define __NR_tkill (__NR_Linux + 208) -#define __NR_Linux_syscalls 207 +#define __NR_Linux_syscalls 208 #define HPUX_GATEWAY_ADDR 0xC0000004 #define LINUX_GATEWAY_ADDR 0x100 diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/binfmts.h linux/include/linux/binfmts.h --- linux-2.4.20/include/linux/binfmts.h Thu Nov 22 12:46:19 2001 +++ linux/include/linux/binfmts.h Sun Feb 9 02:23:07 2003 @@ -16,6 +16,8 @@ #ifdef __KERNEL__ +struct file; + /* * This structure is used to hold the arguments that are used when loading binaries. */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/console.h linux/include/linux/console.h --- linux-2.4.20/include/linux/console.h Fri Aug 2 18:39:45 2002 +++ linux/include/linux/console.h Sun Feb 9 02:23:12 2003 @@ -90,6 +90,7 @@ #define CON_PRINTBUFFER (1) #define CON_CONSDEV (2) /* Last on the command line */ #define CON_ENABLED (4) +#define CON_BOOT (8) /* Only used for initial boot */ struct console { diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/fs_struct.h linux/include/linux/fs_struct.h --- linux-2.4.20/include/linux/fs_struct.h Fri Jul 13 16:10:44 2001 +++ linux/include/linux/fs_struct.h Sun Feb 9 02:23:07 2003 @@ -2,6 +2,9 @@ #define _LINUX_FS_STRUCT_H #ifdef __KERNEL__ +#include /* for RW_LOCK_* */ +#include /* for atomic_t */ + struct fs_struct { atomic_t count; rwlock_t lock; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/init.h linux/include/linux/init.h --- linux-2.4.20/include/linux/init.h Fri Dec 21 10:42:03 2001 +++ linux/include/linux/init.h Sun Feb 9 02:23:07 2003 @@ -1,8 +1,6 @@ #ifndef _LINUX_INIT_H #define _LINUX_INIT_H -#include - /* These macros are used to mark some functions or * initialized data (doesn't apply to uninitialized data) * as `initialization' functions. The kernel can take this @@ -75,18 +73,19 @@ * Mark functions and data as being only used at initialization * or exit time. */ -#define __init __attribute__ ((__section__ (".text.init"))) -#define __exit __attribute__ ((unused, __section__(".text.exit"))) -#define __initdata __attribute__ ((__section__ (".data.init"))) -#define __exitdata __attribute__ ((unused, __section__ (".data.exit"))) + +#define __init __attribute__ ((__section__ (".init.text"))) +#define __exit __attribute__ ((unused, __section__(".exit.text"))) +#define __initdata __attribute__ ((__section__ (".init.data"))) +#define __exitdata __attribute__ ((unused, __section__ (".exit.data"))) #define __initsetup __attribute__ ((unused,__section__ (".setup.init"))) #define __init_call __attribute__ ((unused,__section__ (".initcall.init"))) #define __exit_call __attribute__ ((unused,__section__ (".exitcall.exit"))) /* For assembly routines */ -#define __INIT .section ".text.init","ax" +#define __INIT .section ".init.text","ax" #define __FINIT .previous -#define __INITDATA .section ".data.init","aw" +#define __INITDATA .section ".init.data","aw" /** * module_init() - driver initialization entry point @@ -117,7 +116,7 @@ #define __exit #define __initdata #define __exitdata -#define __initcall(fn) +#define __initcall /* For assembly routines */ #define __INIT #define __FINIT diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/ioport.h linux/include/linux/ioport.h --- linux-2.4.20/include/linux/ioport.h Thu Nov 28 16:53:15 2002 +++ linux/include/linux/ioport.h Mon Aug 5 18:12:16 2002 @@ -40,7 +40,6 @@ #define IORESOURCE_CACHEABLE 0x00004000 #define IORESOURCE_RANGELENGTH 0x00008000 #define IORESOURCE_SHADOWABLE 0x00010000 -#define IORESOURCE_BUS_HAS_VGA 0x00080000 #define IORESOURCE_UNSET 0x20000000 #define IORESOURCE_AUTO 0x40000000 diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/kernel_stat.h linux/include/linux/kernel_stat.h --- linux-2.4.20/include/linux/kernel_stat.h Thu Nov 28 16:53:15 2002 +++ linux/include/linux/kernel_stat.h Sun Feb 9 02:23:07 2003 @@ -27,7 +27,7 @@ unsigned int pgpgin, pgpgout; unsigned int pswpin, pswpout; #if defined (__hppa__) - unsigned int irqs[NR_IRQ_REGS][IRQ_PER_REGION]; + unsigned int irqs[NR_CPUS][NR_IRQ_REGS][IRQ_PER_REGION]; #elif !defined(CONFIG_ARCH_S390) unsigned int irqs[NR_CPUS][NR_IRQS]; #endif @@ -44,7 +44,12 @@ */ static inline int kstat_irqs (int irq) { - return kstat.irqs[IRQ_REGION(irq)][IRQ_OFFSET(irq)]; + int i, sum=0; + + for (i = 0 ; i < smp_num_cpus ; i++) + sum += kstat.irqs[i][IRQ_REGION(irq)][IRQ_OFFSET(irq)]; + + return sum; } #elif !defined(CONFIG_ARCH_S390) /* diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/major.h linux/include/linux/major.h --- linux-2.4.20/include/linux/major.h Fri Aug 2 18:39:45 2002 +++ linux/include/linux/major.h Fri Nov 15 05:55:06 2002 @@ -33,6 +33,7 @@ #define MD_MAJOR 9 #define MISC_MAJOR 10 #define SCSI_CDROM_MAJOR 11 +#define MUX_MAJOR 11 /* PA-RISC only */ #define QIC02_TAPE_MAJOR 12 #define XT_DISK_MAJOR 13 #define SOUND_MAJOR 14 @@ -86,6 +87,7 @@ #define IDE5_MAJOR 57 #define LVM_BLK_MAJOR 58 /* Logical Volume Manager */ + #define SCSI_DISK1_MAJOR 65 #define SCSI_DISK2_MAJOR 66 diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/mm.h linux/include/linux/mm.h --- linux-2.4.20/include/linux/mm.h Fri Aug 2 18:39:45 2002 +++ linux/include/linux/mm.h Sun Feb 9 02:23:07 2003 @@ -104,7 +104,11 @@ #define VM_DONTEXPAND 0x00040000 /* Cannot expand with mremap() */ #define VM_RESERVED 0x00080000 /* Don't unmap it from swap_out */ +#ifdef ARCH_STACK_GROWSUP +#define VM_STACK_FLAGS 0x00000277 +#else #define VM_STACK_FLAGS 0x00000177 +#endif #define VM_READHINTMASK (VM_SEQ_READ | VM_RAND_READ) #define VM_ClearReadHint(v) (v)->vm_flags &= ~VM_READHINTMASK @@ -626,10 +630,36 @@ /* vma is the first one with address < vma->vm_end, * and even address < vma->vm_start. Have to extend vma. */ +#ifdef ARCH_STACK_GROWSUP +static inline int expand_stack(struct vm_area_struct * vma, unsigned long address) +{ + unsigned long grow; + + if (!(vma->vm_flags & VM_GROWSUP)) + return -EFAULT; + address += 4 + PAGE_SIZE - 1; + address &= PAGE_MASK; + spin_lock(&vma->vm_mm->page_table_lock); + grow = (address - vma->vm_end) >> PAGE_SHIFT; + if (address - vma->vm_start > current->rlim[RLIMIT_STACK].rlim_cur || + ((vma->vm_mm->total_vm + grow) << PAGE_SHIFT) > current->rlim[RLIMIT_AS].rlim_cur) { + spin_unlock(&vma->vm_mm->page_table_lock); + return -ENOMEM; + } + vma->vm_end = address; + vma->vm_mm->total_vm += grow; + if (vma->vm_flags & VM_LOCKED) + vma->vm_mm->locked_vm += grow; + spin_unlock(&vma->vm_mm->page_table_lock); + return 0; +} +#else static inline int expand_stack(struct vm_area_struct * vma, unsigned long address) { unsigned long grow; + if (!(vma->vm_flags & VM_GROWSDOWN)) + return -EFAULT; /* * vma->vm_start/vm_end cannot change under us because the caller is required * to hold the mmap_sem in write mode. We need to get the spinlock only @@ -651,6 +681,7 @@ spin_unlock(&vma->vm_mm->page_table_lock); return 0; } +#endif /* Look up the first VMA which satisfies addr < vm_end, NULL if none. */ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/pci.h linux/include/linux/pci.h --- linux-2.4.20/include/linux/pci.h Thu Nov 28 16:53:15 2002 +++ linux/include/linux/pci.h Sun Feb 9 02:24:03 2003 @@ -432,6 +432,8 @@ unsigned char productver; /* product version */ unsigned char checksum; /* if zero - checksum passed */ unsigned char pad1; + unsigned short bridge_ctl; /* manage NO_ISA/FBB/et al behaviors */ + unsigned short pad2; }; #define pci_bus_b(n) list_entry(n, struct pci_bus, node) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/rtc.h linux/include/linux/rtc.h --- linux-2.4.20/include/linux/rtc.h Mon Jan 29 09:11:24 2001 +++ linux/include/linux/rtc.h Sun Jan 12 06:08:13 2003 @@ -39,10 +39,32 @@ struct rtc_time time; /* time the alarm is set to */ }; +/* + * Data structure to control PLL correction some better RTC feature + * pll_value is used to get or set current value of correction, + * the rest of the struct is used to query HW capabilities. + * This is modeled after the RTC used in Q40/Q60 computers but + * should be sufficiently flexible for other devices + * + * +ve pll_value means clock will run faster by + * pll_value*pll_posmult/pll_clock + * -ve pll_value means clock will run slower by + * pll_value*pll_negmult/pll_clock + */ + +struct rtc_pll_info { + int pll_ctrl; /* placeholder for fancier control */ + int pll_value; /* get/set correction value */ + int pll_max; /* max +ve (faster) adjustment value */ + int pll_min; /* max -ve (slower) adjustment value */ + int pll_posmult; /* factor for +ve corection */ + int pll_negmult; /* factor for -ve corection */ + long pll_clock; /* base PLL frequency */ +}; /* - * ioctl calls that are permitted to the /dev/rtc interface, if - * CONFIG_RTC/CONFIG_EFI_RTC was enabled. + * ioctl calls that are permitted to the /dev/rtc interface, if + * any of the RTC drivers are enabled. */ #define RTC_AIE_ON _IO('p', 0x01) /* Alarm int. enable on */ @@ -66,4 +88,6 @@ #define RTC_WKALM_SET _IOW('p', 0x0f, struct rtc_wkalrm)/* Set wakeup alarm*/ #define RTC_WKALM_RD _IOR('p', 0x10, struct rtc_wkalrm)/* Get wakeup alarm*/ +#define RTC_PLL_GET _IOR('p', 0x11, struct rtc_pll_info) /* Get PLL correction */ +#define RTC_PLL_SET _IOW('p', 0x12, struct rtc_pll_info) /* Set PLL correction */ #endif /* _LINUX_RTC_H_ */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/sched.h linux/include/linux/sched.h --- linux-2.4.20/include/linux/sched.h Thu Nov 28 16:53:15 2002 +++ linux/include/linux/sched.h Sun Feb 9 02:23:07 2003 @@ -582,7 +582,7 @@ extern unsigned long volatile jiffies; extern unsigned long itimer_ticks; extern unsigned long itimer_next; -extern struct timeval xtime; +extern volatile struct timeval xtime __attribute__ ((aligned (16))); extern void do_timer(struct pt_regs *); extern unsigned int * prof_buffer; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/smp.h linux/include/linux/smp.h --- linux-2.4.20/include/linux/smp.h Thu Nov 22 12:46:19 2001 +++ linux/include/linux/smp.h Sun Feb 9 02:23:07 2003 @@ -35,11 +35,6 @@ extern void smp_boot_cpus(void); /* - * Processor call in. Must hold processors until .. - */ -extern void smp_callin(void); - -/* * Multiprocessors may now schedule */ extern void smp_commence(void); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/sysctl.h linux/include/linux/sysctl.h --- linux-2.4.20/include/linux/sysctl.h Thu Nov 28 16:53:15 2002 +++ linux/include/linux/sysctl.h Sun Feb 9 02:23:10 2003 @@ -124,6 +124,8 @@ KERN_CORE_USES_PID=52, /* int: use core or core.%pid */ KERN_TAINTED=53, /* int: various kernel tainted flags */ KERN_CADPID=54, /* int: PID of the process to notify on CAD */ + KERN_HPPA_PWRSW=55, /* int: hppa soft-power enable */ + KERN_HPPA_UNALIGNED=56, /* int: hppa unaligned-trap enable */ }; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/tcp_diag.h linux/include/linux/tcp_diag.h --- linux-2.4.20/include/linux/tcp_diag.h Fri Dec 21 10:42:04 2001 +++ linux/include/linux/tcp_diag.h Thu Jan 3 15:37:35 2002 @@ -12,6 +12,9 @@ __u32 tcpdiag_src[4]; __u32 tcpdiag_dst[4]; __u32 tcpdiag_if; +#if defined (__hppa__) && defined (__LP64__) + char * parisc_hack_to_align_tcpdiag_cookie; +#endif __u32 tcpdiag_cookie[2]; #define TCPDIAG_NOCOOKIE (~0U) }; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/include/linux/tty.h linux/include/linux/tty.h --- linux-2.4.20/include/linux/tty.h Thu Nov 28 16:53:15 2002 +++ linux/include/linux/tty.h Sun Feb 9 02:23:07 2003 @@ -23,6 +23,8 @@ #include #include #include +#include +#include #include diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/init/main.c linux/init/main.c --- linux-2.4.20/init/main.c Fri Aug 2 18:39:46 2002 +++ linux/init/main.c Sun Aug 4 18:13:47 2002 @@ -79,7 +79,7 @@ #error Sorry, your GCC is too old. It builds incorrect kernels. #endif -extern char _stext, _etext; +extern char const _stext, _etext; extern char *linux_banner; static int init(void *); @@ -107,6 +107,10 @@ extern void ipc_init(void); #endif +#ifdef CONFIG_PARISC +extern void parisc_init(void); +#endif + /* * Boot command-line arguments */ @@ -419,6 +423,9 @@ signals_init(); #ifdef CONFIG_PROC_FS proc_root_init(); +#endif +#ifdef CONFIG_PARISC + parisc_init(); #endif #if defined(CONFIG_SYSVIPC) ipc_init(); diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/kernel/exit.c linux/kernel/exit.c --- linux-2.4.20/kernel/exit.c Thu Nov 28 16:53:15 2002 +++ linux/kernel/exit.c Thu Nov 14 05:56:25 2002 @@ -177,6 +177,9 @@ read_unlock(&tasklist_lock); } +/* Our only caller guarantees that files->count is zero and will not be + * incremented, so there is no danger of races. + */ static inline void close_files(struct files_struct * files) { int i, j; @@ -190,9 +193,11 @@ set = files->open_fds->fds_bits[j++]; while (set) { if (set & 1) { - struct file * file = xchg(&files->fd[i], NULL); - if (file) + struct file *file = files->fd[i]; + if (file) { + files->fd[i] = NULL; filp_close(file, files); + } } i++; set >>= 1; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/kernel/module.c linux/kernel/module.c --- linux-2.4.20/kernel/module.c Sun Nov 11 12:23:14 2001 +++ linux/kernel/module.c Wed May 29 18:13:54 2002 @@ -505,6 +505,7 @@ to make the I and D caches consistent. */ flush_icache_range((unsigned long)mod, (unsigned long)mod + mod->size); + /* Update module references. */ mod->next = mod_tmp.next; mod->refs = NULL; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/kernel/printk.c linux/kernel/printk.c --- linux-2.4.20/kernel/printk.c Fri Aug 2 18:39:46 2002 +++ linux/kernel/printk.c Sun Aug 4 18:13:47 2002 @@ -86,8 +86,8 @@ * must be masked before subscripting */ static unsigned long log_start; /* Index into log_buf: next char to be read by syslog() */ -static unsigned long con_start; /* Index into log_buf: next char to be sent to consoles */ -static unsigned long log_end; /* Index into log_buf: most-recently-written-char + 1 */ +unsigned long con_start; /* Index into log_buf: next char to be sent to consoles */ +unsigned long log_end; /* Index into log_buf: most-recently-written-char + 1 */ static unsigned long logged_chars; /* Number of chars produced since last read+clear operation */ struct console_cmdline console_cmdline[MAX_CMDLINECONSOLES]; @@ -614,6 +614,11 @@ if (!(console->flags & CON_ENABLED)) return; + + if (console_drivers && (console_drivers->flags & CON_BOOT)) { + unregister_console(console_drivers); + console->flags &= ~CON_PRINTBUFFER; + } /* * Put this console in the list - keep the @@ -663,7 +668,7 @@ * one that gets registered. Without that, pmac early boot console * would prevent fbcon from taking over. */ - if (console_drivers == NULL) + if (console_drivers == NULL && !console_cmdline[0].name[0]) preferred_console = -1; diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/kernel/signal.c linux/kernel/signal.c --- linux-2.4.20/kernel/signal.c Thu Nov 28 16:53:15 2002 +++ linux/kernel/signal.c Fri Nov 29 05:54:57 2002 @@ -1037,6 +1037,16 @@ if (copy_from_user(&info, uinfo, sizeof(siginfo_t))) return -EFAULT; +#if 0 +printk("sys_rt_sigqueueinfo(): offset of _sifields = %ld sizeof %d\n", + (unsigned long)&info._sifields - (unsigned long)&info, sizeof info); + +#warning !!! FIXME pid is incorrect on 64 bit, seems fine on 32 +printk("sys_rt_sigqueueinfo(): signo %d errno %d code %d pid %d uid %d sigval %d\n", + info.si_signo, info.si_errno, info.si_code, + info.si_pid, info.si_uid, info.si_value); +#endif + /* Not even root can pretend to send signals from the kernel. Nor can they impersonate a kill(), which adds source info. */ if (info.si_code >= 0) diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/kernel/sys.c linux/kernel/sys.c --- linux-2.4.20/kernel/sys.c Fri Aug 2 18:39:46 2002 +++ linux/kernel/sys.c Sun Aug 4 18:13:47 2002 @@ -1129,6 +1129,17 @@ if (new_rlim.rlim_cur > NR_OPEN || new_rlim.rlim_max > NR_OPEN) return -EPERM; } +#ifdef __hppa__ + /* Code makes assumptions about RLIMIT_STACK being page aligned + * in various places (e.g. setup_arg_pages()). + */ + if (resource == RLIMIT_STACK) { + if (new_rlim.rlim_max > 1024 * 1024 * 1024) { + new_rlim.rlim_max = 1024 * 1024 * 1024; + } + new_rlim.rlim_max = PAGE_ALIGN(new_rlim.rlim_max); + } +#endif *old_rlim = new_rlim; return 0; } diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/kernel/sysctl.c linux/kernel/sysctl.c --- linux-2.4.20/kernel/sysctl.c Fri Aug 2 18:39:46 2002 +++ linux/kernel/sysctl.c Tue Sep 24 16:54:24 2002 @@ -79,6 +79,11 @@ extern int stop_a_enabled; #endif +#ifdef __hppa__ +extern int pwrsw_enabled; +extern int unaligned_enabled; +#endif + #ifdef CONFIG_ARCH_S390 #ifdef CONFIG_MATHEMU extern int sysctl_ieee_emulation_warnings; @@ -183,6 +188,12 @@ {KERN_SPARC_REBOOT, "reboot-cmd", reboot_command, 256, 0644, NULL, &proc_dostring, &sysctl_string }, {KERN_SPARC_STOP_A, "stop-a", &stop_a_enabled, sizeof (int), + 0644, NULL, &proc_dointvec}, +#endif +#ifdef __hppa__ + {KERN_HPPA_PWRSW, "soft-power", &pwrsw_enabled, sizeof (int), + 0644, NULL, &proc_dointvec}, + {KERN_HPPA_UNALIGNED, "unaligned-trap", &unaligned_enabled, sizeof (int), 0644, NULL, &proc_dointvec}, #endif #ifdef CONFIG_PPC32 diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/kernel/timer.c linux/kernel/timer.c --- linux-2.4.20/kernel/timer.c Thu Nov 28 16:53:15 2002 +++ linux/kernel/timer.c Thu Nov 14 05:56:25 2002 @@ -32,7 +32,7 @@ long tick = (1000000 + HZ/2) / HZ; /* timer interrupt period */ /* The current time */ -struct timeval xtime __attribute__ ((aligned (16))); +volatile struct timeval xtime __attribute__ ((aligned (16))); /* Don't completely fail for HZ > 500. */ int tickadj = 500/HZ ? : 1; /* microsecs */ diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/mm/mmap.c linux/mm/mmap.c --- linux-2.4.20/mm/mmap.c Thu Nov 28 16:53:15 2002 +++ linux/mm/mmap.c Thu Nov 14 05:56:25 2002 @@ -395,6 +395,7 @@ { struct mm_struct * mm = current->mm; struct vm_area_struct * vma, * prev; + struct inode *inode = NULL; unsigned int vm_flags; int correct_wcount = 0; int error; @@ -439,17 +440,18 @@ } if (file) { + inode = file->f_dentry->d_inode; switch (flags & MAP_TYPE) { case MAP_SHARED: if ((prot & PROT_WRITE) && !(file->f_mode & FMODE_WRITE)) return -EACCES; /* Make sure we don't allow writing to an append-only file.. */ - if (IS_APPEND(file->f_dentry->d_inode) && (file->f_mode & FMODE_WRITE)) + if (IS_APPEND(inode) && (file->f_mode & FMODE_WRITE)) return -EACCES; /* make sure there are no mandatory locks on the file. */ - if (locks_verify_locked(file->f_dentry->d_inode)) + if (locks_verify_locked(inode)) return -EAGAIN; vm_flags |= VM_SHARED | VM_MAYSHARE; @@ -575,7 +577,7 @@ vma_link(mm, vma, prev, rb_link, rb_parent); if (correct_wcount) - atomic_inc(&file->f_dentry->d_inode->i_writecount); + atomic_inc(&inode->i_writecount); out: mm->total_vm += len >> PAGE_SHIFT; @@ -587,7 +589,7 @@ unmap_and_free_vma: if (correct_wcount) - atomic_inc(&file->f_dentry->d_inode->i_writecount); + atomic_inc(&inode->i_writecount); vma->vm_file = NULL; fput(file); @@ -694,49 +696,53 @@ struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr, struct vm_area_struct **pprev) { - if (mm) { - /* Go through the RB tree quickly. */ - struct vm_area_struct * vma; - rb_node_t * rb_node, * rb_last_right, * rb_prev; - - rb_node = mm->mm_rb.rb_node; - rb_last_right = rb_prev = NULL; - vma = NULL; - - while (rb_node) { - struct vm_area_struct * vma_tmp; - - vma_tmp = rb_entry(rb_node, struct vm_area_struct, vm_rb); - - if (vma_tmp->vm_end > addr) { - vma = vma_tmp; - rb_prev = rb_last_right; - if (vma_tmp->vm_start <= addr) - break; - rb_node = rb_node->rb_left; - } else { - rb_last_right = rb_node; - rb_node = rb_node->rb_right; - } - } - if (vma) { - if (vma->vm_rb.rb_left) { - rb_prev = vma->vm_rb.rb_left; - while (rb_prev->rb_right) - rb_prev = rb_prev->rb_right; - } - *pprev = NULL; - if (rb_prev) - *pprev = rb_entry(rb_prev, struct vm_area_struct, vm_rb); - if ((rb_prev ? (*pprev)->vm_next : mm->mmap) != vma) - BUG(); - return vma; + struct vm_area_struct *vma = NULL, *prev = NULL; + rb_node_t * rb_node; + if (!mm) + goto out; + + /* Guard against addr being lower than the first VMA */ + vma = mm->mmap; + + /* Go through the RB tree quickly. */ + rb_node = mm->mm_rb.rb_node; + + while (rb_node) { + struct vm_area_struct *vma_tmp; + vma_tmp = rb_entry(rb_node, struct vm_area_struct, vm_rb); + + if (addr < vma_tmp->vm_end) { + rb_node = rb_node->rb_left; + } else { + prev = vma_tmp; + if (!prev->vm_next || (addr < prev->vm_next->vm_end)) + break; + rb_node = rb_node->rb_right; } } - *pprev = NULL; - return NULL; + + out: + *pprev = prev; + return prev ? prev->vm_next : vma; } +#ifdef ARCH_STACK_GROWSUP +struct vm_area_struct * find_extend_vma(struct mm_struct * mm, unsigned long addr) +{ + struct vm_area_struct *vma, *prev; + + addr &= PAGE_MASK; + vma = find_vma_prev(mm, addr, &prev); + if (vma && (vma->vm_start <= addr)) + return vma; + if (!prev || expand_stack(prev, addr)) + return NULL; + if (prev->vm_flags & VM_LOCKED) { + make_pages_present(addr, prev->vm_end); + } + return prev; +} +#else struct vm_area_struct * find_extend_vma(struct mm_struct * mm, unsigned long addr) { struct vm_area_struct * vma; @@ -746,11 +752,9 @@ vma = find_vma(mm,addr); if (!vma) return NULL; - if (vma->vm_start <= addr) - return vma; - if (!(vma->vm_flags & VM_GROWSDOWN)) - return NULL; start = vma->vm_start; + if (start <= addr) + return vma; if (expand_stack(vma, addr)) return NULL; if (vma->vm_flags & VM_LOCKED) { @@ -758,6 +762,7 @@ } return vma; } +#endif /* Normal function to fix up a mapping * This function is the default for when an area has no specific diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/mm/vmscan.c linux/mm/vmscan.c --- linux-2.4.20/mm/vmscan.c Thu Nov 28 16:53:15 2002 +++ linux/mm/vmscan.c Thu Nov 14 05:56:26 2002 @@ -84,6 +84,7 @@ * any IO - it's already up-to-date on disk. */ if (PageSwapCache(page)) { + flush_cache_page(vma, address); entry.val = page->index; swap_duplicate(entry); set_swap_pte: diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/net/ipv4/ip_fragment.c linux/net/ipv4/ip_fragment.c --- linux-2.4.20/net/ipv4/ip_fragment.c Mon Feb 25 12:38:14 2002 +++ linux/net/ipv4/ip_fragment.c Mon Feb 25 18:12:41 2002 @@ -138,7 +138,7 @@ static __inline__ void frag_free_queue(struct ipq *qp) { - atomic_sub(sizeof(struct ipq), &ip_frag_mem); + atomic_sub((int)sizeof(struct ipq), &ip_frag_mem); kfree(qp); } diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/net/ipv4/ip_input.c linux/net/ipv4/ip_input.c --- linux-2.4.20/net/ipv4/ip_input.c Fri Aug 2 18:39:46 2002 +++ linux/net/ipv4/ip_input.c Sun Aug 4 18:13:50 2002 @@ -115,7 +115,6 @@ * 2 of the License, or (at your option) any later version. */ -#include #include #include #include diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/net/ipv4/proc.c linux/net/ipv4/proc.c --- linux-2.4.20/net/ipv4/proc.c Thu Nov 28 16:53:15 2002 +++ linux/net/ipv4/proc.c Thu Nov 14 05:56:28 2002 @@ -32,7 +32,6 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ -#include #include #include #include diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/net/ipv4/udp.c linux/net/ipv4/udp.c --- linux-2.4.20/net/ipv4/udp.c Fri Aug 2 18:39:46 2002 +++ linux/net/ipv4/udp.c Sun Aug 4 18:13:50 2002 @@ -69,9 +69,6 @@ * 2 of the License, or (at your option) any later version. */ -#include -#include -#include #include #include #include @@ -83,6 +80,8 @@ #include #include #include +#include +#include #include #include #include diff -urN --exclude-from build-tools/dontdiff linux-2.4.20/net/sunrpc/clnt.c linux/net/sunrpc/clnt.c --- linux-2.4.20/net/sunrpc/clnt.c Thu Nov 28 16:53:16 2002 +++ linux/net/sunrpc/clnt.c Thu Nov 14 05:56:35 2002 @@ -21,8 +21,6 @@ * Copyright (C) 1995,1996 Olaf Kirch */ -#include - #include #include #include