diff options
162 files changed, 13625 insertions, 2256 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 4ed41394e492..1fd6d02a79b8 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -1963,11 +1963,6 @@ M: adaplas@gmail.com | |||
| 1963 | L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only) | 1963 | L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only) |
| 1964 | S: Maintained | 1964 | S: Maintained |
| 1965 | 1965 | ||
| 1966 | INTEL APIC/IOAPIC, LOWLEVEL X86 SMP SUPPORT | ||
| 1967 | P: Ingo Molnar | ||
| 1968 | M: mingo@redhat.com | ||
| 1969 | S: Maintained | ||
| 1970 | |||
| 1971 | INTEL I8XX RANDOM NUMBER GENERATOR SUPPORT | 1966 | INTEL I8XX RANDOM NUMBER GENERATOR SUPPORT |
| 1972 | P: Jeff Garzik | 1967 | P: Jeff Garzik |
| 1973 | M: jgarzik@pobox.com | 1968 | M: jgarzik@pobox.com |
| @@ -4269,9 +4264,15 @@ M: jacmet@sunsite.dk | |||
| 4269 | L: linux-serial@vger.kernel.org | 4264 | L: linux-serial@vger.kernel.org |
| 4270 | S: Maintained | 4265 | S: Maintained |
| 4271 | 4266 | ||
| 4272 | X86 3-LEVEL PAGING (PAE) SUPPORT | 4267 | X86 ARCHITECTURE (32-BIT AND 64-BIT) |
| 4268 | P: Thomas Gleixner | ||
| 4269 | M: tglx@linutronix.de | ||
| 4273 | P: Ingo Molnar | 4270 | P: Ingo Molnar |
| 4274 | M: mingo@redhat.com | 4271 | M: mingo@redhat.com |
| 4272 | P: H. Peter Anvin | ||
| 4273 | M: hpa@zytor.com | ||
| 4274 | L: linux-kernel@vger.kernel.org | ||
| 4275 | T: git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git | ||
| 4275 | S: Maintained | 4276 | S: Maintained |
| 4276 | 4277 | ||
| 4277 | YAM DRIVER FOR AX.25 | 4278 | YAM DRIVER FOR AX.25 |
| @@ -1505,7 +1505,7 @@ quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)) | |||
| 1505 | # and we build for the host arch | 1505 | # and we build for the host arch |
| 1506 | quiet_cmd_depmod = DEPMOD $(KERNELRELEASE) | 1506 | quiet_cmd_depmod = DEPMOD $(KERNELRELEASE) |
| 1507 | cmd_depmod = \ | 1507 | cmd_depmod = \ |
| 1508 | if [ -r System.map -a -x $(DEPMOD) -a "$(SUBARCH)" == "$(ARCH)" ]; then \ | 1508 | if [ -r System.map -a -x $(DEPMOD) -a "$(SUBARCH)" = "$(ARCH)" ]; then \ |
| 1509 | $(DEPMOD) -ae -F System.map \ | 1509 | $(DEPMOD) -ae -F System.map \ |
| 1510 | $(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) -r) \ | 1510 | $(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) -r) \ |
| 1511 | $(KERNELRELEASE); \ | 1511 | $(KERNELRELEASE); \ |
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index ad28dc76fc97..7888551ed939 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
| @@ -71,7 +71,7 @@ config GENERIC_CALIBRATE_DELAY | |||
| 71 | 71 | ||
| 72 | config IRQCHIP_DEMUX_GPIO | 72 | config IRQCHIP_DEMUX_GPIO |
| 73 | bool | 73 | bool |
| 74 | depends on (BF53x || BF561 || BF54x) | 74 | depends on (BF52x || BF53x || BF561 || BF54x) |
| 75 | default y | 75 | default y |
| 76 | 76 | ||
| 77 | source "init/Kconfig" | 77 | source "init/Kconfig" |
| @@ -85,6 +85,21 @@ choice | |||
| 85 | prompt "CPU" | 85 | prompt "CPU" |
| 86 | default BF533 | 86 | default BF533 |
| 87 | 87 | ||
| 88 | config BF522 | ||
| 89 | bool "BF522" | ||
| 90 | help | ||
| 91 | BF522 Processor Support. | ||
| 92 | |||
| 93 | config BF525 | ||
| 94 | bool "BF525" | ||
| 95 | help | ||
| 96 | BF525 Processor Support. | ||
| 97 | |||
| 98 | config BF527 | ||
| 99 | bool "BF527" | ||
| 100 | help | ||
| 101 | BF527 Processor Support. | ||
| 102 | |||
| 88 | config BF531 | 103 | config BF531 |
| 89 | bool "BF531" | 104 | bool "BF531" |
| 90 | help | 105 | help |
| @@ -144,13 +159,18 @@ endchoice | |||
| 144 | 159 | ||
| 145 | choice | 160 | choice |
| 146 | prompt "Silicon Rev" | 161 | prompt "Silicon Rev" |
| 162 | default BF_REV_0_1 if BF527 | ||
| 147 | default BF_REV_0_2 if BF537 | 163 | default BF_REV_0_2 if BF537 |
| 148 | default BF_REV_0_3 if BF533 | 164 | default BF_REV_0_3 if BF533 |
| 149 | default BF_REV_0_0 if BF549 | 165 | default BF_REV_0_0 if BF549 |
| 150 | 166 | ||
| 151 | config BF_REV_0_0 | 167 | config BF_REV_0_0 |
| 152 | bool "0.0" | 168 | bool "0.0" |
| 153 | depends on (BF549) | 169 | depends on (BF549 || BF527) |
| 170 | |||
| 171 | config BF_REV_0_1 | ||
| 172 | bool "0.2" | ||
| 173 | depends on (BF549 || BF527) | ||
| 154 | 174 | ||
| 155 | config BF_REV_0_2 | 175 | config BF_REV_0_2 |
| 156 | bool "0.2" | 176 | bool "0.2" |
| @@ -176,6 +196,11 @@ config BF_REV_NONE | |||
| 176 | 196 | ||
| 177 | endchoice | 197 | endchoice |
| 178 | 198 | ||
| 199 | config BF52x | ||
| 200 | bool | ||
| 201 | depends on (BF522 || BF525 || BF527) | ||
| 202 | default y | ||
| 203 | |||
| 179 | config BF53x | 204 | config BF53x |
| 180 | bool | 205 | bool |
| 181 | depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537) | 206 | depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537) |
| @@ -204,6 +229,12 @@ choice | |||
| 204 | configuration to ensure that all the other settings are | 229 | configuration to ensure that all the other settings are |
| 205 | correct. | 230 | correct. |
| 206 | 231 | ||
| 232 | config BFIN527_EZKIT | ||
| 233 | bool "BF527-EZKIT" | ||
| 234 | depends on (BF522 || BF525 || BF527) | ||
| 235 | help | ||
| 236 | BF533-EZKIT-LITE board Support. | ||
| 237 | |||
| 207 | config BFIN533_EZKIT | 238 | config BFIN533_EZKIT |
| 208 | bool "BF533-EZKIT" | 239 | bool "BF533-EZKIT" |
| 209 | depends on (BF533 || BF532 || BF531) | 240 | depends on (BF533 || BF532 || BF531) |
| @@ -299,11 +330,17 @@ config MEM_MT48LC8M32B2B5_7 | |||
| 299 | depends on (BFIN561_BLUETECHNIX_CM) | 330 | depends on (BFIN561_BLUETECHNIX_CM) |
| 300 | default y | 331 | default y |
| 301 | 332 | ||
| 333 | config MEM_MT48LC32M16A2TG_75 | ||
| 334 | bool | ||
| 335 | depends on (BFIN527_EZKIT) | ||
| 336 | default y | ||
| 337 | |||
| 302 | config BFIN_SHARED_FLASH_ENET | 338 | config BFIN_SHARED_FLASH_ENET |
| 303 | bool | 339 | bool |
| 304 | depends on (BFIN533_STAMP) | 340 | depends on (BFIN533_STAMP) |
| 305 | default y | 341 | default y |
| 306 | 342 | ||
| 343 | source "arch/blackfin/mach-bf527/Kconfig" | ||
| 307 | source "arch/blackfin/mach-bf533/Kconfig" | 344 | source "arch/blackfin/mach-bf533/Kconfig" |
| 308 | source "arch/blackfin/mach-bf561/Kconfig" | 345 | source "arch/blackfin/mach-bf561/Kconfig" |
| 309 | source "arch/blackfin/mach-bf537/Kconfig" | 346 | source "arch/blackfin/mach-bf537/Kconfig" |
| @@ -329,7 +366,7 @@ config CLKIN_HZ | |||
| 329 | int "Crystal Frequency in Hz" | 366 | int "Crystal Frequency in Hz" |
| 330 | default "11059200" if BFIN533_STAMP | 367 | default "11059200" if BFIN533_STAMP |
| 331 | default "27000000" if BFIN533_EZKIT | 368 | default "27000000" if BFIN533_EZKIT |
| 332 | default "25000000" if BFIN537_STAMP | 369 | default "25000000" if (BFIN537_STAMP || BFIN527_EZKIT) |
| 333 | default "30000000" if BFIN561_EZKIT | 370 | default "30000000" if BFIN561_EZKIT |
| 334 | default "24576000" if PNAV10 | 371 | default "24576000" if PNAV10 |
| 335 | help | 372 | help |
| @@ -362,7 +399,7 @@ config VCO_MULT | |||
| 362 | range 1 64 | 399 | range 1 64 |
| 363 | default "22" if BFIN533_EZKIT | 400 | default "22" if BFIN533_EZKIT |
| 364 | default "45" if BFIN533_STAMP | 401 | default "45" if BFIN533_STAMP |
| 365 | default "20" if BFIN537_STAMP | 402 | default "20" if (BFIN537_STAMP || BFIN527_EZKIT) |
| 366 | default "22" if BFIN533_BLUETECHNIX_CM | 403 | default "22" if BFIN533_BLUETECHNIX_CM |
| 367 | default "20" if BFIN537_BLUETECHNIX_CM | 404 | default "20" if BFIN537_BLUETECHNIX_CM |
| 368 | default "20" if BFIN561_BLUETECHNIX_CM | 405 | default "20" if BFIN561_BLUETECHNIX_CM |
| @@ -398,7 +435,7 @@ config SCLK_DIV | |||
| 398 | range 1 15 | 435 | range 1 15 |
| 399 | default 5 if BFIN533_EZKIT | 436 | default 5 if BFIN533_EZKIT |
| 400 | default 5 if BFIN533_STAMP | 437 | default 5 if BFIN533_STAMP |
| 401 | default 4 if BFIN537_STAMP | 438 | default 4 if (BFIN537_STAMP || BFIN527_EZKIT) |
| 402 | default 5 if BFIN533_BLUETECHNIX_CM | 439 | default 5 if BFIN533_BLUETECHNIX_CM |
| 403 | default 4 if BFIN537_BLUETECHNIX_CM | 440 | default 4 if BFIN537_BLUETECHNIX_CM |
| 404 | default 4 if BFIN561_BLUETECHNIX_CM | 441 | default 4 if BFIN561_BLUETECHNIX_CM |
| @@ -450,6 +487,7 @@ comment "Memory Setup" | |||
| 450 | config MEM_SIZE | 487 | config MEM_SIZE |
| 451 | int "SDRAM Memory Size in MBytes" | 488 | int "SDRAM Memory Size in MBytes" |
| 452 | default 32 if BFIN533_EZKIT | 489 | default 32 if BFIN533_EZKIT |
| 490 | default 64 if BFIN527_EZKIT | ||
| 453 | default 64 if BFIN537_STAMP | 491 | default 64 if BFIN537_STAMP |
| 454 | default 64 if BFIN561_EZKIT | 492 | default 64 if BFIN561_EZKIT |
| 455 | default 128 if BFIN533_STAMP | 493 | default 128 if BFIN533_STAMP |
| @@ -459,6 +497,7 @@ config MEM_ADD_WIDTH | |||
| 459 | int "SDRAM Memory Address Width" | 497 | int "SDRAM Memory Address Width" |
| 460 | default 9 if BFIN533_EZKIT | 498 | default 9 if BFIN533_EZKIT |
| 461 | default 9 if BFIN561_EZKIT | 499 | default 9 if BFIN561_EZKIT |
| 500 | default 10 if BFIN527_EZKIT | ||
| 462 | default 10 if BFIN537_STAMP | 501 | default 10 if BFIN537_STAMP |
| 463 | default 11 if BFIN533_STAMP | 502 | default 11 if BFIN533_STAMP |
| 464 | default 10 if PNAV10 | 503 | default 10 if PNAV10 |
| @@ -749,9 +788,19 @@ config LARGE_ALLOCS | |||
| 749 | a lot of RAM, and you need to able to allocate very large | 788 | a lot of RAM, and you need to able to allocate very large |
| 750 | contiguous chunks. If unsure, say N. | 789 | contiguous chunks. If unsure, say N. |
| 751 | 790 | ||
| 791 | config BFIN_GPTIMERS | ||
| 792 | tristate "Enable Blackfin General Purpose Timers API" | ||
| 793 | default n | ||
| 794 | help | ||
| 795 | Enable support for the General Purpose Timers API. If you | ||
| 796 | are unsure, say N. | ||
| 797 | |||
| 798 | To compile this driver as a module, choose M here: the module | ||
| 799 | will be called gptimers.ko. | ||
| 800 | |||
| 752 | config BFIN_DMA_5XX | 801 | config BFIN_DMA_5XX |
| 753 | bool "Enable DMA Support" | 802 | bool "Enable DMA Support" |
| 754 | depends on (BF533 || BF532 || BF531 || BF537 || BF536 || BF534 || BF561 || BF54x) | 803 | depends on (BF52x || BF53x || BF561 || BF54x) |
| 755 | default y | 804 | default y |
| 756 | help | 805 | help |
| 757 | DMA driver for BF5xx. | 806 | DMA driver for BF5xx. |
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile index 368933760d28..3c87291bcdab 100644 --- a/arch/blackfin/Makefile +++ b/arch/blackfin/Makefile | |||
| @@ -12,12 +12,17 @@ LDFLAGS_vmlinux := -X | |||
| 12 | OBJCOPYFLAGS := -O binary -R .note -R .comment -S | 12 | OBJCOPYFLAGS := -O binary -R .note -R .comment -S |
| 13 | GZFLAGS := -9 | 13 | GZFLAGS := -9 |
| 14 | 14 | ||
| 15 | CFLAGS += $(call cc-option,-mno-fdpic) | ||
| 16 | AFLAGS += $(call cc-option,-mno-fdpic) | ||
| 15 | CFLAGS_MODULE += -mlong-calls | 17 | CFLAGS_MODULE += -mlong-calls |
| 16 | KALLSYMS += --symbol-prefix=_ | 18 | KALLSYMS += --symbol-prefix=_ |
| 17 | 19 | ||
| 18 | KBUILD_DEFCONFIG := BF537-STAMP_defconfig | 20 | KBUILD_DEFCONFIG := BF537-STAMP_defconfig |
| 19 | 21 | ||
| 20 | # setup the machine name and the machine dependent settings | 22 | # setup the machine name and the machine dependent settings |
| 23 | machine-$(CONFIG_BF522) := bf527 | ||
| 24 | machine-$(CONFIG_BF525) := bf527 | ||
| 25 | machine-$(CONFIG_BF527) := bf527 | ||
| 21 | machine-$(CONFIG_BF531) := bf533 | 26 | machine-$(CONFIG_BF531) := bf533 |
| 22 | machine-$(CONFIG_BF532) := bf533 | 27 | machine-$(CONFIG_BF532) := bf533 |
| 23 | machine-$(CONFIG_BF533) := bf533 | 28 | machine-$(CONFIG_BF533) := bf533 |
| @@ -32,6 +37,9 @@ machine-$(CONFIG_BF561) := bf561 | |||
| 32 | MACHINE := $(machine-y) | 37 | MACHINE := $(machine-y) |
| 33 | export MACHINE | 38 | export MACHINE |
| 34 | 39 | ||
| 40 | cpu-$(CONFIG_BF522) := bf522 | ||
| 41 | cpu-$(CONFIG_BF525) := bf525 | ||
| 42 | cpu-$(CONFIG_BF527) := bf527 | ||
| 35 | cpu-$(CONFIG_BF531) := bf531 | 43 | cpu-$(CONFIG_BF531) := bf531 |
| 36 | cpu-$(CONFIG_BF532) := bf532 | 44 | cpu-$(CONFIG_BF532) := bf532 |
| 37 | cpu-$(CONFIG_BF533) := bf533 | 45 | cpu-$(CONFIG_BF533) := bf533 |
| @@ -97,12 +105,23 @@ archclean: | |||
| 97 | $(Q)$(MAKE) $(clean)=$(boot) | 105 | $(Q)$(MAKE) $(clean)=$(boot) |
| 98 | 106 | ||
| 99 | 107 | ||
| 100 | all: vmImage | ||
| 101 | boot := arch/$(ARCH)/boot | 108 | boot := arch/$(ARCH)/boot |
| 102 | BOOT_TARGETS = vmImage | 109 | BOOT_TARGETS = vmImage |
| 103 | .PHONY: $(BOOT_TARGETS) | 110 | PHONY += $(BOOT_TARGETS) install |
| 111 | KBUILD_IMAGE := $(boot)/vmImage | ||
| 112 | |||
| 113 | all: vmImage | ||
| 114 | |||
| 104 | $(BOOT_TARGETS): vmlinux | 115 | $(BOOT_TARGETS): vmlinux |
| 105 | $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ | 116 | $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ |
| 117 | |||
| 118 | install: | ||
| 119 | $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install | ||
| 120 | |||
| 106 | define archhelp | 121 | define archhelp |
| 107 | echo '* vmImage - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage)' | 122 | echo '* vmImage - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage)' |
| 123 | echo ' install - Install kernel using' | ||
| 124 | echo ' (your) ~/bin/$(CROSS_COMPILE)installkernel or' | ||
| 125 | echo ' (distribution) PATH: $(CROSS_COMPILE)installkernel or' | ||
| 126 | echo ' install to $$(INSTALL_PATH)' | ||
| 108 | endef | 127 | endef |
diff --git a/arch/blackfin/boot/Makefile b/arch/blackfin/boot/Makefile index 8cd33560e817..522f3c124060 100644 --- a/arch/blackfin/boot/Makefile +++ b/arch/blackfin/boot/Makefile | |||
| @@ -26,3 +26,6 @@ $(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE | |||
| 26 | $(obj)/vmImage: $(obj)/vmlinux.gz | 26 | $(obj)/vmImage: $(obj)/vmlinux.gz |
| 27 | $(call if_changed,uimage) | 27 | $(call if_changed,uimage) |
| 28 | @echo 'Kernel: $@ is ready' | 28 | @echo 'Kernel: $@ is ready' |
| 29 | |||
| 30 | install: | ||
| 31 | sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)" | ||
diff --git a/arch/blackfin/boot/install.sh b/arch/blackfin/boot/install.sh new file mode 100644 index 000000000000..9560a6b29100 --- /dev/null +++ b/arch/blackfin/boot/install.sh | |||
| @@ -0,0 +1,57 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # | ||
| 3 | # arch/blackfin/boot/install.sh | ||
| 4 | # | ||
| 5 | # This file is subject to the terms and conditions of the GNU General Public | ||
| 6 | # License. See the file "COPYING" in the main directory of this archive | ||
| 7 | # for more details. | ||
| 8 | # | ||
| 9 | # Copyright (C) 1995 by Linus Torvalds | ||
| 10 | # | ||
| 11 | # Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin | ||
| 12 | # Adapted from code in arch/i386/boot/install.sh by Mike Frysinger | ||
| 13 | # | ||
| 14 | # "make install" script for Blackfin architecture | ||
| 15 | # | ||
| 16 | # Arguments: | ||
| 17 | # $1 - kernel version | ||
| 18 | # $2 - kernel image file | ||
| 19 | # $3 - kernel map file | ||
| 20 | # $4 - default install path (blank if root directory) | ||
| 21 | # | ||
| 22 | |||
| 23 | verify () { | ||
| 24 | if [ ! -f "$1" ]; then | ||
| 25 | echo "" 1>&2 | ||
| 26 | echo " *** Missing file: $1" 1>&2 | ||
| 27 | echo ' *** You need to run "make" before "make install".' 1>&2 | ||
| 28 | echo "" 1>&2 | ||
| 29 | exit 1 | ||
| 30 | fi | ||
| 31 | } | ||
| 32 | |||
| 33 | # Make sure the files actually exist | ||
| 34 | verify "$2" | ||
| 35 | verify "$3" | ||
| 36 | |||
| 37 | # User may have a custom install script | ||
| 38 | |||
| 39 | if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi | ||
| 40 | if which ${CROSS_COMPILE}installkernel >/dev/null 2>&1; then | ||
| 41 | exec ${CROSS_COMPILE}installkernel "$@" | ||
| 42 | fi | ||
| 43 | |||
| 44 | # Default install - same as make zlilo | ||
| 45 | |||
| 46 | back_it_up() { | ||
| 47 | local file=$1 | ||
| 48 | [ -f ${file} ] || return 0 | ||
| 49 | local stamp=$(stat -c %Y ${file} 2>/dev/null) | ||
| 50 | mv ${file} ${file}.${stamp:-old} | ||
| 51 | } | ||
| 52 | |||
| 53 | back_it_up $4/uImage | ||
| 54 | back_it_up $4/System.map | ||
| 55 | |||
| 56 | cat $2 > $4/uImage | ||
| 57 | cp $3 $4/System.map | ||
diff --git a/arch/blackfin/configs/BF527-EZKIT_defconfig b/arch/blackfin/configs/BF527-EZKIT_defconfig new file mode 100644 index 000000000000..df974e785ee2 --- /dev/null +++ b/arch/blackfin/configs/BF527-EZKIT_defconfig | |||
| @@ -0,0 +1,1241 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.22.9 | ||
| 4 | # | ||
| 5 | # CONFIG_MMU is not set | ||
| 6 | # CONFIG_FPU is not set | ||
| 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | ||
| 9 | CONFIG_BLACKFIN=y | ||
| 10 | CONFIG_ZONE_DMA=y | ||
| 11 | CONFIG_BFIN=y | ||
| 12 | CONFIG_SEMAPHORE_SLEEPERS=y | ||
| 13 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 14 | CONFIG_GENERIC_HWEIGHT=y | ||
| 15 | CONFIG_GENERIC_HARDIRQS=y | ||
| 16 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 17 | # CONFIG_GENERIC_TIME is not set | ||
| 18 | CONFIG_GENERIC_GPIO=y | ||
| 19 | CONFIG_FORCE_MAX_ZONEORDER=14 | ||
| 20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 21 | CONFIG_IRQCHIP_DEMUX_GPIO=y | ||
| 22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 23 | |||
| 24 | # | ||
| 25 | # Code maturity level options | ||
| 26 | # | ||
| 27 | CONFIG_EXPERIMENTAL=y | ||
| 28 | CONFIG_BROKEN_ON_SMP=y | ||
| 29 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 30 | |||
| 31 | # | ||
| 32 | # General setup | ||
| 33 | # | ||
| 34 | CONFIG_LOCALVERSION="" | ||
| 35 | CONFIG_LOCALVERSION_AUTO=y | ||
| 36 | CONFIG_SYSVIPC=y | ||
| 37 | # CONFIG_IPC_NS is not set | ||
| 38 | CONFIG_SYSVIPC_SYSCTL=y | ||
| 39 | # CONFIG_POSIX_MQUEUE is not set | ||
| 40 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
| 41 | # CONFIG_TASKSTATS is not set | ||
| 42 | # CONFIG_UTS_NS is not set | ||
| 43 | # CONFIG_AUDIT is not set | ||
| 44 | CONFIG_IKCONFIG=y | ||
| 45 | CONFIG_IKCONFIG_PROC=y | ||
| 46 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 47 | CONFIG_SYSFS_DEPRECATED=y | ||
| 48 | # CONFIG_RELAY is not set | ||
| 49 | CONFIG_BLK_DEV_INITRD=y | ||
| 50 | CONFIG_INITRAMFS_SOURCE="" | ||
| 51 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 52 | CONFIG_SYSCTL=y | ||
| 53 | CONFIG_EMBEDDED=y | ||
| 54 | CONFIG_UID16=y | ||
| 55 | CONFIG_SYSCTL_SYSCALL=y | ||
| 56 | CONFIG_KALLSYMS=y | ||
| 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 58 | CONFIG_HOTPLUG=y | ||
| 59 | CONFIG_PRINTK=y | ||
| 60 | CONFIG_BUG=y | ||
| 61 | CONFIG_ELF_CORE=y | ||
| 62 | CONFIG_BASE_FULL=y | ||
| 63 | CONFIG_FUTEX=y | ||
| 64 | CONFIG_ANON_INODES=y | ||
| 65 | CONFIG_EPOLL=y | ||
| 66 | CONFIG_SIGNALFD=y | ||
| 67 | CONFIG_EVENTFD=y | ||
| 68 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 69 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | ||
| 70 | # CONFIG_NP2 is not set | ||
| 71 | CONFIG_SLAB=y | ||
| 72 | # CONFIG_SLUB is not set | ||
| 73 | # CONFIG_SLOB is not set | ||
| 74 | CONFIG_RT_MUTEXES=y | ||
| 75 | CONFIG_TINY_SHMEM=y | ||
| 76 | CONFIG_BASE_SMALL=0 | ||
| 77 | |||
| 78 | # | ||
| 79 | # Loadable module support | ||
| 80 | # | ||
| 81 | CONFIG_MODULES=y | ||
| 82 | CONFIG_MODULE_UNLOAD=y | ||
| 83 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
| 84 | # CONFIG_MODVERSIONS is not set | ||
| 85 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
| 86 | CONFIG_KMOD=y | ||
| 87 | |||
| 88 | # | ||
| 89 | # Block layer | ||
| 90 | # | ||
| 91 | CONFIG_BLOCK=y | ||
| 92 | # CONFIG_LBD is not set | ||
| 93 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
| 94 | # CONFIG_LSF is not set | ||
| 95 | |||
| 96 | # | ||
| 97 | # IO Schedulers | ||
| 98 | # | ||
| 99 | CONFIG_IOSCHED_NOOP=y | ||
| 100 | CONFIG_IOSCHED_AS=y | ||
| 101 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 102 | CONFIG_IOSCHED_CFQ=y | ||
| 103 | CONFIG_DEFAULT_AS=y | ||
| 104 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 105 | # CONFIG_DEFAULT_CFQ is not set | ||
| 106 | # CONFIG_DEFAULT_NOOP is not set | ||
| 107 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
| 108 | # CONFIG_PREEMPT_NONE is not set | ||
| 109 | CONFIG_PREEMPT_VOLUNTARY=y | ||
| 110 | # CONFIG_PREEMPT is not set | ||
| 111 | |||
| 112 | # | ||
| 113 | # Blackfin Processor Options | ||
| 114 | # | ||
| 115 | |||
| 116 | # | ||
| 117 | # Processor and Board Settings | ||
| 118 | # | ||
| 119 | # CONFIG_BF522 is not set | ||
| 120 | # CONFIG_BF525 is not set | ||
| 121 | CONFIG_BF527=y | ||
| 122 | # CONFIG_BF531 is not set | ||
| 123 | # CONFIG_BF532 is not set | ||
| 124 | # CONFIG_BF533 is not set | ||
| 125 | # CONFIG_BF534 is not set | ||
| 126 | # CONFIG_BF536 is not set | ||
| 127 | # CONFIG_BF537 is not set | ||
| 128 | # CONFIG_BF542 is not set | ||
| 129 | # CONFIG_BF544 is not set | ||
| 130 | # CONFIG_BF548 is not set | ||
| 131 | # CONFIG_BF549 is not set | ||
| 132 | # CONFIG_BF561 is not set | ||
| 133 | CONFIG_BF_REV_0_0=y | ||
| 134 | # CONFIG_BF_REV_0_1 is not set | ||
| 135 | # CONFIG_BF_REV_0_2 is not set | ||
| 136 | # CONFIG_BF_REV_0_3 is not set | ||
| 137 | # CONFIG_BF_REV_0_4 is not set | ||
| 138 | # CONFIG_BF_REV_0_5 is not set | ||
| 139 | # CONFIG_BF_REV_ANY is not set | ||
| 140 | # CONFIG_BF_REV_NONE is not set | ||
| 141 | CONFIG_BF52x=y | ||
| 142 | CONFIG_BFIN_SINGLE_CORE=y | ||
| 143 | CONFIG_BFIN527_EZKIT=y | ||
| 144 | # CONFIG_BFIN533_EZKIT is not set | ||
| 145 | # CONFIG_BFIN533_STAMP is not set | ||
| 146 | # CONFIG_BFIN537_STAMP is not set | ||
| 147 | # CONFIG_BFIN533_BLUETECHNIX_CM is not set | ||
| 148 | # CONFIG_BFIN537_BLUETECHNIX_CM is not set | ||
| 149 | # CONFIG_BFIN548_EZKIT is not set | ||
| 150 | # CONFIG_BFIN561_BLUETECHNIX_CM is not set | ||
| 151 | # CONFIG_BFIN561_EZKIT is not set | ||
| 152 | # CONFIG_BFIN561_TEPLA is not set | ||
| 153 | # CONFIG_PNAV10 is not set | ||
| 154 | # CONFIG_GENERIC_BOARD is not set | ||
| 155 | CONFIG_MEM_MT48LC32M16A2TG_75=y | ||
| 156 | |||
| 157 | # | ||
| 158 | # BF527 Specific Configuration | ||
| 159 | # | ||
| 160 | |||
| 161 | # | ||
| 162 | # Alternative Multiplexing Scheme | ||
| 163 | # | ||
| 164 | # CONFIG_BF527_SPORT0_PORTF is not set | ||
| 165 | CONFIG_BF527_SPORT0_PORTG=y | ||
| 166 | CONFIG_BF527_SPORT0_TSCLK_PG10=y | ||
| 167 | # CONFIG_BF527_SPORT0_TSCLK_PG14 is not set | ||
| 168 | # CONFIG_BF527_UART1_PORTF is not set | ||
| 169 | CONFIG_BF527_UART1_PORTG=y | ||
| 170 | # CONFIG_BF527_NAND_D_PORTF is not set | ||
| 171 | CONFIG_BF527_NAND_D_PORTH=y | ||
| 172 | |||
| 173 | # | ||
| 174 | # Interrupt Priority Assignment | ||
| 175 | # | ||
| 176 | |||
| 177 | # | ||
| 178 | # Priority | ||
| 179 | # | ||
| 180 | CONFIG_IRQ_PLL_WAKEUP=7 | ||
| 181 | CONFIG_IRQ_DMA0_ERROR=7 | ||
| 182 | CONFIG_IRQ_DMAR0_BLK=7 | ||
| 183 | CONFIG_IRQ_DMAR1_BLK=7 | ||
| 184 | CONFIG_IRQ_DMAR0_OVR=7 | ||
| 185 | CONFIG_IRQ_DMAR1_OVR=7 | ||
| 186 | CONFIG_IRQ_PPI_ERROR=7 | ||
| 187 | CONFIG_IRQ_MAC_ERROR=7 | ||
| 188 | CONFIG_IRQ_SPORT0_ERROR=7 | ||
| 189 | CONFIG_IRQ_SPORT1_ERROR=7 | ||
| 190 | CONFIG_IRQ_UART0_ERROR=7 | ||
| 191 | CONFIG_IRQ_UART1_ERROR=7 | ||
| 192 | CONFIG_IRQ_RTC=8 | ||
| 193 | CONFIG_IRQ_PPI=8 | ||
| 194 | CONFIG_IRQ_SPORT0_RX=9 | ||
| 195 | CONFIG_IRQ_SPORT0_TX=9 | ||
| 196 | CONFIG_IRQ_SPORT1_RX=9 | ||
| 197 | CONFIG_IRQ_SPORT1_TX=9 | ||
| 198 | CONFIG_IRQ_TWI=10 | ||
| 199 | CONFIG_IRQ_SPI=10 | ||
| 200 | CONFIG_IRQ_UART0_RX=10 | ||
| 201 | CONFIG_IRQ_UART0_TX=10 | ||
| 202 | CONFIG_IRQ_UART1_RX=10 | ||
| 203 | CONFIG_IRQ_UART1_TX=10 | ||
| 204 | CONFIG_IRQ_OPTSEC=11 | ||
| 205 | CONFIG_IRQ_CNT=11 | ||
| 206 | CONFIG_IRQ_MAC_RX=11 | ||
| 207 | CONFIG_IRQ_PORTH_INTA=11 | ||
| 208 | CONFIG_IRQ_MAC_TX=11 | ||
| 209 | CONFIG_IRQ_PORTH_INTB=11 | ||
| 210 | CONFIG_IRQ_TMR0=12 | ||
| 211 | CONFIG_IRQ_TMR1=12 | ||
| 212 | CONFIG_IRQ_TMR2=12 | ||
| 213 | CONFIG_IRQ_TMR3=12 | ||
| 214 | CONFIG_IRQ_TMR4=12 | ||
| 215 | CONFIG_IRQ_TMR5=12 | ||
| 216 | CONFIG_IRQ_TMR6=12 | ||
| 217 | CONFIG_IRQ_TMR7=12 | ||
| 218 | CONFIG_IRQ_PORTG_INTA=12 | ||
| 219 | CONFIG_IRQ_PORTG_INTB=12 | ||
| 220 | CONFIG_IRQ_MEM_DMA0=13 | ||
| 221 | CONFIG_IRQ_MEM_DMA1=13 | ||
| 222 | CONFIG_IRQ_WATCH=13 | ||
| 223 | CONFIG_IRQ_PORTF_INTA=13 | ||
| 224 | CONFIG_IRQ_PORTF_INTB=13 | ||
| 225 | CONFIG_IRQ_SPI_ERROR=7 | ||
| 226 | CONFIG_IRQ_NFC_ERROR=7 | ||
| 227 | CONFIG_IRQ_HDMA_ERROR=7 | ||
| 228 | CONFIG_IRQ_HDMA=7 | ||
| 229 | CONFIG_IRQ_USB_EINT=10 | ||
| 230 | CONFIG_IRQ_USB_INT0=11 | ||
| 231 | CONFIG_IRQ_USB_INT1=11 | ||
| 232 | CONFIG_IRQ_USB_INT2=11 | ||
| 233 | CONFIG_IRQ_USB_DMA=11 | ||
| 234 | |||
| 235 | # | ||
| 236 | # Board customizations | ||
| 237 | # | ||
| 238 | # CONFIG_CMDLINE_BOOL is not set | ||
| 239 | |||
| 240 | # | ||
| 241 | # Clock/PLL Setup | ||
| 242 | # | ||
| 243 | CONFIG_CLKIN_HZ=25000000 | ||
| 244 | # CONFIG_BFIN_KERNEL_CLOCK is not set | ||
| 245 | CONFIG_MAX_VCO_HZ=600000000 | ||
| 246 | CONFIG_MIN_VCO_HZ=50000000 | ||
| 247 | CONFIG_MAX_SCLK_HZ=133000000 | ||
| 248 | CONFIG_MIN_SCLK_HZ=27000000 | ||
| 249 | |||
| 250 | # | ||
| 251 | # Kernel Timer/Scheduler | ||
| 252 | # | ||
| 253 | # CONFIG_HZ_100 is not set | ||
| 254 | CONFIG_HZ_250=y | ||
| 255 | # CONFIG_HZ_300 is not set | ||
| 256 | # CONFIG_HZ_1000 is not set | ||
| 257 | CONFIG_HZ=250 | ||
| 258 | |||
| 259 | # | ||
| 260 | # Memory Setup | ||
| 261 | # | ||
| 262 | CONFIG_MEM_SIZE=64 | ||
| 263 | CONFIG_MEM_ADD_WIDTH=10 | ||
| 264 | CONFIG_BOOT_LOAD=0x1000 | ||
| 265 | CONFIG_BFIN_SCRATCH_REG_RETN=y | ||
| 266 | # CONFIG_BFIN_SCRATCH_REG_RETE is not set | ||
| 267 | # CONFIG_BFIN_SCRATCH_REG_CYCLES is not set | ||
| 268 | |||
| 269 | # | ||
| 270 | # Blackfin Kernel Optimizations | ||
| 271 | # | ||
| 272 | |||
| 273 | # | ||
| 274 | # Memory Optimizations | ||
| 275 | # | ||
| 276 | CONFIG_I_ENTRY_L1=y | ||
| 277 | CONFIG_EXCPT_IRQ_SYSC_L1=y | ||
| 278 | CONFIG_DO_IRQ_L1=y | ||
| 279 | CONFIG_CORE_TIMER_IRQ_L1=y | ||
| 280 | CONFIG_IDLE_L1=y | ||
| 281 | # CONFIG_SCHEDULE_L1 is not set | ||
| 282 | CONFIG_ARITHMETIC_OPS_L1=y | ||
| 283 | CONFIG_ACCESS_OK_L1=y | ||
| 284 | # CONFIG_MEMSET_L1 is not set | ||
| 285 | # CONFIG_MEMCPY_L1 is not set | ||
| 286 | # CONFIG_SYS_BFIN_SPINLOCK_L1 is not set | ||
| 287 | # CONFIG_IP_CHECKSUM_L1 is not set | ||
| 288 | CONFIG_CACHELINE_ALIGNED_L1=y | ||
| 289 | # CONFIG_SYSCALL_TAB_L1 is not set | ||
| 290 | # CONFIG_CPLB_SWITCH_TAB_L1 is not set | ||
| 291 | CONFIG_RAMKERNEL=y | ||
| 292 | # CONFIG_ROMKERNEL is not set | ||
| 293 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 294 | CONFIG_FLATMEM_MANUAL=y | ||
| 295 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 296 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 297 | CONFIG_FLATMEM=y | ||
| 298 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 299 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 300 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 301 | # CONFIG_RESOURCES_64BIT is not set | ||
| 302 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 303 | CONFIG_LARGE_ALLOCS=y | ||
| 304 | CONFIG_BFIN_DMA_5XX=y | ||
| 305 | # CONFIG_DMA_UNCACHED_2M is not set | ||
| 306 | CONFIG_DMA_UNCACHED_1M=y | ||
| 307 | # CONFIG_DMA_UNCACHED_NONE is not set | ||
| 308 | |||
| 309 | # | ||
| 310 | # Cache Support | ||
| 311 | # | ||
| 312 | CONFIG_BFIN_ICACHE=y | ||
| 313 | CONFIG_BFIN_DCACHE=y | ||
| 314 | # CONFIG_BFIN_DCACHE_BANKA is not set | ||
| 315 | # CONFIG_BFIN_ICACHE_LOCK is not set | ||
| 316 | # CONFIG_BFIN_WB is not set | ||
| 317 | CONFIG_BFIN_WT=y | ||
| 318 | CONFIG_L1_MAX_PIECE=16 | ||
| 319 | |||
| 320 | # | ||
| 321 | # Asynchonous Memory Configuration | ||
| 322 | # | ||
| 323 | |||
| 324 | # | ||
| 325 | # EBIU_AMBCTL Global Control | ||
| 326 | # | ||
| 327 | CONFIG_C_AMCKEN=y | ||
| 328 | CONFIG_C_CDPRIO=y | ||
| 329 | # CONFIG_C_AMBEN is not set | ||
| 330 | # CONFIG_C_AMBEN_B0 is not set | ||
| 331 | # CONFIG_C_AMBEN_B0_B1 is not set | ||
| 332 | # CONFIG_C_AMBEN_B0_B1_B2 is not set | ||
| 333 | CONFIG_C_AMBEN_ALL=y | ||
| 334 | |||
| 335 | # | ||
| 336 | # EBIU_AMBCTL Control | ||
| 337 | # | ||
| 338 | CONFIG_BANK_0=0x7BB0 | ||
| 339 | CONFIG_BANK_1=0x5554 | ||
| 340 | CONFIG_BANK_2=0x7BB0 | ||
| 341 | CONFIG_BANK_3=0xFFC0 | ||
| 342 | |||
| 343 | # | ||
| 344 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | ||
| 345 | # | ||
| 346 | # CONFIG_PCI is not set | ||
| 347 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
| 348 | |||
| 349 | # | ||
| 350 | # PCCARD (PCMCIA/CardBus) support | ||
| 351 | # | ||
| 352 | # CONFIG_PCCARD is not set | ||
| 353 | |||
| 354 | # | ||
| 355 | # Executable file formats | ||
| 356 | # | ||
| 357 | CONFIG_BINFMT_ELF_FDPIC=y | ||
| 358 | CONFIG_BINFMT_FLAT=y | ||
| 359 | CONFIG_BINFMT_ZFLAT=y | ||
| 360 | # CONFIG_BINFMT_SHARED_FLAT is not set | ||
| 361 | # CONFIG_BINFMT_MISC is not set | ||
| 362 | |||
| 363 | # | ||
| 364 | # Power management options | ||
| 365 | # | ||
| 366 | # CONFIG_PM is not set | ||
| 367 | |||
| 368 | # | ||
| 369 | # Networking | ||
| 370 | # | ||
| 371 | CONFIG_NET=y | ||
| 372 | |||
| 373 | # | ||
| 374 | # Networking options | ||
| 375 | # | ||
| 376 | CONFIG_PACKET=y | ||
| 377 | # CONFIG_PACKET_MMAP is not set | ||
| 378 | CONFIG_UNIX=y | ||
| 379 | CONFIG_XFRM=y | ||
| 380 | # CONFIG_XFRM_USER is not set | ||
| 381 | # CONFIG_XFRM_SUB_POLICY is not set | ||
| 382 | # CONFIG_XFRM_MIGRATE is not set | ||
| 383 | # CONFIG_NET_KEY is not set | ||
| 384 | CONFIG_INET=y | ||
| 385 | # CONFIG_IP_MULTICAST is not set | ||
| 386 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 387 | CONFIG_IP_FIB_HASH=y | ||
| 388 | CONFIG_IP_PNP=y | ||
| 389 | # CONFIG_IP_PNP_DHCP is not set | ||
| 390 | # CONFIG_IP_PNP_BOOTP is not set | ||
| 391 | # CONFIG_IP_PNP_RARP is not set | ||
| 392 | # CONFIG_NET_IPIP is not set | ||
| 393 | # CONFIG_NET_IPGRE is not set | ||
| 394 | # CONFIG_ARPD is not set | ||
| 395 | CONFIG_SYN_COOKIES=y | ||
| 396 | # CONFIG_INET_AH is not set | ||
| 397 | # CONFIG_INET_ESP is not set | ||
| 398 | # CONFIG_INET_IPCOMP is not set | ||
| 399 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
| 400 | # CONFIG_INET_TUNNEL is not set | ||
| 401 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 402 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 403 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 404 | CONFIG_INET_DIAG=y | ||
| 405 | CONFIG_INET_TCP_DIAG=y | ||
| 406 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 407 | CONFIG_TCP_CONG_CUBIC=y | ||
| 408 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 409 | # CONFIG_TCP_MD5SIG is not set | ||
| 410 | # CONFIG_IPV6 is not set | ||
| 411 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
| 412 | # CONFIG_INET6_TUNNEL is not set | ||
| 413 | # CONFIG_NETLABEL is not set | ||
| 414 | # CONFIG_NETWORK_SECMARK is not set | ||
| 415 | # CONFIG_NETFILTER is not set | ||
| 416 | # CONFIG_IP_DCCP is not set | ||
| 417 | # CONFIG_IP_SCTP is not set | ||
| 418 | # CONFIG_TIPC is not set | ||
| 419 | # CONFIG_ATM is not set | ||
| 420 | # CONFIG_BRIDGE is not set | ||
| 421 | # CONFIG_VLAN_8021Q is not set | ||
| 422 | # CONFIG_DECNET is not set | ||
| 423 | # CONFIG_LLC2 is not set | ||
| 424 | # CONFIG_IPX is not set | ||
| 425 | # CONFIG_ATALK is not set | ||
| 426 | # CONFIG_X25 is not set | ||
| 427 | # CONFIG_LAPB is not set | ||
| 428 | # CONFIG_ECONET is not set | ||
| 429 | # CONFIG_WAN_ROUTER is not set | ||
| 430 | |||
| 431 | # | ||
| 432 | # QoS and/or fair queueing | ||
| 433 | # | ||
| 434 | # CONFIG_NET_SCHED is not set | ||
| 435 | |||
| 436 | # | ||
| 437 | # Network testing | ||
| 438 | # | ||
| 439 | # CONFIG_NET_PKTGEN is not set | ||
| 440 | # CONFIG_HAMRADIO is not set | ||
| 441 | # CONFIG_IRDA is not set | ||
| 442 | # CONFIG_BT is not set | ||
| 443 | # CONFIG_AF_RXRPC is not set | ||
| 444 | |||
| 445 | # | ||
| 446 | # Wireless | ||
| 447 | # | ||
| 448 | # CONFIG_CFG80211 is not set | ||
| 449 | # CONFIG_WIRELESS_EXT is not set | ||
| 450 | # CONFIG_MAC80211 is not set | ||
| 451 | # CONFIG_IEEE80211 is not set | ||
| 452 | # CONFIG_RFKILL is not set | ||
| 453 | |||
| 454 | # | ||
| 455 | # Device Drivers | ||
| 456 | # | ||
| 457 | |||
| 458 | # | ||
| 459 | # Generic Driver Options | ||
| 460 | # | ||
| 461 | CONFIG_STANDALONE=y | ||
| 462 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 463 | # CONFIG_FW_LOADER is not set | ||
| 464 | # CONFIG_SYS_HYPERVISOR is not set | ||
| 465 | |||
| 466 | # | ||
| 467 | # Connector - unified userspace <-> kernelspace linker | ||
| 468 | # | ||
| 469 | # CONFIG_CONNECTOR is not set | ||
| 470 | CONFIG_MTD=y | ||
| 471 | # CONFIG_MTD_DEBUG is not set | ||
| 472 | # CONFIG_MTD_CONCAT is not set | ||
| 473 | CONFIG_MTD_PARTITIONS=y | ||
| 474 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 475 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
| 476 | |||
| 477 | # | ||
| 478 | # User Modules And Translation Layers | ||
| 479 | # | ||
| 480 | CONFIG_MTD_CHAR=m | ||
| 481 | CONFIG_MTD_BLKDEVS=y | ||
| 482 | CONFIG_MTD_BLOCK=y | ||
| 483 | # CONFIG_FTL is not set | ||
| 484 | # CONFIG_NFTL is not set | ||
| 485 | # CONFIG_INFTL is not set | ||
| 486 | # CONFIG_RFD_FTL is not set | ||
| 487 | # CONFIG_SSFDC is not set | ||
| 488 | |||
| 489 | # | ||
| 490 | # RAM/ROM/Flash chip drivers | ||
| 491 | # | ||
| 492 | # CONFIG_MTD_CFI is not set | ||
| 493 | CONFIG_MTD_JEDECPROBE=m | ||
| 494 | CONFIG_MTD_GEN_PROBE=m | ||
| 495 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 496 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 497 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 498 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 499 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 500 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 501 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 502 | CONFIG_MTD_CFI_I1=y | ||
| 503 | CONFIG_MTD_CFI_I2=y | ||
| 504 | # CONFIG_MTD_CFI_I4 is not set | ||
| 505 | # CONFIG_MTD_CFI_I8 is not set | ||
| 506 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
| 507 | # CONFIG_MTD_CFI_AMDSTD is not set | ||
| 508 | # CONFIG_MTD_CFI_STAA is not set | ||
| 509 | CONFIG_MTD_MW320D=m | ||
| 510 | CONFIG_MTD_RAM=y | ||
| 511 | CONFIG_MTD_ROM=m | ||
| 512 | # CONFIG_MTD_ABSENT is not set | ||
| 513 | |||
| 514 | # | ||
| 515 | # Mapping drivers for chip access | ||
| 516 | # | ||
| 517 | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||
| 518 | # CONFIG_MTD_PHYSMAP is not set | ||
| 519 | CONFIG_MTD_BF5xx=m | ||
| 520 | CONFIG_BFIN_FLASH_SIZE=0x400000 | ||
| 521 | CONFIG_EBIU_FLASH_BASE=0x20000000 | ||
| 522 | # CONFIG_MTD_UCLINUX is not set | ||
| 523 | # CONFIG_MTD_PLATRAM is not set | ||
| 524 | |||
| 525 | # | ||
| 526 | # Self-contained MTD device drivers | ||
| 527 | # | ||
| 528 | # CONFIG_MTD_DATAFLASH is not set | ||
| 529 | # CONFIG_MTD_M25P80 is not set | ||
| 530 | # CONFIG_MTD_SLRAM is not set | ||
| 531 | # CONFIG_MTD_PHRAM is not set | ||
| 532 | # CONFIG_MTD_MTDRAM is not set | ||
| 533 | # CONFIG_MTD_BLOCK2MTD is not set | ||
| 534 | |||
| 535 | # | ||
| 536 | # Disk-On-Chip Device Drivers | ||
| 537 | # | ||
| 538 | # CONFIG_MTD_DOC2000 is not set | ||
| 539 | # CONFIG_MTD_DOC2001 is not set | ||
| 540 | # CONFIG_MTD_DOC2001PLUS is not set | ||
| 541 | CONFIG_MTD_NAND=m | ||
| 542 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
| 543 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
| 544 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
| 545 | CONFIG_MTD_NAND_BFIN=m | ||
| 546 | CONFIG_BFIN_NAND_BASE=0x20212000 | ||
| 547 | CONFIG_BFIN_NAND_CLE=2 | ||
| 548 | CONFIG_BFIN_NAND_ALE=1 | ||
| 549 | CONFIG_BFIN_NAND_READY=3 | ||
| 550 | CONFIG_MTD_NAND_IDS=m | ||
| 551 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 552 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
| 553 | # CONFIG_MTD_NAND_PLATFORM is not set | ||
| 554 | # CONFIG_MTD_ONENAND is not set | ||
| 555 | |||
| 556 | # | ||
| 557 | # UBI - Unsorted block images | ||
| 558 | # | ||
| 559 | # CONFIG_MTD_UBI is not set | ||
| 560 | |||
| 561 | # | ||
| 562 | # Parallel port support | ||
| 563 | # | ||
| 564 | # CONFIG_PARPORT is not set | ||
| 565 | |||
| 566 | # | ||
| 567 | # Plug and Play support | ||
| 568 | # | ||
| 569 | # CONFIG_PNPACPI is not set | ||
| 570 | |||
| 571 | # | ||
| 572 | # Block devices | ||
| 573 | # | ||
| 574 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 575 | # CONFIG_BLK_DEV_LOOP is not set | ||
| 576 | # CONFIG_BLK_DEV_NBD is not set | ||
| 577 | CONFIG_BLK_DEV_RAM=y | ||
| 578 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 579 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
| 580 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
| 581 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 582 | # CONFIG_ATA_OVER_ETH is not set | ||
| 583 | |||
| 584 | # | ||
| 585 | # Misc devices | ||
| 586 | # | ||
| 587 | # CONFIG_IDE is not set | ||
| 588 | |||
| 589 | # | ||
| 590 | # SCSI device support | ||
| 591 | # | ||
| 592 | # CONFIG_RAID_ATTRS is not set | ||
| 593 | # CONFIG_SCSI is not set | ||
| 594 | # CONFIG_SCSI_NETLINK is not set | ||
| 595 | # CONFIG_ATA is not set | ||
| 596 | |||
| 597 | # | ||
| 598 | # Multi-device support (RAID and LVM) | ||
| 599 | # | ||
| 600 | # CONFIG_MD is not set | ||
| 601 | |||
| 602 | # | ||
| 603 | # Network device support | ||
| 604 | # | ||
| 605 | CONFIG_NETDEVICES=y | ||
| 606 | # CONFIG_DUMMY is not set | ||
| 607 | # CONFIG_BONDING is not set | ||
| 608 | # CONFIG_EQUALIZER is not set | ||
| 609 | # CONFIG_TUN is not set | ||
| 610 | CONFIG_PHYLIB=y | ||
| 611 | |||
| 612 | # | ||
| 613 | # MII PHY device drivers | ||
| 614 | # | ||
| 615 | # CONFIG_MARVELL_PHY is not set | ||
| 616 | # CONFIG_DAVICOM_PHY is not set | ||
| 617 | # CONFIG_QSEMI_PHY is not set | ||
| 618 | # CONFIG_LXT_PHY is not set | ||
| 619 | # CONFIG_CICADA_PHY is not set | ||
| 620 | # CONFIG_VITESSE_PHY is not set | ||
| 621 | # CONFIG_SMSC_PHY is not set | ||
| 622 | # CONFIG_BROADCOM_PHY is not set | ||
| 623 | # CONFIG_FIXED_PHY is not set | ||
| 624 | |||
| 625 | # | ||
| 626 | # Ethernet (10 or 100Mbit) | ||
| 627 | # | ||
| 628 | CONFIG_NET_ETHERNET=y | ||
| 629 | CONFIG_MII=y | ||
| 630 | # CONFIG_SMC91X is not set | ||
| 631 | CONFIG_BFIN_MAC=y | ||
| 632 | CONFIG_BFIN_MAC_USE_L1=y | ||
| 633 | CONFIG_BFIN_TX_DESC_NUM=10 | ||
| 634 | CONFIG_BFIN_RX_DESC_NUM=20 | ||
| 635 | CONFIG_BFIN_MAC_RMII=y | ||
| 636 | # CONFIG_SMSC911X is not set | ||
| 637 | # CONFIG_DM9000 is not set | ||
| 638 | CONFIG_NETDEV_1000=y | ||
| 639 | CONFIG_NETDEV_10000=y | ||
| 640 | |||
| 641 | # | ||
| 642 | # Wireless LAN | ||
| 643 | # | ||
| 644 | # CONFIG_WLAN_PRE80211 is not set | ||
| 645 | # CONFIG_WLAN_80211 is not set | ||
| 646 | # CONFIG_WAN is not set | ||
| 647 | # CONFIG_PPP is not set | ||
| 648 | # CONFIG_SLIP is not set | ||
| 649 | # CONFIG_SHAPER is not set | ||
| 650 | # CONFIG_NETCONSOLE is not set | ||
| 651 | # CONFIG_NETPOLL is not set | ||
| 652 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 653 | |||
| 654 | # | ||
| 655 | # ISDN subsystem | ||
| 656 | # | ||
| 657 | # CONFIG_ISDN is not set | ||
| 658 | |||
| 659 | # | ||
| 660 | # Telephony Support | ||
| 661 | # | ||
| 662 | # CONFIG_PHONE is not set | ||
| 663 | |||
| 664 | # | ||
| 665 | # Input device support | ||
| 666 | # | ||
| 667 | CONFIG_INPUT=y | ||
| 668 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
| 669 | # CONFIG_INPUT_POLLDEV is not set | ||
| 670 | |||
| 671 | # | ||
| 672 | # Userland interfaces | ||
| 673 | # | ||
| 674 | # CONFIG_INPUT_MOUSEDEV is not set | ||
| 675 | # CONFIG_INPUT_JOYDEV is not set | ||
| 676 | # CONFIG_INPUT_TSDEV is not set | ||
| 677 | # CONFIG_INPUT_EVDEV is not set | ||
| 678 | # CONFIG_INPUT_EVBUG is not set | ||
| 679 | |||
| 680 | # | ||
| 681 | # Input Device Drivers | ||
| 682 | # | ||
| 683 | # CONFIG_INPUT_KEYBOARD is not set | ||
| 684 | # CONFIG_INPUT_MOUSE is not set | ||
| 685 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 686 | # CONFIG_INPUT_TABLET is not set | ||
| 687 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 688 | CONFIG_INPUT_MISC=y | ||
| 689 | # CONFIG_INPUT_ATI_REMOTE is not set | ||
| 690 | # CONFIG_INPUT_ATI_REMOTE2 is not set | ||
| 691 | # CONFIG_INPUT_KEYSPAN_REMOTE is not set | ||
| 692 | # CONFIG_INPUT_POWERMATE is not set | ||
| 693 | # CONFIG_INPUT_YEALINK is not set | ||
| 694 | # CONFIG_INPUT_UINPUT is not set | ||
| 695 | # CONFIG_BF53X_PFBUTTONS is not set | ||
| 696 | # CONFIG_TWI_KEYPAD is not set | ||
| 697 | |||
| 698 | # | ||
| 699 | # Hardware I/O ports | ||
| 700 | # | ||
| 701 | # CONFIG_SERIO is not set | ||
| 702 | # CONFIG_GAMEPORT is not set | ||
| 703 | |||
| 704 | # | ||
| 705 | # Character devices | ||
| 706 | # | ||
| 707 | # CONFIG_AD9960 is not set | ||
| 708 | # CONFIG_SPI_ADC_BF533 is not set | ||
| 709 | # CONFIG_BF5xx_PFLAGS is not set | ||
| 710 | # CONFIG_BF5xx_PPIFCD is not set | ||
| 711 | # CONFIG_BF5xx_TIMERS is not set | ||
| 712 | # CONFIG_BF5xx_PPI is not set | ||
| 713 | # CONFIG_BFIN_SPORT is not set | ||
| 714 | # CONFIG_BFIN_TIMER_LATENCY is not set | ||
| 715 | # CONFIG_TWI_LCD is not set | ||
| 716 | # CONFIG_AD5304 is not set | ||
| 717 | # CONFIG_BF5xx_TEA5764 is not set | ||
| 718 | # CONFIG_BF5xx_FBDMA is not set | ||
| 719 | # CONFIG_VT is not set | ||
| 720 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 721 | |||
| 722 | # | ||
| 723 | # Serial drivers | ||
| 724 | # | ||
| 725 | # CONFIG_SERIAL_8250 is not set | ||
| 726 | |||
| 727 | # | ||
| 728 | # Non-8250 serial port support | ||
| 729 | # | ||
| 730 | CONFIG_SERIAL_BFIN=y | ||
| 731 | CONFIG_SERIAL_BFIN_CONSOLE=y | ||
| 732 | # CONFIG_SERIAL_BFIN_DMA is not set | ||
| 733 | CONFIG_SERIAL_BFIN_PIO=y | ||
| 734 | # CONFIG_SERIAL_BFIN_UART0 is not set | ||
| 735 | CONFIG_SERIAL_BFIN_UART1=y | ||
| 736 | # CONFIG_BFIN_UART1_CTSRTS is not set | ||
| 737 | CONFIG_SERIAL_CORE=y | ||
| 738 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 739 | # CONFIG_SERIAL_BFIN_SPORT is not set | ||
| 740 | CONFIG_UNIX98_PTYS=y | ||
| 741 | # CONFIG_LEGACY_PTYS is not set | ||
| 742 | |||
| 743 | # | ||
| 744 | # CAN, the car bus and industrial fieldbus | ||
| 745 | # | ||
| 746 | # CONFIG_CAN4LINUX is not set | ||
| 747 | |||
| 748 | # | ||
| 749 | # IPMI | ||
| 750 | # | ||
| 751 | # CONFIG_IPMI_HANDLER is not set | ||
| 752 | CONFIG_WATCHDOG=y | ||
| 753 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
| 754 | |||
| 755 | # | ||
| 756 | # Watchdog Device Drivers | ||
| 757 | # | ||
| 758 | # CONFIG_SOFT_WATCHDOG is not set | ||
| 759 | CONFIG_BFIN_WDT=y | ||
| 760 | CONFIG_HW_RANDOM=y | ||
| 761 | # CONFIG_GEN_RTC is not set | ||
| 762 | # CONFIG_R3964 is not set | ||
| 763 | # CONFIG_RAW_DRIVER is not set | ||
| 764 | |||
| 765 | # | ||
| 766 | # TPM devices | ||
| 767 | # | ||
| 768 | # CONFIG_TCG_TPM is not set | ||
| 769 | CONFIG_I2C=y | ||
| 770 | CONFIG_I2C_BOARDINFO=y | ||
| 771 | CONFIG_I2C_CHARDEV=m | ||
| 772 | |||
| 773 | # | ||
| 774 | # I2C Algorithms | ||
| 775 | # | ||
| 776 | # CONFIG_I2C_ALGOBIT is not set | ||
| 777 | # CONFIG_I2C_ALGOPCF is not set | ||
| 778 | # CONFIG_I2C_ALGOPCA is not set | ||
| 779 | |||
| 780 | # | ||
| 781 | # I2C Hardware Bus support | ||
| 782 | # | ||
| 783 | # CONFIG_I2C_BLACKFIN_GPIO is not set | ||
| 784 | CONFIG_I2C_BLACKFIN_TWI=m | ||
| 785 | CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50 | ||
| 786 | # CONFIG_I2C_GPIO is not set | ||
| 787 | # CONFIG_I2C_OCORES is not set | ||
| 788 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 789 | # CONFIG_I2C_SIMTEC is not set | ||
| 790 | # CONFIG_I2C_STUB is not set | ||
| 791 | |||
| 792 | # | ||
| 793 | # Miscellaneous I2C Chip support | ||
| 794 | # | ||
| 795 | # CONFIG_SENSORS_DS1337 is not set | ||
| 796 | # CONFIG_SENSORS_DS1374 is not set | ||
| 797 | # CONFIG_SENSORS_AD5252 is not set | ||
| 798 | # CONFIG_SENSORS_EEPROM is not set | ||
| 799 | # CONFIG_SENSORS_PCF8574 is not set | ||
| 800 | # CONFIG_SENSORS_PCF8575 is not set | ||
| 801 | # CONFIG_SENSORS_PCA9543 is not set | ||
| 802 | # CONFIG_SENSORS_PCA9539 is not set | ||
| 803 | # CONFIG_SENSORS_PCF8591 is not set | ||
| 804 | # CONFIG_SENSORS_MAX6875 is not set | ||
| 805 | # CONFIG_I2C_DEBUG_CORE is not set | ||
| 806 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
| 807 | # CONFIG_I2C_DEBUG_BUS is not set | ||
| 808 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 809 | |||
| 810 | # | ||
| 811 | # SPI support | ||
| 812 | # | ||
| 813 | CONFIG_SPI=y | ||
| 814 | CONFIG_SPI_MASTER=y | ||
| 815 | |||
| 816 | # | ||
| 817 | # SPI Master Controller Drivers | ||
| 818 | # | ||
| 819 | CONFIG_SPI_BFIN=y | ||
| 820 | # CONFIG_SPI_BITBANG is not set | ||
| 821 | |||
| 822 | # | ||
| 823 | # SPI Protocol Masters | ||
| 824 | # | ||
| 825 | # CONFIG_SPI_AT25 is not set | ||
| 826 | # CONFIG_SPI_SPIDEV is not set | ||
| 827 | |||
| 828 | # | ||
| 829 | # Dallas's 1-wire bus | ||
| 830 | # | ||
| 831 | # CONFIG_W1 is not set | ||
| 832 | CONFIG_HWMON=y | ||
| 833 | # CONFIG_HWMON_VID is not set | ||
| 834 | # CONFIG_SENSORS_ABITUGURU is not set | ||
| 835 | # CONFIG_SENSORS_AD7418 is not set | ||
| 836 | # CONFIG_SENSORS_ADM1021 is not set | ||
| 837 | # CONFIG_SENSORS_ADM1025 is not set | ||
| 838 | # CONFIG_SENSORS_ADM1026 is not set | ||
| 839 | # CONFIG_SENSORS_ADM1029 is not set | ||
| 840 | # CONFIG_SENSORS_ADM1031 is not set | ||
| 841 | # CONFIG_SENSORS_ADM9240 is not set | ||
| 842 | # CONFIG_SENSORS_ASB100 is not set | ||
| 843 | # CONFIG_SENSORS_ATXP1 is not set | ||
| 844 | # CONFIG_SENSORS_DS1621 is not set | ||
| 845 | # CONFIG_SENSORS_F71805F is not set | ||
| 846 | # CONFIG_SENSORS_FSCHER is not set | ||
| 847 | # CONFIG_SENSORS_FSCPOS is not set | ||
| 848 | # CONFIG_SENSORS_GL518SM is not set | ||
| 849 | # CONFIG_SENSORS_GL520SM is not set | ||
| 850 | # CONFIG_SENSORS_IT87 is not set | ||
| 851 | # CONFIG_SENSORS_LM63 is not set | ||
| 852 | # CONFIG_SENSORS_LM70 is not set | ||
| 853 | # CONFIG_SENSORS_LM75 is not set | ||
| 854 | # CONFIG_SENSORS_LM77 is not set | ||
| 855 | # CONFIG_SENSORS_LM78 is not set | ||
| 856 | # CONFIG_SENSORS_LM80 is not set | ||
| 857 | # CONFIG_SENSORS_LM83 is not set | ||
| 858 | # CONFIG_SENSORS_LM85 is not set | ||
| 859 | # CONFIG_SENSORS_LM87 is not set | ||
| 860 | # CONFIG_SENSORS_LM90 is not set | ||
| 861 | # CONFIG_SENSORS_LM92 is not set | ||
| 862 | # CONFIG_SENSORS_MAX1619 is not set | ||
| 863 | # CONFIG_SENSORS_MAX6650 is not set | ||
| 864 | # CONFIG_SENSORS_PC87360 is not set | ||
| 865 | # CONFIG_SENSORS_PC87427 is not set | ||
| 866 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
| 867 | # CONFIG_SENSORS_SMSC47M192 is not set | ||
| 868 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
| 869 | # CONFIG_SENSORS_VT1211 is not set | ||
| 870 | # CONFIG_SENSORS_W83781D is not set | ||
| 871 | # CONFIG_SENSORS_W83791D is not set | ||
| 872 | # CONFIG_SENSORS_W83792D is not set | ||
| 873 | # CONFIG_SENSORS_W83793 is not set | ||
| 874 | # CONFIG_SENSORS_W83L785TS is not set | ||
| 875 | # CONFIG_SENSORS_W83627HF is not set | ||
| 876 | # CONFIG_SENSORS_W83627EHF is not set | ||
| 877 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
| 878 | |||
| 879 | # | ||
| 880 | # Multifunction device drivers | ||
| 881 | # | ||
| 882 | # CONFIG_MFD_SM501 is not set | ||
| 883 | |||
| 884 | # | ||
| 885 | # Multimedia devices | ||
| 886 | # | ||
| 887 | # CONFIG_VIDEO_DEV is not set | ||
| 888 | # CONFIG_DVB_CORE is not set | ||
| 889 | # CONFIG_DAB is not set | ||
| 890 | |||
| 891 | # | ||
| 892 | # Graphics support | ||
| 893 | # | ||
| 894 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 895 | |||
| 896 | # | ||
| 897 | # Display device support | ||
| 898 | # | ||
| 899 | # CONFIG_DISPLAY_SUPPORT is not set | ||
| 900 | # CONFIG_VGASTATE is not set | ||
| 901 | # CONFIG_FB is not set | ||
| 902 | |||
| 903 | # | ||
| 904 | # Sound | ||
| 905 | # | ||
| 906 | # CONFIG_SOUND is not set | ||
| 907 | |||
| 908 | # | ||
| 909 | # HID Devices | ||
| 910 | # | ||
| 911 | CONFIG_HID=y | ||
| 912 | # CONFIG_HID_DEBUG is not set | ||
| 913 | |||
| 914 | # | ||
| 915 | # USB support | ||
| 916 | # | ||
| 917 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 918 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
| 919 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
| 920 | # CONFIG_USB is not set | ||
| 921 | |||
| 922 | # | ||
| 923 | # Enable Host or Gadget support to see Inventra options | ||
| 924 | # | ||
| 925 | |||
| 926 | # | ||
| 927 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
| 928 | # | ||
| 929 | |||
| 930 | # | ||
| 931 | # USB Gadget Support | ||
| 932 | # | ||
| 933 | # CONFIG_USB_GADGET is not set | ||
| 934 | # CONFIG_MMC is not set | ||
| 935 | |||
| 936 | # | ||
| 937 | # LED devices | ||
| 938 | # | ||
| 939 | # CONFIG_NEW_LEDS is not set | ||
| 940 | |||
| 941 | # | ||
| 942 | # LED drivers | ||
| 943 | # | ||
| 944 | |||
| 945 | # | ||
| 946 | # LED Triggers | ||
| 947 | # | ||
| 948 | |||
| 949 | # | ||
| 950 | # InfiniBand support | ||
| 951 | # | ||
| 952 | |||
| 953 | # | ||
| 954 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
| 955 | # | ||
| 956 | |||
| 957 | # | ||
| 958 | # Real Time Clock | ||
| 959 | # | ||
| 960 | CONFIG_RTC_LIB=y | ||
| 961 | CONFIG_RTC_CLASS=y | ||
| 962 | CONFIG_RTC_HCTOSYS=y | ||
| 963 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
| 964 | # CONFIG_RTC_DEBUG is not set | ||
| 965 | |||
| 966 | # | ||
| 967 | # RTC interfaces | ||
| 968 | # | ||
| 969 | CONFIG_RTC_INTF_SYSFS=y | ||
| 970 | CONFIG_RTC_INTF_PROC=y | ||
| 971 | CONFIG_RTC_INTF_DEV=y | ||
| 972 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
| 973 | # CONFIG_RTC_DRV_TEST is not set | ||
| 974 | |||
| 975 | # | ||
| 976 | # I2C RTC drivers | ||
| 977 | # | ||
| 978 | # CONFIG_RTC_DRV_DS1307 is not set | ||
| 979 | # CONFIG_RTC_DRV_DS1672 is not set | ||
| 980 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
| 981 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
| 982 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
| 983 | # CONFIG_RTC_DRV_X1205 is not set | ||
| 984 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
| 985 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
| 986 | |||
| 987 | # | ||
| 988 | # SPI RTC drivers | ||
| 989 | # | ||
| 990 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
| 991 | # CONFIG_RTC_DRV_MAX6902 is not set | ||
| 992 | |||
| 993 | # | ||
| 994 | # Platform RTC drivers | ||
| 995 | # | ||
| 996 | # CONFIG_RTC_DRV_DS1553 is not set | ||
| 997 | # CONFIG_RTC_DRV_DS1742 is not set | ||
| 998 | # CONFIG_RTC_DRV_M48T86 is not set | ||
| 999 | # CONFIG_RTC_DRV_V3020 is not set | ||
| 1000 | |||
| 1001 | # | ||
| 1002 | # on-CPU RTC drivers | ||
| 1003 | # | ||
| 1004 | CONFIG_RTC_DRV_BFIN=y | ||
| 1005 | |||
| 1006 | # | ||
| 1007 | # DMA Engine support | ||
| 1008 | # | ||
| 1009 | # CONFIG_DMA_ENGINE is not set | ||
| 1010 | |||
| 1011 | # | ||
| 1012 | # DMA Clients | ||
| 1013 | # | ||
| 1014 | |||
| 1015 | # | ||
| 1016 | # DMA Devices | ||
| 1017 | # | ||
| 1018 | |||
| 1019 | # | ||
| 1020 | # PBX support | ||
| 1021 | # | ||
| 1022 | # CONFIG_PBX is not set | ||
| 1023 | |||
| 1024 | # | ||
| 1025 | # File systems | ||
| 1026 | # | ||
| 1027 | # CONFIG_EXT2_FS is not set | ||
| 1028 | # CONFIG_EXT3_FS is not set | ||
| 1029 | # CONFIG_EXT4DEV_FS is not set | ||
| 1030 | # CONFIG_REISERFS_FS is not set | ||
| 1031 | # CONFIG_JFS_FS is not set | ||
| 1032 | # CONFIG_FS_POSIX_ACL is not set | ||
| 1033 | # CONFIG_XFS_FS is not set | ||
| 1034 | # CONFIG_GFS2_FS is not set | ||
| 1035 | # CONFIG_OCFS2_FS is not set | ||
| 1036 | # CONFIG_MINIX_FS is not set | ||
| 1037 | # CONFIG_ROMFS_FS is not set | ||
| 1038 | CONFIG_INOTIFY=y | ||
| 1039 | CONFIG_INOTIFY_USER=y | ||
| 1040 | # CONFIG_QUOTA is not set | ||
| 1041 | # CONFIG_DNOTIFY is not set | ||
| 1042 | # CONFIG_AUTOFS_FS is not set | ||
| 1043 | # CONFIG_AUTOFS4_FS is not set | ||
| 1044 | # CONFIG_FUSE_FS is not set | ||
| 1045 | |||
| 1046 | # | ||
| 1047 | # CD-ROM/DVD Filesystems | ||
| 1048 | # | ||
| 1049 | # CONFIG_ISO9660_FS is not set | ||
| 1050 | # CONFIG_UDF_FS is not set | ||
| 1051 | |||
| 1052 | # | ||
| 1053 | # DOS/FAT/NT Filesystems | ||
| 1054 | # | ||
| 1055 | # CONFIG_MSDOS_FS is not set | ||
| 1056 | # CONFIG_VFAT_FS is not set | ||
| 1057 | # CONFIG_NTFS_FS is not set | ||
| 1058 | |||
| 1059 | # | ||
| 1060 | # Pseudo filesystems | ||
| 1061 | # | ||
| 1062 | CONFIG_PROC_FS=y | ||
| 1063 | CONFIG_PROC_SYSCTL=y | ||
| 1064 | CONFIG_SYSFS=y | ||
| 1065 | # CONFIG_TMPFS is not set | ||
| 1066 | # CONFIG_HUGETLB_PAGE is not set | ||
| 1067 | CONFIG_RAMFS=y | ||
| 1068 | # CONFIG_CONFIGFS_FS is not set | ||
| 1069 | |||
| 1070 | # | ||
| 1071 | # Miscellaneous filesystems | ||
| 1072 | # | ||
| 1073 | # CONFIG_ADFS_FS is not set | ||
| 1074 | # CONFIG_AFFS_FS is not set | ||
| 1075 | # CONFIG_HFS_FS is not set | ||
| 1076 | # CONFIG_HFSPLUS_FS is not set | ||
| 1077 | # CONFIG_BEFS_FS is not set | ||
| 1078 | # CONFIG_BFS_FS is not set | ||
| 1079 | # CONFIG_EFS_FS is not set | ||
| 1080 | CONFIG_YAFFS_FS=m | ||
| 1081 | CONFIG_YAFFS_YAFFS1=y | ||
| 1082 | # CONFIG_YAFFS_DOES_ECC is not set | ||
| 1083 | CONFIG_YAFFS_YAFFS2=y | ||
| 1084 | CONFIG_YAFFS_AUTO_YAFFS2=y | ||
| 1085 | # CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set | ||
| 1086 | CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10 | ||
| 1087 | # CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set | ||
| 1088 | # CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set | ||
| 1089 | CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y | ||
| 1090 | CONFIG_JFFS2_FS=m | ||
| 1091 | CONFIG_JFFS2_FS_DEBUG=0 | ||
| 1092 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 1093 | # CONFIG_JFFS2_SUMMARY is not set | ||
| 1094 | # CONFIG_JFFS2_FS_XATTR is not set | ||
| 1095 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
| 1096 | CONFIG_JFFS2_ZLIB=y | ||
| 1097 | CONFIG_JFFS2_RTIME=y | ||
| 1098 | # CONFIG_JFFS2_RUBIN is not set | ||
| 1099 | # CONFIG_CRAMFS is not set | ||
| 1100 | # CONFIG_VXFS_FS is not set | ||
| 1101 | # CONFIG_HPFS_FS is not set | ||
| 1102 | # CONFIG_QNX4FS_FS is not set | ||
| 1103 | # CONFIG_SYSV_FS is not set | ||
| 1104 | # CONFIG_UFS_FS is not set | ||
| 1105 | |||
| 1106 | # | ||
| 1107 | # Network File Systems | ||
| 1108 | # | ||
| 1109 | CONFIG_NFS_FS=m | ||
| 1110 | CONFIG_NFS_V3=y | ||
| 1111 | # CONFIG_NFS_V3_ACL is not set | ||
| 1112 | # CONFIG_NFS_V4 is not set | ||
| 1113 | # CONFIG_NFS_DIRECTIO is not set | ||
| 1114 | # CONFIG_NFSD is not set | ||
| 1115 | CONFIG_LOCKD=m | ||
| 1116 | CONFIG_LOCKD_V4=y | ||
| 1117 | CONFIG_NFS_COMMON=y | ||
| 1118 | CONFIG_SUNRPC=m | ||
| 1119 | # CONFIG_SUNRPC_BIND34 is not set | ||
| 1120 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
| 1121 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 1122 | CONFIG_SMB_FS=m | ||
| 1123 | # CONFIG_SMB_NLS_DEFAULT is not set | ||
| 1124 | # CONFIG_CIFS is not set | ||
| 1125 | # CONFIG_NCP_FS is not set | ||
| 1126 | # CONFIG_CODA_FS is not set | ||
| 1127 | # CONFIG_AFS_FS is not set | ||
| 1128 | # CONFIG_9P_FS is not set | ||
| 1129 | |||
| 1130 | # | ||
| 1131 | # Partition Types | ||
| 1132 | # | ||
| 1133 | # CONFIG_PARTITION_ADVANCED is not set | ||
| 1134 | CONFIG_MSDOS_PARTITION=y | ||
| 1135 | |||
| 1136 | # | ||
| 1137 | # Native Language Support | ||
| 1138 | # | ||
| 1139 | CONFIG_NLS=m | ||
| 1140 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 1141 | # CONFIG_NLS_CODEPAGE_437 is not set | ||
| 1142 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 1143 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 1144 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
| 1145 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 1146 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 1147 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 1148 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 1149 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 1150 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 1151 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 1152 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 1153 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 1154 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 1155 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 1156 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 1157 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 1158 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 1159 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 1160 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 1161 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 1162 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 1163 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 1164 | # CONFIG_NLS_ASCII is not set | ||
| 1165 | # CONFIG_NLS_ISO8859_1 is not set | ||
| 1166 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 1167 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 1168 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 1169 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 1170 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 1171 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 1172 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 1173 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 1174 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 1175 | # CONFIG_NLS_ISO8859_15 is not set | ||
| 1176 | # CONFIG_NLS_KOI8_R is not set | ||
| 1177 | # CONFIG_NLS_KOI8_U is not set | ||
| 1178 | # CONFIG_NLS_UTF8 is not set | ||
| 1179 | |||
| 1180 | # | ||
| 1181 | # Distributed Lock Manager | ||
| 1182 | # | ||
| 1183 | # CONFIG_DLM is not set | ||
| 1184 | |||
| 1185 | # | ||
| 1186 | # Profiling support | ||
| 1187 | # | ||
| 1188 | # CONFIG_PROFILING is not set | ||
| 1189 | |||
| 1190 | # | ||
| 1191 | # Kernel hacking | ||
| 1192 | # | ||
| 1193 | # CONFIG_PRINTK_TIME is not set | ||
| 1194 | CONFIG_ENABLE_MUST_CHECK=y | ||
| 1195 | CONFIG_MAGIC_SYSRQ=y | ||
| 1196 | # CONFIG_UNUSED_SYMBOLS is not set | ||
| 1197 | CONFIG_DEBUG_FS=y | ||
| 1198 | # CONFIG_HEADERS_CHECK is not set | ||
| 1199 | # CONFIG_DEBUG_KERNEL is not set | ||
| 1200 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
| 1201 | CONFIG_DEBUG_MMRS=y | ||
| 1202 | CONFIG_DEBUG_HUNT_FOR_ZERO=y | ||
| 1203 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y | ||
| 1204 | CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF=y | ||
| 1205 | # CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE is not set | ||
| 1206 | # CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set | ||
| 1207 | CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0 | ||
| 1208 | # CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set | ||
| 1209 | # CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set | ||
| 1210 | CONFIG_EARLY_PRINTK=y | ||
| 1211 | CONFIG_CPLB_INFO=y | ||
| 1212 | CONFIG_ACCESS_CHECK=y | ||
| 1213 | |||
| 1214 | # | ||
| 1215 | # Security options | ||
| 1216 | # | ||
| 1217 | # CONFIG_KEYS is not set | ||
| 1218 | CONFIG_SECURITY=y | ||
| 1219 | # CONFIG_SECURITY_NETWORK is not set | ||
| 1220 | CONFIG_SECURITY_CAPABILITIES=y | ||
| 1221 | |||
| 1222 | # | ||
| 1223 | # Cryptographic options | ||
| 1224 | # | ||
| 1225 | # CONFIG_CRYPTO is not set | ||
| 1226 | |||
| 1227 | # | ||
| 1228 | # Library routines | ||
| 1229 | # | ||
| 1230 | CONFIG_BITREVERSE=y | ||
| 1231 | # CONFIG_CRC_CCITT is not set | ||
| 1232 | # CONFIG_CRC16 is not set | ||
| 1233 | # CONFIG_CRC_ITU_T is not set | ||
| 1234 | CONFIG_CRC32=y | ||
| 1235 | # CONFIG_LIBCRC32C is not set | ||
| 1236 | CONFIG_ZLIB_INFLATE=y | ||
| 1237 | CONFIG_ZLIB_DEFLATE=m | ||
| 1238 | CONFIG_PLIST=y | ||
| 1239 | CONFIG_HAS_IOMEM=y | ||
| 1240 | CONFIG_HAS_IOPORT=y | ||
| 1241 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/blackfin/configs/BF548-EZKIT_defconfig b/arch/blackfin/configs/BF548-EZKIT_defconfig index e80f3d59c283..d8569888a1c8 100644 --- a/arch/blackfin/configs/BF548-EZKIT_defconfig +++ b/arch/blackfin/configs/BF548-EZKIT_defconfig | |||
| @@ -809,7 +809,14 @@ CONFIG_UNIX98_PTYS=y | |||
| 809 | # IPMI | 809 | # IPMI |
| 810 | # | 810 | # |
| 811 | # CONFIG_IPMI_HANDLER is not set | 811 | # CONFIG_IPMI_HANDLER is not set |
| 812 | # CONFIG_WATCHDOG is not set | 812 | CONFIG_WATCHDOG=y |
| 813 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
| 814 | |||
| 815 | # | ||
| 816 | # Watchdog Device Drivers | ||
| 817 | # | ||
| 818 | # CONFIG_SOFT_WATCHDOG is not set | ||
| 819 | CONFIG_BFIN_WDT=y | ||
| 813 | CONFIG_HW_RANDOM=y | 820 | CONFIG_HW_RANDOM=y |
| 814 | # CONFIG_GEN_RTC is not set | 821 | # CONFIG_GEN_RTC is not set |
| 815 | # CONFIG_R3964 is not set | 822 | # CONFIG_R3964 is not set |
diff --git a/arch/blackfin/kernel/Makefile b/arch/blackfin/kernel/Makefile index 8aeb6066b19b..8a4cfb293b27 100644 --- a/arch/blackfin/kernel/Makefile +++ b/arch/blackfin/kernel/Makefile | |||
| @@ -9,6 +9,7 @@ obj-y := \ | |||
| 9 | sys_bfin.o time.o traps.o irqchip.o dma-mapping.o flat.o \ | 9 | sys_bfin.o time.o traps.o irqchip.o dma-mapping.o flat.o \ |
| 10 | fixed_code.o cplbinit.o cacheinit.o reboot.o bfin_gpio.o | 10 | fixed_code.o cplbinit.o cacheinit.o reboot.o bfin_gpio.o |
| 11 | 11 | ||
| 12 | obj-$(CONFIG_BFIN_GPTIMERS) += gptimers.o | ||
| 12 | obj-$(CONFIG_MODULES) += module.o | 13 | obj-$(CONFIG_MODULES) += module.o |
| 13 | obj-$(CONFIG_BFIN_DMA_5XX) += bfin_dma_5xx.o | 14 | obj-$(CONFIG_BFIN_DMA_5XX) += bfin_dma_5xx.o |
| 14 | obj-$(CONFIG_DUAL_CORE_TEST_MODULE) += dualcore_test.o | 15 | obj-$(CONFIG_DUAL_CORE_TEST_MODULE) += dualcore_test.o |
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c index e19164fb4cd1..503eef4c7fec 100644 --- a/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/arch/blackfin/kernel/bfin_dma_5xx.c | |||
| @@ -420,6 +420,32 @@ unsigned short get_dma_curr_ycount(unsigned int channel) | |||
| 420 | } | 420 | } |
| 421 | EXPORT_SYMBOL(get_dma_curr_ycount); | 421 | EXPORT_SYMBOL(get_dma_curr_ycount); |
| 422 | 422 | ||
| 423 | unsigned long get_dma_next_desc_ptr(unsigned int channel) | ||
| 424 | { | ||
| 425 | BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE | ||
| 426 | && channel < MAX_BLACKFIN_DMA_CHANNEL)); | ||
| 427 | |||
| 428 | return dma_ch[channel].regs->next_desc_ptr; | ||
| 429 | } | ||
| 430 | EXPORT_SYMBOL(get_dma_next_desc_ptr); | ||
| 431 | |||
| 432 | unsigned long get_dma_curr_desc_ptr(unsigned int channel) | ||
| 433 | { | ||
| 434 | BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE | ||
| 435 | && channel < MAX_BLACKFIN_DMA_CHANNEL)); | ||
| 436 | |||
| 437 | return dma_ch[channel].regs->curr_desc_ptr; | ||
| 438 | } | ||
| 439 | |||
| 440 | unsigned long get_dma_curr_addr(unsigned int channel) | ||
| 441 | { | ||
| 442 | BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE | ||
| 443 | && channel < MAX_BLACKFIN_DMA_CHANNEL)); | ||
| 444 | |||
| 445 | return dma_ch[channel].regs->curr_addr_ptr; | ||
| 446 | } | ||
| 447 | EXPORT_SYMBOL(get_dma_curr_addr); | ||
| 448 | |||
| 423 | static void *__dma_memcpy(void *dest, const void *src, size_t size) | 449 | static void *__dma_memcpy(void *dest, const void *src, size_t size) |
| 424 | { | 450 | { |
| 425 | int direction; /* 1 - address decrease, 0 - address increase */ | 451 | int direction; /* 1 - address decrease, 0 - address increase */ |
diff --git a/arch/blackfin/kernel/bfin_gpio.c b/arch/blackfin/kernel/bfin_gpio.c index 3fe0cd49e8db..ce85d4bf34ca 100644 --- a/arch/blackfin/kernel/bfin_gpio.c +++ b/arch/blackfin/kernel/bfin_gpio.c | |||
| @@ -124,7 +124,7 @@ static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = { | |||
| 124 | }; | 124 | }; |
| 125 | #endif | 125 | #endif |
| 126 | 126 | ||
| 127 | #ifdef BF537_FAMILY | 127 | #if defined(BF527_FAMILY) || defined(BF537_FAMILY) |
| 128 | static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = { | 128 | static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = { |
| 129 | (struct gpio_port_t *) PORTFIO, | 129 | (struct gpio_port_t *) PORTFIO, |
| 130 | (struct gpio_port_t *) PORTGIO, | 130 | (struct gpio_port_t *) PORTGIO, |
| @@ -139,6 +139,21 @@ static unsigned short *port_fer[gpio_bank(MAX_BLACKFIN_GPIOS)] = { | |||
| 139 | 139 | ||
| 140 | #endif | 140 | #endif |
| 141 | 141 | ||
| 142 | #ifdef BF527_FAMILY | ||
| 143 | static unsigned short *port_mux[gpio_bank(MAX_BLACKFIN_GPIOS)] = { | ||
| 144 | (unsigned short *) PORTF_MUX, | ||
| 145 | (unsigned short *) PORTG_MUX, | ||
| 146 | (unsigned short *) PORTH_MUX, | ||
| 147 | }; | ||
| 148 | |||
| 149 | static const | ||
| 150 | u8 pmux_offset[][16] = | ||
| 151 | {{ 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10 }, /* PORTF */ | ||
| 152 | { 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 8, 10, 10, 10, 12, 12 }, /* PORTG */ | ||
| 153 | { 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4 }, /* PORTH */ | ||
| 154 | }; | ||
| 155 | #endif | ||
| 156 | |||
| 142 | #ifdef BF561_FAMILY | 157 | #ifdef BF561_FAMILY |
| 143 | static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = { | 158 | static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = { |
| 144 | (struct gpio_port_t *) FIO0_FLAG_D, | 159 | (struct gpio_port_t *) FIO0_FLAG_D, |
| @@ -186,6 +201,10 @@ static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG_INTB | |||
| 186 | static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX}; | 201 | static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX}; |
| 187 | #endif | 202 | #endif |
| 188 | 203 | ||
| 204 | #ifdef BF527_FAMILY | ||
| 205 | static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PORTF_INTB, IRQ_PORTG_INTB, IRQ_PORTH_INTB}; | ||
| 206 | #endif | ||
| 207 | |||
| 189 | #ifdef BF561_FAMILY | 208 | #ifdef BF561_FAMILY |
| 190 | static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB}; | 209 | static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB}; |
| 191 | #endif | 210 | #endif |
| @@ -238,7 +257,7 @@ static int cmp_label(unsigned short ident, const char *label) | |||
| 238 | return -EINVAL; | 257 | return -EINVAL; |
| 239 | } | 258 | } |
| 240 | 259 | ||
| 241 | #ifdef BF537_FAMILY | 260 | #if defined(BF527_FAMILY) || defined(BF537_FAMILY) |
| 242 | static void port_setup(unsigned short gpio, unsigned short usage) | 261 | static void port_setup(unsigned short gpio, unsigned short usage) |
| 243 | { | 262 | { |
| 244 | if (!check_gpio(gpio)) { | 263 | if (!check_gpio(gpio)) { |
| @@ -354,6 +373,18 @@ inline u16 get_portmux(unsigned short portno) | |||
| 354 | 373 | ||
| 355 | return (pmux >> (2 * gpio_sub_n(portno)) & 0x3); | 374 | return (pmux >> (2 * gpio_sub_n(portno)) & 0x3); |
| 356 | } | 375 | } |
| 376 | #elif defined(BF527_FAMILY) | ||
| 377 | inline void portmux_setup(unsigned short portno, unsigned short function) | ||
| 378 | { | ||
| 379 | u16 pmux, ident = P_IDENT(portno); | ||
| 380 | u8 offset = pmux_offset[gpio_bank(ident)][gpio_sub_n(ident)]; | ||
| 381 | |||
| 382 | pmux = *port_mux[gpio_bank(ident)]; | ||
| 383 | pmux &= ~(3 << offset); | ||
| 384 | pmux |= (function & 3) << offset; | ||
| 385 | *port_mux[gpio_bank(ident)] = pmux; | ||
| 386 | SSYNC(); | ||
| 387 | } | ||
| 357 | #else | 388 | #else |
| 358 | # define portmux_setup(...) do { } while (0) | 389 | # define portmux_setup(...) do { } while (0) |
| 359 | #endif | 390 | #endif |
diff --git a/arch/blackfin/kernel/gptimers.c b/arch/blackfin/kernel/gptimers.c new file mode 100644 index 000000000000..cb7ba9bfc79c --- /dev/null +++ b/arch/blackfin/kernel/gptimers.c | |||
| @@ -0,0 +1,250 @@ | |||
| 1 | /* | ||
| 2 | * bfin_gptimers.c - derived from bf53x_timers.c | ||
| 3 | * Driver for General Purpose Timer functions on the Blackfin processor | ||
| 4 | * | ||
| 5 | * Copyright (C) 2005 John DeHority | ||
| 6 | * Copyright (C) 2006 Hella Aglaia GmbH (awe@aglaia-gmbh.de) | ||
| 7 | * | ||
| 8 | * Licensed under the GPLv2. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/module.h> | ||
| 13 | |||
| 14 | #include <asm/io.h> | ||
| 15 | #include <asm/blackfin.h> | ||
| 16 | #include <asm/gptimers.h> | ||
| 17 | |||
| 18 | #ifdef DEBUG | ||
| 19 | # define tassert(expr) | ||
| 20 | #else | ||
| 21 | # define tassert(expr) \ | ||
| 22 | if (!(expr)) \ | ||
| 23 | printk(KERN_DEBUG "%s:%s:%i: Assertion failed: " #expr "\n", \ | ||
| 24 | __FILE__, __func__, __LINE__); | ||
| 25 | #endif | ||
| 26 | |||
| 27 | #define BFIN_TIMER_NUM_GROUP (BFIN_TIMER_OCTET(MAX_BLACKFIN_GPTIMERS - 1) + 1) | ||
| 28 | |||
| 29 | typedef struct { | ||
| 30 | uint16_t config; | ||
| 31 | uint16_t __pad; | ||
| 32 | uint32_t counter; | ||
| 33 | uint32_t period; | ||
| 34 | uint32_t width; | ||
| 35 | } GPTIMER_timer_regs; | ||
| 36 | |||
| 37 | typedef struct { | ||
| 38 | uint16_t enable; | ||
| 39 | uint16_t __pad0; | ||
| 40 | uint16_t disable; | ||
| 41 | uint16_t __pad1; | ||
| 42 | uint32_t status; | ||
| 43 | } GPTIMER_group_regs; | ||
| 44 | |||
| 45 | static volatile GPTIMER_timer_regs *const timer_regs[MAX_BLACKFIN_GPTIMERS] = | ||
| 46 | { | ||
| 47 | (GPTIMER_timer_regs *)TIMER0_CONFIG, | ||
| 48 | (GPTIMER_timer_regs *)TIMER1_CONFIG, | ||
| 49 | (GPTIMER_timer_regs *)TIMER2_CONFIG, | ||
| 50 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 51 | (GPTIMER_timer_regs *)TIMER3_CONFIG, | ||
| 52 | (GPTIMER_timer_regs *)TIMER4_CONFIG, | ||
| 53 | (GPTIMER_timer_regs *)TIMER5_CONFIG, | ||
| 54 | (GPTIMER_timer_regs *)TIMER6_CONFIG, | ||
| 55 | (GPTIMER_timer_regs *)TIMER7_CONFIG, | ||
| 56 | #endif | ||
| 57 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 58 | (GPTIMER_timer_regs *)TIMER8_CONFIG, | ||
| 59 | (GPTIMER_timer_regs *)TIMER9_CONFIG, | ||
| 60 | (GPTIMER_timer_regs *)TIMER10_CONFIG, | ||
| 61 | (GPTIMER_timer_regs *)TIMER11_CONFIG, | ||
| 62 | #endif | ||
| 63 | }; | ||
| 64 | |||
| 65 | static volatile GPTIMER_group_regs *const group_regs[BFIN_TIMER_NUM_GROUP] = | ||
| 66 | { | ||
| 67 | (GPTIMER_group_regs *)TIMER0_GROUP_REG, | ||
| 68 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 69 | (GPTIMER_group_regs *)TIMER8_GROUP_REG, | ||
| 70 | #endif | ||
| 71 | }; | ||
| 72 | |||
| 73 | static uint32_t const dis_mask[MAX_BLACKFIN_GPTIMERS] = | ||
| 74 | { | ||
| 75 | TIMER_STATUS_TRUN0, | ||
| 76 | TIMER_STATUS_TRUN1, | ||
| 77 | TIMER_STATUS_TRUN2, | ||
| 78 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 79 | TIMER_STATUS_TRUN3, | ||
| 80 | TIMER_STATUS_TRUN4, | ||
| 81 | TIMER_STATUS_TRUN5, | ||
| 82 | TIMER_STATUS_TRUN6, | ||
| 83 | TIMER_STATUS_TRUN7, | ||
| 84 | #endif | ||
| 85 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 86 | TIMER_STATUS_TRUN8, | ||
| 87 | TIMER_STATUS_TRUN9, | ||
| 88 | TIMER_STATUS_TRUN10, | ||
| 89 | TIMER_STATUS_TRUN11, | ||
| 90 | #endif | ||
| 91 | }; | ||
| 92 | |||
| 93 | static uint32_t const irq_mask[MAX_BLACKFIN_GPTIMERS] = | ||
| 94 | { | ||
| 95 | TIMER_STATUS_TIMIL0, | ||
| 96 | TIMER_STATUS_TIMIL1, | ||
| 97 | TIMER_STATUS_TIMIL2, | ||
| 98 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 99 | TIMER_STATUS_TIMIL3, | ||
| 100 | TIMER_STATUS_TIMIL4, | ||
| 101 | TIMER_STATUS_TIMIL5, | ||
| 102 | TIMER_STATUS_TIMIL6, | ||
| 103 | TIMER_STATUS_TIMIL7, | ||
| 104 | #endif | ||
| 105 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 106 | TIMER_STATUS_TIMIL8, | ||
| 107 | TIMER_STATUS_TIMIL9, | ||
| 108 | TIMER_STATUS_TIMIL10, | ||
| 109 | TIMER_STATUS_TIMIL11, | ||
| 110 | #endif | ||
| 111 | }; | ||
| 112 | |||
| 113 | void set_gptimer_pwidth(int timer_id, uint32_t value) | ||
| 114 | { | ||
| 115 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 116 | timer_regs[timer_id]->width = value; | ||
| 117 | SSYNC(); | ||
| 118 | } | ||
| 119 | EXPORT_SYMBOL(set_gptimer_pwidth); | ||
| 120 | |||
| 121 | uint32_t get_gptimer_pwidth(int timer_id) | ||
| 122 | { | ||
| 123 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 124 | return timer_regs[timer_id]->width; | ||
| 125 | } | ||
| 126 | EXPORT_SYMBOL(get_gptimer_pwidth); | ||
| 127 | |||
| 128 | void set_gptimer_period(int timer_id, uint32_t period) | ||
| 129 | { | ||
| 130 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 131 | timer_regs[timer_id]->period = period; | ||
| 132 | SSYNC(); | ||
| 133 | } | ||
| 134 | EXPORT_SYMBOL(set_gptimer_period); | ||
| 135 | |||
| 136 | uint32_t get_gptimer_period(int timer_id) | ||
| 137 | { | ||
| 138 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 139 | return timer_regs[timer_id]->period; | ||
| 140 | } | ||
| 141 | EXPORT_SYMBOL(get_gptimer_period); | ||
| 142 | |||
| 143 | uint32_t get_gptimer_count(int timer_id) | ||
| 144 | { | ||
| 145 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 146 | return timer_regs[timer_id]->counter; | ||
| 147 | } | ||
| 148 | EXPORT_SYMBOL(get_gptimer_count); | ||
| 149 | |||
| 150 | uint32_t get_gptimer_status(int group) | ||
| 151 | { | ||
| 152 | tassert(group < BFIN_TIMER_NUM_GROUP); | ||
| 153 | return group_regs[group]->status; | ||
| 154 | } | ||
| 155 | EXPORT_SYMBOL(get_gptimer_status); | ||
| 156 | |||
| 157 | void set_gptimer_status(int group, uint32_t value) | ||
| 158 | { | ||
| 159 | tassert(group < BFIN_TIMER_NUM_GROUP); | ||
| 160 | group_regs[group]->status = value; | ||
| 161 | SSYNC(); | ||
| 162 | } | ||
| 163 | EXPORT_SYMBOL(set_gptimer_status); | ||
| 164 | |||
| 165 | uint16_t get_gptimer_intr(int timer_id) | ||
| 166 | { | ||
| 167 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 168 | return (group_regs[BFIN_TIMER_OCTET(timer_id)]->status & irq_mask[timer_id]) ? 1 : 0; | ||
| 169 | } | ||
| 170 | EXPORT_SYMBOL(get_gptimer_intr); | ||
| 171 | |||
| 172 | void clear_gptimer_intr(int timer_id) | ||
| 173 | { | ||
| 174 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 175 | group_regs[BFIN_TIMER_OCTET(timer_id)]->status = irq_mask[timer_id]; | ||
| 176 | } | ||
| 177 | EXPORT_SYMBOL(clear_gptimer_intr); | ||
| 178 | |||
| 179 | void set_gptimer_config(int timer_id, uint16_t config) | ||
| 180 | { | ||
| 181 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 182 | timer_regs[timer_id]->config = config; | ||
| 183 | SSYNC(); | ||
| 184 | } | ||
| 185 | EXPORT_SYMBOL(set_gptimer_config); | ||
| 186 | |||
| 187 | uint16_t get_gptimer_config(int timer_id) | ||
| 188 | { | ||
| 189 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 190 | return timer_regs[timer_id]->config; | ||
| 191 | } | ||
| 192 | EXPORT_SYMBOL(get_gptimer_config); | ||
| 193 | |||
| 194 | void enable_gptimers(uint16_t mask) | ||
| 195 | { | ||
| 196 | int i; | ||
| 197 | tassert((mask & ~BLACKFIN_GPTIMER_IDMASK) == 0); | ||
| 198 | for (i = 0; i < BFIN_TIMER_NUM_GROUP; ++i) { | ||
| 199 | group_regs[i]->enable = mask & 0xFF; | ||
| 200 | mask >>= 8; | ||
| 201 | } | ||
| 202 | SSYNC(); | ||
| 203 | } | ||
| 204 | EXPORT_SYMBOL(enable_gptimers); | ||
| 205 | |||
| 206 | void disable_gptimers(uint16_t mask) | ||
| 207 | { | ||
| 208 | int i; | ||
| 209 | uint16_t m = mask; | ||
| 210 | tassert((mask & ~BLACKFIN_GPTIMER_IDMASK) == 0); | ||
| 211 | for (i = 0; i < BFIN_TIMER_NUM_GROUP; ++i) { | ||
| 212 | group_regs[i]->disable = m & 0xFF; | ||
| 213 | m >>= 8; | ||
| 214 | } | ||
| 215 | for (i = 0; i < MAX_BLACKFIN_GPTIMERS; ++i) | ||
| 216 | if (mask & (1 << i)) | ||
| 217 | group_regs[BFIN_TIMER_OCTET(i)]->status |= dis_mask[i]; | ||
| 218 | SSYNC(); | ||
| 219 | } | ||
| 220 | EXPORT_SYMBOL(disable_gptimers); | ||
| 221 | |||
| 222 | void set_gptimer_pulse_hi(int timer_id) | ||
| 223 | { | ||
| 224 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 225 | timer_regs[timer_id]->config |= TIMER_PULSE_HI; | ||
| 226 | SSYNC(); | ||
| 227 | } | ||
| 228 | EXPORT_SYMBOL(set_gptimer_pulse_hi); | ||
| 229 | |||
| 230 | void clear_gptimer_pulse_hi(int timer_id) | ||
| 231 | { | ||
| 232 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 233 | timer_regs[timer_id]->config &= ~TIMER_PULSE_HI; | ||
| 234 | SSYNC(); | ||
| 235 | } | ||
| 236 | EXPORT_SYMBOL(clear_gptimer_pulse_hi); | ||
| 237 | |||
| 238 | uint16_t get_enabled_gptimers(void) | ||
| 239 | { | ||
| 240 | int i; | ||
| 241 | uint16_t result = 0; | ||
| 242 | for (i = 0; i < BFIN_TIMER_NUM_GROUP; ++i) | ||
| 243 | result |= (group_regs[i]->enable << (i << 3)); | ||
| 244 | return result; | ||
| 245 | } | ||
| 246 | EXPORT_SYMBOL(get_enabled_gptimers); | ||
| 247 | |||
| 248 | MODULE_AUTHOR("Axel Weiss (awe@aglaia-gmbh.de)"); | ||
| 249 | MODULE_DESCRIPTION("Blackfin General Purpose Timers API"); | ||
| 250 | MODULE_LICENSE("GPL"); | ||
diff --git a/arch/blackfin/kernel/reboot.c b/arch/blackfin/kernel/reboot.c index 356078ec462b..ae28aac6fec1 100644 --- a/arch/blackfin/kernel/reboot.c +++ b/arch/blackfin/kernel/reboot.c | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | #include <asm/reboot.h> | 11 | #include <asm/reboot.h> |
| 12 | #include <asm/system.h> | 12 | #include <asm/system.h> |
| 13 | 13 | ||
| 14 | #if defined(BF537_FAMILY) || defined(BF533_FAMILY) | 14 | #if defined(BF537_FAMILY) || defined(BF533_FAMILY) || defined(BF527_FAMILY) |
| 15 | #define SYSCR_VAL 0x0 | 15 | #define SYSCR_VAL 0x0 |
| 16 | #elif defined(BF561_FAMILY) | 16 | #elif defined(BF561_FAMILY) |
| 17 | #define SYSCR_VAL 0x20 | 17 | #define SYSCR_VAL 0x20 |
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index 8dcd76e87ed5..0e746449c29b 100644 --- a/arch/blackfin/kernel/setup.c +++ b/arch/blackfin/kernel/setup.c | |||
| @@ -459,7 +459,7 @@ static u_long get_vco(void) | |||
| 459 | return vco; | 459 | return vco; |
| 460 | } | 460 | } |
| 461 | 461 | ||
| 462 | /*Get the Core clock*/ | 462 | /* Get the Core clock */ |
| 463 | u_long get_cclk(void) | 463 | u_long get_cclk(void) |
| 464 | { | 464 | { |
| 465 | u_long csel, ssel; | 465 | u_long csel, ssel; |
| @@ -493,12 +493,24 @@ u_long get_sclk(void) | |||
| 493 | } | 493 | } |
| 494 | EXPORT_SYMBOL(get_sclk); | 494 | EXPORT_SYMBOL(get_sclk); |
| 495 | 495 | ||
| 496 | unsigned long sclk_to_usecs(unsigned long sclk) | ||
| 497 | { | ||
| 498 | return (USEC_PER_SEC * (u64)sclk) / get_sclk(); | ||
| 499 | } | ||
| 500 | EXPORT_SYMBOL(sclk_to_usecs); | ||
| 501 | |||
| 502 | unsigned long usecs_to_sclk(unsigned long usecs) | ||
| 503 | { | ||
| 504 | return get_sclk() / (USEC_PER_SEC * (u64)usecs); | ||
| 505 | } | ||
| 506 | EXPORT_SYMBOL(usecs_to_sclk); | ||
| 507 | |||
| 496 | /* | 508 | /* |
| 497 | * Get CPU information for use by the procfs. | 509 | * Get CPU information for use by the procfs. |
| 498 | */ | 510 | */ |
| 499 | static int show_cpuinfo(struct seq_file *m, void *v) | 511 | static int show_cpuinfo(struct seq_file *m, void *v) |
| 500 | { | 512 | { |
| 501 | char *cpu, *mmu, *fpu, *name; | 513 | char *cpu, *mmu, *fpu, *vendor, *cache; |
| 502 | uint32_t revid; | 514 | uint32_t revid; |
| 503 | 515 | ||
| 504 | u_long cclk = 0, sclk = 0; | 516 | u_long cclk = 0, sclk = 0; |
| @@ -508,70 +520,83 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
| 508 | mmu = "none"; | 520 | mmu = "none"; |
| 509 | fpu = "none"; | 521 | fpu = "none"; |
| 510 | revid = bfin_revid(); | 522 | revid = bfin_revid(); |
| 511 | name = bfin_board_name; | ||
| 512 | 523 | ||
| 513 | cclk = get_cclk(); | 524 | cclk = get_cclk(); |
| 514 | sclk = get_sclk(); | 525 | sclk = get_sclk(); |
| 515 | 526 | ||
| 516 | seq_printf(m, "CPU:\t\tADSP-%s Rev. 0.%d\n" | 527 | switch (bfin_read_CHIPID() & CHIPID_MANUFACTURE) { |
| 517 | "MMU:\t\t%s\n" | 528 | case 0xca: |
| 518 | "FPU:\t\t%s\n" | 529 | vendor = "Analog Devices"; |
| 519 | "Core Clock:\t%9lu Hz\n" | 530 | break; |
| 520 | "System Clock:\t%9lu Hz\n" | 531 | default: |
| 521 | "BogoMips:\t%lu.%02lu\n" | 532 | vendor = "unknown"; |
| 522 | "Calibration:\t%lu loops\n", | 533 | break; |
| 523 | cpu, revid, mmu, fpu, | 534 | } |
| 524 | cclk, | ||
| 525 | sclk, | ||
| 526 | (loops_per_jiffy * HZ) / 500000, | ||
| 527 | ((loops_per_jiffy * HZ) / 5000) % 100, | ||
| 528 | (loops_per_jiffy * HZ)); | ||
| 529 | seq_printf(m, "Board Name:\t%s\n", name); | ||
| 530 | seq_printf(m, "Board Memory:\t%ld MB\n", physical_mem_end >> 20); | ||
| 531 | seq_printf(m, "Kernel Memory:\t%ld MB\n", (unsigned long)_ramend >> 20); | ||
| 532 | if (bfin_read_IMEM_CONTROL() & (ENICPLB | IMC)) | ||
| 533 | seq_printf(m, "I-CACHE:\tON\n"); | ||
| 534 | else | ||
| 535 | seq_printf(m, "I-CACHE:\tOFF\n"); | ||
| 536 | if ((bfin_read_DMEM_CONTROL()) & (ENDCPLB | DMC_ENABLE)) | ||
| 537 | seq_printf(m, "D-CACHE:\tON" | ||
| 538 | #if defined CONFIG_BFIN_WB | ||
| 539 | " (write-back)" | ||
| 540 | #elif defined CONFIG_BFIN_WT | ||
| 541 | " (write-through)" | ||
| 542 | #endif | ||
| 543 | "\n"); | ||
| 544 | else | ||
| 545 | seq_printf(m, "D-CACHE:\tOFF\n"); | ||
| 546 | |||
| 547 | 535 | ||
| 536 | seq_printf(m, "processor\t: %d\n" | ||
| 537 | "vendor_id\t: %s\n" | ||
| 538 | "cpu family\t: 0x%x\n" | ||
| 539 | "model name\t: ADSP-%s %lu(MHz CCLK) %lu(MHz SCLK)\n" | ||
| 540 | "stepping\t: %d\n", | ||
| 541 | 0, | ||
| 542 | vendor, | ||
| 543 | (bfin_read_CHIPID() & CHIPID_FAMILY), | ||
| 544 | cpu, cclk/1000000, sclk/1000000, | ||
| 545 | revid); | ||
| 546 | |||
| 547 | seq_printf(m, "cpu MHz\t\t: %lu.%03lu/%lu.%03lu\n", | ||
| 548 | cclk/1000000, cclk%1000000, | ||
| 549 | sclk/1000000, sclk%1000000); | ||
| 550 | seq_printf(m, "bogomips\t: %lu.%02lu\n" | ||
| 551 | "Calibration\t: %lu loops\n", | ||
| 552 | (loops_per_jiffy * HZ) / 500000, | ||
| 553 | ((loops_per_jiffy * HZ) / 5000) % 100, | ||
| 554 | (loops_per_jiffy * HZ)); | ||
| 555 | |||
| 556 | /* Check Cache configutation */ | ||
| 548 | switch (bfin_read_DMEM_CONTROL() & (1 << DMC0_P | 1 << DMC1_P)) { | 557 | switch (bfin_read_DMEM_CONTROL() & (1 << DMC0_P | 1 << DMC1_P)) { |
| 549 | case ACACHE_BSRAM: | 558 | case ACACHE_BSRAM: |
| 550 | seq_printf(m, "DBANK-A:\tCACHE\n" "DBANK-B:\tSRAM\n"); | 559 | cache = "dbank-A/B\t: cache/sram"; |
| 551 | dcache_size = 16; | 560 | dcache_size = 16; |
| 552 | dsup_banks = 1; | 561 | dsup_banks = 1; |
| 553 | break; | 562 | break; |
| 554 | case ACACHE_BCACHE: | 563 | case ACACHE_BCACHE: |
| 555 | seq_printf(m, "DBANK-A:\tCACHE\n" "DBANK-B:\tCACHE\n"); | 564 | cache = "dbank-A/B\t: cache/cache"; |
| 556 | dcache_size = 32; | 565 | dcache_size = 32; |
| 557 | dsup_banks = 2; | 566 | dsup_banks = 2; |
| 558 | break; | 567 | break; |
| 559 | case ASRAM_BSRAM: | 568 | case ASRAM_BSRAM: |
| 560 | seq_printf(m, "DBANK-A:\tSRAM\n" "DBANK-B:\tSRAM\n"); | 569 | cache = "dbank-A/B\t: sram/sram"; |
| 561 | dcache_size = 0; | 570 | dcache_size = 0; |
| 562 | dsup_banks = 0; | 571 | dsup_banks = 0; |
| 563 | break; | 572 | break; |
| 564 | default: | 573 | default: |
| 574 | cache = "unknown"; | ||
| 575 | dcache_size = 0; | ||
| 576 | dsup_banks = 0; | ||
| 565 | break; | 577 | break; |
| 566 | } | 578 | } |
| 567 | 579 | ||
| 580 | /* Is it turned on? */ | ||
| 581 | if (!((bfin_read_DMEM_CONTROL()) & (ENDCPLB | DMC_ENABLE))) | ||
| 582 | dcache_size = 0; | ||
| 568 | 583 | ||
| 569 | seq_printf(m, "I-CACHE Size:\t%dKB\n", BFIN_ICACHESIZE / 1024); | 584 | seq_printf(m, "cache size\t: %d KB(L1 icache) " |
| 570 | seq_printf(m, "D-CACHE Size:\t%dKB\n", dcache_size); | 585 | "%d KB(L1 dcache-%s) %d KB(L2 cache)\n", |
| 571 | seq_printf(m, "I-CACHE Setup:\t%d Sub-banks/%d Ways, %d Lines/Way\n", | 586 | BFIN_ICACHESIZE / 1024, dcache_size, |
| 587 | #if defined CONFIG_BFIN_WB | ||
| 588 | "wb" | ||
| 589 | #elif defined CONFIG_BFIN_WT | ||
| 590 | "wt" | ||
| 591 | #endif | ||
| 592 | , 0); | ||
| 593 | |||
| 594 | seq_printf(m, "%s\n", cache); | ||
| 595 | |||
| 596 | seq_printf(m, "icache setup\t: %d Sub-banks/%d Ways, %d Lines/Way\n", | ||
| 572 | BFIN_ISUBBANKS, BFIN_IWAYS, BFIN_ILINES); | 597 | BFIN_ISUBBANKS, BFIN_IWAYS, BFIN_ILINES); |
| 573 | seq_printf(m, | 598 | seq_printf(m, |
| 574 | "D-CACHE Setup:\t%d Super-banks/%d Sub-banks/%d Ways, %d Lines/Way\n", | 599 | "dcache setup\t: %d Super-banks/%d Sub-banks/%d Ways, %d Lines/Way\n", |
| 575 | dsup_banks, BFIN_DSUBBANKS, BFIN_DWAYS, | 600 | dsup_banks, BFIN_DSUBBANKS, BFIN_DWAYS, |
| 576 | BFIN_DLINES); | 601 | BFIN_DLINES); |
| 577 | #ifdef CONFIG_BFIN_ICACHE_LOCK | 602 | #ifdef CONFIG_BFIN_ICACHE_LOCK |
| @@ -625,6 +650,15 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
| 625 | seq_printf(m, "No Ways are locked\n"); | 650 | seq_printf(m, "No Ways are locked\n"); |
| 626 | } | 651 | } |
| 627 | #endif | 652 | #endif |
| 653 | |||
| 654 | seq_printf(m, "board name\t: %s\n", bfin_board_name); | ||
| 655 | seq_printf(m, "board memory\t: %ld kB (0x%p -> 0x%p)\n", | ||
| 656 | physical_mem_end >> 10, (void *)0, (void *)physical_mem_end); | ||
| 657 | seq_printf(m, "kernel memory\t: %d kB (0x%p -> 0x%p)\n", | ||
| 658 | ((int)memory_end - (int)_stext) >> 10, | ||
| 659 | _stext, | ||
| 660 | (void *)memory_end); | ||
| 661 | |||
| 628 | return 0; | 662 | return 0; |
| 629 | } | 663 | } |
| 630 | 664 | ||
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index 8823e9ade584..afd044e78af6 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c | |||
| @@ -118,12 +118,14 @@ static int printk_address(unsigned long address) | |||
| 118 | offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT); | 118 | offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT); |
| 119 | 119 | ||
| 120 | write_unlock_irq(&tasklist_lock); | 120 | write_unlock_irq(&tasklist_lock); |
| 121 | mmput(mm); | ||
| 121 | return printk("<0x%p> [ %s + 0x%lx ]", | 122 | return printk("<0x%p> [ %s + 0x%lx ]", |
| 122 | (void *)address, name, offset); | 123 | (void *)address, name, offset); |
| 123 | } | 124 | } |
| 124 | 125 | ||
| 125 | vml = vml->next; | 126 | vml = vml->next; |
| 126 | } | 127 | } |
| 128 | mmput(mm); | ||
| 127 | } | 129 | } |
| 128 | write_unlock_irq(&tasklist_lock); | 130 | write_unlock_irq(&tasklist_lock); |
| 129 | 131 | ||
diff --git a/arch/blackfin/lib/Makefile b/arch/blackfin/lib/Makefile index 635288fc5f54..bfdad52c570b 100644 --- a/arch/blackfin/lib/Makefile +++ b/arch/blackfin/lib/Makefile | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | lib-y := \ | 5 | lib-y := \ |
| 6 | ashldi3.o ashrdi3.o lshrdi3.o \ | 6 | ashldi3.o ashrdi3.o lshrdi3.o \ |
| 7 | muldi3.o divsi3.o udivsi3.o modsi3.o umodsi3.o \ | 7 | muldi3.o divsi3.o udivsi3.o udivdi3.o modsi3.o umodsi3.o \ |
| 8 | checksum.o memcpy.o memset.o memcmp.o memchr.o memmove.o \ | 8 | checksum.o memcpy.o memset.o memcmp.o memchr.o memmove.o \ |
| 9 | strcmp.o strcpy.o strncmp.o strncpy.o \ | 9 | strcmp.o strcpy.o strncmp.o strncpy.o \ |
| 10 | umulsi3_highpart.o smulsi3_highpart.o \ | 10 | umulsi3_highpart.o smulsi3_highpart.o \ |
diff --git a/arch/blackfin/lib/udivdi3.S b/arch/blackfin/lib/udivdi3.S new file mode 100644 index 000000000000..ad1ebee675e1 --- /dev/null +++ b/arch/blackfin/lib/udivdi3.S | |||
| @@ -0,0 +1,375 @@ | |||
| 1 | /* | ||
| 2 | * udivdi3.S - unsigned long long division | ||
| 3 | * | ||
| 4 | * Copyright 2003-2007 Analog Devices Inc. | ||
| 5 | * Enter bugs at http://blackfin.uclinux.org/ | ||
| 6 | * | ||
| 7 | * Licensed under the GPLv2 or later. | ||
| 8 | */ | ||
| 9 | |||
| 10 | #include <linux/linkage.h> | ||
| 11 | |||
| 12 | #define CARRY AC0 | ||
| 13 | |||
| 14 | #ifdef CONFIG_ARITHMETIC_OPS_L1 | ||
| 15 | .section .l1.text | ||
| 16 | #else | ||
| 17 | .text | ||
| 18 | #endif | ||
| 19 | |||
| 20 | |||
| 21 | ENTRY(___udivdi3) | ||
| 22 | R3 = [SP + 12]; | ||
| 23 | [--SP] = (R7:4, P5:3); | ||
| 24 | |||
| 25 | /* Attempt to use divide primitive first; these will handle | ||
| 26 | ** most cases, and they're quick - avoids stalls incurred by | ||
| 27 | ** testing for identities. | ||
| 28 | */ | ||
| 29 | |||
| 30 | R4 = R2 | R3; | ||
| 31 | CC = R4 == 0; | ||
| 32 | IF CC JUMP .LDIV_BY_ZERO; | ||
| 33 | |||
| 34 | R4.H = 0x8000; | ||
| 35 | R4 >>>= 16; // R4 now 0xFFFF8000 | ||
| 36 | R5 = R0 | R2; // If either dividend or | ||
| 37 | R4 = R5 & R4; // divisor have bits in | ||
| 38 | CC = R4; // top half or low half's sign | ||
| 39 | IF CC JUMP .LIDENTS; // bit, skip builtins. | ||
| 40 | R4 = R1 | R3; // Also check top halves | ||
| 41 | CC = R4; | ||
| 42 | IF CC JUMP .LIDENTS; | ||
| 43 | |||
| 44 | /* Can use the builtins. */ | ||
| 45 | |||
| 46 | AQ = CC; // Clear AQ (CC==0) | ||
| 47 | DIVQ(R0, R2); | ||
| 48 | DIVQ(R0, R2); | ||
| 49 | DIVQ(R0, R2); | ||
| 50 | DIVQ(R0, R2); | ||
| 51 | DIVQ(R0, R2); | ||
| 52 | DIVQ(R0, R2); | ||
| 53 | DIVQ(R0, R2); | ||
| 54 | DIVQ(R0, R2); | ||
| 55 | DIVQ(R0, R2); | ||
| 56 | DIVQ(R0, R2); | ||
| 57 | DIVQ(R0, R2); | ||
| 58 | DIVQ(R0, R2); | ||
| 59 | DIVQ(R0, R2); | ||
| 60 | DIVQ(R0, R2); | ||
| 61 | DIVQ(R0, R2); | ||
| 62 | DIVQ(R0, R2); | ||
| 63 | DIVQ(R0, R2); | ||
| 64 | R0 = R0.L (Z); | ||
| 65 | R1 = 0; | ||
| 66 | (R7:4, P5:3) = [SP++]; | ||
| 67 | RTS; | ||
| 68 | |||
| 69 | .LIDENTS: | ||
| 70 | /* Test for common identities. Value to be returned is | ||
| 71 | ** placed in R6,R7. | ||
| 72 | */ | ||
| 73 | // Check for 0/y, return 0 | ||
| 74 | R4 = R0 | R1; | ||
| 75 | CC = R4 == 0; | ||
| 76 | IF CC JUMP .LRETURN_R0; | ||
| 77 | |||
| 78 | // Check for x/x, return 1 | ||
| 79 | R6 = R0 - R2; // If x == y, then both R6 and R7 will be zero | ||
| 80 | R7 = R1 - R3; | ||
| 81 | R4 = R6 | R7; // making R4 zero. | ||
| 82 | R6 += 1; // which would now make R6:R7==1. | ||
| 83 | CC = R4 == 0; | ||
| 84 | IF CC JUMP .LRETURN_IDENT; | ||
| 85 | |||
| 86 | // Check for x/1, return x | ||
| 87 | R6 = R0; | ||
| 88 | R7 = R1; | ||
| 89 | CC = R3 == 0; | ||
| 90 | IF !CC JUMP .Lnexttest; | ||
| 91 | CC = R2 == 1; | ||
| 92 | IF CC JUMP .LRETURN_IDENT; | ||
| 93 | |||
| 94 | .Lnexttest: | ||
| 95 | R4.L = ONES R2; // check for div by power of two which | ||
| 96 | R5.L = ONES R3; // can be done using a shift | ||
| 97 | R6 = PACK (R5.L, R4.L); | ||
| 98 | CC = R6 == 1; | ||
| 99 | IF CC JUMP .Lpower_of_two_upper_zero; | ||
| 100 | R6 = PACK (R4.L, R5.L); | ||
| 101 | CC = R6 == 1; | ||
| 102 | IF CC JUMP .Lpower_of_two_lower_zero; | ||
| 103 | |||
| 104 | // Check for x < y, return 0 | ||
| 105 | R6 = 0; | ||
| 106 | R7 = R6; | ||
| 107 | CC = R1 < R3 (IU); | ||
| 108 | IF CC JUMP .LRETURN_IDENT; | ||
| 109 | CC = R1 == R3; | ||
| 110 | IF !CC JUMP .Lno_idents; | ||
| 111 | CC = R0 < R2 (IU); | ||
| 112 | IF CC JUMP .LRETURN_IDENT; | ||
| 113 | |||
| 114 | .Lno_idents: // Idents don't match. Go for the full operation | ||
| 115 | |||
| 116 | |||
| 117 | // If X, or X and Y have high bit set, it'll affect the | ||
| 118 | // results, so shift right one to stop this. Note: we've already | ||
| 119 | // checked that X >= Y, so Y's msb won't be set unless X's | ||
| 120 | // is. | ||
| 121 | |||
| 122 | R4 = 0; | ||
| 123 | CC = R1 < 0; | ||
| 124 | IF !CC JUMP .Lx_msb_clear; | ||
| 125 | CC = !CC; // 1 -> 0; | ||
| 126 | R1 = ROT R1 BY -1; // Shift X >> 1 | ||
| 127 | R0 = ROT R0 BY -1; // lsb -> CC | ||
| 128 | BITSET(R4,31); // to record only x msb was set | ||
| 129 | CC = R3 < 0; | ||
| 130 | IF !CC JUMP .Ly_msb_clear; | ||
| 131 | CC = !CC; | ||
| 132 | R3 = ROT R3 BY -1; // Shift Y >> 1 | ||
| 133 | R2 = ROT R2 BY -1; | ||
| 134 | BITCLR(R4,31); // clear bit to record only x msb was set | ||
| 135 | |||
| 136 | .Ly_msb_clear: | ||
| 137 | .Lx_msb_clear: | ||
| 138 | // Bit 31 in R4 indicates X msb set, but Y msb wasn't, and no bits | ||
| 139 | // were lost, so we should shift result left by one. | ||
| 140 | |||
| 141 | [--SP] = R4; // save for later | ||
| 142 | |||
| 143 | // In the loop that follows, each iteration we add | ||
| 144 | // either Y' or -Y' to the Remainder. We compute the | ||
| 145 | // negated Y', and store, for convenience. Y' goes | ||
| 146 | // into P0:P1, while -Y' goes into P2:P3. | ||
| 147 | |||
| 148 | P0 = R2; | ||
| 149 | P1 = R3; | ||
| 150 | R2 = -R2; | ||
| 151 | CC = CARRY; | ||
| 152 | CC = !CC; | ||
| 153 | R4 = CC; | ||
| 154 | R3 = -R3; | ||
| 155 | R3 = R3 - R4; | ||
| 156 | |||
| 157 | R6 = 0; // remainder = 0 | ||
| 158 | R7 = R6; | ||
| 159 | |||
| 160 | [--SP] = R2; P2 = SP; | ||
| 161 | [--SP] = R3; P3 = SP; | ||
| 162 | [--SP] = R6; P5 = SP; // AQ = 0 | ||
| 163 | [--SP] = P1; | ||
| 164 | |||
| 165 | /* In the loop that follows, we use the following | ||
| 166 | ** register assignments: | ||
| 167 | ** R0,R1 X, workspace | ||
| 168 | ** R2,R3 Y, workspace | ||
| 169 | ** R4,R5 partial Div | ||
| 170 | ** R6,R7 partial remainder | ||
| 171 | ** P5 AQ | ||
| 172 | ** The remainder and div form a 128-bit number, with | ||
| 173 | ** the remainder in the high 64-bits. | ||
| 174 | */ | ||
| 175 | R4 = R0; // Div = X' | ||
| 176 | R5 = R1; | ||
| 177 | R3 = 0; | ||
| 178 | |||
| 179 | P4 = 64; // Iterate once per bit | ||
| 180 | LSETUP(.LULST,.LULEND) LC0 = P4; | ||
| 181 | .LULST: | ||
| 182 | /* Shift Div and remainder up by one. The bit shifted | ||
| 183 | ** out of the top of the quotient is shifted into the bottom | ||
| 184 | ** of the remainder. | ||
| 185 | */ | ||
| 186 | CC = R3; | ||
| 187 | R4 = ROT R4 BY 1; | ||
| 188 | R5 = ROT R5 BY 1 || // low q to high q | ||
| 189 | R2 = [P5]; // load saved AQ | ||
| 190 | R6 = ROT R6 BY 1 || // high q to low r | ||
| 191 | R0 = [P2]; // load -Y' | ||
| 192 | R7 = ROT R7 BY 1 || // low r to high r | ||
| 193 | R1 = [P3]; | ||
| 194 | |||
| 195 | // Assume add -Y' | ||
| 196 | CC = R2 < 0; // But if AQ is set... | ||
| 197 | IF CC R0 = P0; // then add Y' instead | ||
| 198 | IF CC R1 = P1; | ||
| 199 | |||
| 200 | R6 = R6 + R0; // Rem += (Y' or -Y') | ||
| 201 | CC = CARRY; | ||
| 202 | R0 = CC; | ||
| 203 | R7 = R7 + R1; | ||
| 204 | R7 = R7 + R0 (NS) || | ||
| 205 | R1 = [SP]; | ||
| 206 | // Set the next AQ bit | ||
| 207 | R1 = R7 ^ R1; // from Remainder and Y' | ||
| 208 | R1 = R1 >> 31 || // Negate AQ's value, and | ||
| 209 | [P5] = R1; // save next AQ | ||
| 210 | BITTGL(R1, 0); // add neg AQ to the Div | ||
| 211 | .LULEND: R4 = R4 + R1; | ||
| 212 | |||
| 213 | R6 = [SP + 16]; | ||
| 214 | |||
| 215 | R0 = R4; | ||
| 216 | R1 = R5; | ||
| 217 | CC = BITTST(R6,30); // Just set CC=0 | ||
| 218 | R4 = ROT R0 BY 1; // but if we had to shift X, | ||
| 219 | R5 = ROT R1 BY 1; // and didn't shift any bits out, | ||
| 220 | CC = BITTST(R6,31); // then the result will be half as | ||
| 221 | IF CC R0 = R4; // much as required, so shift left | ||
| 222 | IF CC R1 = R5; // one space. | ||
| 223 | |||
| 224 | SP += 20; | ||
| 225 | (R7:4, P5:3) = [SP++]; | ||
| 226 | RTS; | ||
| 227 | |||
| 228 | .Lpower_of_two: | ||
| 229 | /* Y has a single bit set, which means it's a power of two. | ||
| 230 | ** That means we can perform the division just by shifting | ||
| 231 | ** X to the right the appropriate number of bits | ||
| 232 | */ | ||
| 233 | |||
| 234 | /* signbits returns the number of sign bits, minus one. | ||
| 235 | ** 1=>30, 2=>29, ..., 0x40000000=>0. Which means we need | ||
| 236 | ** to shift right n-signbits spaces. It also means 0x80000000 | ||
| 237 | ** is a special case, because that *also* gives a signbits of 0 | ||
| 238 | */ | ||
| 239 | .Lpower_of_two_lower_zero: | ||
| 240 | R7 = 0; | ||
| 241 | R6 = R1 >> 31; | ||
| 242 | CC = R3 < 0; | ||
| 243 | IF CC JUMP .LRETURN_IDENT; | ||
| 244 | |||
| 245 | R2.L = SIGNBITS R3; | ||
| 246 | R2 = R2.L (Z); | ||
| 247 | R2 += -62; | ||
| 248 | (R7:4, P5:3) = [SP++]; | ||
| 249 | JUMP ___lshftli; | ||
| 250 | |||
| 251 | .Lpower_of_two_upper_zero: | ||
| 252 | CC = R2 < 0; | ||
| 253 | IF CC JUMP .Lmaxint_shift; | ||
| 254 | |||
| 255 | R2.L = SIGNBITS R2; | ||
| 256 | R2 = R2.L (Z); | ||
| 257 | R2 += -30; | ||
| 258 | (R7:4, P5:3) = [SP++]; | ||
| 259 | JUMP ___lshftli; | ||
| 260 | |||
| 261 | .Lmaxint_shift: | ||
| 262 | R2 = -31; | ||
| 263 | (R7:4, P5:3) = [SP++]; | ||
| 264 | JUMP ___lshftli; | ||
| 265 | |||
| 266 | .LRETURN_IDENT: | ||
| 267 | R0 = R6; | ||
| 268 | R1 = R7; | ||
| 269 | .LRETURN_R0: | ||
| 270 | (R7:4, P5:3) = [SP++]; | ||
| 271 | RTS; | ||
| 272 | .LDIV_BY_ZERO: | ||
| 273 | R0 = ~R2; | ||
| 274 | R1 = R0; | ||
| 275 | (R7:4, P5:3) = [SP++]; | ||
| 276 | RTS; | ||
| 277 | |||
| 278 | ENDPROC(___udivdi3) | ||
| 279 | |||
| 280 | |||
| 281 | ENTRY(___lshftli) | ||
| 282 | CC = R2 == 0; | ||
| 283 | IF CC JUMP .Lfinished; // nothing to do | ||
| 284 | CC = R2 < 0; | ||
| 285 | IF CC JUMP .Lrshift; | ||
| 286 | R3 = 64; | ||
| 287 | CC = R2 < R3; | ||
| 288 | IF !CC JUMP .Lretzero; | ||
| 289 | |||
| 290 | // We're shifting left, and it's less than 64 bits, so | ||
| 291 | // a valid result will be returned. | ||
| 292 | |||
| 293 | R3 >>= 1; // R3 now 32 | ||
| 294 | CC = R2 < R3; | ||
| 295 | |||
| 296 | IF !CC JUMP .Lzerohalf; | ||
| 297 | |||
| 298 | // We're shifting left, between 1 and 31 bits, which means | ||
| 299 | // some of the low half will be shifted into the high half. | ||
| 300 | // Work out how much. | ||
| 301 | |||
| 302 | R3 = R3 - R2; | ||
| 303 | |||
| 304 | // Save that much data from the bottom half. | ||
| 305 | |||
| 306 | P1 = R7; | ||
| 307 | R7 = R0; | ||
| 308 | R7 >>= R3; | ||
| 309 | |||
| 310 | // Adjust both parts of the parameter. | ||
| 311 | |||
| 312 | R0 <<= R2; | ||
| 313 | R1 <<= R2; | ||
| 314 | |||
| 315 | // And include the bits moved across. | ||
| 316 | |||
| 317 | R1 = R1 | R7; | ||
| 318 | R7 = P1; | ||
| 319 | RTS; | ||
| 320 | |||
| 321 | .Lzerohalf: | ||
| 322 | // We're shifting left, between 32 and 63 bits, so the | ||
| 323 | // bottom half will become zero, and the top half will | ||
| 324 | // lose some bits. How many? | ||
| 325 | |||
| 326 | R2 = R2 - R3; // N - 32 | ||
| 327 | R1 = LSHIFT R0 BY R2.L; | ||
| 328 | R0 = R0 - R0; | ||
| 329 | RTS; | ||
| 330 | |||
| 331 | .Lretzero: | ||
| 332 | R0 = R0 - R0; | ||
| 333 | R1 = R0; | ||
| 334 | .Lfinished: | ||
| 335 | RTS; | ||
| 336 | |||
| 337 | .Lrshift: | ||
| 338 | // We're shifting right, but by how much? | ||
| 339 | R2 = -R2; | ||
| 340 | R3 = 64; | ||
| 341 | CC = R2 < R3; | ||
| 342 | IF !CC JUMP .Lretzero; | ||
| 343 | |||
| 344 | // Shifting right less than 64 bits, so some result bits will | ||
| 345 | // be retained. | ||
| 346 | |||
| 347 | R3 >>= 1; // R3 now 32 | ||
| 348 | CC = R2 < R3; | ||
| 349 | IF !CC JUMP .Lsignhalf; | ||
| 350 | |||
| 351 | // Shifting right between 1 and 31 bits, so need to copy | ||
| 352 | // data across words. | ||
| 353 | |||
| 354 | P1 = R7; | ||
| 355 | R3 = R3 - R2; | ||
| 356 | R7 = R1; | ||
| 357 | R7 <<= R3; | ||
| 358 | R1 >>= R2; | ||
| 359 | R0 >>= R2; | ||
| 360 | R0 = R7 | R0; | ||
| 361 | R7 = P1; | ||
| 362 | RTS; | ||
| 363 | |||
| 364 | .Lsignhalf: | ||
| 365 | // Shifting right between 32 and 63 bits, so the top half | ||
| 366 | // will become all zero-bits, and the bottom half is some | ||
| 367 | // of the top half. But how much? | ||
| 368 | |||
| 369 | R2 = R2 - R3; | ||
| 370 | R0 = R1; | ||
| 371 | R0 >>= R2; | ||
| 372 | R1 = 0; | ||
| 373 | RTS; | ||
| 374 | |||
| 375 | ENDPROC(___lshftli) | ||
diff --git a/arch/blackfin/mach-bf527/Kconfig b/arch/blackfin/mach-bf527/Kconfig new file mode 100644 index 000000000000..50321f723dee --- /dev/null +++ b/arch/blackfin/mach-bf527/Kconfig | |||
| @@ -0,0 +1,251 @@ | |||
| 1 | if (BF52x) | ||
| 2 | |||
| 3 | menu "BF527 Specific Configuration" | ||
| 4 | |||
| 5 | comment "Alternative Multiplexing Scheme" | ||
| 6 | |||
| 7 | choice | ||
| 8 | prompt "SPORT0" | ||
| 9 | default BF527_SPORT0_PORTG | ||
| 10 | help | ||
| 11 | Select PORT used for SPORT0. See Hardware Reference Manual | ||
| 12 | |||
| 13 | config BF527_SPORT0_PORTF | ||
| 14 | bool "PORT F" | ||
| 15 | help | ||
| 16 | PORT F | ||
| 17 | |||
| 18 | config BF527_SPORT0_PORTG | ||
| 19 | bool "PORT G" | ||
| 20 | help | ||
| 21 | PORT G | ||
| 22 | endchoice | ||
| 23 | |||
| 24 | choice | ||
| 25 | prompt "SPORT0 TSCLK Location" | ||
| 26 | depends on BF527_SPORT0_PORTG | ||
| 27 | default BF527_SPORT0_TSCLK_PG10 | ||
| 28 | help | ||
| 29 | Select PIN used for SPORT0_TSCLK. See Hardware Reference Manual | ||
| 30 | |||
| 31 | config BF527_SPORT0_TSCLK_PG10 | ||
| 32 | bool "PORT PG10" | ||
| 33 | help | ||
| 34 | PORT PG10 | ||
| 35 | |||
| 36 | config BF527_SPORT0_TSCLK_PG14 | ||
| 37 | bool "PORT PG14" | ||
| 38 | help | ||
| 39 | PORT PG14 | ||
| 40 | endchoice | ||
| 41 | |||
| 42 | choice | ||
| 43 | prompt "UART1" | ||
| 44 | default BF527_UART1_PORTG | ||
| 45 | help | ||
| 46 | Select PORT used for UART1. See Hardware Reference Manual | ||
| 47 | |||
| 48 | config BF527_UART1_PORTF | ||
| 49 | bool "PORT F" | ||
| 50 | help | ||
| 51 | PORT F | ||
| 52 | |||
| 53 | config BF527_UART1_PORTG | ||
| 54 | bool "PORT G" | ||
| 55 | help | ||
| 56 | PORT G | ||
| 57 | endchoice | ||
| 58 | |||
| 59 | choice | ||
| 60 | prompt "NAND (NFC) Data" | ||
| 61 | default BF527_NAND_D_PORTH | ||
| 62 | help | ||
| 63 | Select PORT used for NAND Data Bus. See Hardware Reference Manual | ||
| 64 | |||
| 65 | config BF527_NAND_D_PORTF | ||
| 66 | bool "PORT F" | ||
| 67 | help | ||
| 68 | PORT F | ||
| 69 | |||
| 70 | config BF527_NAND_D_PORTH | ||
| 71 | bool "PORT H" | ||
| 72 | help | ||
| 73 | PORT H | ||
| 74 | endchoice | ||
| 75 | |||
| 76 | comment "Interrupt Priority Assignment" | ||
| 77 | menu "Priority" | ||
| 78 | |||
| 79 | config IRQ_PLL_WAKEUP | ||
| 80 | int "IRQ_PLL_WAKEUP" | ||
| 81 | default 7 | ||
| 82 | config IRQ_DMA0_ERROR | ||
| 83 | int "IRQ_DMA0_ERROR" | ||
| 84 | default 7 | ||
| 85 | config IRQ_DMAR0_BLK | ||
| 86 | int "IRQ_DMAR0_BLK" | ||
| 87 | default 7 | ||
| 88 | config IRQ_DMAR1_BLK | ||
| 89 | int "IRQ_DMAR1_BLK" | ||
| 90 | default 7 | ||
| 91 | config IRQ_DMAR0_OVR | ||
| 92 | int "IRQ_DMAR0_OVR" | ||
| 93 | default 7 | ||
| 94 | config IRQ_DMAR1_OVR | ||
| 95 | int "IRQ_DMAR1_OVR" | ||
| 96 | default 7 | ||
| 97 | config IRQ_PPI_ERROR | ||
| 98 | int "IRQ_PPI_ERROR" | ||
| 99 | default 7 | ||
| 100 | config IRQ_MAC_ERROR | ||
| 101 | int "IRQ_MAC_ERROR" | ||
| 102 | default 7 | ||
| 103 | config IRQ_SPORT0_ERROR | ||
| 104 | int "IRQ_SPORT0_ERROR" | ||
| 105 | default 7 | ||
| 106 | config IRQ_SPORT1_ERROR | ||
| 107 | int "IRQ_SPORT1_ERROR" | ||
| 108 | default 7 | ||
| 109 | config IRQ_UART0_ERROR | ||
| 110 | int "IRQ_UART0_ERROR" | ||
| 111 | default 7 | ||
| 112 | config IRQ_UART1_ERROR | ||
| 113 | int "IRQ_UART1_ERROR" | ||
| 114 | default 7 | ||
| 115 | config IRQ_RTC | ||
| 116 | int "IRQ_RTC" | ||
| 117 | default 8 | ||
| 118 | config IRQ_PPI | ||
| 119 | int "IRQ_PPI" | ||
| 120 | default 8 | ||
| 121 | config IRQ_SPORT0_RX | ||
| 122 | int "IRQ_SPORT0_RX" | ||
| 123 | default 9 | ||
| 124 | config IRQ_SPORT0_TX | ||
| 125 | int "IRQ_SPORT0_TX" | ||
| 126 | default 9 | ||
| 127 | config IRQ_SPORT1_RX | ||
| 128 | int "IRQ_SPORT1_RX" | ||
| 129 | default 9 | ||
| 130 | config IRQ_SPORT1_TX | ||
| 131 | int "IRQ_SPORT1_TX" | ||
| 132 | default 9 | ||
| 133 | config IRQ_TWI | ||
| 134 | int "IRQ_TWI" | ||
| 135 | default 10 | ||
| 136 | config IRQ_SPI | ||
| 137 | int "IRQ_SPI" | ||
| 138 | default 10 | ||
| 139 | config IRQ_UART0_RX | ||
| 140 | int "IRQ_UART0_RX" | ||
| 141 | default 10 | ||
| 142 | config IRQ_UART0_TX | ||
| 143 | int "IRQ_UART0_TX" | ||
| 144 | default 10 | ||
| 145 | config IRQ_UART1_RX | ||
| 146 | int "IRQ_UART1_RX" | ||
| 147 | default 10 | ||
| 148 | config IRQ_UART1_TX | ||
| 149 | int "IRQ_UART1_TX" | ||
| 150 | default 10 | ||
| 151 | config IRQ_OPTSEC | ||
| 152 | int "IRQ_OPTSEC" | ||
| 153 | default 11 | ||
| 154 | config IRQ_CNT | ||
| 155 | int "IRQ_CNT" | ||
| 156 | default 11 | ||
| 157 | config IRQ_MAC_RX | ||
| 158 | int "IRQ_MAC_RX" | ||
| 159 | default 11 | ||
| 160 | config IRQ_PORTH_INTA | ||
| 161 | int "IRQ_PORTH_INTA" | ||
| 162 | default 11 | ||
| 163 | config IRQ_MAC_TX | ||
| 164 | int "IRQ_MAC_TX/NFC" | ||
| 165 | default 11 | ||
| 166 | config IRQ_PORTH_INTB | ||
| 167 | int "IRQ_PORTH_INTB" | ||
| 168 | default 11 | ||
| 169 | config IRQ_TMR0 | ||
| 170 | int "IRQ_TMR0" | ||
| 171 | default 12 | ||
| 172 | config IRQ_TMR1 | ||
| 173 | int "IRQ_TMR1" | ||
| 174 | default 12 | ||
| 175 | config IRQ_TMR2 | ||
| 176 | int "IRQ_TMR2" | ||
| 177 | default 12 | ||
| 178 | config IRQ_TMR3 | ||
| 179 | int "IRQ_TMR3" | ||
| 180 | default 12 | ||
| 181 | config IRQ_TMR4 | ||
| 182 | int "IRQ_TMR4" | ||
| 183 | default 12 | ||
| 184 | config IRQ_TMR5 | ||
| 185 | int "IRQ_TMR5" | ||
| 186 | default 12 | ||
| 187 | config IRQ_TMR6 | ||
| 188 | int "IRQ_TMR6" | ||
| 189 | default 12 | ||
| 190 | config IRQ_TMR7 | ||
| 191 | int "IRQ_TMR7" | ||
| 192 | default 12 | ||
| 193 | config IRQ_PORTG_INTA | ||
| 194 | int "IRQ_PORTG_INTA" | ||
| 195 | default 12 | ||
| 196 | config IRQ_PORTG_INTB | ||
| 197 | int "IRQ_PORTG_INTB" | ||
| 198 | default 12 | ||
| 199 | config IRQ_MEM_DMA0 | ||
| 200 | int "IRQ_MEM_DMA0" | ||
| 201 | default 13 | ||
| 202 | config IRQ_MEM_DMA1 | ||
| 203 | int "IRQ_MEM_DMA1" | ||
| 204 | default 13 | ||
| 205 | config IRQ_WATCH | ||
| 206 | int "IRQ_WATCH" | ||
| 207 | default 13 | ||
| 208 | config IRQ_PORTF_INTA | ||
| 209 | int "IRQ_PORTF_INTA" | ||
| 210 | default 13 | ||
| 211 | config IRQ_PORTF_INTB | ||
| 212 | int "IRQ_PORTF_INTB" | ||
| 213 | default 13 | ||
| 214 | config IRQ_SPI_ERROR | ||
| 215 | int "IRQ_SPI_ERROR" | ||
| 216 | default 7 | ||
| 217 | config IRQ_NFC_ERROR | ||
| 218 | int "IRQ_NFC_ERROR" | ||
| 219 | default 7 | ||
| 220 | config IRQ_HDMA_ERROR | ||
| 221 | int "IRQ_HDMA_ERROR" | ||
| 222 | default 7 | ||
| 223 | config IRQ_HDMA | ||
| 224 | int "IRQ_HDMA" | ||
| 225 | default 7 | ||
| 226 | config IRQ_USB_EINT | ||
| 227 | int "IRQ_USB_EINT" | ||
| 228 | default 10 | ||
| 229 | config IRQ_USB_INT0 | ||
| 230 | int "IRQ_USB_INT0" | ||
| 231 | default 10 | ||
| 232 | config IRQ_USB_INT1 | ||
| 233 | int "IRQ_USB_INT1" | ||
| 234 | default 10 | ||
| 235 | config IRQ_USB_INT2 | ||
| 236 | int "IRQ_USB_INT2" | ||
| 237 | default 10 | ||
| 238 | config IRQ_USB_DMA | ||
| 239 | int "IRQ_USB_DMA" | ||
| 240 | default 10 | ||
| 241 | |||
| 242 | help | ||
| 243 | Enter the priority numbers between 7-13 ONLY. Others are Reserved. | ||
| 244 | This applies to all the above. It is not recommended to assign the | ||
| 245 | highest priority number 7 to UART or any other device. | ||
| 246 | |||
| 247 | endmenu | ||
| 248 | |||
| 249 | endmenu | ||
| 250 | |||
| 251 | endif | ||
diff --git a/arch/blackfin/mach-bf527/Makefile b/arch/blackfin/mach-bf527/Makefile new file mode 100644 index 000000000000..9f99f5d0bcd1 --- /dev/null +++ b/arch/blackfin/mach-bf527/Makefile | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | # | ||
| 2 | # arch/blackfin/mach-bf527/Makefile | ||
| 3 | # | ||
| 4 | |||
| 5 | extra-y := head.o | ||
| 6 | |||
| 7 | obj-y := ints-priority.o dma.o | ||
| 8 | |||
| 9 | obj-$(CONFIG_CPU_FREQ) += cpu.o | ||
diff --git a/arch/blackfin/mach-bf527/boards/Makefile b/arch/blackfin/mach-bf527/boards/Makefile new file mode 100644 index 000000000000..912ac8ebc889 --- /dev/null +++ b/arch/blackfin/mach-bf527/boards/Makefile | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | # | ||
| 2 | # arch/blackfin/mach-bf532/boards/Makefile | ||
| 3 | # | ||
| 4 | |||
| 5 | obj-y += eth_mac.o | ||
| 6 | obj-$(CONFIG_BFIN527_EZKIT) += ezkit.o | ||
| 7 | |||
diff --git a/arch/blackfin/mach-bf527/boards/eth_mac.c b/arch/blackfin/mach-bf527/boards/eth_mac.c new file mode 100644 index 000000000000..a725cc8a9290 --- /dev/null +++ b/arch/blackfin/mach-bf527/boards/eth_mac.c | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | /* | ||
| 2 | * arch/blackfin/mach-bf537/board/eth_mac.c | ||
| 3 | * | ||
| 4 | * Copyright (C) 2007 Analog Devices, Inc. | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License as published by | ||
| 8 | * the Free Software Foundation; either version 2 of the License, or | ||
| 9 | * (at your option) any later version. | ||
| 10 | * | ||
| 11 | * This program is distributed in the hope that it will be useful, | ||
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | * GNU General Public License for more details. | ||
| 15 | * | ||
| 16 | * You should have received a copy of the GNU General Public License | ||
| 17 | * along with this program; if not, write to the Free Software | ||
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 19 | */ | ||
| 20 | #include <linux/module.h> | ||
| 21 | #include <asm/blackfin.h> | ||
| 22 | |||
| 23 | #if defined(CONFIG_GENERIC_BOARD) || defined(CONFIG_BFIN537_STAMP) | ||
| 24 | |||
| 25 | /* | ||
| 26 | * Currently the MAC address is saved in Flash by U-Boot | ||
| 27 | */ | ||
| 28 | #define FLASH_MAC 0x203f0000 | ||
| 29 | |||
| 30 | void get_bf537_ether_addr(char *addr) | ||
| 31 | { | ||
| 32 | unsigned int flash_mac = (unsigned int) FLASH_MAC; | ||
| 33 | *(u32 *)(&(addr[0])) = bfin_read32(flash_mac); | ||
| 34 | flash_mac += 4; | ||
| 35 | *(u16 *)(&(addr[4])) = bfin_read16(flash_mac); | ||
| 36 | } | ||
| 37 | |||
| 38 | #else | ||
| 39 | |||
| 40 | /* | ||
| 41 | * Provide MAC address function for other specific board setting | ||
| 42 | */ | ||
| 43 | void get_bf537_ether_addr(char *addr) | ||
| 44 | { | ||
| 45 | printk(KERN_WARNING "%s: No valid Ethernet MAC address found\n", __FILE__); | ||
| 46 | } | ||
| 47 | |||
| 48 | #endif | ||
| 49 | |||
| 50 | EXPORT_SYMBOL(get_bf537_ether_addr); | ||
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c new file mode 100644 index 000000000000..3e884f3a8182 --- /dev/null +++ b/arch/blackfin/mach-bf527/boards/ezkit.c | |||
| @@ -0,0 +1,737 @@ | |||
| 1 | /* | ||
| 2 | * File: arch/blackfin/mach-bf527/boards/ezkit.c | ||
| 3 | * Based on: arch/blackfin/mach-bf537/boards/stamp.c | ||
| 4 | * Author: Aidan Williams <aidan@nicta.com.au> | ||
| 5 | * | ||
| 6 | * Created: | ||
| 7 | * Description: | ||
| 8 | * | ||
| 9 | * Modified: | ||
| 10 | * Copyright 2005 National ICT Australia (NICTA) | ||
| 11 | * Copyright 2004-2007 Analog Devices Inc. | ||
| 12 | * | ||
| 13 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
| 14 | * | ||
| 15 | * This program is free software; you can redistribute it and/or modify | ||
| 16 | * it under the terms of the GNU General Public License as published by | ||
| 17 | * the Free Software Foundation; either version 2 of the License, or | ||
| 18 | * (at your option) any later version. | ||
| 19 | * | ||
| 20 | * This program is distributed in the hope that it will be useful, | ||
| 21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 22 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 23 | * GNU General Public License for more details. | ||
| 24 | * | ||
| 25 | * You should have received a copy of the GNU General Public License | ||
| 26 | * along with this program; if not, see the file COPYING, or write | ||
| 27 | * to the Free Software Foundation, Inc., | ||
| 28 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 29 | */ | ||
| 30 | |||
| 31 | #include <linux/device.h> | ||
| 32 | #include <linux/platform_device.h> | ||
| 33 | #include <linux/mtd/mtd.h> | ||
| 34 | #include <linux/mtd/partitions.h> | ||
| 35 | #include <linux/spi/spi.h> | ||
| 36 | #include <linux/spi/flash.h> | ||
| 37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | ||
| 38 | #include <linux/usb_isp1362.h> | ||
| 39 | #endif | ||
| 40 | #include <linux/pata_platform.h> | ||
| 41 | #include <linux/irq.h> | ||
| 42 | #include <linux/interrupt.h> | ||
| 43 | #include <linux/usb_sl811.h> | ||
| 44 | #include <asm/dma.h> | ||
| 45 | #include <asm/bfin5xx_spi.h> | ||
| 46 | #include <asm/reboot.h> | ||
| 47 | #include <linux/spi/ad7877.h> | ||
| 48 | |||
| 49 | /* | ||
| 50 | * Name the Board for the /proc/cpuinfo | ||
| 51 | */ | ||
| 52 | const char bfin_board_name[] = "ADDS-BF527-EZKIT"; | ||
| 53 | |||
| 54 | /* | ||
| 55 | * Driver needs to know address, irq and flag pin. | ||
| 56 | */ | ||
| 57 | |||
| 58 | #define ISP1761_BASE 0x203C0000 | ||
| 59 | #define ISP1761_IRQ IRQ_PF7 | ||
| 60 | |||
| 61 | #if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE) | ||
| 62 | static struct resource bfin_isp1761_resources[] = { | ||
| 63 | [0] = { | ||
| 64 | .name = "isp1761-regs", | ||
| 65 | .start = ISP1761_BASE + 0x00000000, | ||
| 66 | .end = ISP1761_BASE + 0x000fffff, | ||
| 67 | .flags = IORESOURCE_MEM, | ||
| 68 | }, | ||
| 69 | [1] = { | ||
| 70 | .start = ISP1761_IRQ, | ||
| 71 | .end = ISP1761_IRQ, | ||
| 72 | .flags = IORESOURCE_IRQ, | ||
| 73 | }, | ||
| 74 | }; | ||
| 75 | |||
| 76 | static struct platform_device bfin_isp1761_device = { | ||
| 77 | .name = "isp1761", | ||
| 78 | .id = 0, | ||
| 79 | .num_resources = ARRAY_SIZE(bfin_isp1761_resources), | ||
| 80 | .resource = bfin_isp1761_resources, | ||
| 81 | }; | ||
| 82 | |||
| 83 | static struct platform_device *bfin_isp1761_devices[] = { | ||
| 84 | &bfin_isp1761_device, | ||
| 85 | }; | ||
| 86 | |||
| 87 | int __init bfin_isp1761_init(void) | ||
| 88 | { | ||
| 89 | unsigned int num_devices = ARRAY_SIZE(bfin_isp1761_devices); | ||
| 90 | |||
| 91 | printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); | ||
| 92 | set_irq_type(ISP1761_IRQ, IRQF_TRIGGER_FALLING); | ||
| 93 | |||
| 94 | return platform_add_devices(bfin_isp1761_devices, num_devices); | ||
| 95 | } | ||
| 96 | |||
| 97 | void __exit bfin_isp1761_exit(void) | ||
| 98 | { | ||
| 99 | platform_device_unregister(&bfin_isp1761_device); | ||
| 100 | } | ||
| 101 | |||
| 102 | arch_initcall(bfin_isp1761_init); | ||
| 103 | #endif | ||
| 104 | |||
| 105 | #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) | ||
| 106 | static struct resource bfin_pcmcia_cf_resources[] = { | ||
| 107 | { | ||
| 108 | .start = 0x20310000, /* IO PORT */ | ||
| 109 | .end = 0x20312000, | ||
| 110 | .flags = IORESOURCE_MEM, | ||
| 111 | }, { | ||
| 112 | .start = 0x20311000, /* Attribute Memory */ | ||
| 113 | .end = 0x20311FFF, | ||
| 114 | .flags = IORESOURCE_MEM, | ||
| 115 | }, { | ||
| 116 | .start = IRQ_PF4, | ||
| 117 | .end = IRQ_PF4, | ||
| 118 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL, | ||
| 119 | }, { | ||
| 120 | .start = 6, /* Card Detect PF6 */ | ||
| 121 | .end = 6, | ||
| 122 | .flags = IORESOURCE_IRQ, | ||
| 123 | }, | ||
| 124 | }; | ||
| 125 | |||
| 126 | static struct platform_device bfin_pcmcia_cf_device = { | ||
| 127 | .name = "bfin_cf_pcmcia", | ||
| 128 | .id = -1, | ||
| 129 | .num_resources = ARRAY_SIZE(bfin_pcmcia_cf_resources), | ||
| 130 | .resource = bfin_pcmcia_cf_resources, | ||
| 131 | }; | ||
| 132 | #endif | ||
| 133 | |||
| 134 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | ||
| 135 | static struct platform_device rtc_device = { | ||
| 136 | .name = "rtc-bfin", | ||
| 137 | .id = -1, | ||
| 138 | }; | ||
| 139 | #endif | ||
| 140 | |||
| 141 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) | ||
| 142 | static struct resource smc91x_resources[] = { | ||
| 143 | { | ||
| 144 | .name = "smc91x-regs", | ||
| 145 | .start = 0x20300300, | ||
| 146 | .end = 0x20300300 + 16, | ||
| 147 | .flags = IORESOURCE_MEM, | ||
| 148 | }, { | ||
| 149 | |||
| 150 | .start = IRQ_PF7, | ||
| 151 | .end = IRQ_PF7, | ||
| 152 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
| 153 | }, | ||
| 154 | }; | ||
| 155 | static struct platform_device smc91x_device = { | ||
| 156 | .name = "smc91x", | ||
| 157 | .id = 0, | ||
| 158 | .num_resources = ARRAY_SIZE(smc91x_resources), | ||
| 159 | .resource = smc91x_resources, | ||
| 160 | }; | ||
| 161 | #endif | ||
| 162 | |||
| 163 | #if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) | ||
| 164 | static struct resource dm9000_resources[] = { | ||
| 165 | [0] = { | ||
| 166 | .start = 0x203FB800, | ||
| 167 | .end = 0x203FB800 + 8, | ||
| 168 | .flags = IORESOURCE_MEM, | ||
| 169 | }, | ||
| 170 | [1] = { | ||
| 171 | .start = IRQ_PF9, | ||
| 172 | .end = IRQ_PF9, | ||
| 173 | .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE), | ||
| 174 | }, | ||
| 175 | }; | ||
| 176 | |||
| 177 | static struct platform_device dm9000_device = { | ||
| 178 | .name = "dm9000", | ||
| 179 | .id = -1, | ||
| 180 | .num_resources = ARRAY_SIZE(dm9000_resources), | ||
| 181 | .resource = dm9000_resources, | ||
| 182 | }; | ||
| 183 | #endif | ||
| 184 | |||
| 185 | #if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE) | ||
| 186 | static struct resource sl811_hcd_resources[] = { | ||
| 187 | { | ||
| 188 | .start = 0x20340000, | ||
| 189 | .end = 0x20340000, | ||
| 190 | .flags = IORESOURCE_MEM, | ||
| 191 | }, { | ||
| 192 | .start = 0x20340004, | ||
| 193 | .end = 0x20340004, | ||
| 194 | .flags = IORESOURCE_MEM, | ||
| 195 | }, { | ||
| 196 | .start = CONFIG_USB_SL811_BFIN_IRQ, | ||
| 197 | .end = CONFIG_USB_SL811_BFIN_IRQ, | ||
| 198 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
| 199 | }, | ||
| 200 | }; | ||
| 201 | |||
| 202 | #if defined(CONFIG_USB_SL811_BFIN_USE_VBUS) | ||
| 203 | void sl811_port_power(struct device *dev, int is_on) | ||
| 204 | { | ||
| 205 | gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS"); | ||
| 206 | gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS); | ||
| 207 | |||
| 208 | if (is_on) | ||
| 209 | gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1); | ||
| 210 | else | ||
| 211 | gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0); | ||
| 212 | } | ||
| 213 | #endif | ||
| 214 | |||
| 215 | static struct sl811_platform_data sl811_priv = { | ||
| 216 | .potpg = 10, | ||
| 217 | .power = 250, /* == 500mA */ | ||
| 218 | #if defined(CONFIG_USB_SL811_BFIN_USE_VBUS) | ||
| 219 | .port_power = &sl811_port_power, | ||
| 220 | #endif | ||
| 221 | }; | ||
| 222 | |||
| 223 | static struct platform_device sl811_hcd_device = { | ||
| 224 | .name = "sl811-hcd", | ||
| 225 | .id = 0, | ||
| 226 | .dev = { | ||
| 227 | .platform_data = &sl811_priv, | ||
| 228 | }, | ||
| 229 | .num_resources = ARRAY_SIZE(sl811_hcd_resources), | ||
| 230 | .resource = sl811_hcd_resources, | ||
| 231 | }; | ||
| 232 | #endif | ||
| 233 | |||
| 234 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | ||
| 235 | static struct resource isp1362_hcd_resources[] = { | ||
| 236 | { | ||
| 237 | .start = 0x20360000, | ||
| 238 | .end = 0x20360000, | ||
| 239 | .flags = IORESOURCE_MEM, | ||
| 240 | }, { | ||
| 241 | .start = 0x20360004, | ||
| 242 | .end = 0x20360004, | ||
| 243 | .flags = IORESOURCE_MEM, | ||
| 244 | }, { | ||
| 245 | .start = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ, | ||
| 246 | .end = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ, | ||
| 247 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
| 248 | }, | ||
| 249 | }; | ||
| 250 | |||
| 251 | static struct isp1362_platform_data isp1362_priv = { | ||
| 252 | .sel15Kres = 1, | ||
| 253 | .clknotstop = 0, | ||
| 254 | .oc_enable = 0, | ||
| 255 | .int_act_high = 0, | ||
| 256 | .int_edge_triggered = 0, | ||
| 257 | .remote_wakeup_connected = 0, | ||
| 258 | .no_power_switching = 1, | ||
| 259 | .power_switching_mode = 0, | ||
| 260 | }; | ||
| 261 | |||
| 262 | static struct platform_device isp1362_hcd_device = { | ||
| 263 | .name = "isp1362-hcd", | ||
| 264 | .id = 0, | ||
| 265 | .dev = { | ||
| 266 | .platform_data = &isp1362_priv, | ||
| 267 | }, | ||
| 268 | .num_resources = ARRAY_SIZE(isp1362_hcd_resources), | ||
| 269 | .resource = isp1362_hcd_resources, | ||
| 270 | }; | ||
| 271 | #endif | ||
| 272 | |||
| 273 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) | ||
| 274 | static struct platform_device bfin_mac_device = { | ||
| 275 | .name = "bfin_mac", | ||
| 276 | }; | ||
| 277 | #endif | ||
| 278 | |||
| 279 | #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE) | ||
| 280 | static struct resource net2272_bfin_resources[] = { | ||
| 281 | { | ||
| 282 | .start = 0x20300000, | ||
| 283 | .end = 0x20300000 + 0x100, | ||
| 284 | .flags = IORESOURCE_MEM, | ||
| 285 | }, { | ||
| 286 | .start = IRQ_PF7, | ||
| 287 | .end = IRQ_PF7, | ||
| 288 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
| 289 | }, | ||
| 290 | }; | ||
| 291 | |||
| 292 | static struct platform_device net2272_bfin_device = { | ||
| 293 | .name = "net2272", | ||
| 294 | .id = -1, | ||
| 295 | .num_resources = ARRAY_SIZE(net2272_bfin_resources), | ||
| 296 | .resource = net2272_bfin_resources, | ||
| 297 | }; | ||
| 298 | #endif | ||
| 299 | |||
| 300 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
| 301 | /* all SPI peripherals info goes here */ | ||
| 302 | |||
| 303 | #if defined(CONFIG_MTD_M25P80) \ | ||
| 304 | || defined(CONFIG_MTD_M25P80_MODULE) | ||
| 305 | static struct mtd_partition bfin_spi_flash_partitions[] = { | ||
| 306 | { | ||
| 307 | .name = "bootloader", | ||
| 308 | .size = 0x00020000, | ||
| 309 | .offset = 0, | ||
| 310 | .mask_flags = MTD_CAP_ROM | ||
| 311 | }, { | ||
| 312 | .name = "kernel", | ||
| 313 | .size = 0xe0000, | ||
| 314 | .offset = 0x20000 | ||
| 315 | }, { | ||
| 316 | .name = "file system", | ||
| 317 | .size = 0x700000, | ||
| 318 | .offset = 0x00100000, | ||
| 319 | } | ||
| 320 | }; | ||
| 321 | |||
| 322 | static struct flash_platform_data bfin_spi_flash_data = { | ||
| 323 | .name = "m25p80", | ||
| 324 | .parts = bfin_spi_flash_partitions, | ||
| 325 | .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions), | ||
| 326 | .type = "m25p64", | ||
| 327 | }; | ||
| 328 | |||
| 329 | /* SPI flash chip (m25p64) */ | ||
| 330 | static struct bfin5xx_spi_chip spi_flash_chip_info = { | ||
| 331 | .enable_dma = 0, /* use dma transfer with this chip*/ | ||
| 332 | .bits_per_word = 8, | ||
| 333 | }; | ||
| 334 | #endif | ||
| 335 | |||
| 336 | #if defined(CONFIG_SPI_ADC_BF533) \ | ||
| 337 | || defined(CONFIG_SPI_ADC_BF533_MODULE) | ||
| 338 | /* SPI ADC chip */ | ||
| 339 | static struct bfin5xx_spi_chip spi_adc_chip_info = { | ||
| 340 | .enable_dma = 1, /* use dma transfer with this chip*/ | ||
| 341 | .bits_per_word = 16, | ||
| 342 | }; | ||
| 343 | #endif | ||
| 344 | |||
| 345 | #if defined(CONFIG_SND_BLACKFIN_AD1836) \ | ||
| 346 | || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) | ||
| 347 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | ||
| 348 | .enable_dma = 0, | ||
| 349 | .bits_per_word = 16, | ||
| 350 | }; | ||
| 351 | #endif | ||
| 352 | |||
| 353 | #if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE) | ||
| 354 | static struct bfin5xx_spi_chip ad9960_spi_chip_info = { | ||
| 355 | .enable_dma = 0, | ||
| 356 | .bits_per_word = 16, | ||
| 357 | }; | ||
| 358 | #endif | ||
| 359 | |||
| 360 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) | ||
| 361 | static struct bfin5xx_spi_chip spi_mmc_chip_info = { | ||
| 362 | .enable_dma = 1, | ||
| 363 | .bits_per_word = 8, | ||
| 364 | }; | ||
| 365 | #endif | ||
| 366 | |||
| 367 | #if defined(CONFIG_PBX) | ||
| 368 | static struct bfin5xx_spi_chip spi_si3xxx_chip_info = { | ||
| 369 | .ctl_reg = 0x4, /* send zero */ | ||
| 370 | .enable_dma = 0, | ||
| 371 | .bits_per_word = 8, | ||
| 372 | .cs_change_per_word = 1, | ||
| 373 | }; | ||
| 374 | #endif | ||
| 375 | |||
| 376 | #if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE) | ||
| 377 | static struct bfin5xx_spi_chip ad5304_chip_info = { | ||
| 378 | .enable_dma = 0, | ||
| 379 | .bits_per_word = 16, | ||
| 380 | }; | ||
| 381 | #endif | ||
| 382 | |||
| 383 | #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) | ||
| 384 | static struct bfin5xx_spi_chip spi_ad7877_chip_info = { | ||
| 385 | .enable_dma = 0, | ||
| 386 | .bits_per_word = 16, | ||
| 387 | }; | ||
| 388 | |||
| 389 | static const struct ad7877_platform_data bfin_ad7877_ts_info = { | ||
| 390 | .model = 7877, | ||
| 391 | .vref_delay_usecs = 50, /* internal, no capacitor */ | ||
| 392 | .x_plate_ohms = 419, | ||
| 393 | .y_plate_ohms = 486, | ||
| 394 | .pressure_max = 1000, | ||
| 395 | .pressure_min = 0, | ||
| 396 | .stopacq_polarity = 1, | ||
| 397 | .first_conversion_delay = 3, | ||
| 398 | .acquisition_time = 1, | ||
| 399 | .averaging = 1, | ||
| 400 | .pen_down_acc_interval = 1, | ||
| 401 | }; | ||
| 402 | #endif | ||
| 403 | |||
| 404 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | ||
| 405 | #if defined(CONFIG_MTD_M25P80) \ | ||
| 406 | || defined(CONFIG_MTD_M25P80_MODULE) | ||
| 407 | { | ||
| 408 | /* the modalias must be the same as spi device driver name */ | ||
| 409 | .modalias = "m25p80", /* Name of spi_driver for this device */ | ||
| 410 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | ||
| 411 | .bus_num = 0, /* Framework bus number */ | ||
| 412 | .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/ | ||
| 413 | .platform_data = &bfin_spi_flash_data, | ||
| 414 | .controller_data = &spi_flash_chip_info, | ||
| 415 | .mode = SPI_MODE_3, | ||
| 416 | }, | ||
| 417 | #endif | ||
| 418 | |||
| 419 | #if defined(CONFIG_SPI_ADC_BF533) \ | ||
| 420 | || defined(CONFIG_SPI_ADC_BF533_MODULE) | ||
| 421 | { | ||
| 422 | .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ | ||
| 423 | .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ | ||
| 424 | .bus_num = 0, /* Framework bus number */ | ||
| 425 | .chip_select = 1, /* Framework chip select. */ | ||
| 426 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 427 | .controller_data = &spi_adc_chip_info, | ||
| 428 | }, | ||
| 429 | #endif | ||
| 430 | |||
| 431 | #if defined(CONFIG_SND_BLACKFIN_AD1836) \ | ||
| 432 | || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) | ||
| 433 | { | ||
| 434 | .modalias = "ad1836-spi", | ||
| 435 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | ||
| 436 | .bus_num = 0, | ||
| 437 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | ||
| 438 | .controller_data = &ad1836_spi_chip_info, | ||
| 439 | }, | ||
| 440 | #endif | ||
| 441 | #if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE) | ||
| 442 | { | ||
| 443 | .modalias = "ad9960-spi", | ||
| 444 | .max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */ | ||
| 445 | .bus_num = 0, | ||
| 446 | .chip_select = 1, | ||
| 447 | .controller_data = &ad9960_spi_chip_info, | ||
| 448 | }, | ||
| 449 | #endif | ||
| 450 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) | ||
| 451 | { | ||
| 452 | .modalias = "spi_mmc_dummy", | ||
| 453 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | ||
| 454 | .bus_num = 0, | ||
| 455 | .chip_select = 0, | ||
| 456 | .platform_data = NULL, | ||
| 457 | .controller_data = &spi_mmc_chip_info, | ||
| 458 | .mode = SPI_MODE_3, | ||
| 459 | }, | ||
| 460 | { | ||
| 461 | .modalias = "spi_mmc", | ||
| 462 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | ||
| 463 | .bus_num = 0, | ||
| 464 | .chip_select = CONFIG_SPI_MMC_CS_CHAN, | ||
| 465 | .platform_data = NULL, | ||
| 466 | .controller_data = &spi_mmc_chip_info, | ||
| 467 | .mode = SPI_MODE_3, | ||
| 468 | }, | ||
| 469 | #endif | ||
| 470 | #if defined(CONFIG_PBX) | ||
| 471 | { | ||
| 472 | .modalias = "fxs-spi", | ||
| 473 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ | ||
| 474 | .bus_num = 0, | ||
| 475 | .chip_select = 8 - CONFIG_J11_JUMPER, | ||
| 476 | .controller_data = &spi_si3xxx_chip_info, | ||
| 477 | .mode = SPI_MODE_3, | ||
| 478 | }, | ||
| 479 | { | ||
| 480 | .modalias = "fxo-spi", | ||
| 481 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ | ||
| 482 | .bus_num = 0, | ||
| 483 | .chip_select = 8 - CONFIG_J19_JUMPER, | ||
| 484 | .controller_data = &spi_si3xxx_chip_info, | ||
| 485 | .mode = SPI_MODE_3, | ||
| 486 | }, | ||
| 487 | #endif | ||
| 488 | #if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE) | ||
| 489 | { | ||
| 490 | .modalias = "ad5304_spi", | ||
| 491 | .max_speed_hz = 1250000, /* max spi clock (SCK) speed in HZ */ | ||
| 492 | .bus_num = 0, | ||
| 493 | .chip_select = 2, | ||
| 494 | .platform_data = NULL, | ||
| 495 | .controller_data = &ad5304_chip_info, | ||
| 496 | .mode = SPI_MODE_2, | ||
| 497 | }, | ||
| 498 | #endif | ||
| 499 | #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) | ||
| 500 | { | ||
| 501 | .modalias = "ad7877", | ||
| 502 | .platform_data = &bfin_ad7877_ts_info, | ||
| 503 | .irq = IRQ_PF6, | ||
| 504 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ | ||
| 505 | .bus_num = 1, | ||
| 506 | .chip_select = 1, | ||
| 507 | .controller_data = &spi_ad7877_chip_info, | ||
| 508 | }, | ||
| 509 | #endif | ||
| 510 | }; | ||
| 511 | |||
| 512 | /* SPI controller data */ | ||
| 513 | static struct bfin5xx_spi_master bfin_spi0_info = { | ||
| 514 | .num_chipselect = 8, | ||
| 515 | .enable_dma = 1, /* master has the ability to do dma transfer */ | ||
| 516 | }; | ||
| 517 | |||
| 518 | /* SPI (0) */ | ||
| 519 | static struct resource bfin_spi0_resource[] = { | ||
| 520 | [0] = { | ||
| 521 | .start = SPI0_REGBASE, | ||
| 522 | .end = SPI0_REGBASE + 0xFF, | ||
| 523 | .flags = IORESOURCE_MEM, | ||
| 524 | }, | ||
| 525 | [1] = { | ||
| 526 | .start = CH_SPI, | ||
| 527 | .end = CH_SPI, | ||
| 528 | .flags = IORESOURCE_IRQ, | ||
| 529 | }, | ||
| 530 | }; | ||
| 531 | |||
| 532 | static struct platform_device bfin_spi0_device = { | ||
| 533 | .name = "bfin-spi", | ||
| 534 | .id = 0, /* Bus number */ | ||
| 535 | .num_resources = ARRAY_SIZE(bfin_spi0_resource), | ||
| 536 | .resource = bfin_spi0_resource, | ||
| 537 | .dev = { | ||
| 538 | .platform_data = &bfin_spi0_info, /* Passed to driver */ | ||
| 539 | }, | ||
| 540 | }; | ||
| 541 | #endif /* spi master and devices */ | ||
| 542 | |||
| 543 | #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE) | ||
| 544 | static struct platform_device bfin_fb_device = { | ||
| 545 | .name = "bf537-lq035", | ||
| 546 | }; | ||
| 547 | #endif | ||
| 548 | |||
| 549 | #if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE) | ||
| 550 | static struct platform_device bfin_fb_adv7393_device = { | ||
| 551 | .name = "bfin-adv7393", | ||
| 552 | }; | ||
| 553 | #endif | ||
| 554 | |||
| 555 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | ||
| 556 | static struct resource bfin_uart_resources[] = { | ||
| 557 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
| 558 | { | ||
| 559 | .start = 0xFFC00400, | ||
| 560 | .end = 0xFFC004FF, | ||
| 561 | .flags = IORESOURCE_MEM, | ||
| 562 | }, | ||
| 563 | #endif | ||
| 564 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
| 565 | { | ||
| 566 | .start = 0xFFC02000, | ||
| 567 | .end = 0xFFC020FF, | ||
| 568 | .flags = IORESOURCE_MEM, | ||
| 569 | }, | ||
| 570 | #endif | ||
| 571 | }; | ||
| 572 | |||
| 573 | static struct platform_device bfin_uart_device = { | ||
| 574 | .name = "bfin-uart", | ||
| 575 | .id = 1, | ||
| 576 | .num_resources = ARRAY_SIZE(bfin_uart_resources), | ||
| 577 | .resource = bfin_uart_resources, | ||
| 578 | }; | ||
| 579 | #endif | ||
| 580 | |||
| 581 | #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) | ||
| 582 | static struct resource bfin_twi0_resource[] = { | ||
| 583 | [0] = { | ||
| 584 | .start = TWI0_REGBASE, | ||
| 585 | .end = TWI0_REGBASE, | ||
| 586 | .flags = IORESOURCE_MEM, | ||
| 587 | }, | ||
| 588 | [1] = { | ||
| 589 | .start = IRQ_TWI, | ||
| 590 | .end = IRQ_TWI, | ||
| 591 | .flags = IORESOURCE_IRQ, | ||
| 592 | }, | ||
| 593 | }; | ||
| 594 | |||
| 595 | static struct platform_device i2c_bfin_twi_device = { | ||
| 596 | .name = "i2c-bfin-twi", | ||
| 597 | .id = 0, | ||
| 598 | .num_resources = ARRAY_SIZE(bfin_twi0_resource), | ||
| 599 | .resource = bfin_twi0_resource, | ||
| 600 | }; | ||
| 601 | #endif | ||
| 602 | |||
| 603 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | ||
| 604 | static struct platform_device bfin_sport0_uart_device = { | ||
| 605 | .name = "bfin-sport-uart", | ||
| 606 | .id = 0, | ||
| 607 | }; | ||
| 608 | |||
| 609 | static struct platform_device bfin_sport1_uart_device = { | ||
| 610 | .name = "bfin-sport-uart", | ||
| 611 | .id = 1, | ||
| 612 | }; | ||
| 613 | #endif | ||
| 614 | |||
| 615 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | ||
| 616 | #define PATA_INT 55 | ||
| 617 | |||
| 618 | static struct pata_platform_info bfin_pata_platform_data = { | ||
| 619 | .ioport_shift = 1, | ||
| 620 | .irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED, | ||
| 621 | }; | ||
| 622 | |||
| 623 | static struct resource bfin_pata_resources[] = { | ||
| 624 | { | ||
| 625 | .start = 0x20314020, | ||
| 626 | .end = 0x2031403F, | ||
| 627 | .flags = IORESOURCE_MEM, | ||
| 628 | }, | ||
| 629 | { | ||
| 630 | .start = 0x2031401C, | ||
| 631 | .end = 0x2031401F, | ||
| 632 | .flags = IORESOURCE_MEM, | ||
| 633 | }, | ||
| 634 | { | ||
| 635 | .start = PATA_INT, | ||
| 636 | .end = PATA_INT, | ||
| 637 | .flags = IORESOURCE_IRQ, | ||
| 638 | }, | ||
| 639 | }; | ||
| 640 | |||
| 641 | static struct platform_device bfin_pata_device = { | ||
| 642 | .name = "pata_platform", | ||
| 643 | .id = -1, | ||
| 644 | .num_resources = ARRAY_SIZE(bfin_pata_resources), | ||
| 645 | .resource = bfin_pata_resources, | ||
| 646 | .dev = { | ||
| 647 | .platform_data = &bfin_pata_platform_data, | ||
| 648 | } | ||
| 649 | }; | ||
| 650 | #endif | ||
| 651 | |||
| 652 | static struct platform_device *stamp_devices[] __initdata = { | ||
| 653 | #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) | ||
| 654 | &bfin_pcmcia_cf_device, | ||
| 655 | #endif | ||
| 656 | |||
| 657 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | ||
| 658 | &rtc_device, | ||
| 659 | #endif | ||
| 660 | |||
| 661 | #if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE) | ||
| 662 | &sl811_hcd_device, | ||
| 663 | #endif | ||
| 664 | |||
| 665 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | ||
| 666 | &isp1362_hcd_device, | ||
| 667 | #endif | ||
| 668 | |||
| 669 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) | ||
| 670 | &smc91x_device, | ||
| 671 | #endif | ||
| 672 | |||
| 673 | #if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) | ||
| 674 | &dm9000_device, | ||
| 675 | #endif | ||
| 676 | |||
| 677 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) | ||
| 678 | &bfin_mac_device, | ||
| 679 | #endif | ||
| 680 | |||
| 681 | #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE) | ||
| 682 | &net2272_bfin_device, | ||
| 683 | #endif | ||
| 684 | |||
| 685 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
| 686 | &bfin_spi0_device, | ||
| 687 | #endif | ||
| 688 | |||
| 689 | #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE) | ||
| 690 | &bfin_fb_device, | ||
| 691 | #endif | ||
| 692 | |||
| 693 | #if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE) | ||
| 694 | &bfin_fb_adv7393_device, | ||
| 695 | #endif | ||
| 696 | |||
| 697 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | ||
| 698 | &bfin_uart_device, | ||
| 699 | #endif | ||
| 700 | |||
| 701 | #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) | ||
| 702 | &i2c_bfin_twi_device, | ||
| 703 | #endif | ||
| 704 | |||
| 705 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | ||
| 706 | &bfin_sport0_uart_device, | ||
| 707 | &bfin_sport1_uart_device, | ||
| 708 | #endif | ||
| 709 | |||
| 710 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | ||
| 711 | &bfin_pata_device, | ||
| 712 | #endif | ||
| 713 | }; | ||
| 714 | |||
| 715 | static int __init stamp_init(void) | ||
| 716 | { | ||
| 717 | printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); | ||
| 718 | platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); | ||
| 719 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
| 720 | spi_register_board_info(bfin_spi_board_info, | ||
| 721 | ARRAY_SIZE(bfin_spi_board_info)); | ||
| 722 | #endif | ||
| 723 | |||
| 724 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | ||
| 725 | irq_desc[PATA_INT].status |= IRQ_NOAUTOEN; | ||
| 726 | #endif | ||
| 727 | return 0; | ||
| 728 | } | ||
| 729 | |||
| 730 | arch_initcall(stamp_init); | ||
| 731 | |||
| 732 | void native_machine_restart(char *cmd) | ||
| 733 | { | ||
| 734 | /* workaround reboot hang when booting from SPI */ | ||
| 735 | if ((bfin_read_SYSCR() & 0x7) == 0x3) | ||
| 736 | bfin_gpio_reset_spi0_ssel1(); | ||
| 737 | } | ||
diff --git a/arch/blackfin/mach-bf527/cpu.c b/arch/blackfin/mach-bf527/cpu.c new file mode 100644 index 000000000000..1975402b1dbc --- /dev/null +++ b/arch/blackfin/mach-bf527/cpu.c | |||
| @@ -0,0 +1,161 @@ | |||
| 1 | /* | ||
| 2 | * File: arch/blackfin/mach-bf527/cpu.c | ||
| 3 | * Based on: arch/blackfin/mach-bf537/cpu.c | ||
| 4 | * Author: michael.kang@analog.com | ||
| 5 | * | ||
| 6 | * Created: | ||
| 7 | * Description: clock scaling for the bf527 | ||
| 8 | * | ||
| 9 | * Modified: | ||
| 10 | * Copyright 2004-2007 Analog Devices Inc. | ||
| 11 | * | ||
| 12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
| 13 | * | ||
| 14 | * This program is free software; you can redistribute it and/or modify | ||
| 15 | * it under the terms of the GNU General Public License as published by | ||
| 16 | * the Free Software Foundation; either version 2 of the License, or | ||
| 17 | * (at your option) any later version. | ||
| 18 | * | ||
| 19 | * This program is distributed in the hope that it will be useful, | ||
| 20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 22 | * GNU General Public License for more details. | ||
| 23 | * | ||
| 24 | * You should have received a copy of the GNU General Public License | ||
| 25 | * along with this program; if not, see the file COPYING, or write | ||
| 26 | * to the Free Software Foundation, Inc., | ||
| 27 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 28 | */ | ||
| 29 | |||
| 30 | #include <linux/kernel.h> | ||
| 31 | #include <linux/types.h> | ||
| 32 | #include <linux/init.h> | ||
| 33 | #include <linux/cpufreq.h> | ||
| 34 | #include <asm/dpmc.h> | ||
| 35 | #include <linux/fs.h> | ||
| 36 | #include <asm/bfin-global.h> | ||
| 37 | |||
| 38 | /* CONFIG_CLKIN_HZ=11059200 */ | ||
| 39 | #define VCO5 (CONFIG_CLKIN_HZ*45) /*497664000 */ | ||
| 40 | #define VCO4 (CONFIG_CLKIN_HZ*36) /*398131200 */ | ||
| 41 | #define VCO3 (CONFIG_CLKIN_HZ*27) /*298598400 */ | ||
| 42 | #define VCO2 (CONFIG_CLKIN_HZ*18) /*199065600 */ | ||
| 43 | #define VCO1 (CONFIG_CLKIN_HZ*9) /*99532800 */ | ||
| 44 | #define VCO(x) VCO##x | ||
| 45 | |||
| 46 | #define MFREQ(x) {VCO(x), VCO(x)/4}, {VCO(x), VCO(x)/2}, {VCO(x), VCO(x)} | ||
| 47 | /* frequency */ | ||
| 48 | static struct cpufreq_frequency_table bf527_freq_table[] = { | ||
| 49 | MFREQ(1), | ||
| 50 | MFREQ(3), | ||
| 51 | {VCO4, VCO4 / 2}, {VCO4, VCO4}, | ||
| 52 | MFREQ(5), | ||
| 53 | {0, CPUFREQ_TABLE_END}, | ||
| 54 | }; | ||
| 55 | |||
| 56 | /* | ||
| 57 | * dpmc_fops->ioctl() | ||
| 58 | * static int dpmc_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) | ||
| 59 | */ | ||
| 60 | static int bf527_getfreq(unsigned int cpu) | ||
| 61 | { | ||
| 62 | unsigned long cclk_mhz; | ||
| 63 | |||
| 64 | /* The driver only support single cpu */ | ||
| 65 | if (cpu == 0) | ||
| 66 | dpmc_fops.ioctl(NULL, NULL, IOCTL_GET_CORECLOCK, &cclk_mhz); | ||
| 67 | else | ||
| 68 | cclk_mhz = -1; | ||
| 69 | |||
| 70 | return cclk_mhz; | ||
| 71 | } | ||
| 72 | |||
| 73 | static int bf527_target(struct cpufreq_policy *policy, | ||
| 74 | unsigned int target_freq, unsigned int relation) | ||
| 75 | { | ||
| 76 | unsigned long cclk_mhz; | ||
| 77 | unsigned long vco_mhz; | ||
| 78 | unsigned long flags; | ||
| 79 | unsigned int index; | ||
| 80 | struct cpufreq_freqs freqs; | ||
| 81 | |||
| 82 | if (cpufreq_frequency_table_target | ||
| 83 | (policy, bf527_freq_table, target_freq, relation, &index)) | ||
| 84 | return -EINVAL; | ||
| 85 | |||
| 86 | cclk_mhz = bf527_freq_table[index].frequency; | ||
| 87 | vco_mhz = bf527_freq_table[index].index; | ||
| 88 | |||
| 89 | dpmc_fops.ioctl(NULL, NULL, IOCTL_CHANGE_FREQUENCY, &vco_mhz); | ||
| 90 | freqs.old = bf527_getfreq(0); | ||
| 91 | freqs.new = cclk_mhz; | ||
| 92 | freqs.cpu = 0; | ||
| 93 | |||
| 94 | pr_debug | ||
| 95 | ("cclk begin change to cclk %d,vco=%d,index=%d,target=%d,oldfreq=%d\n", | ||
| 96 | cclk_mhz, vco_mhz, index, target_freq, freqs.old); | ||
| 97 | |||
| 98 | cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); | ||
| 99 | local_irq_save(flags); | ||
| 100 | dpmc_fops.ioctl(NULL, NULL, IOCTL_SET_CCLK, &cclk_mhz); | ||
| 101 | local_irq_restore(flags); | ||
| 102 | cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); | ||
| 103 | |||
| 104 | vco_mhz = get_vco(); | ||
| 105 | cclk_mhz = get_cclk(); | ||
| 106 | return 0; | ||
| 107 | } | ||
| 108 | |||
| 109 | /* make sure that only the "userspace" governor is run -- anything else wouldn't make sense on | ||
| 110 | * this platform, anyway. | ||
| 111 | */ | ||
| 112 | static int bf527_verify_speed(struct cpufreq_policy *policy) | ||
| 113 | { | ||
| 114 | return cpufreq_frequency_table_verify(policy, &bf527_freq_table); | ||
| 115 | } | ||
| 116 | |||
| 117 | static int __init __bf527_cpu_init(struct cpufreq_policy *policy) | ||
| 118 | { | ||
| 119 | if (policy->cpu != 0) | ||
| 120 | return -EINVAL; | ||
| 121 | |||
| 122 | policy->governor = CPUFREQ_DEFAULT_GOVERNOR; | ||
| 123 | |||
| 124 | policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL; | ||
| 125 | /*Now ,only support one cpu */ | ||
| 126 | policy->cur = bf527_getfreq(0); | ||
| 127 | cpufreq_frequency_table_get_attr(bf527_freq_table, policy->cpu); | ||
| 128 | return cpufreq_frequency_table_cpuinfo(policy, bf527_freq_table); | ||
| 129 | } | ||
| 130 | |||
| 131 | static struct freq_attr *bf527_freq_attr[] = { | ||
| 132 | &cpufreq_freq_attr_scaling_available_freqs, | ||
| 133 | NULL, | ||
| 134 | }; | ||
| 135 | |||
| 136 | static struct cpufreq_driver bf527_driver = { | ||
| 137 | .verify = bf527_verify_speed, | ||
| 138 | .target = bf527_target, | ||
| 139 | .get = bf527_getfreq, | ||
| 140 | .init = __bf527_cpu_init, | ||
| 141 | .name = "bf527", | ||
| 142 | .owner = THIS_MODULE, | ||
| 143 | .attr = bf527_freq_attr, | ||
| 144 | }; | ||
| 145 | |||
| 146 | static int __init bf527_cpu_init(void) | ||
| 147 | { | ||
| 148 | return cpufreq_register_driver(&bf527_driver); | ||
| 149 | } | ||
| 150 | |||
| 151 | static void __exit bf527_cpu_exit(void) | ||
| 152 | { | ||
| 153 | cpufreq_unregister_driver(&bf527_driver); | ||
| 154 | } | ||
| 155 | |||
| 156 | MODULE_AUTHOR("Mickael Kang"); | ||
| 157 | MODULE_DESCRIPTION("cpufreq driver for bf527 CPU"); | ||
| 158 | MODULE_LICENSE("GPL"); | ||
| 159 | |||
| 160 | module_init(bf527_cpu_init); | ||
| 161 | module_exit(bf527_cpu_exit); | ||
diff --git a/arch/blackfin/mach-bf527/dma.c b/arch/blackfin/mach-bf527/dma.c new file mode 100644 index 000000000000..522de24cc394 --- /dev/null +++ b/arch/blackfin/mach-bf527/dma.c | |||
| @@ -0,0 +1,115 @@ | |||
| 1 | /* | ||
| 2 | * File: arch/blackfin/mach-bf527/dma.c | ||
| 3 | * Based on: | ||
| 4 | * Author: | ||
| 5 | * | ||
| 6 | * Created: | ||
| 7 | * Description: This file contains the simple DMA Implementation for Blackfin | ||
| 8 | * | ||
| 9 | * Modified: | ||
| 10 | * Copyright 2004-2007 Analog Devices Inc. | ||
| 11 | * | ||
| 12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
| 13 | * | ||
| 14 | * This program is free software; you can redistribute it and/or modify | ||
| 15 | * it under the terms of the GNU General Public License as published by | ||
| 16 | * the Free Software Foundation; either version 2 of the License, or | ||
| 17 | * (at your option) any later version. | ||
| 18 | * | ||
| 19 | * This program is distributed in the hope that it will be useful, | ||
| 20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 22 | * GNU General Public License for more details. | ||
| 23 | * | ||
| 24 | * You should have received a copy of the GNU General Public License | ||
| 25 | * along with this program; if not, see the file COPYING, or write | ||
| 26 | * to the Free Software Foundation, Inc., | ||
| 27 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 28 | */ | ||
| 29 | #include <asm/blackfin.h> | ||
| 30 | #include <asm/dma.h> | ||
| 31 | |||
| 32 | struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = { | ||
| 33 | (struct dma_register *) DMA0_NEXT_DESC_PTR, | ||
| 34 | (struct dma_register *) DMA1_NEXT_DESC_PTR, | ||
| 35 | (struct dma_register *) DMA2_NEXT_DESC_PTR, | ||
| 36 | (struct dma_register *) DMA3_NEXT_DESC_PTR, | ||
| 37 | (struct dma_register *) DMA4_NEXT_DESC_PTR, | ||
| 38 | (struct dma_register *) DMA5_NEXT_DESC_PTR, | ||
| 39 | (struct dma_register *) DMA6_NEXT_DESC_PTR, | ||
| 40 | (struct dma_register *) DMA7_NEXT_DESC_PTR, | ||
| 41 | (struct dma_register *) DMA8_NEXT_DESC_PTR, | ||
| 42 | (struct dma_register *) DMA9_NEXT_DESC_PTR, | ||
| 43 | (struct dma_register *) DMA10_NEXT_DESC_PTR, | ||
| 44 | (struct dma_register *) DMA11_NEXT_DESC_PTR, | ||
| 45 | (struct dma_register *) MDMA_D0_NEXT_DESC_PTR, | ||
| 46 | (struct dma_register *) MDMA_S0_NEXT_DESC_PTR, | ||
| 47 | (struct dma_register *) MDMA_D1_NEXT_DESC_PTR, | ||
| 48 | (struct dma_register *) MDMA_S1_NEXT_DESC_PTR, | ||
| 49 | }; | ||
| 50 | |||
| 51 | int channel2irq(unsigned int channel) | ||
| 52 | { | ||
| 53 | int ret_irq = -1; | ||
| 54 | |||
| 55 | switch (channel) { | ||
| 56 | case CH_PPI: | ||
| 57 | ret_irq = IRQ_PPI; | ||
| 58 | break; | ||
| 59 | |||
| 60 | case CH_EMAC_RX: | ||
| 61 | ret_irq = IRQ_MAC_RX; | ||
| 62 | break; | ||
| 63 | |||
| 64 | case CH_EMAC_TX: | ||
| 65 | ret_irq = IRQ_MAC_TX; | ||
| 66 | break; | ||
| 67 | |||
| 68 | case CH_UART1_RX: | ||
| 69 | ret_irq = IRQ_UART1_RX; | ||
| 70 | break; | ||
| 71 | |||
| 72 | case CH_UART1_TX: | ||
| 73 | ret_irq = IRQ_UART1_TX; | ||
| 74 | break; | ||
| 75 | |||
| 76 | case CH_SPORT0_RX: | ||
| 77 | ret_irq = IRQ_SPORT0_RX; | ||
| 78 | break; | ||
| 79 | |||
| 80 | case CH_SPORT0_TX: | ||
| 81 | ret_irq = IRQ_SPORT0_TX; | ||
| 82 | break; | ||
| 83 | |||
| 84 | case CH_SPORT1_RX: | ||
| 85 | ret_irq = IRQ_SPORT1_RX; | ||
| 86 | break; | ||
| 87 | |||
| 88 | case CH_SPORT1_TX: | ||
| 89 | ret_irq = IRQ_SPORT1_TX; | ||
| 90 | break; | ||
| 91 | |||
| 92 | case CH_SPI: | ||
| 93 | ret_irq = IRQ_SPI; | ||
| 94 | break; | ||
| 95 | |||
| 96 | case CH_UART0_RX: | ||
| 97 | ret_irq = IRQ_UART0_RX; | ||
| 98 | break; | ||
| 99 | |||
| 100 | case CH_UART0_TX: | ||
| 101 | ret_irq = IRQ_UART0_TX; | ||
| 102 | break; | ||
| 103 | |||
| 104 | case CH_MEM_STREAM0_SRC: | ||
| 105 | case CH_MEM_STREAM0_DEST: | ||
| 106 | ret_irq = IRQ_MEM_DMA0; | ||
| 107 | break; | ||
| 108 | |||
| 109 | case CH_MEM_STREAM1_SRC: | ||
| 110 | case CH_MEM_STREAM1_DEST: | ||
| 111 | ret_irq = IRQ_MEM_DMA1; | ||
| 112 | break; | ||
| 113 | } | ||
| 114 | return ret_irq; | ||
| 115 | } | ||
diff --git a/arch/blackfin/mach-bf527/head.S b/arch/blackfin/mach-bf527/head.S new file mode 100644 index 000000000000..cdb00a084965 --- /dev/null +++ b/arch/blackfin/mach-bf527/head.S | |||
| @@ -0,0 +1,456 @@ | |||
| 1 | /* | ||
| 2 | * File: arch/blackfin/mach-bf527/head.S | ||
| 3 | * Based on: arch/blackfin/mach-bf533/head.S | ||
| 4 | * Author: Jeff Dionne <jeff@uclinux.org> COPYRIGHT 1998 D. Jeff Dionne | ||
| 5 | * | ||
| 6 | * Created: 1998 | ||
| 7 | * Description: Startup code for Blackfin BF537 | ||
| 8 | * | ||
| 9 | * Modified: | ||
| 10 | * Copyright 2004-2007 Analog Devices Inc. | ||
| 11 | * | ||
| 12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
| 13 | * | ||
| 14 | * This program is free software; you can redistribute it and/or modify | ||
| 15 | * it under the terms of the GNU General Public License as published by | ||
| 16 | * the Free Software Foundation; either version 2 of the License, or | ||
| 17 | * (at your option) any later version. | ||
| 18 | * | ||
| 19 | * This program is distributed in the hope that it will be useful, | ||
| 20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 22 | * GNU General Public License for more details. | ||
| 23 | * | ||
| 24 | * You should have received a copy of the GNU General Public License | ||
| 25 | * along with this program; if not, see the file COPYING, or write | ||
| 26 | * to the Free Software Foundation, Inc., | ||
| 27 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 28 | */ | ||
| 29 | |||
| 30 | #include <linux/linkage.h> | ||
| 31 | #include <linux/init.h> | ||
| 32 | #include <asm/blackfin.h> | ||
| 33 | #include <asm/trace.h> | ||
| 34 | |||
| 35 | #if CONFIG_BFIN_KERNEL_CLOCK | ||
| 36 | #include <asm/mach-common/clocks.h> | ||
| 37 | #include <asm/mach/mem_init.h> | ||
| 38 | #endif | ||
| 39 | |||
| 40 | .global __rambase | ||
| 41 | .global __ramstart | ||
| 42 | .global __ramend | ||
| 43 | .extern ___bss_stop | ||
| 44 | .extern ___bss_start | ||
| 45 | .extern _bf53x_relocate_l1_mem | ||
| 46 | |||
| 47 | #define INITIAL_STACK 0xFFB01000 | ||
| 48 | |||
| 49 | __INIT | ||
| 50 | |||
| 51 | ENTRY(__start) | ||
| 52 | /* R0: argument of command line string, passed from uboot, save it */ | ||
| 53 | R7 = R0; | ||
| 54 | /* Enable Cycle Counter and Nesting Of Interrupts */ | ||
| 55 | #ifdef CONFIG_BFIN_SCRATCH_REG_CYCLES | ||
| 56 | R0 = SYSCFG_SNEN; | ||
| 57 | #else | ||
| 58 | R0 = SYSCFG_SNEN | SYSCFG_CCEN; | ||
| 59 | #endif | ||
| 60 | SYSCFG = R0; | ||
| 61 | R0 = 0; | ||
| 62 | |||
| 63 | /* Clear Out All the data and pointer Registers */ | ||
| 64 | R1 = R0; | ||
| 65 | R2 = R0; | ||
| 66 | R3 = R0; | ||
| 67 | R4 = R0; | ||
| 68 | R5 = R0; | ||
| 69 | R6 = R0; | ||
| 70 | |||
| 71 | P0 = R0; | ||
| 72 | P1 = R0; | ||
| 73 | P2 = R0; | ||
| 74 | P3 = R0; | ||
| 75 | P4 = R0; | ||
| 76 | P5 = R0; | ||
| 77 | |||
| 78 | LC0 = r0; | ||
| 79 | LC1 = r0; | ||
| 80 | L0 = r0; | ||
| 81 | L1 = r0; | ||
| 82 | L2 = r0; | ||
| 83 | L3 = r0; | ||
| 84 | |||
| 85 | /* Clear Out All the DAG Registers */ | ||
| 86 | B0 = r0; | ||
| 87 | B1 = r0; | ||
| 88 | B2 = r0; | ||
| 89 | B3 = r0; | ||
| 90 | |||
| 91 | I0 = r0; | ||
| 92 | I1 = r0; | ||
| 93 | I2 = r0; | ||
| 94 | I3 = r0; | ||
| 95 | |||
| 96 | M0 = r0; | ||
| 97 | M1 = r0; | ||
| 98 | M2 = r0; | ||
| 99 | M3 = r0; | ||
| 100 | |||
| 101 | trace_buffer_init(p0,r0); | ||
| 102 | P0 = R1; | ||
| 103 | R0 = R1; | ||
| 104 | |||
| 105 | /* Turn off the icache */ | ||
| 106 | p0.l = LO(IMEM_CONTROL); | ||
| 107 | p0.h = HI(IMEM_CONTROL); | ||
| 108 | R1 = [p0]; | ||
| 109 | R0 = ~ENICPLB; | ||
| 110 | R0 = R0 & R1; | ||
| 111 | |||
| 112 | /* Anomaly 05000125 */ | ||
| 113 | #if ANOMALY_05000125 | ||
| 114 | CLI R2; | ||
| 115 | SSYNC; | ||
| 116 | #endif | ||
| 117 | [p0] = R0; | ||
| 118 | SSYNC; | ||
| 119 | #if ANOMALY_05000125 | ||
| 120 | STI R2; | ||
| 121 | #endif | ||
| 122 | |||
| 123 | /* Turn off the dcache */ | ||
| 124 | p0.l = LO(DMEM_CONTROL); | ||
| 125 | p0.h = HI(DMEM_CONTROL); | ||
| 126 | R1 = [p0]; | ||
| 127 | R0 = ~ENDCPLB; | ||
| 128 | R0 = R0 & R1; | ||
| 129 | |||
| 130 | /* Anomaly 05000125 */ | ||
| 131 | #if ANOMALY_05000125 | ||
| 132 | CLI R2; | ||
| 133 | SSYNC; | ||
| 134 | #endif | ||
| 135 | [p0] = R0; | ||
| 136 | SSYNC; | ||
| 137 | #if ANOMALY_05000125 | ||
| 138 | STI R2; | ||
| 139 | #endif | ||
| 140 | |||
| 141 | |||
| 142 | #if defined(CONFIG_BF527) | ||
| 143 | p0.h = hi(EMAC_SYSTAT); | ||
| 144 | p0.l = lo(EMAC_SYSTAT); | ||
| 145 | R0.h = 0xFFFF; /* Clear EMAC Interrupt Status bits */ | ||
| 146 | R0.l = 0xFFFF; | ||
| 147 | [P0] = R0; | ||
| 148 | SSYNC; | ||
| 149 | #endif | ||
| 150 | |||
| 151 | /* Initialise UART - when booting from u-boot, the UART is not disabled | ||
| 152 | * so if we dont initalize here, our serial console gets hosed */ | ||
| 153 | p0.h = hi(UART1_LCR); | ||
| 154 | p0.l = lo(UART1_LCR); | ||
| 155 | r0 = 0x0(Z); | ||
| 156 | w[p0] = r0.L; /* To enable DLL writes */ | ||
| 157 | ssync; | ||
| 158 | |||
| 159 | p0.h = hi(UART1_DLL); | ||
| 160 | p0.l = lo(UART1_DLL); | ||
| 161 | r0 = 0x0(Z); | ||
| 162 | w[p0] = r0.L; | ||
| 163 | ssync; | ||
| 164 | |||
| 165 | p0.h = hi(UART1_DLH); | ||
| 166 | p0.l = lo(UART1_DLH); | ||
| 167 | r0 = 0x00(Z); | ||
| 168 | w[p0] = r0.L; | ||
| 169 | ssync; | ||
| 170 | |||
| 171 | p0.h = hi(UART1_GCTL); | ||
| 172 | p0.l = lo(UART1_GCTL); | ||
| 173 | r0 = 0x0(Z); | ||
| 174 | w[p0] = r0.L; /* To enable UART clock */ | ||
| 175 | ssync; | ||
| 176 | |||
| 177 | /* Initialize stack pointer */ | ||
| 178 | sp.l = lo(INITIAL_STACK); | ||
| 179 | sp.h = hi(INITIAL_STACK); | ||
| 180 | fp = sp; | ||
| 181 | usp = sp; | ||
| 182 | |||
| 183 | #ifdef CONFIG_EARLY_PRINTK | ||
| 184 | SP += -12; | ||
| 185 | call _init_early_exception_vectors; | ||
| 186 | SP += 12; | ||
| 187 | #endif | ||
| 188 | |||
| 189 | /* Put The Code for PLL Programming and SDRAM Programming in L1 ISRAM */ | ||
| 190 | call _bf53x_relocate_l1_mem; | ||
| 191 | #if CONFIG_BFIN_KERNEL_CLOCK | ||
| 192 | call _start_dma_code; | ||
| 193 | #endif | ||
| 194 | |||
| 195 | /* Code for initializing Async memory banks */ | ||
| 196 | |||
| 197 | p2.h = hi(EBIU_AMBCTL1); | ||
| 198 | p2.l = lo(EBIU_AMBCTL1); | ||
| 199 | r0.h = hi(AMBCTL1VAL); | ||
| 200 | r0.l = lo(AMBCTL1VAL); | ||
| 201 | [p2] = r0; | ||
| 202 | ssync; | ||
| 203 | |||
| 204 | p2.h = hi(EBIU_AMBCTL0); | ||
| 205 | p2.l = lo(EBIU_AMBCTL0); | ||
| 206 | r0.h = hi(AMBCTL0VAL); | ||
| 207 | r0.l = lo(AMBCTL0VAL); | ||
| 208 | [p2] = r0; | ||
| 209 | ssync; | ||
| 210 | |||
| 211 | p2.h = hi(EBIU_AMGCTL); | ||
| 212 | p2.l = lo(EBIU_AMGCTL); | ||
| 213 | r0 = AMGCTLVAL; | ||
| 214 | w[p2] = r0; | ||
| 215 | ssync; | ||
| 216 | |||
| 217 | /* This section keeps the processor in supervisor mode | ||
| 218 | * during kernel boot. Switches to user mode at end of boot. | ||
| 219 | * See page 3-9 of Hardware Reference manual for documentation. | ||
| 220 | */ | ||
| 221 | |||
| 222 | /* EVT15 = _real_start */ | ||
| 223 | |||
| 224 | p0.l = lo(EVT15); | ||
| 225 | p0.h = hi(EVT15); | ||
| 226 | p1.l = _real_start; | ||
| 227 | p1.h = _real_start; | ||
| 228 | [p0] = p1; | ||
| 229 | csync; | ||
| 230 | |||
| 231 | p0.l = lo(IMASK); | ||
| 232 | p0.h = hi(IMASK); | ||
| 233 | p1.l = IMASK_IVG15; | ||
| 234 | p1.h = 0x0; | ||
| 235 | [p0] = p1; | ||
| 236 | csync; | ||
| 237 | |||
| 238 | raise 15; | ||
| 239 | p0.l = .LWAIT_HERE; | ||
| 240 | p0.h = .LWAIT_HERE; | ||
| 241 | reti = p0; | ||
| 242 | #if ANOMALY_05000281 | ||
| 243 | nop; nop; nop; | ||
| 244 | #endif | ||
| 245 | rti; | ||
| 246 | |||
| 247 | .LWAIT_HERE: | ||
| 248 | jump .LWAIT_HERE; | ||
| 249 | ENDPROC(__start) | ||
| 250 | |||
| 251 | ENTRY(_real_start) | ||
| 252 | [ -- sp ] = reti; | ||
| 253 | p0.l = lo(WDOG_CTL); | ||
| 254 | p0.h = hi(WDOG_CTL); | ||
| 255 | r0 = 0xAD6(z); | ||
| 256 | w[p0] = r0; /* watchdog off for now */ | ||
| 257 | ssync; | ||
| 258 | |||
| 259 | /* Code update for BSS size == 0 | ||
| 260 | * Zero out the bss region. | ||
| 261 | */ | ||
| 262 | |||
| 263 | p1.l = ___bss_start; | ||
| 264 | p1.h = ___bss_start; | ||
| 265 | p2.l = ___bss_stop; | ||
| 266 | p2.h = ___bss_stop; | ||
| 267 | r0 = 0; | ||
| 268 | p2 -= p1; | ||
| 269 | lsetup (.L_clear_bss, .L_clear_bss) lc0 = p2; | ||
| 270 | .L_clear_bss: | ||
| 271 | B[p1++] = r0; | ||
| 272 | |||
| 273 | /* In case there is a NULL pointer reference | ||
| 274 | * Zero out region before stext | ||
| 275 | */ | ||
| 276 | |||
| 277 | p1.l = 0x0; | ||
| 278 | p1.h = 0x0; | ||
| 279 | r0.l = __stext; | ||
| 280 | r0.h = __stext; | ||
| 281 | r0 = r0 >> 1; | ||
| 282 | p2 = r0; | ||
| 283 | r0 = 0; | ||
| 284 | lsetup (.L_clear_zero, .L_clear_zero) lc0 = p2; | ||
| 285 | .L_clear_zero: | ||
| 286 | W[p1++] = r0; | ||
| 287 | |||
| 288 | /* pass the uboot arguments to the global value command line */ | ||
| 289 | R0 = R7; | ||
| 290 | call _cmdline_init; | ||
| 291 | |||
| 292 | p1.l = __rambase; | ||
| 293 | p1.h = __rambase; | ||
| 294 | r0.l = __sdata; | ||
| 295 | r0.h = __sdata; | ||
| 296 | [p1] = r0; | ||
| 297 | |||
| 298 | p1.l = __ramstart; | ||
| 299 | p1.h = __ramstart; | ||
| 300 | p3.l = ___bss_stop; | ||
| 301 | p3.h = ___bss_stop; | ||
| 302 | |||
| 303 | r1 = p3; | ||
| 304 | [p1] = r1; | ||
| 305 | |||
| 306 | /* | ||
| 307 | * load the current thread pointer and stack | ||
| 308 | */ | ||
| 309 | r1.l = _init_thread_union; | ||
| 310 | r1.h = _init_thread_union; | ||
| 311 | |||
| 312 | r2.l = 0x2000; | ||
| 313 | r2.h = 0x0000; | ||
| 314 | r1 = r1 + r2; | ||
| 315 | sp = r1; | ||
| 316 | usp = sp; | ||
| 317 | fp = sp; | ||
| 318 | jump.l _start_kernel; | ||
| 319 | ENDPROC(_real_start) | ||
| 320 | |||
| 321 | __FINIT | ||
| 322 | |||
| 323 | .section .l1.text | ||
| 324 | #if CONFIG_BFIN_KERNEL_CLOCK | ||
| 325 | ENTRY(_start_dma_code) | ||
| 326 | |||
| 327 | /* Enable PHY CLK buffer output */ | ||
| 328 | p0.h = hi(VR_CTL); | ||
| 329 | p0.l = lo(VR_CTL); | ||
| 330 | r0.l = w[p0]; | ||
| 331 | bitset(r0, 14); | ||
| 332 | w[p0] = r0.l; | ||
| 333 | ssync; | ||
| 334 | |||
| 335 | p0.h = hi(SIC_IWR0); | ||
| 336 | p0.l = lo(SIC_IWR0); | ||
| 337 | r0.l = 0x1; | ||
| 338 | r0.h = 0x0; | ||
| 339 | [p0] = r0; | ||
| 340 | SSYNC; | ||
| 341 | |||
| 342 | /* | ||
| 343 | * Set PLL_CTL | ||
| 344 | * - [14:09] = MSEL[5:0] : CLKIN / VCO multiplication factors | ||
| 345 | * - [8] = BYPASS : BYPASS the PLL, run CLKIN into CCLK/SCLK | ||
| 346 | * - [7] = output delay (add 200ps of delay to mem signals) | ||
| 347 | * - [6] = input delay (add 200ps of input delay to mem signals) | ||
| 348 | * - [5] = PDWN : 1=All Clocks off | ||
| 349 | * - [3] = STOPCK : 1=Core Clock off | ||
| 350 | * - [1] = PLL_OFF : 1=Disable Power to PLL | ||
| 351 | * - [0] = DF : 1=Pass CLKIN/2 to PLL / 0=Pass CLKIN to PLL | ||
| 352 | * all other bits set to zero | ||
| 353 | */ | ||
| 354 | |||
| 355 | p0.h = hi(PLL_LOCKCNT); | ||
| 356 | p0.l = lo(PLL_LOCKCNT); | ||
| 357 | r0 = 0x300(Z); | ||
| 358 | w[p0] = r0.l; | ||
| 359 | ssync; | ||
| 360 | |||
| 361 | P2.H = hi(EBIU_SDGCTL); | ||
| 362 | P2.L = lo(EBIU_SDGCTL); | ||
| 363 | R0 = [P2]; | ||
| 364 | BITSET (R0, 24); | ||
| 365 | [P2] = R0; | ||
| 366 | SSYNC; | ||
| 367 | |||
| 368 | r0 = CONFIG_VCO_MULT & 63; /* Load the VCO multiplier */ | ||
| 369 | r0 = r0 << 9; /* Shift it over, */ | ||
| 370 | r1 = CLKIN_HALF; /* Do we need to divide CLKIN by 2?*/ | ||
| 371 | r0 = r1 | r0; | ||
| 372 | r1 = PLL_BYPASS; /* Bypass the PLL? */ | ||
| 373 | r1 = r1 << 8; /* Shift it over */ | ||
| 374 | r0 = r1 | r0; /* add them all together */ | ||
| 375 | |||
| 376 | p0.h = hi(PLL_CTL); | ||
| 377 | p0.l = lo(PLL_CTL); /* Load the address */ | ||
| 378 | cli r2; /* Disable interrupts */ | ||
| 379 | ssync; | ||
| 380 | w[p0] = r0.l; /* Set the value */ | ||
| 381 | idle; /* Wait for the PLL to stablize */ | ||
| 382 | sti r2; /* Enable interrupts */ | ||
| 383 | |||
| 384 | .Lcheck_again: | ||
| 385 | p0.h = hi(PLL_STAT); | ||
| 386 | p0.l = lo(PLL_STAT); | ||
| 387 | R0 = W[P0](Z); | ||
| 388 | CC = BITTST(R0,5); | ||
| 389 | if ! CC jump .Lcheck_again; | ||
| 390 | |||
| 391 | /* Configure SCLK & CCLK Dividers */ | ||
| 392 | r0 = (CONFIG_CCLK_ACT_DIV | CONFIG_SCLK_DIV); | ||
| 393 | p0.h = hi(PLL_DIV); | ||
| 394 | p0.l = lo(PLL_DIV); | ||
| 395 | w[p0] = r0.l; | ||
| 396 | ssync; | ||
| 397 | |||
| 398 | p0.l = lo(EBIU_SDRRC); | ||
| 399 | p0.h = hi(EBIU_SDRRC); | ||
| 400 | r0 = mem_SDRRC; | ||
| 401 | w[p0] = r0.l; | ||
| 402 | ssync; | ||
| 403 | |||
| 404 | p0.l = LO(EBIU_SDBCTL); | ||
| 405 | p0.h = HI(EBIU_SDBCTL); /* SDRAM Memory Bank Control Register */ | ||
| 406 | r0 = mem_SDBCTL; | ||
| 407 | w[p0] = r0.l; | ||
| 408 | ssync; | ||
| 409 | |||
| 410 | P2.H = hi(EBIU_SDGCTL); | ||
| 411 | P2.L = lo(EBIU_SDGCTL); | ||
| 412 | R0 = [P2]; | ||
| 413 | BITCLR (R0, 24); | ||
| 414 | p0.h = hi(EBIU_SDSTAT); | ||
| 415 | p0.l = lo(EBIU_SDSTAT); | ||
| 416 | r2.l = w[p0]; | ||
| 417 | cc = bittst(r2,3); | ||
| 418 | if !cc jump .Lskip; | ||
| 419 | NOP; | ||
| 420 | BITSET (R0, 23); | ||
| 421 | .Lskip: | ||
| 422 | [P2] = R0; | ||
| 423 | SSYNC; | ||
| 424 | |||
| 425 | R0.L = lo(mem_SDGCTL); | ||
| 426 | R0.H = hi(mem_SDGCTL); | ||
| 427 | R1 = [p2]; | ||
| 428 | R1 = R1 | R0; | ||
| 429 | [P2] = R1; | ||
| 430 | SSYNC; | ||
| 431 | |||
| 432 | p0.h = hi(SIC_IWR0); | ||
| 433 | p0.l = lo(SIC_IWR0); | ||
| 434 | r0.l = lo(IWR_ENABLE_ALL); | ||
| 435 | r0.h = hi(IWR_ENABLE_ALL); | ||
| 436 | [p0] = r0; | ||
| 437 | SSYNC; | ||
| 438 | |||
| 439 | RTS; | ||
| 440 | ENDPROC(_start_dma_code) | ||
| 441 | #endif /* CONFIG_BFIN_KERNEL_CLOCK */ | ||
| 442 | |||
| 443 | .data | ||
| 444 | |||
| 445 | /* | ||
| 446 | * Set up the usable of RAM stuff. Size of RAM is determined then | ||
| 447 | * an initial stack set up at the end. | ||
| 448 | */ | ||
| 449 | |||
| 450 | .align 4 | ||
| 451 | __rambase: | ||
| 452 | .long 0 | ||
| 453 | __ramstart: | ||
| 454 | .long 0 | ||
| 455 | __ramend: | ||
| 456 | .long 0 | ||
diff --git a/arch/blackfin/mach-bf527/ints-priority.c b/arch/blackfin/mach-bf527/ints-priority.c new file mode 100644 index 000000000000..1fa389793968 --- /dev/null +++ b/arch/blackfin/mach-bf527/ints-priority.c | |||
| @@ -0,0 +1,100 @@ | |||
| 1 | /* | ||
| 2 | * File: arch/blackfin/mach-bf537/ints-priority.c | ||
| 3 | * Based on: arch/blackfin/mach-bf533/ints-priority.c | ||
| 4 | * Author: Michael Hennerich (michael.hennerich@analog.com) | ||
| 5 | * | ||
| 6 | * Created: | ||
| 7 | * Description: Set up the interrupt priorities | ||
| 8 | * | ||
| 9 | * Modified: | ||
| 10 | * Copyright 2004-2007 Analog Devices Inc. | ||
| 11 | * | ||
| 12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
| 13 | * | ||
| 14 | * This program is free software; you can redistribute it and/or modify | ||
| 15 | * it under the terms of the GNU General Public License as published by | ||
| 16 | * the Free Software Foundation; either version 2 of the License, or | ||
| 17 | * (at your option) any later version. | ||
| 18 | * | ||
| 19 | * This program is distributed in the hope that it will be useful, | ||
| 20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 22 | * GNU General Public License for more details. | ||
| 23 | * | ||
| 24 | * You should have received a copy of the GNU General Public License | ||
| 25 | * along with this program; if not, see the file COPYING, or write | ||
| 26 | * to the Free Software Foundation, Inc., | ||
| 27 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 28 | */ | ||
| 29 | |||
| 30 | #include <linux/module.h> | ||
| 31 | #include <linux/irq.h> | ||
| 32 | #include <asm/blackfin.h> | ||
| 33 | |||
| 34 | void program_IAR(void) | ||
| 35 | { | ||
| 36 | /* Program the IAR0 Register with the configured priority */ | ||
| 37 | bfin_write_SIC_IAR0(((CONFIG_IRQ_PLL_WAKEUP - 7) << IRQ_PLL_WAKEUP_POS) | | ||
| 38 | ((CONFIG_IRQ_DMA0_ERROR - 7) << IRQ_DMA0_ERROR_POS) | | ||
| 39 | ((CONFIG_IRQ_DMAR0_BLK - 7) << IRQ_DMAR0_BLK_POS) | | ||
| 40 | ((CONFIG_IRQ_DMAR1_BLK - 7) << IRQ_DMAR1_BLK_POS) | | ||
| 41 | ((CONFIG_IRQ_DMAR0_OVR - 7) << IRQ_DMAR0_OVR_POS) | | ||
| 42 | ((CONFIG_IRQ_DMAR1_OVR - 7) << IRQ_DMAR1_OVR_POS) | | ||
| 43 | ((CONFIG_IRQ_PPI_ERROR - 7) << IRQ_PPI_ERROR_POS) | | ||
| 44 | ((CONFIG_IRQ_MAC_ERROR - 7) << IRQ_MAC_ERROR_POS)); | ||
| 45 | |||
| 46 | |||
| 47 | bfin_write_SIC_IAR1(((CONFIG_IRQ_SPORT0_ERROR - 7) << IRQ_SPORT0_ERROR_POS) | | ||
| 48 | ((CONFIG_IRQ_SPORT1_ERROR - 7) << IRQ_SPORT1_ERROR_POS) | | ||
| 49 | ((CONFIG_IRQ_UART0_ERROR - 7) << IRQ_UART0_ERROR_POS) | | ||
| 50 | ((CONFIG_IRQ_UART1_ERROR - 7) << IRQ_UART1_ERROR_POS) | | ||
| 51 | ((CONFIG_IRQ_RTC - 7) << IRQ_RTC_POS) | | ||
| 52 | ((CONFIG_IRQ_PPI - 7) << IRQ_PPI_POS)); | ||
| 53 | |||
| 54 | bfin_write_SIC_IAR2(((CONFIG_IRQ_SPORT0_RX - 7) << IRQ_SPORT0_RX_POS) | | ||
| 55 | ((CONFIG_IRQ_SPORT0_TX - 7) << IRQ_SPORT0_TX_POS) | | ||
| 56 | ((CONFIG_IRQ_SPORT1_RX - 7) << IRQ_SPORT1_RX_POS) | | ||
| 57 | ((CONFIG_IRQ_SPORT1_TX - 7) << IRQ_SPORT1_TX_POS) | | ||
| 58 | ((CONFIG_IRQ_TWI - 7) << IRQ_TWI_POS) | | ||
| 59 | ((CONFIG_IRQ_SPI - 7) << IRQ_SPI_POS) | | ||
| 60 | ((CONFIG_IRQ_UART0_RX - 7) << IRQ_UART0_RX_POS) | | ||
| 61 | ((CONFIG_IRQ_UART0_TX - 7) << IRQ_UART0_TX_POS)); | ||
| 62 | |||
| 63 | bfin_write_SIC_IAR3(((CONFIG_IRQ_UART1_RX - 7) << IRQ_UART1_RX_POS) | | ||
| 64 | ((CONFIG_IRQ_UART1_TX - 7) << IRQ_UART1_TX_POS) | | ||
| 65 | ((CONFIG_IRQ_OPTSEC - 7) << IRQ_OPTSEC_POS) | | ||
| 66 | ((CONFIG_IRQ_CNT - 7) << IRQ_CNT_POS) | | ||
| 67 | ((CONFIG_IRQ_MAC_RX - 7) << IRQ_MAC_RX_POS) | | ||
| 68 | ((CONFIG_IRQ_PORTH_INTA - 7) << IRQ_PORTH_INTA_POS) | | ||
| 69 | ((CONFIG_IRQ_MAC_TX - 7) << IRQ_MAC_TX_POS) | | ||
| 70 | ((CONFIG_IRQ_PORTH_INTB - 7) << IRQ_PORTH_INTB_POS)); | ||
| 71 | |||
| 72 | bfin_write_SIC_IAR4(((CONFIG_IRQ_TMR0 - 7) << IRQ_TMR0_POS) | | ||
| 73 | ((CONFIG_IRQ_TMR1 - 7) << IRQ_TMR1_POS) | | ||
| 74 | ((CONFIG_IRQ_TMR2 - 7) << IRQ_TMR2_POS) | | ||
| 75 | ((CONFIG_IRQ_TMR3 - 7) << IRQ_TMR3_POS) | | ||
| 76 | ((CONFIG_IRQ_TMR4 - 7) << IRQ_TMR4_POS) | | ||
| 77 | ((CONFIG_IRQ_TMR5 - 7) << IRQ_TMR5_POS) | | ||
| 78 | ((CONFIG_IRQ_TMR6 - 7) << IRQ_TMR6_POS) | | ||
| 79 | ((CONFIG_IRQ_TMR7 - 7) << IRQ_TMR7_POS)); | ||
| 80 | |||
| 81 | bfin_write_SIC_IAR5(((CONFIG_IRQ_PORTG_INTA - 7) << IRQ_PORTG_INTA_POS) | | ||
| 82 | ((CONFIG_IRQ_PORTG_INTB - 7) << IRQ_PORTG_INTB_POS) | | ||
| 83 | ((CONFIG_IRQ_MEM_DMA0 - 7) << IRQ_MEM_DMA0_POS) | | ||
| 84 | ((CONFIG_IRQ_MEM_DMA1 - 7) << IRQ_MEM_DMA1_POS) | | ||
| 85 | ((CONFIG_IRQ_WATCH - 7) << IRQ_WATCH_POS) | | ||
| 86 | ((CONFIG_IRQ_PORTF_INTA - 7) << IRQ_PORTF_INTA_POS) | | ||
| 87 | ((CONFIG_IRQ_PORTF_INTB - 7) << IRQ_PORTF_INTB_POS) | | ||
| 88 | ((CONFIG_IRQ_SPI_ERROR - 7) << IRQ_SPI_ERROR_POS)); | ||
| 89 | |||
| 90 | bfin_write_SIC_IAR6(((CONFIG_IRQ_NFC_ERROR - 7) << IRQ_NFC_ERROR_POS) | | ||
| 91 | ((CONFIG_IRQ_HDMA_ERROR - 7) << IRQ_HDMA_ERROR_POS) | | ||
| 92 | ((CONFIG_IRQ_HDMA - 7) << IRQ_HDMA_POS) | | ||
| 93 | ((CONFIG_IRQ_USB_EINT - 7) << IRQ_USB_EINT_POS) | | ||
| 94 | ((CONFIG_IRQ_USB_INT0 - 7) << IRQ_USB_INT0_POS) | | ||
| 95 | ((CONFIG_IRQ_USB_INT1 - 7) << IRQ_USB_INT1_POS) | | ||
| 96 | ((CONFIG_IRQ_USB_INT2 - 7) << IRQ_USB_INT2_POS) | | ||
| 97 | ((CONFIG_IRQ_USB_DMA - 7) << IRQ_USB_DMA_POS)); | ||
| 98 | |||
| 99 | SSYNC(); | ||
| 100 | } | ||
diff --git a/arch/blackfin/mach-bf533/boards/cm_bf533.c b/arch/blackfin/mach-bf533/boards/cm_bf533.c index a57b52d207cd..1c5a86adfab7 100644 --- a/arch/blackfin/mach-bf533/boards/cm_bf533.c +++ b/arch/blackfin/mach-bf533/boards/cm_bf533.c | |||
| @@ -42,7 +42,7 @@ | |||
| 42 | /* | 42 | /* |
| 43 | * Name the Board for the /proc/cpuinfo | 43 | * Name the Board for the /proc/cpuinfo |
| 44 | */ | 44 | */ |
| 45 | char *bfin_board_name = "Bluetechnix CM BF533"; | 45 | const char bfin_board_name[] = "Bluetechnix CM BF533"; |
| 46 | 46 | ||
| 47 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 47 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
| 48 | /* all SPI peripherals info goes here */ | 48 | /* all SPI peripherals info goes here */ |
diff --git a/arch/blackfin/mach-bf533/boards/ezkit.c b/arch/blackfin/mach-bf533/boards/ezkit.c index 5c1e35d3c012..34b63920e272 100644 --- a/arch/blackfin/mach-bf533/boards/ezkit.c +++ b/arch/blackfin/mach-bf533/boards/ezkit.c | |||
| @@ -43,7 +43,7 @@ | |||
| 43 | /* | 43 | /* |
| 44 | * Name the Board for the /proc/cpuinfo | 44 | * Name the Board for the /proc/cpuinfo |
| 45 | */ | 45 | */ |
| 46 | char *bfin_board_name = "ADDS-BF533-EZKIT"; | 46 | const char bfin_board_name[] = "ADDS-BF533-EZKIT"; |
| 47 | 47 | ||
| 48 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | 48 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) |
| 49 | static struct platform_device rtc_device = { | 49 | static struct platform_device rtc_device = { |
diff --git a/arch/blackfin/mach-bf533/boards/generic_board.c b/arch/blackfin/mach-bf533/boards/generic_board.c index 9bc1f0d0ab50..310b7772c458 100644 --- a/arch/blackfin/mach-bf533/boards/generic_board.c +++ b/arch/blackfin/mach-bf533/boards/generic_board.c | |||
| @@ -35,7 +35,7 @@ | |||
| 35 | /* | 35 | /* |
| 36 | * Name the Board for the /proc/cpuinfo | 36 | * Name the Board for the /proc/cpuinfo |
| 37 | */ | 37 | */ |
| 38 | char *bfin_board_name = "UNKNOWN BOARD"; | 38 | const char bfin_board_name[] = "UNKNOWN BOARD"; |
| 39 | 39 | ||
| 40 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | 40 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) |
| 41 | static struct platform_device rtc_device = { | 41 | static struct platform_device rtc_device = { |
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c index 8975e06ea158..f84be4eabfd1 100644 --- a/arch/blackfin/mach-bf533/boards/stamp.c +++ b/arch/blackfin/mach-bf533/boards/stamp.c | |||
| @@ -46,7 +46,7 @@ | |||
| 46 | /* | 46 | /* |
| 47 | * Name the Board for the /proc/cpuinfo | 47 | * Name the Board for the /proc/cpuinfo |
| 48 | */ | 48 | */ |
| 49 | char *bfin_board_name = "ADDS-BF533-STAMP"; | 49 | const char bfin_board_name[] = "ADDS-BF533-STAMP"; |
| 50 | 50 | ||
| 51 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | 51 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) |
| 52 | static struct platform_device rtc_device = { | 52 | static struct platform_device rtc_device = { |
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537.c b/arch/blackfin/mach-bf537/boards/cm_bf537.c index 44dea05e1d03..52e2320307de 100644 --- a/arch/blackfin/mach-bf537/boards/cm_bf537.c +++ b/arch/blackfin/mach-bf537/boards/cm_bf537.c | |||
| @@ -43,7 +43,7 @@ | |||
| 43 | /* | 43 | /* |
| 44 | * Name the Board for the /proc/cpuinfo | 44 | * Name the Board for the /proc/cpuinfo |
| 45 | */ | 45 | */ |
| 46 | char *bfin_board_name = "Bluetechnix CM BF537"; | 46 | const char bfin_board_name[] = "Bluetechnix CM BF537"; |
| 47 | 47 | ||
| 48 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 48 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
| 49 | /* all SPI peripherals info goes here */ | 49 | /* all SPI peripherals info goes here */ |
diff --git a/arch/blackfin/mach-bf537/boards/generic_board.c b/arch/blackfin/mach-bf537/boards/generic_board.c index 6668c8e4a3fc..255da7a98481 100644 --- a/arch/blackfin/mach-bf537/boards/generic_board.c +++ b/arch/blackfin/mach-bf537/boards/generic_board.c | |||
| @@ -49,7 +49,7 @@ | |||
| 49 | /* | 49 | /* |
| 50 | * Name the Board for the /proc/cpuinfo | 50 | * Name the Board for the /proc/cpuinfo |
| 51 | */ | 51 | */ |
| 52 | char *bfin_board_name = "GENERIC Board"; | 52 | const char bfin_board_name[] = "GENERIC Board"; |
| 53 | 53 | ||
| 54 | /* | 54 | /* |
| 55 | * Driver needs to know address, irq and flag pin. | 55 | * Driver needs to know address, irq and flag pin. |
diff --git a/arch/blackfin/mach-bf537/boards/pnav10.c b/arch/blackfin/mach-bf537/boards/pnav10.c index f83a2544004d..87b808926789 100644 --- a/arch/blackfin/mach-bf537/boards/pnav10.c +++ b/arch/blackfin/mach-bf537/boards/pnav10.c | |||
| @@ -47,7 +47,7 @@ | |||
| 47 | /* | 47 | /* |
| 48 | * Name the Board for the /proc/cpuinfo | 48 | * Name the Board for the /proc/cpuinfo |
| 49 | */ | 49 | */ |
| 50 | char *bfin_board_name = "PNAV-1.0"; | 50 | const char bfin_board_name[] = "PNAV-1.0"; |
| 51 | 51 | ||
| 52 | /* | 52 | /* |
| 53 | * Driver needs to know address, irq and flag pin. | 53 | * Driver needs to know address, irq and flag pin. |
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c index f42ba3aa86d7..cc41f6c2ef4f 100644 --- a/arch/blackfin/mach-bf537/boards/stamp.c +++ b/arch/blackfin/mach-bf537/boards/stamp.c | |||
| @@ -49,7 +49,7 @@ | |||
| 49 | /* | 49 | /* |
| 50 | * Name the Board for the /proc/cpuinfo | 50 | * Name the Board for the /proc/cpuinfo |
| 51 | */ | 51 | */ |
| 52 | char *bfin_board_name = "ADDS-BF537-STAMP"; | 52 | const char bfin_board_name[] = "ADDS-BF537-STAMP"; |
| 53 | 53 | ||
| 54 | /* | 54 | /* |
| 55 | * Driver needs to know address, irq and flag pin. | 55 | * Driver needs to know address, irq and flag pin. |
diff --git a/arch/blackfin/mach-bf548/boards/ezkit.c b/arch/blackfin/mach-bf548/boards/ezkit.c index 046e6d84bbfc..6b6490e66b30 100644 --- a/arch/blackfin/mach-bf548/boards/ezkit.c +++ b/arch/blackfin/mach-bf548/boards/ezkit.c | |||
| @@ -49,7 +49,7 @@ | |||
| 49 | /* | 49 | /* |
| 50 | * Name the Board for the /proc/cpuinfo | 50 | * Name the Board for the /proc/cpuinfo |
| 51 | */ | 51 | */ |
| 52 | char *bfin_board_name = "ADSP-BF548-EZKIT"; | 52 | const char bfin_board_name[] = "ADSP-BF548-EZKIT"; |
| 53 | 53 | ||
| 54 | /* | 54 | /* |
| 55 | * Driver needs to know address, irq and flag pin. | 55 | * Driver needs to know address, irq and flag pin. |
| @@ -560,7 +560,7 @@ static struct platform_device *ezkit_devices[] __initdata = { | |||
| 560 | 560 | ||
| 561 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 561 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
| 562 | &bf54x_spi_master0, | 562 | &bf54x_spi_master0, |
| 563 | /* &bf54x_spi_master1,*/ | 563 | &bf54x_spi_master1, |
| 564 | #endif | 564 | #endif |
| 565 | 565 | ||
| 566 | #if defined(CONFIG_KEYBOARD_BFIN) || defined(CONFIG_KEYBOARD_BFIN_MODULE) | 566 | #if defined(CONFIG_KEYBOARD_BFIN) || defined(CONFIG_KEYBOARD_BFIN_MODULE) |
diff --git a/arch/blackfin/mach-bf548/dma.c b/arch/blackfin/mach-bf548/dma.c index a8184113be48..957bf1366eff 100644 --- a/arch/blackfin/mach-bf548/dma.c +++ b/arch/blackfin/mach-bf548/dma.c | |||
| @@ -64,6 +64,7 @@ | |||
| 64 | (struct dma_register *) MDMA_D3_NEXT_DESC_PTR, | 64 | (struct dma_register *) MDMA_D3_NEXT_DESC_PTR, |
| 65 | (struct dma_register *) MDMA_S3_NEXT_DESC_PTR, | 65 | (struct dma_register *) MDMA_S3_NEXT_DESC_PTR, |
| 66 | }; | 66 | }; |
| 67 | EXPORT_SYMBOL(base_addr); | ||
| 67 | 68 | ||
| 68 | int channel2irq(unsigned int channel) | 69 | int channel2irq(unsigned int channel) |
| 69 | { | 70 | { |
diff --git a/arch/blackfin/mach-bf561/boards/cm_bf561.c b/arch/blackfin/mach-bf561/boards/cm_bf561.c index cd827a1b6ba1..97aeb43fd8b4 100644 --- a/arch/blackfin/mach-bf561/boards/cm_bf561.c +++ b/arch/blackfin/mach-bf561/boards/cm_bf561.c | |||
| @@ -42,7 +42,7 @@ | |||
| 42 | /* | 42 | /* |
| 43 | * Name the Board for the /proc/cpuinfo | 43 | * Name the Board for the /proc/cpuinfo |
| 44 | */ | 44 | */ |
| 45 | char *bfin_board_name = "Bluetechnix CM BF561"; | 45 | const char bfin_board_name[] = "Bluetechnix CM BF561"; |
| 46 | 46 | ||
| 47 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 47 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
| 48 | /* all SPI peripherals info goes here */ | 48 | /* all SPI peripherals info goes here */ |
diff --git a/arch/blackfin/mach-bf561/boards/ezkit.c b/arch/blackfin/mach-bf561/boards/ezkit.c index 57e14edca8b1..059d516cec23 100644 --- a/arch/blackfin/mach-bf561/boards/ezkit.c +++ b/arch/blackfin/mach-bf561/boards/ezkit.c | |||
| @@ -39,7 +39,7 @@ | |||
| 39 | /* | 39 | /* |
| 40 | * Name the Board for the /proc/cpuinfo | 40 | * Name the Board for the /proc/cpuinfo |
| 41 | */ | 41 | */ |
| 42 | char *bfin_board_name = "ADDS-BF561-EZKIT"; | 42 | const char bfin_board_name[] = "ADDS-BF561-EZKIT"; |
| 43 | 43 | ||
| 44 | #define ISP1761_BASE 0x2C0F0000 | 44 | #define ISP1761_BASE 0x2C0F0000 |
| 45 | #define ISP1761_IRQ IRQ_PF10 | 45 | #define ISP1761_IRQ IRQ_PF10 |
diff --git a/arch/blackfin/mach-bf561/boards/generic_board.c b/arch/blackfin/mach-bf561/boards/generic_board.c index 4dfea5da674c..46816be4b2ba 100644 --- a/arch/blackfin/mach-bf561/boards/generic_board.c +++ b/arch/blackfin/mach-bf561/boards/generic_board.c | |||
| @@ -32,7 +32,7 @@ | |||
| 32 | #include <linux/platform_device.h> | 32 | #include <linux/platform_device.h> |
| 33 | #include <linux/irq.h> | 33 | #include <linux/irq.h> |
| 34 | 34 | ||
| 35 | char *bfin_board_name = "UNKNOWN BOARD"; | 35 | const char bfin_board_name[] = "UNKNOWN BOARD"; |
| 36 | 36 | ||
| 37 | /* | 37 | /* |
| 38 | * Driver needs to know address, irq and flag pin. | 38 | * Driver needs to know address, irq and flag pin. |
diff --git a/arch/blackfin/mach-bf561/boards/tepla.c b/arch/blackfin/mach-bf561/boards/tepla.c index c442eb23db5e..4a17c6da2a59 100644 --- a/arch/blackfin/mach-bf561/boards/tepla.c +++ b/arch/blackfin/mach-bf561/boards/tepla.c | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
| 17 | #include <linux/irq.h> | 17 | #include <linux/irq.h> |
| 18 | 18 | ||
| 19 | char *bfin_board_name = "Tepla-BF561"; | 19 | const char bfin_board_name[] = "Tepla-BF561"; |
| 20 | 20 | ||
| 21 | /* | 21 | /* |
| 22 | * Driver needs to know address, irq and flag pin. | 22 | * Driver needs to know address, irq and flag pin. |
diff --git a/arch/blackfin/mach-common/ints-priority-dc.c b/arch/blackfin/mach-common/ints-priority-dc.c index 2db3546fc874..c2f05fabedc1 100644 --- a/arch/blackfin/mach-common/ints-priority-dc.c +++ b/arch/blackfin/mach-common/ints-priority-dc.c | |||
| @@ -52,7 +52,13 @@ | |||
| 52 | * - | 52 | * - |
| 53 | */ | 53 | */ |
| 54 | 54 | ||
| 55 | unsigned long irq_flags = 0; | 55 | /* Initialize this to an actual value to force it into the .data |
| 56 | * section so that we know it is properly initialized at entry into | ||
| 57 | * the kernel but before bss is initialized to zero (which is where | ||
| 58 | * it would live otherwise). The 0x1f magic represents the IRQs we | ||
| 59 | * cannot actually mask out in hardware. | ||
| 60 | */ | ||
| 61 | unsigned long irq_flags = 0x1f; | ||
| 56 | 62 | ||
| 57 | /* The number of spurious interrupts */ | 63 | /* The number of spurious interrupts */ |
| 58 | atomic_t num_spurious; | 64 | atomic_t num_spurious; |
diff --git a/arch/blackfin/mach-common/ints-priority-sc.c b/arch/blackfin/mach-common/ints-priority-sc.c index d3b7672b2b94..2d2b63567b30 100644 --- a/arch/blackfin/mach-common/ints-priority-sc.c +++ b/arch/blackfin/mach-common/ints-priority-sc.c | |||
| @@ -58,7 +58,13 @@ | |||
| 58 | * - | 58 | * - |
| 59 | */ | 59 | */ |
| 60 | 60 | ||
| 61 | unsigned long irq_flags = 0; | 61 | /* Initialize this to an actual value to force it into the .data |
| 62 | * section so that we know it is properly initialized at entry into | ||
| 63 | * the kernel but before bss is initialized to zero (which is where | ||
| 64 | * it would live otherwise). The 0x1f magic represents the IRQs we | ||
| 65 | * cannot actually mask out in hardware. | ||
| 66 | */ | ||
| 67 | unsigned long irq_flags = 0x1f; | ||
| 62 | 68 | ||
| 63 | /* The number of spurious interrupts */ | 69 | /* The number of spurious interrupts */ |
| 64 | atomic_t num_spurious; | 70 | atomic_t num_spurious; |
| @@ -92,10 +98,15 @@ static void __init search_IAR(void) | |||
| 92 | 98 | ||
| 93 | for (irqn = 0; irqn < NR_PERI_INTS; irqn++) { | 99 | for (irqn = 0; irqn < NR_PERI_INTS; irqn++) { |
| 94 | int iar_shift = (irqn & 7) * 4; | 100 | int iar_shift = (irqn & 7) * 4; |
| 95 | if (ivg == | 101 | if (ivg == |
| 96 | (0xf & | 102 | (0xf & |
| 103 | #ifndef CONFIG_BF52x | ||
| 97 | bfin_read32((unsigned long *)SIC_IAR0 + | 104 | bfin_read32((unsigned long *)SIC_IAR0 + |
| 98 | (irqn >> 3)) >> iar_shift)) { | 105 | (irqn >> 3)) >> iar_shift)) { |
| 106 | #else | ||
| 107 | bfin_read32((unsigned long *)SIC_IAR0 + | ||
| 108 | ((irqn%32) >> 3) + ((irqn / 32) * 16)) >> iar_shift)) { | ||
| 109 | #endif | ||
| 99 | ivg_table[irq_pos].irqno = IVG7 + irqn; | 110 | ivg_table[irq_pos].irqno = IVG7 + irqn; |
| 100 | ivg_table[irq_pos].isrflag = 1 << (irqn % 32); | 111 | ivg_table[irq_pos].isrflag = 1 << (irqn % 32); |
| 101 | ivg7_13[ivg].istop++; | 112 | ivg7_13[ivg].istop++; |
| @@ -140,7 +151,7 @@ static void bfin_core_unmask_irq(unsigned int irq) | |||
| 140 | 151 | ||
| 141 | static void bfin_internal_mask_irq(unsigned int irq) | 152 | static void bfin_internal_mask_irq(unsigned int irq) |
| 142 | { | 153 | { |
| 143 | #ifndef CONFIG_BF54x | 154 | #ifdef CONFIG_BF53x |
| 144 | bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() & | 155 | bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() & |
| 145 | ~(1 << (irq - (IRQ_CORETMR + 1)))); | 156 | ~(1 << (irq - (IRQ_CORETMR + 1)))); |
| 146 | #else | 157 | #else |
| @@ -155,7 +166,7 @@ static void bfin_internal_mask_irq(unsigned int irq) | |||
| 155 | 166 | ||
| 156 | static void bfin_internal_unmask_irq(unsigned int irq) | 167 | static void bfin_internal_unmask_irq(unsigned int irq) |
| 157 | { | 168 | { |
| 158 | #ifndef CONFIG_BF54x | 169 | #ifdef CONFIG_BF53x |
| 159 | bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() | | 170 | bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() | |
| 160 | (1 << (irq - (IRQ_CORETMR + 1)))); | 171 | (1 << (irq - (IRQ_CORETMR + 1)))); |
| 161 | #else | 172 | #else |
| @@ -750,13 +761,15 @@ int __init init_arch_irq(void) | |||
| 750 | int irq; | 761 | int irq; |
| 751 | unsigned long ilat = 0; | 762 | unsigned long ilat = 0; |
| 752 | /* Disable all the peripheral intrs - page 4-29 HW Ref manual */ | 763 | /* Disable all the peripheral intrs - page 4-29 HW Ref manual */ |
| 753 | #ifdef CONFIG_BF54x | 764 | #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) |
| 754 | bfin_write_SIC_IMASK0(SIC_UNMASK_ALL); | 765 | bfin_write_SIC_IMASK0(SIC_UNMASK_ALL); |
| 755 | bfin_write_SIC_IMASK1(SIC_UNMASK_ALL); | 766 | bfin_write_SIC_IMASK1(SIC_UNMASK_ALL); |
| 756 | bfin_write_SIC_IMASK2(SIC_UNMASK_ALL); | ||
| 757 | bfin_write_SIC_IWR0(IWR_ENABLE_ALL); | 767 | bfin_write_SIC_IWR0(IWR_ENABLE_ALL); |
| 758 | bfin_write_SIC_IWR1(IWR_ENABLE_ALL); | 768 | bfin_write_SIC_IWR1(IWR_ENABLE_ALL); |
| 769 | #ifdef CONFIG_BF54x | ||
| 770 | bfin_write_SIC_IMASK2(SIC_UNMASK_ALL); | ||
| 759 | bfin_write_SIC_IWR2(IWR_ENABLE_ALL); | 771 | bfin_write_SIC_IWR2(IWR_ENABLE_ALL); |
| 772 | #endif | ||
| 760 | #else | 773 | #else |
| 761 | bfin_write_SIC_IMASK(SIC_UNMASK_ALL); | 774 | bfin_write_SIC_IMASK(SIC_UNMASK_ALL); |
| 762 | bfin_write_SIC_IWR(IWR_ENABLE_ALL); | 775 | bfin_write_SIC_IWR(IWR_ENABLE_ALL); |
| @@ -787,7 +800,7 @@ int __init init_arch_irq(void) | |||
| 787 | 800 | ||
| 788 | switch (irq) { | 801 | switch (irq) { |
| 789 | #ifdef CONFIG_IRQCHIP_DEMUX_GPIO | 802 | #ifdef CONFIG_IRQCHIP_DEMUX_GPIO |
| 790 | #ifndef CONFIG_BF54x | 803 | #if defined(CONFIG_BF53x) |
| 791 | case IRQ_PROG_INTA: | 804 | case IRQ_PROG_INTA: |
| 792 | set_irq_chained_handler(irq, | 805 | set_irq_chained_handler(irq, |
| 793 | bfin_demux_gpio_irq); | 806 | bfin_demux_gpio_irq); |
| @@ -798,7 +811,7 @@ int __init init_arch_irq(void) | |||
| 798 | bfin_demux_gpio_irq); | 811 | bfin_demux_gpio_irq); |
| 799 | break; | 812 | break; |
| 800 | #endif | 813 | #endif |
| 801 | #else | 814 | #elif defined(CONFIG_BF54x) |
| 802 | case IRQ_PINT0: | 815 | case IRQ_PINT0: |
| 803 | set_irq_chained_handler(irq, | 816 | set_irq_chained_handler(irq, |
| 804 | bfin_demux_gpio_irq); | 817 | bfin_demux_gpio_irq); |
| @@ -815,7 +828,20 @@ int __init init_arch_irq(void) | |||
| 815 | set_irq_chained_handler(irq, | 828 | set_irq_chained_handler(irq, |
| 816 | bfin_demux_gpio_irq); | 829 | bfin_demux_gpio_irq); |
| 817 | break; | 830 | break; |
| 818 | #endif /*CONFIG_BF54x */ | 831 | #elif defined(CONFIG_BF52x) |
| 832 | case IRQ_PORTF_INTA: | ||
| 833 | set_irq_chained_handler(irq, | ||
| 834 | bfin_demux_gpio_irq); | ||
| 835 | break; | ||
| 836 | case IRQ_PORTG_INTA: | ||
| 837 | set_irq_chained_handler(irq, | ||
| 838 | bfin_demux_gpio_irq); | ||
| 839 | break; | ||
| 840 | case IRQ_PORTH_INTA: | ||
| 841 | set_irq_chained_handler(irq, | ||
| 842 | bfin_demux_gpio_irq); | ||
| 843 | break; | ||
| 844 | #endif | ||
| 819 | #endif | 845 | #endif |
| 820 | default: | 846 | default: |
| 821 | set_irq_handler(irq, handle_simple_irq); | 847 | set_irq_handler(irq, handle_simple_irq); |
| @@ -880,14 +906,15 @@ void do_irq(int vec, struct pt_regs *fp) | |||
| 880 | } else { | 906 | } else { |
| 881 | struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst; | 907 | struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst; |
| 882 | struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop; | 908 | struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop; |
| 883 | #ifdef CONFIG_BF54x | 909 | #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) |
| 884 | unsigned long sic_status[3]; | 910 | unsigned long sic_status[3]; |
| 885 | 911 | ||
| 886 | SSYNC(); | 912 | SSYNC(); |
| 887 | sic_status[0] = bfin_read_SIC_ISR(0) & bfin_read_SIC_IMASK(0); | 913 | sic_status[0] = bfin_read_SIC_ISR0() & bfin_read_SIC_IMASK0(); |
| 888 | sic_status[1] = bfin_read_SIC_ISR(1) & bfin_read_SIC_IMASK(1); | 914 | sic_status[1] = bfin_read_SIC_ISR1() & bfin_read_SIC_IMASK1(); |
| 889 | sic_status[2] = bfin_read_SIC_ISR(2) & bfin_read_SIC_IMASK(2); | 915 | #ifdef CONFIG_BF54x |
| 890 | 916 | sic_status[2] = bfin_read_SIC_ISR2() & bfin_read_SIC_IMASK2(); | |
| 917 | #endif | ||
| 891 | for (;; ivg++) { | 918 | for (;; ivg++) { |
| 892 | if (ivg >= ivg_stop) { | 919 | if (ivg >= ivg_stop) { |
| 893 | atomic_inc(&num_spurious); | 920 | atomic_inc(&num_spurious); |
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile index f3d0d7c70977..ae4a9b3d4fd6 100644 --- a/arch/parisc/Makefile +++ b/arch/parisc/Makefile | |||
| @@ -19,26 +19,27 @@ | |||
| 19 | NM = sh $(srctree)/arch/parisc/nm | 19 | NM = sh $(srctree)/arch/parisc/nm |
| 20 | CHECKFLAGS += -D__hppa__=1 | 20 | CHECKFLAGS += -D__hppa__=1 |
| 21 | 21 | ||
| 22 | MACHINE := $(shell uname -m) | ||
| 23 | ifeq ($(MACHINE),parisc*) | ||
| 24 | NATIVE := 1 | ||
| 25 | endif | ||
| 26 | |||
| 22 | ifdef CONFIG_64BIT | 27 | ifdef CONFIG_64BIT |
| 23 | CROSS_COMPILE := $(shell if [ -x /usr/bin/hppa64-linux-gnu-gcc ]; then \ | ||
| 24 | echo hppa64-linux-gnu-; else echo hppa64-linux-; fi) | ||
| 25 | UTS_MACHINE := parisc64 | 28 | UTS_MACHINE := parisc64 |
| 26 | CHECKFLAGS += -D__LP64__=1 -m64 | 29 | CHECKFLAGS += -D__LP64__=1 -m64 |
| 27 | else | 30 | WIDTH := 64 |
| 28 | MACHINE := $(subst 64,,$(shell uname -m)) | 31 | CROSS_COMPILE := hppa64-linux-gnu- |
| 29 | ifneq ($(MACHINE),parisc) | 32 | else # 32-bit |
| 30 | CROSS_COMPILE := hppa-linux- | 33 | WIDTH := |
| 31 | endif | ||
| 32 | endif | 34 | endif |
| 33 | 35 | ||
| 34 | FINAL_LD=$(CROSS_COMPILE)ld --warn-common --warn-section-align | 36 | # attempt to help out folks who are cross-compiling |
| 37 | ifeq ($(NATIVE),1) | ||
| 38 | CROSS_COMPILE := hppa$(WIDTH)-linux- | ||
| 39 | endif | ||
| 35 | 40 | ||
| 36 | OBJCOPY_FLAGS =-O binary -R .note -R .comment -S | 41 | OBJCOPY_FLAGS =-O binary -R .note -R .comment -S |
| 37 | 42 | ||
| 38 | ifneq ($(call cc-ifversion, -lt, 0303, "bad"),) | ||
| 39 | $(error Sorry, GCC v3.3 or above is required.) | ||
| 40 | endif | ||
| 41 | |||
| 42 | cflags-y := -pipe | 43 | cflags-y := -pipe |
| 43 | 44 | ||
| 44 | # These flags should be implied by an hppa-linux configuration, but they | 45 | # These flags should be implied by an hppa-linux configuration, but they |
| @@ -69,7 +70,7 @@ kernel-y := mm/ kernel/ math-emu/ kernel/init_task.o | |||
| 69 | kernel-$(CONFIG_HPUX) += hpux/ | 70 | kernel-$(CONFIG_HPUX) += hpux/ |
| 70 | 71 | ||
| 71 | core-y += $(addprefix arch/parisc/, $(kernel-y)) | 72 | core-y += $(addprefix arch/parisc/, $(kernel-y)) |
| 72 | libs-y += arch/parisc/lib/ `$(CC) -print-libgcc-file-name` | 73 | libs-y += arch/parisc/lib/ |
| 73 | 74 | ||
| 74 | drivers-$(CONFIG_OPROFILE) += arch/parisc/oprofile/ | 75 | drivers-$(CONFIG_OPROFILE) += arch/parisc/oprofile/ |
| 75 | 76 | ||
| @@ -77,27 +78,27 @@ PALO := $(shell if which palo; then : ; \ | |||
| 77 | elif [ -x /sbin/palo ]; then echo /sbin/palo; \ | 78 | elif [ -x /sbin/palo ]; then echo /sbin/palo; \ |
| 78 | fi) | 79 | fi) |
| 79 | 80 | ||
| 81 | PALOCONF := $(shell if [ -f $(src)/palo.conf ]; then echo $(src)/palo.conf; \ | ||
| 82 | else echo $(obj)/palo.conf; \ | ||
| 83 | fi) | ||
| 84 | |||
| 80 | palo: vmlinux | 85 | palo: vmlinux |
| 81 | @if [ -x $PALO ]; then \ | 86 | @if test ! -x "$(PALO)"; then \ |
| 82 | echo 'ERROR: Please install palo first (apt-get install palo)';\ | 87 | echo 'ERROR: Please install palo first (apt-get install palo)';\ |
| 83 | echo 'or build it from source and install it somewhere in your $$PATH';\ | 88 | echo 'or build it from source and install it somewhere in your $$PATH';\ |
| 84 | false; \ | 89 | false; \ |
| 85 | fi | 90 | fi |
| 86 | @if [ ! -f ./palo.conf ]; then \ | 91 | @if test ! -f "$(PALOCONF)"; then \ |
| 87 | cp arch/parisc/defpalo.conf palo.conf; \ | 92 | cp $(src)/arch/parisc/defpalo.conf $(obj)/palo.conf; \ |
| 88 | echo 'A generic palo config file (./palo.conf) has been created for you.'; \ | 93 | echo 'A generic palo config file ($(obj)/palo.conf) has been created for you.'; \ |
| 89 | echo 'You should check it and re-run "make palo".'; \ | 94 | echo 'You should check it and re-run "make palo".'; \ |
| 90 | echo 'WARNING: the "lifimage" file is now placed in this directory by default!'; \ | 95 | echo 'WARNING: the "lifimage" file is now placed in this directory by default!'; \ |
| 91 | false; \ | 96 | false; \ |
| 92 | fi | 97 | fi |
| 93 | $(PALO) -f ./palo.conf | 98 | $(PALO) -f $(PALOCONF) |
| 94 | |||
| 95 | oldpalo: vmlinux | ||
| 96 | export TOPDIR=`pwd`; \ | ||
| 97 | unset STRIP LDFLAGS CPP CPPFLAGS AFLAGS CFLAGS CC LD; cd ../palo && make lifimage | ||
| 98 | 99 | ||
| 99 | # Shorthands for known targets not supported by parisc, use palo as default | 100 | # Shorthands for known targets not supported by parisc, use vmlinux as default |
| 100 | Image zImage bzImage: palo | 101 | Image zImage bzImage: vmlinux |
| 101 | 102 | ||
| 102 | kernel_install: vmlinux | 103 | kernel_install: vmlinux |
| 103 | sh $(src)/arch/parisc/install.sh \ | 104 | sh $(src)/arch/parisc/install.sh \ |
| @@ -116,3 +117,12 @@ define archhelp | |||
| 116 | @echo ' (distribution) /sbin/installkernel or' | 117 | @echo ' (distribution) /sbin/installkernel or' |
| 117 | @echo ' copy to $$(INSTALL_PATH)' | 118 | @echo ' copy to $$(INSTALL_PATH)' |
| 118 | endef | 119 | endef |
| 120 | |||
| 121 | # we require gcc 3.3 or above to compile the kernel | ||
| 122 | archprepare: checkbin | ||
| 123 | checkbin: | ||
| 124 | @if test "$(call cc-version)" -lt "0303"; then \ | ||
| 125 | echo -n "Sorry, GCC v3.3 or above is required to build " ; \ | ||
| 126 | echo "the kernel." ; \ | ||
| 127 | false ; \ | ||
| 128 | fi | ||
diff --git a/arch/parisc/configs/712_defconfig b/arch/parisc/configs/712_defconfig index 41fd0696bbe7..9fc96e727165 100644 --- a/arch/parisc/configs/712_defconfig +++ b/arch/parisc/configs/712_defconfig | |||
| @@ -1,39 +1,51 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.16-pa6 | 3 | # Linux kernel version: 2.6.23 |
| 4 | # Sun Mar 26 19:59:51 2006 | 4 | # Fri Oct 12 21:00:07 2007 |
| 5 | # | 5 | # |
| 6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| 8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
| 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
| 10 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
| 11 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
| 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 13 | CONFIG_GENERIC_BUG=y | ||
| 14 | CONFIG_GENERIC_HWEIGHT=y | ||
| 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 15 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 16 | CONFIG_GENERIC_TIME=y | ||
| 11 | CONFIG_GENERIC_HARDIRQS=y | 17 | CONFIG_GENERIC_HARDIRQS=y |
| 12 | CONFIG_GENERIC_IRQ_PROBE=y | 18 | CONFIG_GENERIC_IRQ_PROBE=y |
| 19 | CONFIG_IRQ_PER_CPU=y | ||
| 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 13 | 21 | ||
| 14 | # | 22 | # |
| 15 | # Code maturity level options | 23 | # General setup |
| 16 | # | 24 | # |
| 17 | CONFIG_EXPERIMENTAL=y | 25 | CONFIG_EXPERIMENTAL=y |
| 18 | CONFIG_BROKEN_ON_SMP=y | 26 | CONFIG_BROKEN_ON_SMP=y |
| 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
| 20 | |||
| 21 | # | ||
| 22 | # General setup | ||
| 23 | # | ||
| 24 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
| 25 | # CONFIG_LOCALVERSION_AUTO is not set | 29 | # CONFIG_LOCALVERSION_AUTO is not set |
| 26 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
| 27 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
| 32 | CONFIG_SYSVIPC_SYSCTL=y | ||
| 28 | CONFIG_POSIX_MQUEUE=y | 33 | CONFIG_POSIX_MQUEUE=y |
| 29 | # CONFIG_BSD_PROCESS_ACCT is not set | 34 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 30 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
| 36 | # CONFIG_USER_NS is not set | ||
| 31 | # CONFIG_AUDIT is not set | 37 | # CONFIG_AUDIT is not set |
| 32 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
| 33 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
| 40 | CONFIG_LOG_BUF_SHIFT=16 | ||
| 41 | CONFIG_SYSFS_DEPRECATED=y | ||
| 42 | # CONFIG_RELAY is not set | ||
| 43 | CONFIG_BLK_DEV_INITRD=y | ||
| 34 | CONFIG_INITRAMFS_SOURCE="" | 44 | CONFIG_INITRAMFS_SOURCE="" |
| 35 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 45 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
| 46 | CONFIG_SYSCTL=y | ||
| 36 | # CONFIG_EMBEDDED is not set | 47 | # CONFIG_EMBEDDED is not set |
| 48 | CONFIG_SYSCTL_SYSCALL=y | ||
| 37 | CONFIG_KALLSYMS=y | 49 | CONFIG_KALLSYMS=y |
| 38 | CONFIG_KALLSYMS_ALL=y | 50 | CONFIG_KALLSYMS_ALL=y |
| 39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 51 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| @@ -43,31 +55,29 @@ CONFIG_BUG=y | |||
| 43 | CONFIG_ELF_CORE=y | 55 | CONFIG_ELF_CORE=y |
| 44 | CONFIG_BASE_FULL=y | 56 | CONFIG_BASE_FULL=y |
| 45 | CONFIG_FUTEX=y | 57 | CONFIG_FUTEX=y |
| 58 | CONFIG_ANON_INODES=y | ||
| 46 | CONFIG_EPOLL=y | 59 | CONFIG_EPOLL=y |
| 60 | CONFIG_SIGNALFD=y | ||
| 61 | CONFIG_EVENTFD=y | ||
| 47 | CONFIG_SHMEM=y | 62 | CONFIG_SHMEM=y |
| 48 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 63 | CONFIG_VM_EVENT_COUNTERS=y |
| 49 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 50 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 51 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 52 | CONFIG_SLAB=y | 64 | CONFIG_SLAB=y |
| 65 | # CONFIG_SLUB is not set | ||
| 66 | # CONFIG_SLOB is not set | ||
| 67 | CONFIG_RT_MUTEXES=y | ||
| 53 | # CONFIG_TINY_SHMEM is not set | 68 | # CONFIG_TINY_SHMEM is not set |
| 54 | CONFIG_BASE_SMALL=0 | 69 | CONFIG_BASE_SMALL=0 |
| 55 | # CONFIG_SLOB is not set | ||
| 56 | |||
| 57 | # | ||
| 58 | # Loadable module support | ||
| 59 | # | ||
| 60 | CONFIG_MODULES=y | 70 | CONFIG_MODULES=y |
| 61 | CONFIG_MODULE_UNLOAD=y | 71 | CONFIG_MODULE_UNLOAD=y |
| 62 | CONFIG_MODULE_FORCE_UNLOAD=y | 72 | CONFIG_MODULE_FORCE_UNLOAD=y |
| 63 | CONFIG_OBSOLETE_MODPARM=y | ||
| 64 | # CONFIG_MODVERSIONS is not set | 73 | # CONFIG_MODVERSIONS is not set |
| 65 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 74 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
| 66 | CONFIG_KMOD=y | 75 | CONFIG_KMOD=y |
| 67 | 76 | CONFIG_BLOCK=y | |
| 68 | # | 77 | # CONFIG_LBD is not set |
| 69 | # Block layer | 78 | # CONFIG_BLK_DEV_IO_TRACE is not set |
| 70 | # | 79 | # CONFIG_LSF is not set |
| 80 | # CONFIG_BLK_DEV_BSG is not set | ||
| 71 | 81 | ||
| 72 | # | 82 | # |
| 73 | # IO Schedulers | 83 | # IO Schedulers |
| @@ -91,6 +101,9 @@ CONFIG_PA7100LC=y | |||
| 91 | # CONFIG_PA7300LC is not set | 101 | # CONFIG_PA7300LC is not set |
| 92 | # CONFIG_PA8X00 is not set | 102 | # CONFIG_PA8X00 is not set |
| 93 | CONFIG_PA11=y | 103 | CONFIG_PA11=y |
| 104 | CONFIG_PARISC_PAGE_SIZE_4KB=y | ||
| 105 | # CONFIG_PARISC_PAGE_SIZE_16KB is not set | ||
| 106 | # CONFIG_PARISC_PAGE_SIZE_64KB is not set | ||
| 94 | # CONFIG_SMP is not set | 107 | # CONFIG_SMP is not set |
| 95 | CONFIG_ARCH_FLATMEM_ENABLE=y | 108 | CONFIG_ARCH_FLATMEM_ENABLE=y |
| 96 | # CONFIG_PREEMPT_NONE is not set | 109 | # CONFIG_PREEMPT_NONE is not set |
| @@ -98,6 +111,7 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
| 98 | # CONFIG_PREEMPT is not set | 111 | # CONFIG_PREEMPT is not set |
| 99 | # CONFIG_HZ_100 is not set | 112 | # CONFIG_HZ_100 is not set |
| 100 | CONFIG_HZ_250=y | 113 | CONFIG_HZ_250=y |
| 114 | # CONFIG_HZ_300 is not set | ||
| 101 | # CONFIG_HZ_1000 is not set | 115 | # CONFIG_HZ_1000 is not set |
| 102 | CONFIG_HZ=250 | 116 | CONFIG_HZ=250 |
| 103 | CONFIG_SELECT_MEMORY_MODEL=y | 117 | CONFIG_SELECT_MEMORY_MODEL=y |
| @@ -108,6 +122,9 @@ CONFIG_FLATMEM=y | |||
| 108 | CONFIG_FLAT_NODE_MEM_MAP=y | 122 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 109 | # CONFIG_SPARSEMEM_STATIC is not set | 123 | # CONFIG_SPARSEMEM_STATIC is not set |
| 110 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 124 | CONFIG_SPLIT_PTLOCK_CPUS=4096 |
| 125 | # CONFIG_RESOURCES_64BIT is not set | ||
| 126 | CONFIG_ZONE_DMA_FLAG=0 | ||
| 127 | CONFIG_VIRT_TO_BUS=y | ||
| 111 | # CONFIG_HPUX is not set | 128 | # CONFIG_HPUX is not set |
| 112 | 129 | ||
| 113 | # | 130 | # |
| @@ -120,6 +137,7 @@ CONFIG_GSC_LASI=y | |||
| 120 | # CONFIG_GSC_WAX is not set | 137 | # CONFIG_GSC_WAX is not set |
| 121 | # CONFIG_EISA is not set | 138 | # CONFIG_EISA is not set |
| 122 | # CONFIG_PCI is not set | 139 | # CONFIG_PCI is not set |
| 140 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
| 123 | 141 | ||
| 124 | # | 142 | # |
| 125 | # PCCARD (PCMCIA/CardBus) support | 143 | # PCCARD (PCMCIA/CardBus) support |
| @@ -127,14 +145,11 @@ CONFIG_GSC_LASI=y | |||
| 127 | # CONFIG_PCCARD is not set | 145 | # CONFIG_PCCARD is not set |
| 128 | 146 | ||
| 129 | # | 147 | # |
| 130 | # PCI Hotplug Support | ||
| 131 | # | ||
| 132 | |||
| 133 | # | ||
| 134 | # PA-RISC specific drivers | 148 | # PA-RISC specific drivers |
| 135 | # | 149 | # |
| 136 | CONFIG_CHASSIS_LCD_LED=y | 150 | CONFIG_CHASSIS_LCD_LED=y |
| 137 | # CONFIG_PDC_CHASSIS is not set | 151 | # CONFIG_PDC_CHASSIS is not set |
| 152 | CONFIG_PDC_CHASSIS_WARN=y | ||
| 138 | CONFIG_PDC_STABLE=y | 153 | CONFIG_PDC_STABLE=y |
| 139 | 154 | ||
| 140 | # | 155 | # |
| @@ -151,13 +166,15 @@ CONFIG_NET=y | |||
| 151 | # | 166 | # |
| 152 | # Networking options | 167 | # Networking options |
| 153 | # | 168 | # |
| 154 | # CONFIG_NETDEBUG is not set | ||
| 155 | CONFIG_PACKET=y | 169 | CONFIG_PACKET=y |
| 156 | CONFIG_PACKET_MMAP=y | 170 | CONFIG_PACKET_MMAP=y |
| 157 | CONFIG_UNIX=y | 171 | CONFIG_UNIX=y |
| 158 | CONFIG_XFRM=y | 172 | CONFIG_XFRM=y |
| 159 | CONFIG_XFRM_USER=m | 173 | CONFIG_XFRM_USER=m |
| 174 | # CONFIG_XFRM_SUB_POLICY is not set | ||
| 175 | # CONFIG_XFRM_MIGRATE is not set | ||
| 160 | CONFIG_NET_KEY=m | 176 | CONFIG_NET_KEY=m |
| 177 | # CONFIG_NET_KEY_MIGRATE is not set | ||
| 161 | CONFIG_INET=y | 178 | CONFIG_INET=y |
| 162 | CONFIG_IP_MULTICAST=y | 179 | CONFIG_IP_MULTICAST=y |
| 163 | # CONFIG_IP_ADVANCED_ROUTER is not set | 180 | # CONFIG_IP_ADVANCED_ROUTER is not set |
| @@ -174,17 +191,23 @@ CONFIG_IP_PNP_BOOTP=y | |||
| 174 | CONFIG_INET_AH=m | 191 | CONFIG_INET_AH=m |
| 175 | CONFIG_INET_ESP=m | 192 | CONFIG_INET_ESP=m |
| 176 | # CONFIG_INET_IPCOMP is not set | 193 | # CONFIG_INET_IPCOMP is not set |
| 177 | CONFIG_INET_TUNNEL=m | 194 | # CONFIG_INET_XFRM_TUNNEL is not set |
| 195 | # CONFIG_INET_TUNNEL is not set | ||
| 196 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 197 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 198 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 199 | # CONFIG_INET_LRO is not set | ||
| 178 | CONFIG_INET_DIAG=m | 200 | CONFIG_INET_DIAG=m |
| 179 | CONFIG_INET_TCP_DIAG=m | 201 | CONFIG_INET_TCP_DIAG=m |
| 180 | # CONFIG_TCP_CONG_ADVANCED is not set | 202 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 181 | CONFIG_TCP_CONG_BIC=y | 203 | CONFIG_TCP_CONG_CUBIC=y |
| 182 | 204 | CONFIG_DEFAULT_TCP_CONG="cubic" | |
| 183 | # | 205 | # CONFIG_TCP_MD5SIG is not set |
| 184 | # IP: Virtual Server Configuration | ||
| 185 | # | ||
| 186 | # CONFIG_IP_VS is not set | 206 | # CONFIG_IP_VS is not set |
| 187 | # CONFIG_IPV6 is not set | 207 | # CONFIG_IPV6 is not set |
| 208 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
| 209 | # CONFIG_INET6_TUNNEL is not set | ||
| 210 | # CONFIG_NETWORK_SECMARK is not set | ||
| 188 | CONFIG_NETFILTER=y | 211 | CONFIG_NETFILTER=y |
| 189 | # CONFIG_NETFILTER_DEBUG is not set | 212 | # CONFIG_NETFILTER_DEBUG is not set |
| 190 | 213 | ||
| @@ -192,37 +215,18 @@ CONFIG_NETFILTER=y | |||
| 192 | # Core Netfilter Configuration | 215 | # Core Netfilter Configuration |
| 193 | # | 216 | # |
| 194 | # CONFIG_NETFILTER_NETLINK is not set | 217 | # CONFIG_NETFILTER_NETLINK is not set |
| 218 | # CONFIG_NF_CONNTRACK_ENABLED is not set | ||
| 219 | # CONFIG_NF_CONNTRACK is not set | ||
| 195 | # CONFIG_NETFILTER_XTABLES is not set | 220 | # CONFIG_NETFILTER_XTABLES is not set |
| 196 | 221 | ||
| 197 | # | 222 | # |
| 198 | # IP: Netfilter Configuration | 223 | # IP: Netfilter Configuration |
| 199 | # | 224 | # |
| 200 | CONFIG_IP_NF_CONNTRACK=m | ||
| 201 | # CONFIG_IP_NF_CT_ACCT is not set | ||
| 202 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
| 203 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
| 204 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
| 205 | CONFIG_IP_NF_FTP=m | ||
| 206 | CONFIG_IP_NF_IRC=m | ||
| 207 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 208 | CONFIG_IP_NF_TFTP=m | ||
| 209 | CONFIG_IP_NF_AMANDA=m | ||
| 210 | # CONFIG_IP_NF_PPTP is not set | ||
| 211 | CONFIG_IP_NF_QUEUE=m | 225 | CONFIG_IP_NF_QUEUE=m |
| 212 | 226 | # CONFIG_IP_NF_IPTABLES is not set | |
| 213 | # | 227 | # CONFIG_IP_NF_ARPTABLES is not set |
| 214 | # DCCP Configuration (EXPERIMENTAL) | ||
| 215 | # | ||
| 216 | # CONFIG_IP_DCCP is not set | 228 | # CONFIG_IP_DCCP is not set |
| 217 | |||
| 218 | # | ||
| 219 | # SCTP Configuration (EXPERIMENTAL) | ||
| 220 | # | ||
| 221 | # CONFIG_IP_SCTP is not set | 229 | # CONFIG_IP_SCTP is not set |
| 222 | |||
| 223 | # | ||
| 224 | # TIPC Configuration (EXPERIMENTAL) | ||
| 225 | # | ||
| 226 | # CONFIG_TIPC is not set | 230 | # CONFIG_TIPC is not set |
| 227 | # CONFIG_ATM is not set | 231 | # CONFIG_ATM is not set |
| 228 | # CONFIG_BRIDGE is not set | 232 | # CONFIG_BRIDGE is not set |
| @@ -234,7 +238,6 @@ CONFIG_LLC2=m | |||
| 234 | # CONFIG_ATALK is not set | 238 | # CONFIG_ATALK is not set |
| 235 | # CONFIG_X25 is not set | 239 | # CONFIG_X25 is not set |
| 236 | # CONFIG_LAPB is not set | 240 | # CONFIG_LAPB is not set |
| 237 | # CONFIG_NET_DIVERT is not set | ||
| 238 | # CONFIG_ECONET is not set | 241 | # CONFIG_ECONET is not set |
| 239 | # CONFIG_WAN_ROUTER is not set | 242 | # CONFIG_WAN_ROUTER is not set |
| 240 | 243 | ||
| @@ -250,7 +253,17 @@ CONFIG_NET_PKTGEN=m | |||
| 250 | # CONFIG_HAMRADIO is not set | 253 | # CONFIG_HAMRADIO is not set |
| 251 | # CONFIG_IRDA is not set | 254 | # CONFIG_IRDA is not set |
| 252 | # CONFIG_BT is not set | 255 | # CONFIG_BT is not set |
| 256 | # CONFIG_AF_RXRPC is not set | ||
| 257 | |||
| 258 | # | ||
| 259 | # Wireless | ||
| 260 | # | ||
| 261 | # CONFIG_CFG80211 is not set | ||
| 262 | # CONFIG_WIRELESS_EXT is not set | ||
| 263 | # CONFIG_MAC80211 is not set | ||
| 253 | # CONFIG_IEEE80211 is not set | 264 | # CONFIG_IEEE80211 is not set |
| 265 | # CONFIG_RFKILL is not set | ||
| 266 | # CONFIG_NET_9P is not set | ||
| 254 | 267 | ||
| 255 | # | 268 | # |
| 256 | # Device Drivers | 269 | # Device Drivers |
| @@ -259,39 +272,24 @@ CONFIG_NET_PKTGEN=m | |||
| 259 | # | 272 | # |
| 260 | # Generic Driver Options | 273 | # Generic Driver Options |
| 261 | # | 274 | # |
| 275 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 262 | # CONFIG_STANDALONE is not set | 276 | # CONFIG_STANDALONE is not set |
| 263 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 277 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
| 264 | CONFIG_FW_LOADER=y | 278 | CONFIG_FW_LOADER=y |
| 265 | # CONFIG_DEBUG_DRIVER is not set | 279 | # CONFIG_DEBUG_DRIVER is not set |
| 266 | 280 | # CONFIG_DEBUG_DEVRES is not set | |
| 267 | # | 281 | # CONFIG_SYS_HYPERVISOR is not set |
| 268 | # Connector - unified userspace <-> kernelspace linker | ||
| 269 | # | ||
| 270 | # CONFIG_CONNECTOR is not set | 282 | # CONFIG_CONNECTOR is not set |
| 271 | |||
| 272 | # | ||
| 273 | # Memory Technology Devices (MTD) | ||
| 274 | # | ||
| 275 | # CONFIG_MTD is not set | 283 | # CONFIG_MTD is not set |
| 276 | |||
| 277 | # | ||
| 278 | # Parallel port support | ||
| 279 | # | ||
| 280 | CONFIG_PARPORT=y | 284 | CONFIG_PARPORT=y |
| 281 | CONFIG_PARPORT_PC=m | 285 | CONFIG_PARPORT_PC=m |
| 282 | # CONFIG_PARPORT_PC_FIFO is not set | 286 | # CONFIG_PARPORT_PC_FIFO is not set |
| 283 | # CONFIG_PARPORT_PC_SUPERIO is not set | 287 | # CONFIG_PARPORT_PC_SUPERIO is not set |
| 284 | CONFIG_PARPORT_NOT_PC=y | ||
| 285 | CONFIG_PARPORT_GSC=y | 288 | CONFIG_PARPORT_GSC=y |
| 289 | # CONFIG_PARPORT_AX88796 is not set | ||
| 286 | # CONFIG_PARPORT_1284 is not set | 290 | # CONFIG_PARPORT_1284 is not set |
| 287 | 291 | CONFIG_PARPORT_NOT_PC=y | |
| 288 | # | 292 | CONFIG_BLK_DEV=y |
| 289 | # Plug and Play support | ||
| 290 | # | ||
| 291 | |||
| 292 | # | ||
| 293 | # Block devices | ||
| 294 | # | ||
| 295 | # CONFIG_PARIDE is not set | 293 | # CONFIG_PARIDE is not set |
| 296 | # CONFIG_BLK_DEV_COW_COMMON is not set | 294 | # CONFIG_BLK_DEV_COW_COMMON is not set |
| 297 | CONFIG_BLK_DEV_LOOP=y | 295 | CONFIG_BLK_DEV_LOOP=y |
| @@ -300,13 +298,11 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y | |||
| 300 | CONFIG_BLK_DEV_RAM=y | 298 | CONFIG_BLK_DEV_RAM=y |
| 301 | CONFIG_BLK_DEV_RAM_COUNT=16 | 299 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 302 | CONFIG_BLK_DEV_RAM_SIZE=6144 | 300 | CONFIG_BLK_DEV_RAM_SIZE=6144 |
| 303 | CONFIG_BLK_DEV_INITRD=y | 301 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
| 304 | # CONFIG_CDROM_PKTCDVD is not set | 302 | # CONFIG_CDROM_PKTCDVD is not set |
| 305 | CONFIG_ATA_OVER_ETH=m | 303 | CONFIG_ATA_OVER_ETH=m |
| 306 | 304 | CONFIG_MISC_DEVICES=y | |
| 307 | # | 305 | # CONFIG_EEPROM_93CX6 is not set |
| 308 | # ATA/ATAPI/MFM/RLL support | ||
| 309 | # | ||
| 310 | # CONFIG_IDE is not set | 306 | # CONFIG_IDE is not set |
| 311 | 307 | ||
| 312 | # | 308 | # |
| @@ -314,6 +310,9 @@ CONFIG_ATA_OVER_ETH=m | |||
| 314 | # | 310 | # |
| 315 | # CONFIG_RAID_ATTRS is not set | 311 | # CONFIG_RAID_ATTRS is not set |
| 316 | CONFIG_SCSI=y | 312 | CONFIG_SCSI=y |
| 313 | CONFIG_SCSI_DMA=y | ||
| 314 | # CONFIG_SCSI_TGT is not set | ||
| 315 | # CONFIG_SCSI_NETLINK is not set | ||
| 317 | CONFIG_SCSI_PROC_FS=y | 316 | CONFIG_SCSI_PROC_FS=y |
| 318 | 317 | ||
| 319 | # | 318 | # |
| @@ -333,104 +332,61 @@ CONFIG_CHR_DEV_SG=y | |||
| 333 | # CONFIG_SCSI_MULTI_LUN is not set | 332 | # CONFIG_SCSI_MULTI_LUN is not set |
| 334 | # CONFIG_SCSI_CONSTANTS is not set | 333 | # CONFIG_SCSI_CONSTANTS is not set |
| 335 | # CONFIG_SCSI_LOGGING is not set | 334 | # CONFIG_SCSI_LOGGING is not set |
| 335 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 336 | CONFIG_SCSI_WAIT_SCAN=m | ||
| 336 | 337 | ||
| 337 | # | 338 | # |
| 338 | # SCSI Transport Attributes | 339 | # SCSI Transports |
| 339 | # | 340 | # |
| 340 | CONFIG_SCSI_SPI_ATTRS=y | 341 | CONFIG_SCSI_SPI_ATTRS=y |
| 341 | # CONFIG_SCSI_FC_ATTRS is not set | 342 | # CONFIG_SCSI_FC_ATTRS is not set |
| 342 | CONFIG_SCSI_ISCSI_ATTRS=m | 343 | CONFIG_SCSI_ISCSI_ATTRS=m |
| 343 | # CONFIG_SCSI_SAS_ATTRS is not set | 344 | # CONFIG_SCSI_SAS_LIBSAS is not set |
| 344 | 345 | CONFIG_SCSI_LOWLEVEL=y | |
| 345 | # | ||
| 346 | # SCSI low-level drivers | ||
| 347 | # | ||
| 348 | # CONFIG_ISCSI_TCP is not set | 346 | # CONFIG_ISCSI_TCP is not set |
| 349 | # CONFIG_SCSI_SATA is not set | ||
| 350 | # CONFIG_SCSI_PPA is not set | 347 | # CONFIG_SCSI_PPA is not set |
| 351 | # CONFIG_SCSI_IMM is not set | 348 | # CONFIG_SCSI_IMM is not set |
| 352 | CONFIG_SCSI_LASI700=y | 349 | CONFIG_SCSI_LASI700=y |
| 353 | CONFIG_53C700_LE_ON_BE=y | 350 | CONFIG_53C700_LE_ON_BE=y |
| 354 | # CONFIG_SCSI_ZALON is not set | 351 | # CONFIG_SCSI_ZALON is not set |
| 355 | CONFIG_SCSI_DEBUG=m | 352 | CONFIG_SCSI_DEBUG=m |
| 356 | 353 | # CONFIG_ATA is not set | |
| 357 | # | ||
| 358 | # Multi-device support (RAID and LVM) | ||
| 359 | # | ||
| 360 | CONFIG_MD=y | 354 | CONFIG_MD=y |
| 361 | CONFIG_BLK_DEV_MD=m | 355 | CONFIG_BLK_DEV_MD=m |
| 362 | CONFIG_MD_LINEAR=m | 356 | CONFIG_MD_LINEAR=m |
| 363 | CONFIG_MD_RAID0=m | 357 | CONFIG_MD_RAID0=m |
| 364 | CONFIG_MD_RAID1=m | 358 | CONFIG_MD_RAID1=m |
| 365 | # CONFIG_MD_RAID10 is not set | 359 | # CONFIG_MD_RAID10 is not set |
| 366 | # CONFIG_MD_RAID5 is not set | 360 | # CONFIG_MD_RAID456 is not set |
| 367 | # CONFIG_MD_RAID6 is not set | ||
| 368 | # CONFIG_MD_MULTIPATH is not set | 361 | # CONFIG_MD_MULTIPATH is not set |
| 369 | # CONFIG_MD_FAULTY is not set | 362 | # CONFIG_MD_FAULTY is not set |
| 370 | # CONFIG_BLK_DEV_DM is not set | 363 | # CONFIG_BLK_DEV_DM is not set |
| 371 | |||
| 372 | # | ||
| 373 | # Fusion MPT device support | ||
| 374 | # | ||
| 375 | # CONFIG_FUSION is not set | ||
| 376 | |||
| 377 | # | ||
| 378 | # IEEE 1394 (FireWire) support | ||
| 379 | # | ||
| 380 | |||
| 381 | # | ||
| 382 | # I2O device support | ||
| 383 | # | ||
| 384 | |||
| 385 | # | ||
| 386 | # Network device support | ||
| 387 | # | ||
| 388 | CONFIG_NETDEVICES=y | 364 | CONFIG_NETDEVICES=y |
| 365 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
| 389 | CONFIG_DUMMY=m | 366 | CONFIG_DUMMY=m |
| 390 | CONFIG_BONDING=m | 367 | CONFIG_BONDING=m |
| 368 | # CONFIG_MACVLAN is not set | ||
| 391 | # CONFIG_EQUALIZER is not set | 369 | # CONFIG_EQUALIZER is not set |
| 392 | CONFIG_TUN=m | 370 | CONFIG_TUN=m |
| 393 | 371 | # CONFIG_VETH is not set | |
| 394 | # | ||
| 395 | # PHY device support | ||
| 396 | # | ||
| 397 | # CONFIG_PHYLIB is not set | 372 | # CONFIG_PHYLIB is not set |
| 398 | |||
| 399 | # | ||
| 400 | # Ethernet (10 or 100Mbit) | ||
| 401 | # | ||
| 402 | CONFIG_NET_ETHERNET=y | 373 | CONFIG_NET_ETHERNET=y |
| 403 | CONFIG_MII=m | 374 | CONFIG_MII=m |
| 404 | CONFIG_LASI_82596=y | 375 | CONFIG_LASI_82596=y |
| 376 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
| 377 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 378 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 379 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 380 | # CONFIG_B44 is not set | ||
| 405 | # CONFIG_NET_POCKET is not set | 381 | # CONFIG_NET_POCKET is not set |
| 382 | CONFIG_NETDEV_1000=y | ||
| 383 | CONFIG_NETDEV_10000=y | ||
| 406 | 384 | ||
| 407 | # | 385 | # |
| 408 | # Ethernet (1000 Mbit) | 386 | # Wireless LAN |
| 409 | # | ||
| 410 | |||
| 411 | # | ||
| 412 | # Ethernet (10000 Mbit) | ||
| 413 | # | ||
| 414 | |||
| 415 | # | ||
| 416 | # Token Ring devices | ||
| 417 | # | ||
| 418 | |||
| 419 | # | ||
| 420 | # Wireless LAN (non-hamradio) | ||
| 421 | # | ||
| 422 | CONFIG_NET_RADIO=y | ||
| 423 | |||
| 424 | # | ||
| 425 | # Obsolete Wireless cards support (pre-802.11) | ||
| 426 | # | ||
| 427 | # CONFIG_STRIP is not set | ||
| 428 | # CONFIG_ATMEL is not set | ||
| 429 | # CONFIG_HOSTAP is not set | ||
| 430 | |||
| 431 | # | ||
| 432 | # Wan interfaces | ||
| 433 | # | 387 | # |
| 388 | # CONFIG_WLAN_PRE80211 is not set | ||
| 389 | # CONFIG_WLAN_80211 is not set | ||
| 434 | # CONFIG_WAN is not set | 390 | # CONFIG_WAN is not set |
| 435 | # CONFIG_PLIP is not set | 391 | # CONFIG_PLIP is not set |
| 436 | CONFIG_PPP=m | 392 | CONFIG_PPP=m |
| @@ -442,26 +398,22 @@ CONFIG_PPP_DEFLATE=m | |||
| 442 | CONFIG_PPP_BSDCOMP=m | 398 | CONFIG_PPP_BSDCOMP=m |
| 443 | CONFIG_PPP_MPPE=m | 399 | CONFIG_PPP_MPPE=m |
| 444 | CONFIG_PPPOE=m | 400 | CONFIG_PPPOE=m |
| 401 | # CONFIG_PPPOL2TP is not set | ||
| 445 | # CONFIG_SLIP is not set | 402 | # CONFIG_SLIP is not set |
| 403 | CONFIG_SLHC=m | ||
| 446 | # CONFIG_SHAPER is not set | 404 | # CONFIG_SHAPER is not set |
| 447 | # CONFIG_NETCONSOLE is not set | 405 | # CONFIG_NETCONSOLE is not set |
| 448 | # CONFIG_NETPOLL is not set | 406 | # CONFIG_NETPOLL is not set |
| 449 | # CONFIG_NET_POLL_CONTROLLER is not set | 407 | # CONFIG_NET_POLL_CONTROLLER is not set |
| 450 | |||
| 451 | # | ||
| 452 | # ISDN subsystem | ||
| 453 | # | ||
| 454 | # CONFIG_ISDN is not set | 408 | # CONFIG_ISDN is not set |
| 455 | |||
| 456 | # | ||
| 457 | # Telephony Support | ||
| 458 | # | ||
| 459 | # CONFIG_PHONE is not set | 409 | # CONFIG_PHONE is not set |
| 460 | 410 | ||
| 461 | # | 411 | # |
| 462 | # Input device support | 412 | # Input device support |
| 463 | # | 413 | # |
| 464 | CONFIG_INPUT=y | 414 | CONFIG_INPUT=y |
| 415 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
| 416 | # CONFIG_INPUT_POLLDEV is not set | ||
| 465 | 417 | ||
| 466 | # | 418 | # |
| 467 | # Userland interfaces | 419 | # Userland interfaces |
| @@ -486,14 +438,22 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y | |||
| 486 | # CONFIG_KEYBOARD_LKKBD is not set | 438 | # CONFIG_KEYBOARD_LKKBD is not set |
| 487 | # CONFIG_KEYBOARD_XTKBD is not set | 439 | # CONFIG_KEYBOARD_XTKBD is not set |
| 488 | # CONFIG_KEYBOARD_NEWTON is not set | 440 | # CONFIG_KEYBOARD_NEWTON is not set |
| 441 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
| 489 | # CONFIG_KEYBOARD_HIL_OLD is not set | 442 | # CONFIG_KEYBOARD_HIL_OLD is not set |
| 490 | CONFIG_KEYBOARD_HIL=y | 443 | CONFIG_KEYBOARD_HIL=y |
| 491 | CONFIG_INPUT_MOUSE=y | 444 | CONFIG_INPUT_MOUSE=y |
| 492 | CONFIG_MOUSE_PS2=y | 445 | CONFIG_MOUSE_PS2=y |
| 446 | CONFIG_MOUSE_PS2_ALPS=y | ||
| 447 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
| 448 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
| 449 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
| 450 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
| 451 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
| 493 | CONFIG_MOUSE_SERIAL=m | 452 | CONFIG_MOUSE_SERIAL=m |
| 494 | # CONFIG_MOUSE_VSXXXAA is not set | 453 | # CONFIG_MOUSE_VSXXXAA is not set |
| 495 | CONFIG_MOUSE_HIL=m | 454 | CONFIG_MOUSE_HIL=m |
| 496 | # CONFIG_INPUT_JOYSTICK is not set | 455 | # CONFIG_INPUT_JOYSTICK is not set |
| 456 | # CONFIG_INPUT_TABLET is not set | ||
| 497 | # CONFIG_INPUT_TOUCHSCREEN is not set | 457 | # CONFIG_INPUT_TOUCHSCREEN is not set |
| 498 | # CONFIG_INPUT_MISC is not set | 458 | # CONFIG_INPUT_MISC is not set |
| 499 | 459 | ||
| @@ -516,6 +476,7 @@ CONFIG_SERIO_LIBPS2=y | |||
| 516 | CONFIG_VT=y | 476 | CONFIG_VT=y |
| 517 | CONFIG_VT_CONSOLE=y | 477 | CONFIG_VT_CONSOLE=y |
| 518 | CONFIG_HW_CONSOLE=y | 478 | CONFIG_HW_CONSOLE=y |
| 479 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 519 | # CONFIG_SERIAL_NONSTANDARD is not set | 480 | # CONFIG_SERIAL_NONSTANDARD is not set |
| 520 | 481 | ||
| 521 | # | 482 | # |
| @@ -523,6 +484,7 @@ CONFIG_HW_CONSOLE=y | |||
| 523 | # | 484 | # |
| 524 | CONFIG_SERIAL_8250=y | 485 | CONFIG_SERIAL_8250=y |
| 525 | CONFIG_SERIAL_8250_CONSOLE=y | 486 | CONFIG_SERIAL_8250_CONSOLE=y |
| 487 | CONFIG_SERIAL_8250_GSC=y | ||
| 526 | CONFIG_SERIAL_8250_NR_UARTS=17 | 488 | CONFIG_SERIAL_8250_NR_UARTS=17 |
| 527 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 489 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
| 528 | CONFIG_SERIAL_8250_EXTENDED=y | 490 | CONFIG_SERIAL_8250_EXTENDED=y |
| @@ -545,36 +507,15 @@ CONFIG_PRINTER=m | |||
| 545 | # CONFIG_LP_CONSOLE is not set | 507 | # CONFIG_LP_CONSOLE is not set |
| 546 | CONFIG_PPDEV=m | 508 | CONFIG_PPDEV=m |
| 547 | # CONFIG_TIPAR is not set | 509 | # CONFIG_TIPAR is not set |
| 548 | |||
| 549 | # | ||
| 550 | # IPMI | ||
| 551 | # | ||
| 552 | # CONFIG_IPMI_HANDLER is not set | 510 | # CONFIG_IPMI_HANDLER is not set |
| 553 | |||
| 554 | # | ||
| 555 | # Watchdog Cards | ||
| 556 | # | ||
| 557 | # CONFIG_WATCHDOG is not set | 511 | # CONFIG_WATCHDOG is not set |
| 512 | # CONFIG_HW_RANDOM is not set | ||
| 558 | CONFIG_GEN_RTC=y | 513 | CONFIG_GEN_RTC=y |
| 559 | CONFIG_GEN_RTC_X=y | 514 | CONFIG_GEN_RTC_X=y |
| 560 | # CONFIG_DTLK is not set | ||
| 561 | # CONFIG_R3964 is not set | 515 | # CONFIG_R3964 is not set |
| 562 | |||
| 563 | # | ||
| 564 | # Ftape, the floppy tape device driver | ||
| 565 | # | ||
| 566 | CONFIG_RAW_DRIVER=y | 516 | CONFIG_RAW_DRIVER=y |
| 567 | CONFIG_MAX_RAW_DEVS=256 | 517 | CONFIG_MAX_RAW_DEVS=256 |
| 568 | |||
| 569 | # | ||
| 570 | # TPM devices | ||
| 571 | # | ||
| 572 | # CONFIG_TCG_TPM is not set | 518 | # CONFIG_TCG_TPM is not set |
| 573 | # CONFIG_TELCLOCK is not set | ||
| 574 | |||
| 575 | # | ||
| 576 | # I2C support | ||
| 577 | # | ||
| 578 | # CONFIG_I2C is not set | 519 | # CONFIG_I2C is not set |
| 579 | 520 | ||
| 580 | # | 521 | # |
| @@ -582,46 +523,59 @@ CONFIG_MAX_RAW_DEVS=256 | |||
| 582 | # | 523 | # |
| 583 | # CONFIG_SPI is not set | 524 | # CONFIG_SPI is not set |
| 584 | # CONFIG_SPI_MASTER is not set | 525 | # CONFIG_SPI_MASTER is not set |
| 585 | |||
| 586 | # | ||
| 587 | # Dallas's 1-wire bus | ||
| 588 | # | ||
| 589 | # CONFIG_W1 is not set | 526 | # CONFIG_W1 is not set |
| 590 | 527 | # CONFIG_POWER_SUPPLY is not set | |
| 591 | # | ||
| 592 | # Hardware Monitoring support | ||
| 593 | # | ||
| 594 | # CONFIG_HWMON is not set | 528 | # CONFIG_HWMON is not set |
| 595 | # CONFIG_HWMON_VID is not set | ||
| 596 | 529 | ||
| 597 | # | 530 | # |
| 598 | # Misc devices | 531 | # Sonics Silicon Backplane |
| 599 | # | 532 | # |
| 533 | CONFIG_SSB_POSSIBLE=y | ||
| 534 | # CONFIG_SSB is not set | ||
| 600 | 535 | ||
| 601 | # | 536 | # |
| 602 | # Multimedia Capabilities Port drivers | 537 | # Multifunction device drivers |
| 603 | # | 538 | # |
| 539 | # CONFIG_MFD_SM501 is not set | ||
| 604 | 540 | ||
| 605 | # | 541 | # |
| 606 | # Multimedia devices | 542 | # Multimedia devices |
| 607 | # | 543 | # |
| 608 | # CONFIG_VIDEO_DEV is not set | 544 | # CONFIG_VIDEO_DEV is not set |
| 545 | # CONFIG_DVB_CORE is not set | ||
| 546 | # CONFIG_DAB is not set | ||
| 609 | 547 | ||
| 610 | # | 548 | # |
| 611 | # Digital Video Broadcasting Devices | 549 | # Graphics support |
| 612 | # | 550 | # |
| 613 | # CONFIG_DVB is not set | 551 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
| 614 | 552 | ||
| 615 | # | 553 | # |
| 616 | # Graphics support | 554 | # Display device support |
| 617 | # | 555 | # |
| 556 | # CONFIG_DISPLAY_SUPPORT is not set | ||
| 557 | # CONFIG_VGASTATE is not set | ||
| 558 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
| 618 | CONFIG_FB=y | 559 | CONFIG_FB=y |
| 560 | # CONFIG_FIRMWARE_EDID is not set | ||
| 561 | # CONFIG_FB_DDC is not set | ||
| 619 | CONFIG_FB_CFB_FILLRECT=y | 562 | CONFIG_FB_CFB_FILLRECT=y |
| 620 | CONFIG_FB_CFB_COPYAREA=y | 563 | CONFIG_FB_CFB_COPYAREA=y |
| 621 | CONFIG_FB_CFB_IMAGEBLIT=y | 564 | CONFIG_FB_CFB_IMAGEBLIT=y |
| 565 | # CONFIG_FB_SYS_FILLRECT is not set | ||
| 566 | # CONFIG_FB_SYS_COPYAREA is not set | ||
| 567 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
| 568 | # CONFIG_FB_SYS_FOPS is not set | ||
| 569 | CONFIG_FB_DEFERRED_IO=y | ||
| 570 | # CONFIG_FB_SVGALIB is not set | ||
| 622 | # CONFIG_FB_MACMODES is not set | 571 | # CONFIG_FB_MACMODES is not set |
| 572 | # CONFIG_FB_BACKLIGHT is not set | ||
| 623 | CONFIG_FB_MODE_HELPERS=y | 573 | CONFIG_FB_MODE_HELPERS=y |
| 624 | CONFIG_FB_TILEBLITTING=y | 574 | CONFIG_FB_TILEBLITTING=y |
| 575 | |||
| 576 | # | ||
| 577 | # Frame buffer hardware drivers | ||
| 578 | # | ||
| 625 | CONFIG_FB_STI=y | 579 | CONFIG_FB_STI=y |
| 626 | # CONFIG_FB_S1D13XXX is not set | 580 | # CONFIG_FB_S1D13XXX is not set |
| 627 | # CONFIG_FB_VIRTUAL is not set | 581 | # CONFIG_FB_VIRTUAL is not set |
| @@ -633,6 +587,7 @@ CONFIG_DUMMY_CONSOLE=y | |||
| 633 | CONFIG_DUMMY_CONSOLE_COLUMNS=128 | 587 | CONFIG_DUMMY_CONSOLE_COLUMNS=128 |
| 634 | CONFIG_DUMMY_CONSOLE_ROWS=48 | 588 | CONFIG_DUMMY_CONSOLE_ROWS=48 |
| 635 | CONFIG_FRAMEBUFFER_CONSOLE=y | 589 | CONFIG_FRAMEBUFFER_CONSOLE=y |
| 590 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
| 636 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 591 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
| 637 | CONFIG_STI_CONSOLE=y | 592 | CONFIG_STI_CONSOLE=y |
| 638 | CONFIG_FONTS=y | 593 | CONFIG_FONTS=y |
| @@ -646,16 +601,11 @@ CONFIG_FONT_8x16=y | |||
| 646 | # CONFIG_FONT_SUN8x16 is not set | 601 | # CONFIG_FONT_SUN8x16 is not set |
| 647 | # CONFIG_FONT_SUN12x22 is not set | 602 | # CONFIG_FONT_SUN12x22 is not set |
| 648 | # CONFIG_FONT_10x18 is not set | 603 | # CONFIG_FONT_10x18 is not set |
| 649 | |||
| 650 | # | ||
| 651 | # Logo configuration | ||
| 652 | # | ||
| 653 | CONFIG_LOGO=y | 604 | CONFIG_LOGO=y |
| 654 | # CONFIG_LOGO_LINUX_MONO is not set | 605 | # CONFIG_LOGO_LINUX_MONO is not set |
| 655 | # CONFIG_LOGO_LINUX_VGA16 is not set | 606 | # CONFIG_LOGO_LINUX_VGA16 is not set |
| 656 | # CONFIG_LOGO_LINUX_CLUT224 is not set | 607 | # CONFIG_LOGO_LINUX_CLUT224 is not set |
| 657 | CONFIG_LOGO_PARISC_CLUT224=y | 608 | CONFIG_LOGO_PARISC_CLUT224=y |
| 658 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 659 | 609 | ||
| 660 | # | 610 | # |
| 661 | # Sound | 611 | # Sound |
| @@ -673,9 +623,11 @@ CONFIG_SND_SEQUENCER=y | |||
| 673 | CONFIG_SND_OSSEMUL=y | 623 | CONFIG_SND_OSSEMUL=y |
| 674 | CONFIG_SND_MIXER_OSS=y | 624 | CONFIG_SND_MIXER_OSS=y |
| 675 | CONFIG_SND_PCM_OSS=y | 625 | CONFIG_SND_PCM_OSS=y |
| 626 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
| 676 | CONFIG_SND_SEQUENCER_OSS=y | 627 | CONFIG_SND_SEQUENCER_OSS=y |
| 677 | # CONFIG_SND_DYNAMIC_MINORS is not set | 628 | # CONFIG_SND_DYNAMIC_MINORS is not set |
| 678 | CONFIG_SND_SUPPORT_OLD_API=y | 629 | CONFIG_SND_SUPPORT_OLD_API=y |
| 630 | CONFIG_SND_VERBOSE_PROCFS=y | ||
| 679 | # CONFIG_SND_VERBOSE_PRINTK is not set | 631 | # CONFIG_SND_VERBOSE_PRINTK is not set |
| 680 | # CONFIG_SND_DEBUG is not set | 632 | # CONFIG_SND_DEBUG is not set |
| 681 | 633 | ||
| @@ -685,8 +637,10 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
| 685 | # CONFIG_SND_DUMMY is not set | 637 | # CONFIG_SND_DUMMY is not set |
| 686 | # CONFIG_SND_VIRMIDI is not set | 638 | # CONFIG_SND_VIRMIDI is not set |
| 687 | # CONFIG_SND_MTPAV is not set | 639 | # CONFIG_SND_MTPAV is not set |
| 640 | # CONFIG_SND_MTS64 is not set | ||
| 688 | # CONFIG_SND_SERIAL_U16550 is not set | 641 | # CONFIG_SND_SERIAL_U16550 is not set |
| 689 | # CONFIG_SND_MPU401 is not set | 642 | # CONFIG_SND_MPU401 is not set |
| 643 | # CONFIG_SND_PORTMAN2X4 is not set | ||
| 690 | 644 | ||
| 691 | # | 645 | # |
| 692 | # GSC devices | 646 | # GSC devices |
| @@ -694,15 +648,25 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
| 694 | CONFIG_SND_HARMONY=y | 648 | CONFIG_SND_HARMONY=y |
| 695 | 649 | ||
| 696 | # | 650 | # |
| 697 | # Open Sound System | 651 | # System on Chip audio support |
| 698 | # | 652 | # |
| 699 | # CONFIG_SOUND_PRIME is not set | 653 | # CONFIG_SND_SOC is not set |
| 700 | 654 | ||
| 701 | # | 655 | # |
| 702 | # USB support | 656 | # SoC Audio support for SuperH |
| 703 | # | 657 | # |
| 658 | |||
| 659 | # | ||
| 660 | # Open Sound System | ||
| 661 | # | ||
| 662 | # CONFIG_SOUND_PRIME is not set | ||
| 663 | CONFIG_HID_SUPPORT=y | ||
| 664 | CONFIG_HID=y | ||
| 665 | CONFIG_HID_DEBUG=y | ||
| 666 | CONFIG_USB_SUPPORT=y | ||
| 704 | # CONFIG_USB_ARCH_HAS_HCD is not set | 667 | # CONFIG_USB_ARCH_HAS_HCD is not set |
| 705 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 668 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
| 669 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
| 706 | 670 | ||
| 707 | # | 671 | # |
| 708 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 672 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
| @@ -712,19 +676,28 @@ CONFIG_SND_HARMONY=y | |||
| 712 | # USB Gadget Support | 676 | # USB Gadget Support |
| 713 | # | 677 | # |
| 714 | # CONFIG_USB_GADGET is not set | 678 | # CONFIG_USB_GADGET is not set |
| 679 | # CONFIG_MMC is not set | ||
| 680 | # CONFIG_NEW_LEDS is not set | ||
| 681 | # CONFIG_RTC_CLASS is not set | ||
| 715 | 682 | ||
| 716 | # | 683 | # |
| 717 | # MMC/SD Card support | 684 | # DMA Engine support |
| 685 | # | ||
| 686 | # CONFIG_DMA_ENGINE is not set | ||
| 687 | |||
| 688 | # | ||
| 689 | # DMA Clients | ||
| 718 | # | 690 | # |
| 719 | # CONFIG_MMC is not set | ||
| 720 | 691 | ||
| 721 | # | 692 | # |
| 722 | # InfiniBand support | 693 | # DMA Devices |
| 723 | # | 694 | # |
| 695 | # CONFIG_AUXDISPLAY is not set | ||
| 724 | 696 | ||
| 725 | # | 697 | # |
| 726 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 698 | # Userspace I/O |
| 727 | # | 699 | # |
| 700 | # CONFIG_UIO is not set | ||
| 728 | 701 | ||
| 729 | # | 702 | # |
| 730 | # File systems | 703 | # File systems |
| @@ -734,6 +707,7 @@ CONFIG_EXT2_FS=y | |||
| 734 | # CONFIG_EXT2_FS_XIP is not set | 707 | # CONFIG_EXT2_FS_XIP is not set |
| 735 | CONFIG_EXT3_FS=y | 708 | CONFIG_EXT3_FS=y |
| 736 | # CONFIG_EXT3_FS_XATTR is not set | 709 | # CONFIG_EXT3_FS_XATTR is not set |
| 710 | # CONFIG_EXT4DEV_FS is not set | ||
| 737 | CONFIG_JBD=y | 711 | CONFIG_JBD=y |
| 738 | # CONFIG_JBD_DEBUG is not set | 712 | # CONFIG_JBD_DEBUG is not set |
| 739 | # CONFIG_REISERFS_FS is not set | 713 | # CONFIG_REISERFS_FS is not set |
| @@ -744,15 +718,16 @@ CONFIG_JFS_FS=m | |||
| 744 | # CONFIG_JFS_STATISTICS is not set | 718 | # CONFIG_JFS_STATISTICS is not set |
| 745 | CONFIG_FS_POSIX_ACL=y | 719 | CONFIG_FS_POSIX_ACL=y |
| 746 | CONFIG_XFS_FS=m | 720 | CONFIG_XFS_FS=m |
| 747 | CONFIG_XFS_EXPORT=y | ||
| 748 | # CONFIG_XFS_QUOTA is not set | 721 | # CONFIG_XFS_QUOTA is not set |
| 749 | # CONFIG_XFS_SECURITY is not set | 722 | # CONFIG_XFS_SECURITY is not set |
| 750 | # CONFIG_XFS_POSIX_ACL is not set | 723 | # CONFIG_XFS_POSIX_ACL is not set |
| 751 | # CONFIG_XFS_RT is not set | 724 | # CONFIG_XFS_RT is not set |
| 725 | # CONFIG_GFS2_FS is not set | ||
| 752 | # CONFIG_OCFS2_FS is not set | 726 | # CONFIG_OCFS2_FS is not set |
| 753 | # CONFIG_MINIX_FS is not set | 727 | # CONFIG_MINIX_FS is not set |
| 754 | # CONFIG_ROMFS_FS is not set | 728 | # CONFIG_ROMFS_FS is not set |
| 755 | CONFIG_INOTIFY=y | 729 | CONFIG_INOTIFY=y |
| 730 | CONFIG_INOTIFY_USER=y | ||
| 756 | # CONFIG_QUOTA is not set | 731 | # CONFIG_QUOTA is not set |
| 757 | CONFIG_DNOTIFY=y | 732 | CONFIG_DNOTIFY=y |
| 758 | # CONFIG_AUTOFS_FS is not set | 733 | # CONFIG_AUTOFS_FS is not set |
| @@ -783,11 +758,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
| 783 | # | 758 | # |
| 784 | CONFIG_PROC_FS=y | 759 | CONFIG_PROC_FS=y |
| 785 | CONFIG_PROC_KCORE=y | 760 | CONFIG_PROC_KCORE=y |
| 761 | CONFIG_PROC_SYSCTL=y | ||
| 786 | CONFIG_SYSFS=y | 762 | CONFIG_SYSFS=y |
| 787 | CONFIG_TMPFS=y | 763 | CONFIG_TMPFS=y |
| 764 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
| 788 | # CONFIG_HUGETLB_PAGE is not set | 765 | # CONFIG_HUGETLB_PAGE is not set |
| 789 | CONFIG_RAMFS=y | 766 | CONFIG_RAMFS=y |
| 790 | # CONFIG_RELAYFS_FS is not set | ||
| 791 | # CONFIG_CONFIGFS_FS is not set | 767 | # CONFIG_CONFIGFS_FS is not set |
| 792 | 768 | ||
| 793 | # | 769 | # |
| @@ -795,6 +771,7 @@ CONFIG_RAMFS=y | |||
| 795 | # | 771 | # |
| 796 | # CONFIG_ADFS_FS is not set | 772 | # CONFIG_ADFS_FS is not set |
| 797 | # CONFIG_AFFS_FS is not set | 773 | # CONFIG_AFFS_FS is not set |
| 774 | # CONFIG_ECRYPT_FS is not set | ||
| 798 | # CONFIG_HFS_FS is not set | 775 | # CONFIG_HFS_FS is not set |
| 799 | # CONFIG_HFSPLUS_FS is not set | 776 | # CONFIG_HFSPLUS_FS is not set |
| 800 | # CONFIG_BEFS_FS is not set | 777 | # CONFIG_BEFS_FS is not set |
| @@ -806,6 +783,8 @@ CONFIG_RAMFS=y | |||
| 806 | # CONFIG_QNX4FS_FS is not set | 783 | # CONFIG_QNX4FS_FS is not set |
| 807 | # CONFIG_SYSV_FS is not set | 784 | # CONFIG_SYSV_FS is not set |
| 808 | CONFIG_UFS_FS=m | 785 | CONFIG_UFS_FS=m |
| 786 | # CONFIG_UFS_FS_WRITE is not set | ||
| 787 | # CONFIG_UFS_DEBUG is not set | ||
| 809 | 788 | ||
| 810 | # | 789 | # |
| 811 | # Network File Systems | 790 | # Network File Systems |
| @@ -827,6 +806,7 @@ CONFIG_EXPORTFS=m | |||
| 827 | CONFIG_NFS_COMMON=y | 806 | CONFIG_NFS_COMMON=y |
| 828 | CONFIG_SUNRPC=y | 807 | CONFIG_SUNRPC=y |
| 829 | CONFIG_SUNRPC_GSS=y | 808 | CONFIG_SUNRPC_GSS=y |
| 809 | # CONFIG_SUNRPC_BIND34 is not set | ||
| 830 | CONFIG_RPCSEC_GSS_KRB5=y | 810 | CONFIG_RPCSEC_GSS_KRB5=y |
| 831 | CONFIG_RPCSEC_GSS_SPKM3=m | 811 | CONFIG_RPCSEC_GSS_SPKM3=m |
| 832 | CONFIG_SMB_FS=m | 812 | CONFIG_SMB_FS=m |
| @@ -834,12 +814,13 @@ CONFIG_SMB_NLS_DEFAULT=y | |||
| 834 | CONFIG_SMB_NLS_REMOTE="cp437" | 814 | CONFIG_SMB_NLS_REMOTE="cp437" |
| 835 | CONFIG_CIFS=m | 815 | CONFIG_CIFS=m |
| 836 | # CONFIG_CIFS_STATS is not set | 816 | # CONFIG_CIFS_STATS is not set |
| 817 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
| 837 | # CONFIG_CIFS_XATTR is not set | 818 | # CONFIG_CIFS_XATTR is not set |
| 819 | # CONFIG_CIFS_DEBUG2 is not set | ||
| 838 | # CONFIG_CIFS_EXPERIMENTAL is not set | 820 | # CONFIG_CIFS_EXPERIMENTAL is not set |
| 839 | # CONFIG_NCP_FS is not set | 821 | # CONFIG_NCP_FS is not set |
| 840 | # CONFIG_CODA_FS is not set | 822 | # CONFIG_CODA_FS is not set |
| 841 | # CONFIG_AFS_FS is not set | 823 | # CONFIG_AFS_FS is not set |
| 842 | # CONFIG_9P_FS is not set | ||
| 843 | 824 | ||
| 844 | # | 825 | # |
| 845 | # Partition Types | 826 | # Partition Types |
| @@ -892,6 +873,11 @@ CONFIG_NLS_KOI8_U=m | |||
| 892 | CONFIG_NLS_UTF8=m | 873 | CONFIG_NLS_UTF8=m |
| 893 | 874 | ||
| 894 | # | 875 | # |
| 876 | # Distributed Lock Manager | ||
| 877 | # | ||
| 878 | # CONFIG_DLM is not set | ||
| 879 | |||
| 880 | # | ||
| 895 | # Profiling support | 881 | # Profiling support |
| 896 | # | 882 | # |
| 897 | CONFIG_PROFILING=y | 883 | CONFIG_PROFILING=y |
| @@ -901,21 +887,32 @@ CONFIG_OPROFILE=m | |||
| 901 | # Kernel hacking | 887 | # Kernel hacking |
| 902 | # | 888 | # |
| 903 | # CONFIG_PRINTK_TIME is not set | 889 | # CONFIG_PRINTK_TIME is not set |
| 890 | CONFIG_ENABLE_MUST_CHECK=y | ||
| 904 | CONFIG_MAGIC_SYSRQ=y | 891 | CONFIG_MAGIC_SYSRQ=y |
| 892 | # CONFIG_UNUSED_SYMBOLS is not set | ||
| 893 | # CONFIG_DEBUG_FS is not set | ||
| 894 | # CONFIG_HEADERS_CHECK is not set | ||
| 905 | CONFIG_DEBUG_KERNEL=y | 895 | CONFIG_DEBUG_KERNEL=y |
| 906 | CONFIG_LOG_BUF_SHIFT=16 | 896 | # CONFIG_DEBUG_SHIRQ is not set |
| 907 | CONFIG_DETECT_SOFTLOCKUP=y | 897 | CONFIG_DETECT_SOFTLOCKUP=y |
| 898 | CONFIG_SCHED_DEBUG=y | ||
| 908 | # CONFIG_SCHEDSTATS is not set | 899 | # CONFIG_SCHEDSTATS is not set |
| 900 | # CONFIG_TIMER_STATS is not set | ||
| 909 | # CONFIG_DEBUG_SLAB is not set | 901 | # CONFIG_DEBUG_SLAB is not set |
| 910 | CONFIG_DEBUG_MUTEXES=y | 902 | # CONFIG_DEBUG_RT_MUTEXES is not set |
| 903 | # CONFIG_RT_MUTEX_TESTER is not set | ||
| 911 | # CONFIG_DEBUG_SPINLOCK is not set | 904 | # CONFIG_DEBUG_SPINLOCK is not set |
| 905 | CONFIG_DEBUG_MUTEXES=y | ||
| 912 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 906 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 907 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 913 | # CONFIG_DEBUG_KOBJECT is not set | 908 | # CONFIG_DEBUG_KOBJECT is not set |
| 909 | CONFIG_DEBUG_BUGVERBOSE=y | ||
| 914 | # CONFIG_DEBUG_INFO is not set | 910 | # CONFIG_DEBUG_INFO is not set |
| 915 | # CONFIG_DEBUG_FS is not set | ||
| 916 | # CONFIG_DEBUG_VM is not set | 911 | # CONFIG_DEBUG_VM is not set |
| 912 | # CONFIG_DEBUG_LIST is not set | ||
| 917 | CONFIG_FORCED_INLINING=y | 913 | CONFIG_FORCED_INLINING=y |
| 918 | # CONFIG_RCU_TORTURE_TEST is not set | 914 | # CONFIG_RCU_TORTURE_TEST is not set |
| 915 | # CONFIG_FAULT_INJECTION is not set | ||
| 919 | CONFIG_DEBUG_RODATA=y | 916 | CONFIG_DEBUG_RODATA=y |
| 920 | 917 | ||
| 921 | # | 918 | # |
| @@ -924,12 +921,13 @@ CONFIG_DEBUG_RODATA=y | |||
| 924 | CONFIG_KEYS=y | 921 | CONFIG_KEYS=y |
| 925 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | 922 | CONFIG_KEYS_DEBUG_PROC_KEYS=y |
| 926 | # CONFIG_SECURITY is not set | 923 | # CONFIG_SECURITY is not set |
| 927 | |||
| 928 | # | ||
| 929 | # Cryptographic options | ||
| 930 | # | ||
| 931 | CONFIG_CRYPTO=y | 924 | CONFIG_CRYPTO=y |
| 925 | CONFIG_CRYPTO_ALGAPI=y | ||
| 926 | CONFIG_CRYPTO_BLKCIPHER=y | ||
| 927 | CONFIG_CRYPTO_HASH=y | ||
| 928 | CONFIG_CRYPTO_MANAGER=y | ||
| 932 | CONFIG_CRYPTO_HMAC=y | 929 | CONFIG_CRYPTO_HMAC=y |
| 930 | # CONFIG_CRYPTO_XCBC is not set | ||
| 933 | CONFIG_CRYPTO_NULL=m | 931 | CONFIG_CRYPTO_NULL=m |
| 934 | CONFIG_CRYPTO_MD4=m | 932 | CONFIG_CRYPTO_MD4=m |
| 935 | CONFIG_CRYPTO_MD5=y | 933 | CONFIG_CRYPTO_MD5=y |
| @@ -938,9 +936,18 @@ CONFIG_CRYPTO_SHA256=m | |||
| 938 | CONFIG_CRYPTO_SHA512=m | 936 | CONFIG_CRYPTO_SHA512=m |
| 939 | CONFIG_CRYPTO_WP512=m | 937 | CONFIG_CRYPTO_WP512=m |
| 940 | CONFIG_CRYPTO_TGR192=m | 938 | CONFIG_CRYPTO_TGR192=m |
| 939 | # CONFIG_CRYPTO_GF128MUL is not set | ||
| 940 | CONFIG_CRYPTO_ECB=m | ||
| 941 | CONFIG_CRYPTO_CBC=y | ||
| 942 | # CONFIG_CRYPTO_PCBC is not set | ||
| 943 | # CONFIG_CRYPTO_LRW is not set | ||
| 944 | # CONFIG_CRYPTO_XTS is not set | ||
| 945 | # CONFIG_CRYPTO_CRYPTD is not set | ||
| 941 | CONFIG_CRYPTO_DES=y | 946 | CONFIG_CRYPTO_DES=y |
| 947 | # CONFIG_CRYPTO_FCRYPT is not set | ||
| 942 | CONFIG_CRYPTO_BLOWFISH=m | 948 | CONFIG_CRYPTO_BLOWFISH=m |
| 943 | CONFIG_CRYPTO_TWOFISH=m | 949 | CONFIG_CRYPTO_TWOFISH=m |
| 950 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
| 944 | CONFIG_CRYPTO_SERPENT=m | 951 | CONFIG_CRYPTO_SERPENT=m |
| 945 | CONFIG_CRYPTO_AES=m | 952 | CONFIG_CRYPTO_AES=m |
| 946 | CONFIG_CRYPTO_CAST5=m | 953 | CONFIG_CRYPTO_CAST5=m |
| @@ -949,21 +956,28 @@ CONFIG_CRYPTO_TEA=m | |||
| 949 | CONFIG_CRYPTO_ARC4=m | 956 | CONFIG_CRYPTO_ARC4=m |
| 950 | CONFIG_CRYPTO_KHAZAD=m | 957 | CONFIG_CRYPTO_KHAZAD=m |
| 951 | CONFIG_CRYPTO_ANUBIS=m | 958 | CONFIG_CRYPTO_ANUBIS=m |
| 959 | # CONFIG_CRYPTO_SEED is not set | ||
| 952 | CONFIG_CRYPTO_DEFLATE=m | 960 | CONFIG_CRYPTO_DEFLATE=m |
| 953 | CONFIG_CRYPTO_MICHAEL_MIC=m | 961 | CONFIG_CRYPTO_MICHAEL_MIC=m |
| 954 | CONFIG_CRYPTO_CRC32C=m | 962 | CONFIG_CRYPTO_CRC32C=m |
| 963 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
| 955 | CONFIG_CRYPTO_TEST=m | 964 | CONFIG_CRYPTO_TEST=m |
| 956 | 965 | # CONFIG_CRYPTO_AUTHENC is not set | |
| 957 | # | 966 | # CONFIG_CRYPTO_HW is not set |
| 958 | # Hardware crypto devices | ||
| 959 | # | ||
| 960 | 967 | ||
| 961 | # | 968 | # |
| 962 | # Library routines | 969 | # Library routines |
| 963 | # | 970 | # |
| 971 | CONFIG_BITREVERSE=y | ||
| 964 | CONFIG_CRC_CCITT=m | 972 | CONFIG_CRC_CCITT=m |
| 965 | # CONFIG_CRC16 is not set | 973 | # CONFIG_CRC16 is not set |
| 974 | # CONFIG_CRC_ITU_T is not set | ||
| 966 | CONFIG_CRC32=y | 975 | CONFIG_CRC32=y |
| 976 | # CONFIG_CRC7 is not set | ||
| 967 | CONFIG_LIBCRC32C=m | 977 | CONFIG_LIBCRC32C=m |
| 968 | CONFIG_ZLIB_INFLATE=m | 978 | CONFIG_ZLIB_INFLATE=m |
| 969 | CONFIG_ZLIB_DEFLATE=m | 979 | CONFIG_ZLIB_DEFLATE=m |
| 980 | CONFIG_PLIST=y | ||
| 981 | CONFIG_HAS_IOMEM=y | ||
| 982 | CONFIG_HAS_IOPORT=y | ||
| 983 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/parisc/configs/a500_defconfig b/arch/parisc/configs/a500_defconfig index f3b812f04592..ea071218a3ed 100644 --- a/arch/parisc/configs/a500_defconfig +++ b/arch/parisc/configs/a500_defconfig | |||
| @@ -1,73 +1,98 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.14-rc5-pa1 | 3 | # Linux kernel version: 2.6.23 |
| 4 | # Fri Oct 21 23:04:54 2005 | 4 | # Fri Oct 12 21:12:44 2007 |
| 5 | # | 5 | # |
| 6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| 8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
| 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
| 10 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
| 11 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
| 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 13 | CONFIG_GENERIC_BUG=y | ||
| 14 | CONFIG_GENERIC_HWEIGHT=y | ||
| 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 15 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 16 | CONFIG_GENERIC_TIME=y | ||
| 17 | CONFIG_TIME_LOW_RES=y | ||
| 11 | CONFIG_GENERIC_HARDIRQS=y | 18 | CONFIG_GENERIC_HARDIRQS=y |
| 12 | CONFIG_GENERIC_IRQ_PROBE=y | 19 | CONFIG_GENERIC_IRQ_PROBE=y |
| 13 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | 20 | CONFIG_IRQ_PER_CPU=y |
| 21 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 14 | 22 | ||
| 15 | # | 23 | # |
| 16 | # Code maturity level options | 24 | # General setup |
| 17 | # | 25 | # |
| 18 | CONFIG_EXPERIMENTAL=y | 26 | CONFIG_EXPERIMENTAL=y |
| 19 | # CONFIG_CLEAN_COMPILE is not set | ||
| 20 | CONFIG_BROKEN=y | ||
| 21 | CONFIG_BROKEN_ON_SMP=y | ||
| 22 | CONFIG_LOCK_KERNEL=y | 27 | CONFIG_LOCK_KERNEL=y |
| 23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 28 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
| 24 | |||
| 25 | # | ||
| 26 | # General setup | ||
| 27 | # | ||
| 28 | CONFIG_LOCALVERSION="" | 29 | CONFIG_LOCALVERSION="" |
| 29 | # CONFIG_LOCALVERSION_AUTO is not set | 30 | # CONFIG_LOCALVERSION_AUTO is not set |
| 30 | CONFIG_SWAP=y | 31 | CONFIG_SWAP=y |
| 31 | CONFIG_SYSVIPC=y | 32 | CONFIG_SYSVIPC=y |
| 33 | CONFIG_SYSVIPC_SYSCTL=y | ||
| 32 | CONFIG_POSIX_MQUEUE=y | 34 | CONFIG_POSIX_MQUEUE=y |
| 33 | # CONFIG_BSD_PROCESS_ACCT is not set | 35 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 34 | CONFIG_SYSCTL=y | 36 | # CONFIG_TASKSTATS is not set |
| 37 | # CONFIG_USER_NS is not set | ||
| 35 | # CONFIG_AUDIT is not set | 38 | # CONFIG_AUDIT is not set |
| 36 | CONFIG_HOTPLUG=y | ||
| 37 | CONFIG_KOBJECT_UEVENT=y | ||
| 38 | CONFIG_IKCONFIG=y | 39 | CONFIG_IKCONFIG=y |
| 39 | CONFIG_IKCONFIG_PROC=y | 40 | CONFIG_IKCONFIG_PROC=y |
| 41 | CONFIG_LOG_BUF_SHIFT=16 | ||
| 40 | # CONFIG_CPUSETS is not set | 42 | # CONFIG_CPUSETS is not set |
| 43 | CONFIG_SYSFS_DEPRECATED=y | ||
| 44 | # CONFIG_RELAY is not set | ||
| 45 | CONFIG_BLK_DEV_INITRD=y | ||
| 41 | CONFIG_INITRAMFS_SOURCE="" | 46 | CONFIG_INITRAMFS_SOURCE="" |
| 47 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 48 | CONFIG_SYSCTL=y | ||
| 42 | CONFIG_EMBEDDED=y | 49 | CONFIG_EMBEDDED=y |
| 50 | CONFIG_SYSCTL_SYSCALL=y | ||
| 43 | CONFIG_KALLSYMS=y | 51 | CONFIG_KALLSYMS=y |
| 44 | CONFIG_KALLSYMS_ALL=y | 52 | CONFIG_KALLSYMS_ALL=y |
| 45 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 54 | CONFIG_HOTPLUG=y | ||
| 46 | CONFIG_PRINTK=y | 55 | CONFIG_PRINTK=y |
| 47 | CONFIG_BUG=y | 56 | CONFIG_BUG=y |
| 57 | CONFIG_ELF_CORE=y | ||
| 48 | CONFIG_BASE_FULL=y | 58 | CONFIG_BASE_FULL=y |
| 49 | CONFIG_FUTEX=y | 59 | CONFIG_FUTEX=y |
| 60 | CONFIG_ANON_INODES=y | ||
| 50 | CONFIG_EPOLL=y | 61 | CONFIG_EPOLL=y |
| 51 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 62 | CONFIG_SIGNALFD=y |
| 63 | CONFIG_EVENTFD=y | ||
| 52 | CONFIG_SHMEM=y | 64 | CONFIG_SHMEM=y |
| 53 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 65 | CONFIG_VM_EVENT_COUNTERS=y |
| 54 | CONFIG_CC_ALIGN_LABELS=0 | 66 | CONFIG_SLAB=y |
| 55 | CONFIG_CC_ALIGN_LOOPS=0 | 67 | # CONFIG_SLUB is not set |
| 56 | CONFIG_CC_ALIGN_JUMPS=0 | 68 | # CONFIG_SLOB is not set |
| 69 | CONFIG_RT_MUTEXES=y | ||
| 57 | # CONFIG_TINY_SHMEM is not set | 70 | # CONFIG_TINY_SHMEM is not set |
| 58 | CONFIG_BASE_SMALL=0 | 71 | CONFIG_BASE_SMALL=0 |
| 59 | |||
| 60 | # | ||
| 61 | # Loadable module support | ||
| 62 | # | ||
| 63 | CONFIG_MODULES=y | 72 | CONFIG_MODULES=y |
| 64 | CONFIG_MODULE_UNLOAD=y | 73 | CONFIG_MODULE_UNLOAD=y |
| 65 | CONFIG_MODULE_FORCE_UNLOAD=y | 74 | CONFIG_MODULE_FORCE_UNLOAD=y |
| 66 | CONFIG_OBSOLETE_MODPARM=y | ||
| 67 | # CONFIG_MODVERSIONS is not set | 75 | # CONFIG_MODVERSIONS is not set |
| 68 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 76 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
| 69 | CONFIG_KMOD=y | 77 | CONFIG_KMOD=y |
| 70 | CONFIG_STOP_MACHINE=y | 78 | CONFIG_STOP_MACHINE=y |
| 79 | CONFIG_BLOCK=y | ||
| 80 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
| 81 | # CONFIG_BLK_DEV_BSG is not set | ||
| 82 | CONFIG_BLOCK_COMPAT=y | ||
| 83 | |||
| 84 | # | ||
| 85 | # IO Schedulers | ||
| 86 | # | ||
| 87 | CONFIG_IOSCHED_NOOP=y | ||
| 88 | CONFIG_IOSCHED_AS=y | ||
| 89 | CONFIG_IOSCHED_DEADLINE=y | ||
| 90 | CONFIG_IOSCHED_CFQ=y | ||
| 91 | # CONFIG_DEFAULT_AS is not set | ||
| 92 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 93 | CONFIG_DEFAULT_CFQ=y | ||
| 94 | # CONFIG_DEFAULT_NOOP is not set | ||
| 95 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
| 71 | 96 | ||
| 72 | # | 97 | # |
| 73 | # Processor type and features | 98 | # Processor type and features |
| @@ -80,11 +105,23 @@ CONFIG_PA8X00=y | |||
| 80 | CONFIG_PA20=y | 105 | CONFIG_PA20=y |
| 81 | CONFIG_PREFETCH=y | 106 | CONFIG_PREFETCH=y |
| 82 | CONFIG_64BIT=y | 107 | CONFIG_64BIT=y |
| 108 | CONFIG_PARISC_PAGE_SIZE_4KB=y | ||
| 109 | # CONFIG_PARISC_PAGE_SIZE_16KB is not set | ||
| 110 | # CONFIG_PARISC_PAGE_SIZE_64KB is not set | ||
| 83 | CONFIG_SMP=y | 111 | CONFIG_SMP=y |
| 84 | CONFIG_HOTPLUG_CPU=y | 112 | CONFIG_HOTPLUG_CPU=y |
| 113 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
| 85 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | 114 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
| 115 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 116 | CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y | ||
| 117 | CONFIG_NODES_SHIFT=3 | ||
| 118 | CONFIG_PREEMPT_NONE=y | ||
| 119 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 120 | # CONFIG_PREEMPT is not set | ||
| 121 | CONFIG_PREEMPT_BKL=y | ||
| 86 | # CONFIG_HZ_100 is not set | 122 | # CONFIG_HZ_100 is not set |
| 87 | CONFIG_HZ_250=y | 123 | CONFIG_HZ_250=y |
| 124 | # CONFIG_HZ_300 is not set | ||
| 88 | # CONFIG_HZ_1000 is not set | 125 | # CONFIG_HZ_1000 is not set |
| 89 | CONFIG_HZ=250 | 126 | CONFIG_HZ=250 |
| 90 | CONFIG_SELECT_MEMORY_MODEL=y | 127 | CONFIG_SELECT_MEMORY_MODEL=y |
| @@ -95,7 +132,10 @@ CONFIG_DISCONTIGMEM=y | |||
| 95 | CONFIG_FLAT_NODE_MEM_MAP=y | 132 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 96 | CONFIG_NEED_MULTIPLE_NODES=y | 133 | CONFIG_NEED_MULTIPLE_NODES=y |
| 97 | # CONFIG_SPARSEMEM_STATIC is not set | 134 | # CONFIG_SPARSEMEM_STATIC is not set |
| 98 | # CONFIG_PREEMPT is not set | 135 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
| 136 | CONFIG_RESOURCES_64BIT=y | ||
| 137 | CONFIG_ZONE_DMA_FLAG=0 | ||
| 138 | CONFIG_VIRT_TO_BUS=y | ||
| 99 | CONFIG_COMPAT=y | 139 | CONFIG_COMPAT=y |
| 100 | CONFIG_NR_CPUS=8 | 140 | CONFIG_NR_CPUS=8 |
| 101 | 141 | ||
| @@ -104,7 +144,7 @@ CONFIG_NR_CPUS=8 | |||
| 104 | # | 144 | # |
| 105 | # CONFIG_GSC is not set | 145 | # CONFIG_GSC is not set |
| 106 | CONFIG_PCI=y | 146 | CONFIG_PCI=y |
| 107 | CONFIG_PCI_LEGACY_PROC=y | 147 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
| 108 | # CONFIG_PCI_DEBUG is not set | 148 | # CONFIG_PCI_DEBUG is not set |
| 109 | CONFIG_PCI_LBA=y | 149 | CONFIG_PCI_LBA=y |
| 110 | CONFIG_IOSAPIC=y | 150 | CONFIG_IOSAPIC=y |
| @@ -124,13 +164,14 @@ CONFIG_CARDBUS=y | |||
| 124 | # PC-card bridges | 164 | # PC-card bridges |
| 125 | # | 165 | # |
| 126 | CONFIG_YENTA=m | 166 | CONFIG_YENTA=m |
| 167 | CONFIG_YENTA_O2=y | ||
| 168 | CONFIG_YENTA_RICOH=y | ||
| 169 | CONFIG_YENTA_TI=y | ||
| 170 | CONFIG_YENTA_ENE_TUNE=y | ||
| 171 | CONFIG_YENTA_TOSHIBA=y | ||
| 127 | CONFIG_PD6729=m | 172 | CONFIG_PD6729=m |
| 128 | CONFIG_I82092=m | 173 | CONFIG_I82092=m |
| 129 | CONFIG_PCCARD_NONSTATIC=m | 174 | CONFIG_PCCARD_NONSTATIC=m |
| 130 | |||
| 131 | # | ||
| 132 | # PCI Hotplug Support | ||
| 133 | # | ||
| 134 | # CONFIG_HOTPLUG_PCI is not set | 175 | # CONFIG_HOTPLUG_PCI is not set |
| 135 | 176 | ||
| 136 | # | 177 | # |
| @@ -139,6 +180,7 @@ CONFIG_PCCARD_NONSTATIC=m | |||
| 139 | # CONFIG_SUPERIO is not set | 180 | # CONFIG_SUPERIO is not set |
| 140 | # CONFIG_CHASSIS_LCD_LED is not set | 181 | # CONFIG_CHASSIS_LCD_LED is not set |
| 141 | CONFIG_PDC_CHASSIS=y | 182 | CONFIG_PDC_CHASSIS=y |
| 183 | CONFIG_PDC_CHASSIS_WARN=y | ||
| 142 | CONFIG_PDC_STABLE=y | 184 | CONFIG_PDC_STABLE=y |
| 143 | 185 | ||
| 144 | # | 186 | # |
| @@ -160,7 +202,10 @@ CONFIG_PACKET_MMAP=y | |||
| 160 | CONFIG_UNIX=y | 202 | CONFIG_UNIX=y |
| 161 | CONFIG_XFRM=y | 203 | CONFIG_XFRM=y |
| 162 | CONFIG_XFRM_USER=m | 204 | CONFIG_XFRM_USER=m |
| 205 | # CONFIG_XFRM_SUB_POLICY is not set | ||
| 206 | # CONFIG_XFRM_MIGRATE is not set | ||
| 163 | CONFIG_NET_KEY=m | 207 | CONFIG_NET_KEY=m |
| 208 | # CONFIG_NET_KEY_MIGRATE is not set | ||
| 164 | CONFIG_INET=y | 209 | CONFIG_INET=y |
| 165 | CONFIG_IP_MULTICAST=y | 210 | CONFIG_IP_MULTICAST=y |
| 166 | # CONFIG_IP_ADVANCED_ROUTER is not set | 211 | # CONFIG_IP_ADVANCED_ROUTER is not set |
| @@ -177,97 +222,97 @@ CONFIG_IP_PNP_BOOTP=y | |||
| 177 | CONFIG_INET_AH=m | 222 | CONFIG_INET_AH=m |
| 178 | CONFIG_INET_ESP=m | 223 | CONFIG_INET_ESP=m |
| 179 | # CONFIG_INET_IPCOMP is not set | 224 | # CONFIG_INET_IPCOMP is not set |
| 225 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
| 180 | CONFIG_INET_TUNNEL=m | 226 | CONFIG_INET_TUNNEL=m |
| 227 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 228 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 229 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 230 | # CONFIG_INET_LRO is not set | ||
| 181 | CONFIG_INET_DIAG=y | 231 | CONFIG_INET_DIAG=y |
| 182 | CONFIG_INET_TCP_DIAG=y | 232 | CONFIG_INET_TCP_DIAG=y |
| 183 | # CONFIG_TCP_CONG_ADVANCED is not set | 233 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 184 | CONFIG_TCP_CONG_BIC=y | 234 | CONFIG_TCP_CONG_CUBIC=y |
| 185 | 235 | CONFIG_DEFAULT_TCP_CONG="cubic" | |
| 186 | # | 236 | # CONFIG_TCP_MD5SIG is not set |
| 187 | # IP: Virtual Server Configuration | ||
| 188 | # | ||
| 189 | # CONFIG_IP_VS is not set | 237 | # CONFIG_IP_VS is not set |
| 190 | CONFIG_IPV6=m | 238 | CONFIG_IPV6=m |
| 191 | # CONFIG_IPV6_PRIVACY is not set | 239 | # CONFIG_IPV6_PRIVACY is not set |
| 240 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
| 241 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
| 192 | CONFIG_INET6_AH=m | 242 | CONFIG_INET6_AH=m |
| 193 | CONFIG_INET6_ESP=m | 243 | CONFIG_INET6_ESP=m |
| 194 | CONFIG_INET6_IPCOMP=m | 244 | CONFIG_INET6_IPCOMP=m |
| 245 | # CONFIG_IPV6_MIP6 is not set | ||
| 246 | CONFIG_INET6_XFRM_TUNNEL=m | ||
| 195 | CONFIG_INET6_TUNNEL=m | 247 | CONFIG_INET6_TUNNEL=m |
| 248 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
| 249 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
| 250 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
| 251 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
| 252 | CONFIG_IPV6_SIT=m | ||
| 196 | CONFIG_IPV6_TUNNEL=m | 253 | CONFIG_IPV6_TUNNEL=m |
| 254 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
| 255 | # CONFIG_NETWORK_SECMARK is not set | ||
| 197 | CONFIG_NETFILTER=y | 256 | CONFIG_NETFILTER=y |
| 198 | # CONFIG_NETFILTER_DEBUG is not set | 257 | # CONFIG_NETFILTER_DEBUG is not set |
| 258 | |||
| 259 | # | ||
| 260 | # Core Netfilter Configuration | ||
| 261 | # | ||
| 199 | # CONFIG_NETFILTER_NETLINK is not set | 262 | # CONFIG_NETFILTER_NETLINK is not set |
| 263 | # CONFIG_NF_CONNTRACK_ENABLED is not set | ||
| 264 | # CONFIG_NF_CONNTRACK is not set | ||
| 265 | CONFIG_NETFILTER_XTABLES=m | ||
| 266 | # CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set | ||
| 267 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set | ||
| 268 | # CONFIG_NETFILTER_XT_TARGET_MARK is not set | ||
| 269 | # CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set | ||
| 270 | # CONFIG_NETFILTER_XT_TARGET_NFLOG is not set | ||
| 271 | # CONFIG_NETFILTER_XT_TARGET_TRACE is not set | ||
| 272 | # CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set | ||
| 273 | # CONFIG_NETFILTER_XT_MATCH_COMMENT is not set | ||
| 274 | # CONFIG_NETFILTER_XT_MATCH_DCCP is not set | ||
| 275 | # CONFIG_NETFILTER_XT_MATCH_DSCP is not set | ||
| 276 | # CONFIG_NETFILTER_XT_MATCH_ESP is not set | ||
| 277 | # CONFIG_NETFILTER_XT_MATCH_LENGTH is not set | ||
| 278 | # CONFIG_NETFILTER_XT_MATCH_LIMIT is not set | ||
| 279 | # CONFIG_NETFILTER_XT_MATCH_MAC is not set | ||
| 280 | # CONFIG_NETFILTER_XT_MATCH_MARK is not set | ||
| 281 | # CONFIG_NETFILTER_XT_MATCH_POLICY is not set | ||
| 282 | # CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set | ||
| 283 | # CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set | ||
| 284 | # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set | ||
| 285 | # CONFIG_NETFILTER_XT_MATCH_REALM is not set | ||
| 286 | # CONFIG_NETFILTER_XT_MATCH_SCTP is not set | ||
| 287 | # CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set | ||
| 288 | # CONFIG_NETFILTER_XT_MATCH_STRING is not set | ||
| 289 | # CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set | ||
| 290 | # CONFIG_NETFILTER_XT_MATCH_TIME is not set | ||
| 291 | # CONFIG_NETFILTER_XT_MATCH_U32 is not set | ||
| 292 | # CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set | ||
| 200 | 293 | ||
| 201 | # | 294 | # |
| 202 | # IP: Netfilter Configuration | 295 | # IP: Netfilter Configuration |
| 203 | # | 296 | # |
| 204 | CONFIG_IP_NF_CONNTRACK=m | ||
| 205 | # CONFIG_IP_NF_CT_ACCT is not set | ||
| 206 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
| 207 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
| 208 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
| 209 | CONFIG_IP_NF_FTP=m | ||
| 210 | CONFIG_IP_NF_IRC=m | ||
| 211 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 212 | CONFIG_IP_NF_TFTP=m | ||
| 213 | CONFIG_IP_NF_AMANDA=m | ||
| 214 | # CONFIG_IP_NF_PPTP is not set | ||
| 215 | CONFIG_IP_NF_QUEUE=m | 297 | CONFIG_IP_NF_QUEUE=m |
| 216 | CONFIG_IP_NF_IPTABLES=m | 298 | CONFIG_IP_NF_IPTABLES=m |
| 217 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
| 218 | CONFIG_IP_NF_MATCH_IPRANGE=m | 299 | CONFIG_IP_NF_MATCH_IPRANGE=m |
| 219 | CONFIG_IP_NF_MATCH_MAC=m | ||
| 220 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
| 221 | CONFIG_IP_NF_MATCH_MARK=m | ||
| 222 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
| 223 | CONFIG_IP_NF_MATCH_TOS=m | 300 | CONFIG_IP_NF_MATCH_TOS=m |
| 224 | CONFIG_IP_NF_MATCH_RECENT=m | 301 | CONFIG_IP_NF_MATCH_RECENT=m |
| 225 | CONFIG_IP_NF_MATCH_ECN=m | 302 | CONFIG_IP_NF_MATCH_ECN=m |
| 226 | CONFIG_IP_NF_MATCH_DSCP=m | 303 | # CONFIG_IP_NF_MATCH_AH is not set |
| 227 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
| 228 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
| 229 | CONFIG_IP_NF_MATCH_TTL=m | 304 | CONFIG_IP_NF_MATCH_TTL=m |
| 230 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
| 231 | CONFIG_IP_NF_MATCH_HELPER=m | ||
| 232 | CONFIG_IP_NF_MATCH_STATE=m | ||
| 233 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
| 234 | CONFIG_IP_NF_MATCH_OWNER=m | 305 | CONFIG_IP_NF_MATCH_OWNER=m |
| 235 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set | 306 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set |
| 236 | # CONFIG_IP_NF_MATCH_REALM is not set | ||
| 237 | CONFIG_IP_NF_MATCH_SCTP=m | ||
| 238 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
| 239 | CONFIG_IP_NF_MATCH_COMMENT=m | ||
| 240 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
| 241 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
| 242 | # CONFIG_IP_NF_MATCH_STRING is not set | ||
| 243 | CONFIG_IP_NF_FILTER=m | 307 | CONFIG_IP_NF_FILTER=m |
| 244 | CONFIG_IP_NF_TARGET_REJECT=m | 308 | CONFIG_IP_NF_TARGET_REJECT=m |
| 245 | CONFIG_IP_NF_TARGET_LOG=m | 309 | CONFIG_IP_NF_TARGET_LOG=m |
| 246 | CONFIG_IP_NF_TARGET_ULOG=m | 310 | CONFIG_IP_NF_TARGET_ULOG=m |
| 247 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
| 248 | # CONFIG_IP_NF_TARGET_NFQUEUE is not set | ||
| 249 | CONFIG_IP_NF_NAT=m | ||
| 250 | CONFIG_IP_NF_NAT_NEEDED=y | ||
| 251 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
| 252 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
| 253 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
| 254 | CONFIG_IP_NF_TARGET_SAME=m | ||
| 255 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
| 256 | CONFIG_IP_NF_NAT_IRC=m | ||
| 257 | CONFIG_IP_NF_NAT_FTP=m | ||
| 258 | CONFIG_IP_NF_NAT_TFTP=m | ||
| 259 | CONFIG_IP_NF_NAT_AMANDA=m | ||
| 260 | CONFIG_IP_NF_MANGLE=m | 311 | CONFIG_IP_NF_MANGLE=m |
| 261 | CONFIG_IP_NF_TARGET_TOS=m | 312 | CONFIG_IP_NF_TARGET_TOS=m |
| 262 | CONFIG_IP_NF_TARGET_ECN=m | 313 | CONFIG_IP_NF_TARGET_ECN=m |
| 263 | CONFIG_IP_NF_TARGET_DSCP=m | ||
| 264 | CONFIG_IP_NF_TARGET_MARK=m | ||
| 265 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
| 266 | # CONFIG_IP_NF_TARGET_TTL is not set | 314 | # CONFIG_IP_NF_TARGET_TTL is not set |
| 267 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
| 268 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
| 269 | CONFIG_IP_NF_RAW=m | 315 | CONFIG_IP_NF_RAW=m |
| 270 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
| 271 | CONFIG_IP_NF_ARPTABLES=m | 316 | CONFIG_IP_NF_ARPTABLES=m |
| 272 | CONFIG_IP_NF_ARPFILTER=m | 317 | CONFIG_IP_NF_ARPFILTER=m |
| 273 | CONFIG_IP_NF_ARP_MANGLE=m | 318 | CONFIG_IP_NF_ARP_MANGLE=m |
| @@ -277,48 +322,38 @@ CONFIG_IP_NF_ARP_MANGLE=m | |||
| 277 | # | 322 | # |
| 278 | # CONFIG_IP6_NF_QUEUE is not set | 323 | # CONFIG_IP6_NF_QUEUE is not set |
| 279 | CONFIG_IP6_NF_IPTABLES=m | 324 | CONFIG_IP6_NF_IPTABLES=m |
| 280 | # CONFIG_IP6_NF_MATCH_LIMIT is not set | ||
| 281 | CONFIG_IP6_NF_MATCH_MAC=m | ||
| 282 | CONFIG_IP6_NF_MATCH_RT=m | 325 | CONFIG_IP6_NF_MATCH_RT=m |
| 283 | CONFIG_IP6_NF_MATCH_OPTS=m | 326 | CONFIG_IP6_NF_MATCH_OPTS=m |
| 284 | CONFIG_IP6_NF_MATCH_FRAG=m | 327 | CONFIG_IP6_NF_MATCH_FRAG=m |
| 285 | CONFIG_IP6_NF_MATCH_HL=m | 328 | CONFIG_IP6_NF_MATCH_HL=m |
| 286 | # CONFIG_IP6_NF_MATCH_MULTIPORT is not set | ||
| 287 | # CONFIG_IP6_NF_MATCH_OWNER is not set | 329 | # CONFIG_IP6_NF_MATCH_OWNER is not set |
| 288 | # CONFIG_IP6_NF_MATCH_MARK is not set | ||
| 289 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 330 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
| 290 | # CONFIG_IP6_NF_MATCH_AHESP is not set | 331 | # CONFIG_IP6_NF_MATCH_AH is not set |
| 291 | # CONFIG_IP6_NF_MATCH_LENGTH is not set | 332 | # CONFIG_IP6_NF_MATCH_MH is not set |
| 292 | # CONFIG_IP6_NF_MATCH_EUI64 is not set | 333 | # CONFIG_IP6_NF_MATCH_EUI64 is not set |
| 293 | CONFIG_IP6_NF_FILTER=m | 334 | CONFIG_IP6_NF_FILTER=m |
| 294 | CONFIG_IP6_NF_TARGET_LOG=m | 335 | CONFIG_IP6_NF_TARGET_LOG=m |
| 295 | CONFIG_IP6_NF_TARGET_REJECT=m | 336 | CONFIG_IP6_NF_TARGET_REJECT=m |
| 296 | # CONFIG_IP6_NF_TARGET_NFQUEUE is not set | ||
| 297 | CONFIG_IP6_NF_MANGLE=m | 337 | CONFIG_IP6_NF_MANGLE=m |
| 298 | # CONFIG_IP6_NF_TARGET_MARK is not set | ||
| 299 | # CONFIG_IP6_NF_TARGET_HL is not set | 338 | # CONFIG_IP6_NF_TARGET_HL is not set |
| 300 | CONFIG_IP6_NF_RAW=m | 339 | CONFIG_IP6_NF_RAW=m |
| 301 | |||
| 302 | # | ||
| 303 | # DCCP Configuration (EXPERIMENTAL) | ||
| 304 | # | ||
| 305 | CONFIG_IP_DCCP=m | 340 | CONFIG_IP_DCCP=m |
| 306 | CONFIG_INET_DCCP_DIAG=m | 341 | CONFIG_INET_DCCP_DIAG=m |
| 342 | CONFIG_IP_DCCP_ACKVEC=y | ||
| 307 | 343 | ||
| 308 | # | 344 | # |
| 309 | # DCCP CCIDs Configuration (EXPERIMENTAL) | 345 | # DCCP CCIDs Configuration (EXPERIMENTAL) |
| 310 | # | 346 | # |
| 347 | CONFIG_IP_DCCP_CCID2=m | ||
| 348 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
| 311 | # CONFIG_IP_DCCP_CCID3 is not set | 349 | # CONFIG_IP_DCCP_CCID3 is not set |
| 312 | 350 | ||
| 313 | # | 351 | # |
| 314 | # DCCP Kernel Hacking | 352 | # DCCP Kernel Hacking |
| 315 | # | 353 | # |
| 316 | # CONFIG_IP_DCCP_DEBUG is not set | 354 | # CONFIG_IP_DCCP_DEBUG is not set |
| 317 | |||
| 318 | # | ||
| 319 | # SCTP Configuration (EXPERIMENTAL) | ||
| 320 | # | ||
| 321 | # CONFIG_IP_SCTP is not set | 355 | # CONFIG_IP_SCTP is not set |
| 356 | # CONFIG_TIPC is not set | ||
| 322 | # CONFIG_ATM is not set | 357 | # CONFIG_ATM is not set |
| 323 | # CONFIG_BRIDGE is not set | 358 | # CONFIG_BRIDGE is not set |
| 324 | # CONFIG_VLAN_8021Q is not set | 359 | # CONFIG_VLAN_8021Q is not set |
| @@ -329,11 +364,13 @@ CONFIG_LLC2=m | |||
| 329 | # CONFIG_ATALK is not set | 364 | # CONFIG_ATALK is not set |
| 330 | # CONFIG_X25 is not set | 365 | # CONFIG_X25 is not set |
| 331 | # CONFIG_LAPB is not set | 366 | # CONFIG_LAPB is not set |
| 332 | # CONFIG_NET_DIVERT is not set | ||
| 333 | # CONFIG_ECONET is not set | 367 | # CONFIG_ECONET is not set |
| 334 | # CONFIG_WAN_ROUTER is not set | 368 | # CONFIG_WAN_ROUTER is not set |
| 369 | |||
| 370 | # | ||
| 371 | # QoS and/or fair queueing | ||
| 372 | # | ||
| 335 | # CONFIG_NET_SCHED is not set | 373 | # CONFIG_NET_SCHED is not set |
| 336 | # CONFIG_NET_CLS_ROUTE is not set | ||
| 337 | 374 | ||
| 338 | # | 375 | # |
| 339 | # Network testing | 376 | # Network testing |
| @@ -342,7 +379,17 @@ CONFIG_NET_PKTGEN=m | |||
| 342 | # CONFIG_HAMRADIO is not set | 379 | # CONFIG_HAMRADIO is not set |
| 343 | # CONFIG_IRDA is not set | 380 | # CONFIG_IRDA is not set |
| 344 | # CONFIG_BT is not set | 381 | # CONFIG_BT is not set |
| 382 | # CONFIG_AF_RXRPC is not set | ||
| 383 | |||
| 384 | # | ||
| 385 | # Wireless | ||
| 386 | # | ||
| 387 | # CONFIG_CFG80211 is not set | ||
| 388 | # CONFIG_WIRELESS_EXT is not set | ||
| 389 | # CONFIG_MAC80211 is not set | ||
| 345 | # CONFIG_IEEE80211 is not set | 390 | # CONFIG_IEEE80211 is not set |
| 391 | # CONFIG_RFKILL is not set | ||
| 392 | # CONFIG_NET_9P is not set | ||
| 346 | 393 | ||
| 347 | # | 394 | # |
| 348 | # Device Drivers | 395 | # Device Drivers |
| @@ -351,34 +398,17 @@ CONFIG_NET_PKTGEN=m | |||
| 351 | # | 398 | # |
| 352 | # Generic Driver Options | 399 | # Generic Driver Options |
| 353 | # | 400 | # |
| 401 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 354 | # CONFIG_STANDALONE is not set | 402 | # CONFIG_STANDALONE is not set |
| 355 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 403 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
| 356 | CONFIG_FW_LOADER=y | 404 | CONFIG_FW_LOADER=y |
| 357 | # CONFIG_DEBUG_DRIVER is not set | 405 | # CONFIG_DEBUG_DRIVER is not set |
| 358 | 406 | # CONFIG_DEBUG_DEVRES is not set | |
| 359 | # | 407 | # CONFIG_SYS_HYPERVISOR is not set |
| 360 | # Connector - unified userspace <-> kernelspace linker | ||
| 361 | # | ||
| 362 | # CONFIG_CONNECTOR is not set | 408 | # CONFIG_CONNECTOR is not set |
| 363 | |||
| 364 | # | ||
| 365 | # Memory Technology Devices (MTD) | ||
| 366 | # | ||
| 367 | # CONFIG_MTD is not set | 409 | # CONFIG_MTD is not set |
| 368 | |||
| 369 | # | ||
| 370 | # Parallel port support | ||
| 371 | # | ||
| 372 | # CONFIG_PARPORT is not set | 410 | # CONFIG_PARPORT is not set |
| 373 | 411 | CONFIG_BLK_DEV=y | |
| 374 | # | ||
| 375 | # Plug and Play support | ||
| 376 | # | ||
| 377 | |||
| 378 | # | ||
| 379 | # Block devices | ||
| 380 | # | ||
| 381 | # CONFIG_BLK_DEV_FD is not set | ||
| 382 | # CONFIG_BLK_CPQ_DA is not set | 412 | # CONFIG_BLK_CPQ_DA is not set |
| 383 | # CONFIG_BLK_CPQ_CISS_DA is not set | 413 | # CONFIG_BLK_CPQ_CISS_DA is not set |
| 384 | # CONFIG_BLK_DEV_DAC960 is not set | 414 | # CONFIG_BLK_DEV_DAC960 is not set |
| @@ -391,21 +421,14 @@ CONFIG_BLK_DEV_LOOP=y | |||
| 391 | CONFIG_BLK_DEV_RAM=y | 421 | CONFIG_BLK_DEV_RAM=y |
| 392 | CONFIG_BLK_DEV_RAM_COUNT=16 | 422 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 393 | CONFIG_BLK_DEV_RAM_SIZE=6144 | 423 | CONFIG_BLK_DEV_RAM_SIZE=6144 |
| 394 | CONFIG_BLK_DEV_INITRD=y | 424 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
| 395 | # CONFIG_CDROM_PKTCDVD is not set | 425 | # CONFIG_CDROM_PKTCDVD is not set |
| 396 | |||
| 397 | # | ||
| 398 | # IO Schedulers | ||
| 399 | # | ||
| 400 | CONFIG_IOSCHED_NOOP=y | ||
| 401 | CONFIG_IOSCHED_AS=y | ||
| 402 | CONFIG_IOSCHED_DEADLINE=y | ||
| 403 | CONFIG_IOSCHED_CFQ=y | ||
| 404 | # CONFIG_ATA_OVER_ETH is not set | 426 | # CONFIG_ATA_OVER_ETH is not set |
| 405 | 427 | CONFIG_MISC_DEVICES=y | |
| 406 | # | 428 | # CONFIG_PHANTOM is not set |
| 407 | # ATA/ATAPI/MFM/RLL support | 429 | # CONFIG_EEPROM_93CX6 is not set |
| 408 | # | 430 | # CONFIG_SGI_IOC4 is not set |
| 431 | # CONFIG_TIFM_CORE is not set | ||
| 409 | # CONFIG_IDE is not set | 432 | # CONFIG_IDE is not set |
| 410 | 433 | ||
| 411 | # | 434 | # |
| @@ -413,6 +436,9 @@ CONFIG_IOSCHED_CFQ=y | |||
| 413 | # | 436 | # |
| 414 | CONFIG_RAID_ATTRS=m | 437 | CONFIG_RAID_ATTRS=m |
| 415 | CONFIG_SCSI=y | 438 | CONFIG_SCSI=y |
| 439 | CONFIG_SCSI_DMA=y | ||
| 440 | # CONFIG_SCSI_TGT is not set | ||
| 441 | CONFIG_SCSI_NETLINK=y | ||
| 416 | CONFIG_SCSI_PROC_FS=y | 442 | CONFIG_SCSI_PROC_FS=y |
| 417 | 443 | ||
| 418 | # | 444 | # |
| @@ -432,18 +458,18 @@ CONFIG_CHR_DEV_SG=y | |||
| 432 | CONFIG_SCSI_MULTI_LUN=y | 458 | CONFIG_SCSI_MULTI_LUN=y |
| 433 | # CONFIG_SCSI_CONSTANTS is not set | 459 | # CONFIG_SCSI_CONSTANTS is not set |
| 434 | # CONFIG_SCSI_LOGGING is not set | 460 | # CONFIG_SCSI_LOGGING is not set |
| 461 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 462 | CONFIG_SCSI_WAIT_SCAN=m | ||
| 435 | 463 | ||
| 436 | # | 464 | # |
| 437 | # SCSI Transport Attributes | 465 | # SCSI Transports |
| 438 | # | 466 | # |
| 439 | CONFIG_SCSI_SPI_ATTRS=y | 467 | CONFIG_SCSI_SPI_ATTRS=y |
| 440 | CONFIG_SCSI_FC_ATTRS=m | 468 | CONFIG_SCSI_FC_ATTRS=m |
| 441 | CONFIG_SCSI_ISCSI_ATTRS=m | 469 | CONFIG_SCSI_ISCSI_ATTRS=m |
| 442 | CONFIG_SCSI_SAS_ATTRS=m | 470 | # CONFIG_SCSI_SAS_LIBSAS is not set |
| 443 | 471 | CONFIG_SCSI_LOWLEVEL=y | |
| 444 | # | 472 | # CONFIG_ISCSI_TCP is not set |
| 445 | # SCSI low-level drivers | ||
| 446 | # | ||
| 447 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 473 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
| 448 | # CONFIG_SCSI_3W_9XXX is not set | 474 | # CONFIG_SCSI_3W_9XXX is not set |
| 449 | # CONFIG_SCSI_ACARD is not set | 475 | # CONFIG_SCSI_ACARD is not set |
| @@ -451,59 +477,40 @@ CONFIG_SCSI_SAS_ATTRS=m | |||
| 451 | # CONFIG_SCSI_AIC7XXX is not set | 477 | # CONFIG_SCSI_AIC7XXX is not set |
| 452 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 478 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
| 453 | # CONFIG_SCSI_AIC79XX is not set | 479 | # CONFIG_SCSI_AIC79XX is not set |
| 454 | # CONFIG_SCSI_ADVANSYS is not set | 480 | # CONFIG_SCSI_AIC94XX is not set |
| 481 | # CONFIG_SCSI_ARCMSR is not set | ||
| 455 | # CONFIG_MEGARAID_NEWGEN is not set | 482 | # CONFIG_MEGARAID_NEWGEN is not set |
| 456 | # CONFIG_MEGARAID_LEGACY is not set | 483 | # CONFIG_MEGARAID_LEGACY is not set |
| 457 | # CONFIG_MEGARAID_SAS is not set | 484 | # CONFIG_MEGARAID_SAS is not set |
| 458 | # CONFIG_SCSI_SATA is not set | 485 | # CONFIG_SCSI_HPTIOP is not set |
| 459 | # CONFIG_SCSI_CPQFCTS is not set | ||
| 460 | # CONFIG_SCSI_DMX3191D is not set | 486 | # CONFIG_SCSI_DMX3191D is not set |
| 461 | # CONFIG_SCSI_EATA_PIO is not set | ||
| 462 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 487 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
| 463 | # CONFIG_SCSI_IPS is not set | 488 | # CONFIG_SCSI_IPS is not set |
| 464 | # CONFIG_SCSI_INITIO is not set | 489 | # CONFIG_SCSI_INITIO is not set |
| 465 | # CONFIG_SCSI_INIA100 is not set | 490 | # CONFIG_SCSI_INIA100 is not set |
| 491 | # CONFIG_SCSI_STEX is not set | ||
| 466 | CONFIG_SCSI_SYM53C8XX_2=y | 492 | CONFIG_SCSI_SYM53C8XX_2=y |
| 467 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 | 493 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 |
| 468 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 494 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
| 469 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 495 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
| 470 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set | 496 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
| 471 | # CONFIG_SCSI_IPR is not set | ||
| 472 | # CONFIG_SCSI_QLOGIC_ISP is not set | ||
| 473 | CONFIG_SCSI_QLOGIC_FC=m | ||
| 474 | # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set | ||
| 475 | CONFIG_SCSI_QLOGIC_1280=m | 497 | CONFIG_SCSI_QLOGIC_1280=m |
| 476 | # CONFIG_SCSI_QLOGIC_1280_1040 is not set | 498 | # CONFIG_SCSI_QLA_FC is not set |
| 477 | CONFIG_SCSI_QLA2XXX=y | 499 | # CONFIG_SCSI_QLA_ISCSI is not set |
| 478 | # CONFIG_SCSI_QLA21XX is not set | ||
| 479 | # CONFIG_SCSI_QLA22XX is not set | ||
| 480 | CONFIG_SCSI_QLA2300=m | ||
| 481 | CONFIG_SCSI_QLA2322=m | ||
| 482 | # CONFIG_SCSI_QLA6312 is not set | ||
| 483 | # CONFIG_SCSI_QLA24XX is not set | ||
| 484 | # CONFIG_SCSI_LPFC is not set | 500 | # CONFIG_SCSI_LPFC is not set |
| 485 | # CONFIG_SCSI_DC395x is not set | 501 | # CONFIG_SCSI_DC395x is not set |
| 486 | # CONFIG_SCSI_DC390T is not set | 502 | # CONFIG_SCSI_DC390T is not set |
| 487 | CONFIG_SCSI_DEBUG=m | 503 | CONFIG_SCSI_DEBUG=m |
| 488 | 504 | # CONFIG_SCSI_SRP is not set | |
| 489 | # | 505 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set |
| 490 | # PCMCIA SCSI adapter support | 506 | # CONFIG_ATA is not set |
| 491 | # | ||
| 492 | CONFIG_PCMCIA_FDOMAIN=m | ||
| 493 | CONFIG_PCMCIA_QLOGIC=m | ||
| 494 | CONFIG_PCMCIA_SYM53C500=m | ||
| 495 | |||
| 496 | # | ||
| 497 | # Multi-device support (RAID and LVM) | ||
| 498 | # | ||
| 499 | CONFIG_MD=y | 507 | CONFIG_MD=y |
| 500 | CONFIG_BLK_DEV_MD=y | 508 | CONFIG_BLK_DEV_MD=y |
| 501 | CONFIG_MD_LINEAR=y | 509 | CONFIG_MD_LINEAR=y |
| 502 | CONFIG_MD_RAID0=y | 510 | CONFIG_MD_RAID0=y |
| 503 | CONFIG_MD_RAID1=y | 511 | CONFIG_MD_RAID1=y |
| 504 | # CONFIG_MD_RAID10 is not set | 512 | # CONFIG_MD_RAID10 is not set |
| 505 | # CONFIG_MD_RAID5 is not set | 513 | # CONFIG_MD_RAID456 is not set |
| 506 | # CONFIG_MD_RAID6 is not set | ||
| 507 | # CONFIG_MD_MULTIPATH is not set | 514 | # CONFIG_MD_MULTIPATH is not set |
| 508 | # CONFIG_MD_FAULTY is not set | 515 | # CONFIG_MD_FAULTY is not set |
| 509 | # CONFIG_BLK_DEV_DM is not set | 516 | # CONFIG_BLK_DEV_DM is not set |
| @@ -517,39 +524,25 @@ CONFIG_FUSION_FC=m | |||
| 517 | # CONFIG_FUSION_SAS is not set | 524 | # CONFIG_FUSION_SAS is not set |
| 518 | CONFIG_FUSION_MAX_SGE=128 | 525 | CONFIG_FUSION_MAX_SGE=128 |
| 519 | CONFIG_FUSION_CTL=m | 526 | CONFIG_FUSION_CTL=m |
| 527 | # CONFIG_FUSION_LOGGING is not set | ||
| 520 | 528 | ||
| 521 | # | 529 | # |
| 522 | # IEEE 1394 (FireWire) support | 530 | # IEEE 1394 (FireWire) support |
| 523 | # | 531 | # |
| 532 | # CONFIG_FIREWIRE is not set | ||
| 524 | # CONFIG_IEEE1394 is not set | 533 | # CONFIG_IEEE1394 is not set |
| 525 | |||
| 526 | # | ||
| 527 | # I2O device support | ||
| 528 | # | ||
| 529 | # CONFIG_I2O is not set | 534 | # CONFIG_I2O is not set |
| 530 | |||
| 531 | # | ||
| 532 | # Network device support | ||
| 533 | # | ||
| 534 | CONFIG_NETDEVICES=y | 535 | CONFIG_NETDEVICES=y |
| 536 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
| 535 | CONFIG_DUMMY=m | 537 | CONFIG_DUMMY=m |
| 536 | CONFIG_BONDING=m | 538 | CONFIG_BONDING=m |
| 539 | # CONFIG_MACVLAN is not set | ||
| 537 | # CONFIG_EQUALIZER is not set | 540 | # CONFIG_EQUALIZER is not set |
| 538 | CONFIG_TUN=m | 541 | CONFIG_TUN=m |
| 539 | 542 | # CONFIG_VETH is not set | |
| 540 | # | 543 | # CONFIG_IP1000 is not set |
| 541 | # ARCnet devices | ||
| 542 | # | ||
| 543 | # CONFIG_ARCNET is not set | 544 | # CONFIG_ARCNET is not set |
| 544 | |||
| 545 | # | ||
| 546 | # PHY device support | ||
| 547 | # | ||
| 548 | # CONFIG_PHYLIB is not set | 545 | # CONFIG_PHYLIB is not set |
| 549 | |||
| 550 | # | ||
| 551 | # Ethernet (10 or 100Mbit) | ||
| 552 | # | ||
| 553 | CONFIG_NET_ETHERNET=y | 546 | CONFIG_NET_ETHERNET=y |
| 554 | CONFIG_MII=m | 547 | CONFIG_MII=m |
| 555 | # CONFIG_HAPPYMEAL is not set | 548 | # CONFIG_HAPPYMEAL is not set |
| @@ -558,10 +551,6 @@ CONFIG_MII=m | |||
| 558 | CONFIG_NET_VENDOR_3COM=y | 551 | CONFIG_NET_VENDOR_3COM=y |
| 559 | CONFIG_VORTEX=m | 552 | CONFIG_VORTEX=m |
| 560 | CONFIG_TYPHOON=m | 553 | CONFIG_TYPHOON=m |
| 561 | |||
| 562 | # | ||
| 563 | # Tulip family network device support | ||
| 564 | # | ||
| 565 | CONFIG_NET_TULIP=y | 554 | CONFIG_NET_TULIP=y |
| 566 | CONFIG_DE2104X=m | 555 | CONFIG_DE2104X=m |
| 567 | CONFIG_TULIP=y | 556 | CONFIG_TULIP=y |
| @@ -573,15 +562,18 @@ CONFIG_TULIP_MMIO=y | |||
| 573 | # CONFIG_DM9102 is not set | 562 | # CONFIG_DM9102 is not set |
| 574 | # CONFIG_ULI526X is not set | 563 | # CONFIG_ULI526X is not set |
| 575 | CONFIG_PCMCIA_XIRCOM=m | 564 | CONFIG_PCMCIA_XIRCOM=m |
| 576 | # CONFIG_PCMCIA_XIRTULIP is not set | ||
| 577 | CONFIG_HP100=m | 565 | CONFIG_HP100=m |
| 566 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
| 567 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 568 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 569 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 578 | CONFIG_NET_PCI=y | 570 | CONFIG_NET_PCI=y |
| 579 | CONFIG_PCNET32=m | 571 | CONFIG_PCNET32=m |
| 572 | # CONFIG_PCNET32_NAPI is not set | ||
| 580 | # CONFIG_AMD8111_ETH is not set | 573 | # CONFIG_AMD8111_ETH is not set |
| 581 | # CONFIG_ADAPTEC_STARFIRE is not set | 574 | # CONFIG_ADAPTEC_STARFIRE is not set |
| 582 | # CONFIG_B44 is not set | 575 | # CONFIG_B44 is not set |
| 583 | # CONFIG_FORCEDETH is not set | 576 | # CONFIG_FORCEDETH is not set |
| 584 | # CONFIG_DGRS is not set | ||
| 585 | # CONFIG_EEPRO100 is not set | 577 | # CONFIG_EEPRO100 is not set |
| 586 | CONFIG_E100=m | 578 | CONFIG_E100=m |
| 587 | # CONFIG_FEALNX is not set | 579 | # CONFIG_FEALNX is not set |
| @@ -593,84 +585,46 @@ CONFIG_E100=m | |||
| 593 | # CONFIG_EPIC100 is not set | 585 | # CONFIG_EPIC100 is not set |
| 594 | # CONFIG_SUNDANCE is not set | 586 | # CONFIG_SUNDANCE is not set |
| 595 | # CONFIG_VIA_RHINE is not set | 587 | # CONFIG_VIA_RHINE is not set |
| 596 | 588 | # CONFIG_SC92031 is not set | |
| 597 | # | 589 | CONFIG_NETDEV_1000=y |
| 598 | # Ethernet (1000 Mbit) | ||
| 599 | # | ||
| 600 | CONFIG_ACENIC=m | 590 | CONFIG_ACENIC=m |
| 601 | CONFIG_ACENIC_OMIT_TIGON_I=y | 591 | CONFIG_ACENIC_OMIT_TIGON_I=y |
| 602 | # CONFIG_DL2K is not set | 592 | # CONFIG_DL2K is not set |
| 603 | CONFIG_E1000=m | 593 | CONFIG_E1000=m |
| 604 | CONFIG_E1000_NAPI=y | 594 | CONFIG_E1000_NAPI=y |
| 605 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 595 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
| 596 | # CONFIG_E1000E is not set | ||
| 606 | # CONFIG_NS83820 is not set | 597 | # CONFIG_NS83820 is not set |
| 607 | # CONFIG_HAMACHI is not set | 598 | # CONFIG_HAMACHI is not set |
| 608 | # CONFIG_YELLOWFIN is not set | 599 | # CONFIG_YELLOWFIN is not set |
| 609 | # CONFIG_R8169 is not set | 600 | # CONFIG_R8169 is not set |
| 610 | # CONFIG_SIS190 is not set | 601 | # CONFIG_SIS190 is not set |
| 611 | # CONFIG_SKGE is not set | 602 | # CONFIG_SKGE is not set |
| 603 | # CONFIG_SKY2 is not set | ||
| 612 | # CONFIG_SK98LIN is not set | 604 | # CONFIG_SK98LIN is not set |
| 613 | # CONFIG_VIA_VELOCITY is not set | 605 | # CONFIG_VIA_VELOCITY is not set |
| 614 | CONFIG_TIGON3=m | 606 | CONFIG_TIGON3=m |
| 615 | # CONFIG_BNX2 is not set | 607 | # CONFIG_BNX2 is not set |
| 616 | 608 | # CONFIG_QLA3XXX is not set | |
| 617 | # | 609 | # CONFIG_ATL1 is not set |
| 618 | # Ethernet (10000 Mbit) | 610 | CONFIG_NETDEV_10000=y |
| 619 | # | ||
| 620 | # CONFIG_CHELSIO_T1 is not set | 611 | # CONFIG_CHELSIO_T1 is not set |
| 612 | # CONFIG_CHELSIO_T3 is not set | ||
| 613 | # CONFIG_IXGBE is not set | ||
| 621 | # CONFIG_IXGB is not set | 614 | # CONFIG_IXGB is not set |
| 622 | # CONFIG_S2IO is not set | 615 | # CONFIG_S2IO is not set |
| 623 | 616 | # CONFIG_MYRI10GE is not set | |
| 624 | # | 617 | # CONFIG_NETXEN_NIC is not set |
| 625 | # Token Ring devices | 618 | # CONFIG_NIU is not set |
| 626 | # | 619 | # CONFIG_MLX4_CORE is not set |
| 620 | # CONFIG_TEHUTI is not set | ||
| 627 | # CONFIG_TR is not set | 621 | # CONFIG_TR is not set |
| 628 | 622 | ||
| 629 | # | 623 | # |
| 630 | # Wireless LAN (non-hamradio) | 624 | # Wireless LAN |
| 631 | # | ||
| 632 | CONFIG_NET_RADIO=y | ||
| 633 | |||
| 634 | # | ||
| 635 | # Obsolete Wireless cards support (pre-802.11) | ||
| 636 | # | ||
| 637 | # CONFIG_STRIP is not set | ||
| 638 | # CONFIG_PCMCIA_WAVELAN is not set | ||
| 639 | CONFIG_PCMCIA_NETWAVE=m | ||
| 640 | |||
| 641 | # | ||
| 642 | # Wireless 802.11 Frequency Hopping cards support | ||
| 643 | # | ||
| 644 | CONFIG_PCMCIA_RAYCS=m | ||
| 645 | |||
| 646 | # | ||
| 647 | # Wireless 802.11b ISA/PCI cards support | ||
| 648 | # | ||
| 649 | CONFIG_HERMES=m | ||
| 650 | CONFIG_PLX_HERMES=m | ||
| 651 | CONFIG_TMD_HERMES=m | ||
| 652 | # CONFIG_NORTEL_HERMES is not set | ||
| 653 | CONFIG_PCI_HERMES=m | ||
| 654 | # CONFIG_ATMEL is not set | ||
| 655 | |||
| 656 | # | ||
| 657 | # Wireless 802.11b Pcmcia/Cardbus cards support | ||
| 658 | # | ||
| 659 | CONFIG_PCMCIA_HERMES=m | ||
| 660 | # CONFIG_PCMCIA_SPECTRUM is not set | ||
| 661 | CONFIG_AIRO_CS=m | ||
| 662 | CONFIG_PCMCIA_WL3501=m | ||
| 663 | |||
| 664 | # | ||
| 665 | # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support | ||
| 666 | # | ||
| 667 | # CONFIG_PRISM54 is not set | ||
| 668 | # CONFIG_HOSTAP is not set | ||
| 669 | CONFIG_NET_WIRELESS=y | ||
| 670 | |||
| 671 | # | ||
| 672 | # PCMCIA network device support | ||
| 673 | # | 625 | # |
| 626 | # CONFIG_WLAN_PRE80211 is not set | ||
| 627 | # CONFIG_WLAN_80211 is not set | ||
| 674 | CONFIG_NET_PCMCIA=y | 628 | CONFIG_NET_PCMCIA=y |
| 675 | CONFIG_PCMCIA_3C589=m | 629 | CONFIG_PCMCIA_3C589=m |
| 676 | CONFIG_PCMCIA_3C574=m | 630 | CONFIG_PCMCIA_3C574=m |
| @@ -680,10 +634,6 @@ CONFIG_PCMCIA_3C574=m | |||
| 680 | CONFIG_PCMCIA_SMC91C92=m | 634 | CONFIG_PCMCIA_SMC91C92=m |
| 681 | CONFIG_PCMCIA_XIRC2PS=m | 635 | CONFIG_PCMCIA_XIRC2PS=m |
| 682 | # CONFIG_PCMCIA_AXNET is not set | 636 | # CONFIG_PCMCIA_AXNET is not set |
| 683 | |||
| 684 | # | ||
| 685 | # Wan interfaces | ||
| 686 | # | ||
| 687 | # CONFIG_WAN is not set | 637 | # CONFIG_WAN is not set |
| 688 | # CONFIG_FDDI is not set | 638 | # CONFIG_FDDI is not set |
| 689 | # CONFIG_HIPPI is not set | 639 | # CONFIG_HIPPI is not set |
| @@ -694,28 +644,25 @@ CONFIG_PPP_ASYNC=m | |||
| 694 | CONFIG_PPP_SYNC_TTY=m | 644 | CONFIG_PPP_SYNC_TTY=m |
| 695 | CONFIG_PPP_DEFLATE=m | 645 | CONFIG_PPP_DEFLATE=m |
| 696 | CONFIG_PPP_BSDCOMP=m | 646 | CONFIG_PPP_BSDCOMP=m |
| 647 | # CONFIG_PPP_MPPE is not set | ||
| 697 | # CONFIG_PPPOE is not set | 648 | # CONFIG_PPPOE is not set |
| 649 | # CONFIG_PPPOL2TP is not set | ||
| 698 | # CONFIG_SLIP is not set | 650 | # CONFIG_SLIP is not set |
| 651 | CONFIG_SLHC=m | ||
| 699 | # CONFIG_NET_FC is not set | 652 | # CONFIG_NET_FC is not set |
| 700 | # CONFIG_SHAPER is not set | 653 | # CONFIG_SHAPER is not set |
| 701 | # CONFIG_NETCONSOLE is not set | 654 | # CONFIG_NETCONSOLE is not set |
| 702 | # CONFIG_NETPOLL is not set | 655 | # CONFIG_NETPOLL is not set |
| 703 | # CONFIG_NET_POLL_CONTROLLER is not set | 656 | # CONFIG_NET_POLL_CONTROLLER is not set |
| 704 | |||
| 705 | # | ||
| 706 | # ISDN subsystem | ||
| 707 | # | ||
| 708 | # CONFIG_ISDN is not set | 657 | # CONFIG_ISDN is not set |
| 709 | |||
| 710 | # | ||
| 711 | # Telephony Support | ||
| 712 | # | ||
| 713 | # CONFIG_PHONE is not set | 658 | # CONFIG_PHONE is not set |
| 714 | 659 | ||
| 715 | # | 660 | # |
| 716 | # Input device support | 661 | # Input device support |
| 717 | # | 662 | # |
| 718 | CONFIG_INPUT=y | 663 | CONFIG_INPUT=y |
| 664 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
| 665 | # CONFIG_INPUT_POLLDEV is not set | ||
| 719 | 666 | ||
| 720 | # | 667 | # |
| 721 | # Userland interfaces | 668 | # Userland interfaces |
| @@ -732,6 +679,7 @@ CONFIG_INPUT=y | |||
| 732 | # CONFIG_INPUT_KEYBOARD is not set | 679 | # CONFIG_INPUT_KEYBOARD is not set |
| 733 | # CONFIG_INPUT_MOUSE is not set | 680 | # CONFIG_INPUT_MOUSE is not set |
| 734 | # CONFIG_INPUT_JOYSTICK is not set | 681 | # CONFIG_INPUT_JOYSTICK is not set |
| 682 | # CONFIG_INPUT_TABLET is not set | ||
| 735 | # CONFIG_INPUT_TOUCHSCREEN is not set | 683 | # CONFIG_INPUT_TOUCHSCREEN is not set |
| 736 | # CONFIG_INPUT_MISC is not set | 684 | # CONFIG_INPUT_MISC is not set |
| 737 | 685 | ||
| @@ -747,6 +695,7 @@ CONFIG_INPUT=y | |||
| 747 | CONFIG_VT=y | 695 | CONFIG_VT=y |
| 748 | CONFIG_VT_CONSOLE=y | 696 | CONFIG_VT_CONSOLE=y |
| 749 | CONFIG_HW_CONSOLE=y | 697 | CONFIG_HW_CONSOLE=y |
| 698 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 750 | # CONFIG_SERIAL_NONSTANDARD is not set | 699 | # CONFIG_SERIAL_NONSTANDARD is not set |
| 751 | 700 | ||
| 752 | # | 701 | # |
| @@ -754,8 +703,10 @@ CONFIG_HW_CONSOLE=y | |||
| 754 | # | 703 | # |
| 755 | CONFIG_SERIAL_8250=y | 704 | CONFIG_SERIAL_8250=y |
| 756 | CONFIG_SERIAL_8250_CONSOLE=y | 705 | CONFIG_SERIAL_8250_CONSOLE=y |
| 706 | CONFIG_SERIAL_8250_PCI=y | ||
| 757 | CONFIG_SERIAL_8250_CS=m | 707 | CONFIG_SERIAL_8250_CS=m |
| 758 | CONFIG_SERIAL_8250_NR_UARTS=17 | 708 | CONFIG_SERIAL_8250_NR_UARTS=17 |
| 709 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
| 759 | CONFIG_SERIAL_8250_EXTENDED=y | 710 | CONFIG_SERIAL_8250_EXTENDED=y |
| 760 | CONFIG_SERIAL_8250_MANY_PORTS=y | 711 | CONFIG_SERIAL_8250_MANY_PORTS=y |
| 761 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 712 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
| @@ -765,83 +716,73 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y | |||
| 765 | # | 716 | # |
| 766 | # Non-8250 serial port support | 717 | # Non-8250 serial port support |
| 767 | # | 718 | # |
| 768 | # CONFIG_SERIAL_MUX is not set | ||
| 769 | CONFIG_PDC_CONSOLE=y | 719 | CONFIG_PDC_CONSOLE=y |
| 770 | CONFIG_SERIAL_CORE=y | 720 | CONFIG_SERIAL_CORE=y |
| 771 | CONFIG_SERIAL_CORE_CONSOLE=y | 721 | CONFIG_SERIAL_CORE_CONSOLE=y |
| 772 | # CONFIG_SERIAL_JSM is not set | 722 | # CONFIG_SERIAL_JSM is not set |
| 773 | CONFIG_UNIX98_PTYS=y | 723 | CONFIG_UNIX98_PTYS=y |
| 774 | # CONFIG_LEGACY_PTYS is not set | 724 | # CONFIG_LEGACY_PTYS is not set |
| 775 | |||
| 776 | # | ||
| 777 | # IPMI | ||
| 778 | # | ||
| 779 | # CONFIG_IPMI_HANDLER is not set | 725 | # CONFIG_IPMI_HANDLER is not set |
| 780 | |||
| 781 | # | ||
| 782 | # Watchdog Cards | ||
| 783 | # | ||
| 784 | # CONFIG_WATCHDOG is not set | 726 | # CONFIG_WATCHDOG is not set |
| 727 | # CONFIG_HW_RANDOM is not set | ||
| 785 | CONFIG_GEN_RTC=y | 728 | CONFIG_GEN_RTC=y |
| 786 | CONFIG_GEN_RTC_X=y | 729 | CONFIG_GEN_RTC_X=y |
| 787 | # CONFIG_DTLK is not set | ||
| 788 | # CONFIG_R3964 is not set | 730 | # CONFIG_R3964 is not set |
| 789 | # CONFIG_APPLICOM is not set | 731 | # CONFIG_APPLICOM is not set |
| 790 | 732 | CONFIG_AGP=y | |
| 791 | # | 733 | CONFIG_AGP_PARISC=y |
| 792 | # Ftape, the floppy tape device driver | ||
| 793 | # | ||
| 794 | # CONFIG_DRM is not set | 734 | # CONFIG_DRM is not set |
| 795 | 735 | ||
| 796 | # | 736 | # |
| 797 | # PCMCIA character devices | 737 | # PCMCIA character devices |
| 798 | # | 738 | # |
| 799 | # CONFIG_SYNCLINK_CS is not set | 739 | # CONFIG_SYNCLINK_CS is not set |
| 740 | # CONFIG_CARDMAN_4000 is not set | ||
| 741 | # CONFIG_CARDMAN_4040 is not set | ||
| 800 | CONFIG_RAW_DRIVER=y | 742 | CONFIG_RAW_DRIVER=y |
| 801 | CONFIG_MAX_RAW_DEVS=256 | 743 | CONFIG_MAX_RAW_DEVS=256 |
| 802 | |||
| 803 | # | ||
| 804 | # TPM devices | ||
| 805 | # | ||
| 806 | # CONFIG_TCG_TPM is not set | 744 | # CONFIG_TCG_TPM is not set |
| 807 | 745 | CONFIG_DEVPORT=y | |
| 808 | # | ||
| 809 | # I2C support | ||
| 810 | # | ||
| 811 | # CONFIG_I2C is not set | 746 | # CONFIG_I2C is not set |
| 812 | 747 | ||
| 813 | # | 748 | # |
| 814 | # Dallas's 1-wire bus | 749 | # SPI support |
| 815 | # | 750 | # |
| 751 | # CONFIG_SPI is not set | ||
| 752 | # CONFIG_SPI_MASTER is not set | ||
| 816 | # CONFIG_W1 is not set | 753 | # CONFIG_W1 is not set |
| 817 | 754 | # CONFIG_POWER_SUPPLY is not set | |
| 818 | # | ||
| 819 | # Hardware Monitoring support | ||
| 820 | # | ||
| 821 | # CONFIG_HWMON is not set | 755 | # CONFIG_HWMON is not set |
| 822 | # CONFIG_HWMON_VID is not set | ||
| 823 | 756 | ||
| 824 | # | 757 | # |
| 825 | # Misc devices | 758 | # Sonics Silicon Backplane |
| 826 | # | 759 | # |
| 760 | CONFIG_SSB_POSSIBLE=y | ||
| 761 | # CONFIG_SSB is not set | ||
| 827 | 762 | ||
| 828 | # | 763 | # |
| 829 | # Multimedia Capabilities Port drivers | 764 | # Multifunction device drivers |
| 830 | # | 765 | # |
| 766 | # CONFIG_MFD_SM501 is not set | ||
| 831 | 767 | ||
| 832 | # | 768 | # |
| 833 | # Multimedia devices | 769 | # Multimedia devices |
| 834 | # | 770 | # |
| 835 | # CONFIG_VIDEO_DEV is not set | 771 | # CONFIG_VIDEO_DEV is not set |
| 772 | # CONFIG_DVB_CORE is not set | ||
| 773 | # CONFIG_DAB is not set | ||
| 836 | 774 | ||
| 837 | # | 775 | # |
| 838 | # Digital Video Broadcasting Devices | 776 | # Graphics support |
| 839 | # | 777 | # |
| 840 | # CONFIG_DVB is not set | 778 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
| 841 | 779 | ||
| 842 | # | 780 | # |
| 843 | # Graphics support | 781 | # Display device support |
| 844 | # | 782 | # |
| 783 | # CONFIG_DISPLAY_SUPPORT is not set | ||
| 784 | # CONFIG_VGASTATE is not set | ||
| 785 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
| 845 | # CONFIG_FB is not set | 786 | # CONFIG_FB is not set |
| 846 | 787 | ||
| 847 | # | 788 | # |
| @@ -856,34 +797,47 @@ CONFIG_DUMMY_CONSOLE_ROWS=64 | |||
| 856 | # Sound | 797 | # Sound |
| 857 | # | 798 | # |
| 858 | # CONFIG_SOUND is not set | 799 | # CONFIG_SOUND is not set |
| 859 | 800 | CONFIG_HID_SUPPORT=y | |
| 860 | # | 801 | CONFIG_HID=y |
| 861 | # USB support | 802 | # CONFIG_HID_DEBUG is not set |
| 862 | # | 803 | CONFIG_USB_SUPPORT=y |
| 863 | CONFIG_USB_ARCH_HAS_HCD=y | 804 | CONFIG_USB_ARCH_HAS_HCD=y |
| 864 | CONFIG_USB_ARCH_HAS_OHCI=y | 805 | CONFIG_USB_ARCH_HAS_OHCI=y |
| 806 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
| 865 | # CONFIG_USB is not set | 807 | # CONFIG_USB is not set |
| 866 | 808 | ||
| 867 | # | 809 | # |
| 810 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
| 811 | # | ||
| 812 | |||
| 813 | # | ||
| 868 | # USB Gadget Support | 814 | # USB Gadget Support |
| 869 | # | 815 | # |
| 870 | # CONFIG_USB_GADGET is not set | 816 | # CONFIG_USB_GADGET is not set |
| 817 | # CONFIG_MMC is not set | ||
| 818 | # CONFIG_NEW_LEDS is not set | ||
| 819 | # CONFIG_INFINIBAND is not set | ||
| 820 | # CONFIG_RTC_CLASS is not set | ||
| 871 | 821 | ||
| 872 | # | 822 | # |
| 873 | # MMC/SD Card support | 823 | # DMA Engine support |
| 874 | # | 824 | # |
| 875 | # CONFIG_MMC is not set | 825 | # CONFIG_DMA_ENGINE is not set |
| 876 | 826 | ||
| 877 | # | 827 | # |
| 878 | # InfiniBand support | 828 | # DMA Clients |
| 879 | # | 829 | # |
| 880 | # CONFIG_INFINIBAND is not set | ||
| 881 | 830 | ||
| 882 | # | 831 | # |
| 883 | # SN Devices | 832 | # DMA Devices |
| 884 | # | 833 | # |
| 885 | 834 | ||
| 886 | # | 835 | # |
| 836 | # Userspace I/O | ||
| 837 | # | ||
| 838 | # CONFIG_UIO is not set | ||
| 839 | |||
| 840 | # | ||
| 887 | # File systems | 841 | # File systems |
| 888 | # | 842 | # |
| 889 | CONFIG_EXT2_FS=y | 843 | CONFIG_EXT2_FS=y |
| @@ -891,6 +845,7 @@ CONFIG_EXT2_FS=y | |||
| 891 | # CONFIG_EXT2_FS_XIP is not set | 845 | # CONFIG_EXT2_FS_XIP is not set |
| 892 | CONFIG_EXT3_FS=y | 846 | CONFIG_EXT3_FS=y |
| 893 | # CONFIG_EXT3_FS_XATTR is not set | 847 | # CONFIG_EXT3_FS_XATTR is not set |
| 848 | # CONFIG_EXT4DEV_FS is not set | ||
| 894 | CONFIG_JBD=y | 849 | CONFIG_JBD=y |
| 895 | # CONFIG_JBD_DEBUG is not set | 850 | # CONFIG_JBD_DEBUG is not set |
| 896 | # CONFIG_REISERFS_FS is not set | 851 | # CONFIG_REISERFS_FS is not set |
| @@ -901,14 +856,16 @@ CONFIG_JFS_FS=m | |||
| 901 | # CONFIG_JFS_STATISTICS is not set | 856 | # CONFIG_JFS_STATISTICS is not set |
| 902 | CONFIG_FS_POSIX_ACL=y | 857 | CONFIG_FS_POSIX_ACL=y |
| 903 | CONFIG_XFS_FS=m | 858 | CONFIG_XFS_FS=m |
| 904 | CONFIG_XFS_EXPORT=y | ||
| 905 | # CONFIG_XFS_QUOTA is not set | 859 | # CONFIG_XFS_QUOTA is not set |
| 906 | # CONFIG_XFS_SECURITY is not set | 860 | # CONFIG_XFS_SECURITY is not set |
| 907 | # CONFIG_XFS_POSIX_ACL is not set | 861 | # CONFIG_XFS_POSIX_ACL is not set |
| 908 | # CONFIG_XFS_RT is not set | 862 | # CONFIG_XFS_RT is not set |
| 863 | # CONFIG_GFS2_FS is not set | ||
| 864 | # CONFIG_OCFS2_FS is not set | ||
| 909 | # CONFIG_MINIX_FS is not set | 865 | # CONFIG_MINIX_FS is not set |
| 910 | # CONFIG_ROMFS_FS is not set | 866 | # CONFIG_ROMFS_FS is not set |
| 911 | CONFIG_INOTIFY=y | 867 | CONFIG_INOTIFY=y |
| 868 | CONFIG_INOTIFY_USER=y | ||
| 912 | # CONFIG_QUOTA is not set | 869 | # CONFIG_QUOTA is not set |
| 913 | CONFIG_DNOTIFY=y | 870 | CONFIG_DNOTIFY=y |
| 914 | # CONFIG_AUTOFS_FS is not set | 871 | # CONFIG_AUTOFS_FS is not set |
| @@ -939,18 +896,20 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
| 939 | # | 896 | # |
| 940 | CONFIG_PROC_FS=y | 897 | CONFIG_PROC_FS=y |
| 941 | CONFIG_PROC_KCORE=y | 898 | CONFIG_PROC_KCORE=y |
| 899 | CONFIG_PROC_SYSCTL=y | ||
| 942 | CONFIG_SYSFS=y | 900 | CONFIG_SYSFS=y |
| 943 | CONFIG_TMPFS=y | 901 | CONFIG_TMPFS=y |
| 944 | # CONFIG_HUGETLBFS is not set | 902 | # CONFIG_TMPFS_POSIX_ACL is not set |
| 945 | # CONFIG_HUGETLB_PAGE is not set | 903 | # CONFIG_HUGETLB_PAGE is not set |
| 946 | CONFIG_RAMFS=y | 904 | CONFIG_RAMFS=y |
| 947 | # CONFIG_RELAYFS_FS is not set | 905 | # CONFIG_CONFIGFS_FS is not set |
| 948 | 906 | ||
| 949 | # | 907 | # |
| 950 | # Miscellaneous filesystems | 908 | # Miscellaneous filesystems |
| 951 | # | 909 | # |
| 952 | # CONFIG_ADFS_FS is not set | 910 | # CONFIG_ADFS_FS is not set |
| 953 | # CONFIG_AFFS_FS is not set | 911 | # CONFIG_AFFS_FS is not set |
| 912 | # CONFIG_ECRYPT_FS is not set | ||
| 954 | # CONFIG_HFS_FS is not set | 913 | # CONFIG_HFS_FS is not set |
| 955 | # CONFIG_HFSPLUS_FS is not set | 914 | # CONFIG_HFSPLUS_FS is not set |
| 956 | # CONFIG_BEFS_FS is not set | 915 | # CONFIG_BEFS_FS is not set |
| @@ -963,6 +922,7 @@ CONFIG_RAMFS=y | |||
| 963 | # CONFIG_SYSV_FS is not set | 922 | # CONFIG_SYSV_FS is not set |
| 964 | CONFIG_UFS_FS=m | 923 | CONFIG_UFS_FS=m |
| 965 | # CONFIG_UFS_FS_WRITE is not set | 924 | # CONFIG_UFS_FS_WRITE is not set |
| 925 | # CONFIG_UFS_DEBUG is not set | ||
| 966 | 926 | ||
| 967 | # | 927 | # |
| 968 | # Network File Systems | 928 | # Network File Systems |
| @@ -983,6 +943,7 @@ CONFIG_EXPORTFS=m | |||
| 983 | CONFIG_NFS_COMMON=y | 943 | CONFIG_NFS_COMMON=y |
| 984 | CONFIG_SUNRPC=m | 944 | CONFIG_SUNRPC=m |
| 985 | CONFIG_SUNRPC_GSS=m | 945 | CONFIG_SUNRPC_GSS=m |
| 946 | # CONFIG_SUNRPC_BIND34 is not set | ||
| 986 | CONFIG_RPCSEC_GSS_KRB5=m | 947 | CONFIG_RPCSEC_GSS_KRB5=m |
| 987 | CONFIG_RPCSEC_GSS_SPKM3=m | 948 | CONFIG_RPCSEC_GSS_SPKM3=m |
| 988 | CONFIG_SMB_FS=m | 949 | CONFIG_SMB_FS=m |
| @@ -990,12 +951,13 @@ CONFIG_SMB_NLS_DEFAULT=y | |||
| 990 | CONFIG_SMB_NLS_REMOTE="cp437" | 951 | CONFIG_SMB_NLS_REMOTE="cp437" |
| 991 | CONFIG_CIFS=m | 952 | CONFIG_CIFS=m |
| 992 | # CONFIG_CIFS_STATS is not set | 953 | # CONFIG_CIFS_STATS is not set |
| 954 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
| 993 | # CONFIG_CIFS_XATTR is not set | 955 | # CONFIG_CIFS_XATTR is not set |
| 956 | # CONFIG_CIFS_DEBUG2 is not set | ||
| 994 | # CONFIG_CIFS_EXPERIMENTAL is not set | 957 | # CONFIG_CIFS_EXPERIMENTAL is not set |
| 995 | # CONFIG_NCP_FS is not set | 958 | # CONFIG_NCP_FS is not set |
| 996 | # CONFIG_CODA_FS is not set | 959 | # CONFIG_CODA_FS is not set |
| 997 | # CONFIG_AFS_FS is not set | 960 | # CONFIG_AFS_FS is not set |
| 998 | # CONFIG_9P_FS is not set | ||
| 999 | 961 | ||
| 1000 | # | 962 | # |
| 1001 | # Partition Types | 963 | # Partition Types |
| @@ -1048,6 +1010,11 @@ CONFIG_NLS_ISO8859_15=m | |||
| 1048 | CONFIG_NLS_UTF8=m | 1010 | CONFIG_NLS_UTF8=m |
| 1049 | 1011 | ||
| 1050 | # | 1012 | # |
| 1013 | # Distributed Lock Manager | ||
| 1014 | # | ||
| 1015 | # CONFIG_DLM is not set | ||
| 1016 | |||
| 1017 | # | ||
| 1051 | # Profiling support | 1018 | # Profiling support |
| 1052 | # | 1019 | # |
| 1053 | CONFIG_PROFILING=y | 1020 | CONFIG_PROFILING=y |
| @@ -1057,19 +1024,34 @@ CONFIG_OPROFILE=m | |||
| 1057 | # Kernel hacking | 1024 | # Kernel hacking |
| 1058 | # | 1025 | # |
| 1059 | # CONFIG_PRINTK_TIME is not set | 1026 | # CONFIG_PRINTK_TIME is not set |
| 1060 | CONFIG_DEBUG_KERNEL=y | 1027 | CONFIG_ENABLE_MUST_CHECK=y |
| 1061 | CONFIG_MAGIC_SYSRQ=y | 1028 | CONFIG_MAGIC_SYSRQ=y |
| 1062 | CONFIG_LOG_BUF_SHIFT=16 | 1029 | # CONFIG_UNUSED_SYMBOLS is not set |
| 1030 | # CONFIG_DEBUG_FS is not set | ||
| 1031 | CONFIG_HEADERS_CHECK=y | ||
| 1032 | CONFIG_DEBUG_KERNEL=y | ||
| 1033 | # CONFIG_DEBUG_SHIRQ is not set | ||
| 1063 | CONFIG_DETECT_SOFTLOCKUP=y | 1034 | CONFIG_DETECT_SOFTLOCKUP=y |
| 1035 | CONFIG_SCHED_DEBUG=y | ||
| 1064 | # CONFIG_SCHEDSTATS is not set | 1036 | # CONFIG_SCHEDSTATS is not set |
| 1037 | # CONFIG_TIMER_STATS is not set | ||
| 1065 | # CONFIG_DEBUG_SLAB is not set | 1038 | # CONFIG_DEBUG_SLAB is not set |
| 1039 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
| 1040 | # CONFIG_RT_MUTEX_TESTER is not set | ||
| 1066 | # CONFIG_DEBUG_SPINLOCK is not set | 1041 | # CONFIG_DEBUG_SPINLOCK is not set |
| 1042 | # CONFIG_DEBUG_MUTEXES is not set | ||
| 1067 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1043 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 1044 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 1068 | # CONFIG_DEBUG_KOBJECT is not set | 1045 | # CONFIG_DEBUG_KOBJECT is not set |
| 1046 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
| 1069 | # CONFIG_DEBUG_INFO is not set | 1047 | # CONFIG_DEBUG_INFO is not set |
| 1070 | # CONFIG_DEBUG_IOREMAP is not set | 1048 | # CONFIG_DEBUG_VM is not set |
| 1071 | # CONFIG_DEBUG_FS is not set | 1049 | # CONFIG_DEBUG_LIST is not set |
| 1050 | CONFIG_FORCED_INLINING=y | ||
| 1051 | # CONFIG_RCU_TORTURE_TEST is not set | ||
| 1052 | # CONFIG_FAULT_INJECTION is not set | ||
| 1072 | # CONFIG_DEBUG_RWLOCK is not set | 1053 | # CONFIG_DEBUG_RWLOCK is not set |
| 1054 | # CONFIG_DEBUG_RODATA is not set | ||
| 1073 | 1055 | ||
| 1074 | # | 1056 | # |
| 1075 | # Security options | 1057 | # Security options |
| @@ -1077,12 +1059,13 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
| 1077 | CONFIG_KEYS=y | 1059 | CONFIG_KEYS=y |
| 1078 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | 1060 | CONFIG_KEYS_DEBUG_PROC_KEYS=y |
| 1079 | # CONFIG_SECURITY is not set | 1061 | # CONFIG_SECURITY is not set |
| 1080 | |||
| 1081 | # | ||
| 1082 | # Cryptographic options | ||
| 1083 | # | ||
| 1084 | CONFIG_CRYPTO=y | 1062 | CONFIG_CRYPTO=y |
| 1063 | CONFIG_CRYPTO_ALGAPI=y | ||
| 1064 | CONFIG_CRYPTO_BLKCIPHER=m | ||
| 1065 | CONFIG_CRYPTO_HASH=y | ||
| 1066 | CONFIG_CRYPTO_MANAGER=y | ||
| 1085 | CONFIG_CRYPTO_HMAC=y | 1067 | CONFIG_CRYPTO_HMAC=y |
| 1068 | # CONFIG_CRYPTO_XCBC is not set | ||
| 1086 | CONFIG_CRYPTO_NULL=m | 1069 | CONFIG_CRYPTO_NULL=m |
| 1087 | # CONFIG_CRYPTO_MD4 is not set | 1070 | # CONFIG_CRYPTO_MD4 is not set |
| 1088 | CONFIG_CRYPTO_MD5=y | 1071 | CONFIG_CRYPTO_MD5=y |
| @@ -1091,32 +1074,47 @@ CONFIG_CRYPTO_SHA1=m | |||
| 1091 | # CONFIG_CRYPTO_SHA512 is not set | 1074 | # CONFIG_CRYPTO_SHA512 is not set |
| 1092 | # CONFIG_CRYPTO_WP512 is not set | 1075 | # CONFIG_CRYPTO_WP512 is not set |
| 1093 | # CONFIG_CRYPTO_TGR192 is not set | 1076 | # CONFIG_CRYPTO_TGR192 is not set |
| 1077 | # CONFIG_CRYPTO_GF128MUL is not set | ||
| 1078 | # CONFIG_CRYPTO_ECB is not set | ||
| 1079 | CONFIG_CRYPTO_CBC=m | ||
| 1080 | # CONFIG_CRYPTO_PCBC is not set | ||
| 1081 | # CONFIG_CRYPTO_LRW is not set | ||
| 1082 | # CONFIG_CRYPTO_XTS is not set | ||
| 1083 | # CONFIG_CRYPTO_CRYPTD is not set | ||
| 1094 | CONFIG_CRYPTO_DES=m | 1084 | CONFIG_CRYPTO_DES=m |
| 1085 | # CONFIG_CRYPTO_FCRYPT is not set | ||
| 1095 | CONFIG_CRYPTO_BLOWFISH=m | 1086 | CONFIG_CRYPTO_BLOWFISH=m |
| 1096 | # CONFIG_CRYPTO_TWOFISH is not set | 1087 | # CONFIG_CRYPTO_TWOFISH is not set |
| 1097 | # CONFIG_CRYPTO_SERPENT is not set | 1088 | # CONFIG_CRYPTO_SERPENT is not set |
| 1098 | # CONFIG_CRYPTO_AES is not set | 1089 | # CONFIG_CRYPTO_AES is not set |
| 1099 | # CONFIG_CRYPTO_CAST5 is not set | 1090 | CONFIG_CRYPTO_CAST5=m |
| 1100 | # CONFIG_CRYPTO_CAST6 is not set | 1091 | # CONFIG_CRYPTO_CAST6 is not set |
| 1101 | # CONFIG_CRYPTO_TEA is not set | 1092 | # CONFIG_CRYPTO_TEA is not set |
| 1102 | # CONFIG_CRYPTO_ARC4 is not set | 1093 | # CONFIG_CRYPTO_ARC4 is not set |
| 1103 | # CONFIG_CRYPTO_KHAZAD is not set | 1094 | # CONFIG_CRYPTO_KHAZAD is not set |
| 1104 | # CONFIG_CRYPTO_ANUBIS is not set | 1095 | # CONFIG_CRYPTO_ANUBIS is not set |
| 1096 | # CONFIG_CRYPTO_SEED is not set | ||
| 1105 | CONFIG_CRYPTO_DEFLATE=m | 1097 | CONFIG_CRYPTO_DEFLATE=m |
| 1106 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1098 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
| 1107 | CONFIG_CRYPTO_CRC32C=m | 1099 | CONFIG_CRYPTO_CRC32C=m |
| 1100 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
| 1108 | CONFIG_CRYPTO_TEST=m | 1101 | CONFIG_CRYPTO_TEST=m |
| 1109 | 1102 | # CONFIG_CRYPTO_AUTHENC is not set | |
| 1110 | # | 1103 | # CONFIG_CRYPTO_HW is not set |
| 1111 | # Hardware crypto devices | ||
| 1112 | # | ||
| 1113 | 1104 | ||
| 1114 | # | 1105 | # |
| 1115 | # Library routines | 1106 | # Library routines |
| 1116 | # | 1107 | # |
| 1108 | CONFIG_BITREVERSE=y | ||
| 1117 | CONFIG_CRC_CCITT=m | 1109 | CONFIG_CRC_CCITT=m |
| 1118 | # CONFIG_CRC16 is not set | 1110 | # CONFIG_CRC16 is not set |
| 1111 | # CONFIG_CRC_ITU_T is not set | ||
| 1119 | CONFIG_CRC32=y | 1112 | CONFIG_CRC32=y |
| 1113 | # CONFIG_CRC7 is not set | ||
| 1120 | CONFIG_LIBCRC32C=m | 1114 | CONFIG_LIBCRC32C=m |
| 1121 | CONFIG_ZLIB_INFLATE=m | 1115 | CONFIG_ZLIB_INFLATE=m |
| 1122 | CONFIG_ZLIB_DEFLATE=m | 1116 | CONFIG_ZLIB_DEFLATE=m |
| 1117 | CONFIG_PLIST=y | ||
| 1118 | CONFIG_HAS_IOMEM=y | ||
| 1119 | CONFIG_HAS_IOPORT=y | ||
| 1120 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/parisc/configs/b180_defconfig b/arch/parisc/configs/b180_defconfig index 35093612ad2c..1bf22c9a4614 100644 --- a/arch/parisc/configs/b180_defconfig +++ b/arch/parisc/configs/b180_defconfig | |||
| @@ -1,38 +1,47 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.16-rc1-pa0 | 3 | # Linux kernel version: 2.6.23 |
| 4 | # Tue Jan 17 08:21:01 2006 | 4 | # Fri Oct 12 21:16:46 2007 |
| 5 | # | 5 | # |
| 6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| 8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
| 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
| 10 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
| 11 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
| 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 13 | CONFIG_GENERIC_BUG=y | ||
| 14 | CONFIG_GENERIC_HWEIGHT=y | ||
| 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 15 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 16 | CONFIG_GENERIC_TIME=y | ||
| 11 | CONFIG_GENERIC_HARDIRQS=y | 17 | CONFIG_GENERIC_HARDIRQS=y |
| 12 | CONFIG_GENERIC_IRQ_PROBE=y | 18 | CONFIG_GENERIC_IRQ_PROBE=y |
| 19 | CONFIG_IRQ_PER_CPU=y | ||
| 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 13 | 21 | ||
| 14 | # | 22 | # |
| 15 | # Code maturity level options | 23 | # General setup |
| 16 | # | 24 | # |
| 17 | # CONFIG_EXPERIMENTAL is not set | 25 | # CONFIG_EXPERIMENTAL is not set |
| 18 | CONFIG_CLEAN_COMPILE=y | ||
| 19 | CONFIG_BROKEN_ON_SMP=y | 26 | CONFIG_BROKEN_ON_SMP=y |
| 20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
| 21 | |||
| 22 | # | ||
| 23 | # General setup | ||
| 24 | # | ||
| 25 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
| 26 | # CONFIG_LOCALVERSION_AUTO is not set | 29 | # CONFIG_LOCALVERSION_AUTO is not set |
| 27 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
| 28 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
| 32 | CONFIG_SYSVIPC_SYSCTL=y | ||
| 29 | # CONFIG_BSD_PROCESS_ACCT is not set | 33 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 30 | CONFIG_SYSCTL=y | 34 | # CONFIG_TASKSTATS is not set |
| 31 | # CONFIG_AUDIT is not set | 35 | # CONFIG_AUDIT is not set |
| 32 | CONFIG_IKCONFIG=y | 36 | CONFIG_IKCONFIG=y |
| 33 | CONFIG_IKCONFIG_PROC=y | 37 | CONFIG_IKCONFIG_PROC=y |
| 34 | CONFIG_INITRAMFS_SOURCE="" | 38 | CONFIG_LOG_BUF_SHIFT=16 |
| 39 | CONFIG_SYSFS_DEPRECATED=y | ||
| 40 | # CONFIG_RELAY is not set | ||
| 41 | # CONFIG_BLK_DEV_INITRD is not set | ||
| 42 | CONFIG_SYSCTL=y | ||
| 35 | # CONFIG_EMBEDDED is not set | 43 | # CONFIG_EMBEDDED is not set |
| 44 | CONFIG_SYSCTL_SYSCALL=y | ||
| 36 | CONFIG_KALLSYMS=y | 45 | CONFIG_KALLSYMS=y |
| 37 | # CONFIG_KALLSYMS_ALL is not set | 46 | # CONFIG_KALLSYMS_ALL is not set |
| 38 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 47 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| @@ -42,30 +51,27 @@ CONFIG_BUG=y | |||
| 42 | CONFIG_ELF_CORE=y | 51 | CONFIG_ELF_CORE=y |
| 43 | CONFIG_BASE_FULL=y | 52 | CONFIG_BASE_FULL=y |
| 44 | CONFIG_FUTEX=y | 53 | CONFIG_FUTEX=y |
| 54 | CONFIG_ANON_INODES=y | ||
| 45 | CONFIG_EPOLL=y | 55 | CONFIG_EPOLL=y |
| 56 | CONFIG_SIGNALFD=y | ||
| 57 | CONFIG_EVENTFD=y | ||
| 46 | CONFIG_SHMEM=y | 58 | CONFIG_SHMEM=y |
| 47 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 59 | CONFIG_VM_EVENT_COUNTERS=y |
| 48 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 49 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 50 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 51 | CONFIG_SLAB=y | 60 | CONFIG_SLAB=y |
| 61 | # CONFIG_SLUB is not set | ||
| 62 | # CONFIG_SLOB is not set | ||
| 63 | CONFIG_RT_MUTEXES=y | ||
| 52 | # CONFIG_TINY_SHMEM is not set | 64 | # CONFIG_TINY_SHMEM is not set |
| 53 | CONFIG_BASE_SMALL=0 | 65 | CONFIG_BASE_SMALL=0 |
| 54 | # CONFIG_SLOB is not set | ||
| 55 | |||
| 56 | # | ||
| 57 | # Loadable module support | ||
| 58 | # | ||
| 59 | CONFIG_MODULES=y | 66 | CONFIG_MODULES=y |
| 60 | # CONFIG_MODULE_UNLOAD is not set | 67 | # CONFIG_MODULE_UNLOAD is not set |
| 61 | CONFIG_OBSOLETE_MODPARM=y | ||
| 62 | CONFIG_MODVERSIONS=y | 68 | CONFIG_MODVERSIONS=y |
| 63 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 69 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
| 64 | # CONFIG_KMOD is not set | 70 | # CONFIG_KMOD is not set |
| 65 | 71 | CONFIG_BLOCK=y | |
| 66 | # | 72 | # CONFIG_LBD is not set |
| 67 | # Block layer | 73 | # CONFIG_BLK_DEV_IO_TRACE is not set |
| 68 | # | 74 | # CONFIG_LSF is not set |
| 69 | 75 | ||
| 70 | # | 76 | # |
| 71 | # IO Schedulers | 77 | # IO Schedulers |
| @@ -89,16 +95,26 @@ CONFIG_PA7100LC=y | |||
| 89 | # CONFIG_PA7300LC is not set | 95 | # CONFIG_PA7300LC is not set |
| 90 | # CONFIG_PA8X00 is not set | 96 | # CONFIG_PA8X00 is not set |
| 91 | CONFIG_PA11=y | 97 | CONFIG_PA11=y |
| 98 | CONFIG_PARISC_PAGE_SIZE_4KB=y | ||
| 99 | # CONFIG_PARISC_PAGE_SIZE_16KB is not set | ||
| 100 | # CONFIG_PARISC_PAGE_SIZE_64KB is not set | ||
| 92 | # CONFIG_SMP is not set | 101 | # CONFIG_SMP is not set |
| 102 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 103 | CONFIG_PREEMPT_NONE=y | ||
| 104 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 105 | # CONFIG_PREEMPT is not set | ||
| 93 | # CONFIG_HZ_100 is not set | 106 | # CONFIG_HZ_100 is not set |
| 94 | CONFIG_HZ_250=y | 107 | CONFIG_HZ_250=y |
| 108 | # CONFIG_HZ_300 is not set | ||
| 95 | # CONFIG_HZ_1000 is not set | 109 | # CONFIG_HZ_1000 is not set |
| 96 | CONFIG_HZ=250 | 110 | CONFIG_HZ=250 |
| 97 | CONFIG_FLATMEM=y | 111 | CONFIG_FLATMEM=y |
| 98 | CONFIG_FLAT_NODE_MEM_MAP=y | 112 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 99 | # CONFIG_SPARSEMEM_STATIC is not set | 113 | # CONFIG_SPARSEMEM_STATIC is not set |
| 100 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 114 | CONFIG_SPLIT_PTLOCK_CPUS=4096 |
| 101 | # CONFIG_PREEMPT is not set | 115 | # CONFIG_RESOURCES_64BIT is not set |
| 116 | CONFIG_ZONE_DMA_FLAG=0 | ||
| 117 | CONFIG_VIRT_TO_BUS=y | ||
| 102 | # CONFIG_HPUX is not set | 118 | # CONFIG_HPUX is not set |
| 103 | 119 | ||
| 104 | # | 120 | # |
| @@ -113,7 +129,7 @@ CONFIG_EISA=y | |||
| 113 | CONFIG_EISA_NAMES=y | 129 | CONFIG_EISA_NAMES=y |
| 114 | CONFIG_ISA=y | 130 | CONFIG_ISA=y |
| 115 | CONFIG_PCI=y | 131 | CONFIG_PCI=y |
| 116 | CONFIG_PCI_LEGACY_PROC=y | 132 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
| 117 | # CONFIG_PCI_DEBUG is not set | 133 | # CONFIG_PCI_DEBUG is not set |
| 118 | CONFIG_GSC_DINO=y | 134 | CONFIG_GSC_DINO=y |
| 119 | # CONFIG_PCI_LBA is not set | 135 | # CONFIG_PCI_LBA is not set |
| @@ -124,14 +140,11 @@ CONFIG_GSC_DINO=y | |||
| 124 | # CONFIG_PCCARD is not set | 140 | # CONFIG_PCCARD is not set |
| 125 | 141 | ||
| 126 | # | 142 | # |
| 127 | # PCI Hotplug Support | ||
| 128 | # | ||
| 129 | |||
| 130 | # | ||
| 131 | # PA-RISC specific drivers | 143 | # PA-RISC specific drivers |
| 132 | # | 144 | # |
| 133 | CONFIG_CHASSIS_LCD_LED=y | 145 | CONFIG_CHASSIS_LCD_LED=y |
| 134 | # CONFIG_PDC_CHASSIS is not set | 146 | # CONFIG_PDC_CHASSIS is not set |
| 147 | CONFIG_PDC_CHASSIS_WARN=y | ||
| 135 | CONFIG_PDC_STABLE=y | 148 | CONFIG_PDC_STABLE=y |
| 136 | 149 | ||
| 137 | # | 150 | # |
| @@ -151,6 +164,8 @@ CONFIG_NET=y | |||
| 151 | CONFIG_PACKET=y | 164 | CONFIG_PACKET=y |
| 152 | CONFIG_PACKET_MMAP=y | 165 | CONFIG_PACKET_MMAP=y |
| 153 | CONFIG_UNIX=y | 166 | CONFIG_UNIX=y |
| 167 | CONFIG_XFRM=y | ||
| 168 | # CONFIG_XFRM_USER is not set | ||
| 154 | # CONFIG_NET_KEY is not set | 169 | # CONFIG_NET_KEY is not set |
| 155 | CONFIG_INET=y | 170 | CONFIG_INET=y |
| 156 | CONFIG_IP_MULTICAST=y | 171 | CONFIG_IP_MULTICAST=y |
| @@ -167,18 +182,32 @@ CONFIG_IP_PNP_BOOTP=y | |||
| 167 | # CONFIG_INET_AH is not set | 182 | # CONFIG_INET_AH is not set |
| 168 | # CONFIG_INET_ESP is not set | 183 | # CONFIG_INET_ESP is not set |
| 169 | # CONFIG_INET_IPCOMP is not set | 184 | # CONFIG_INET_IPCOMP is not set |
| 170 | # CONFIG_INET_TUNNEL is not set | 185 | # CONFIG_INET_XFRM_TUNNEL is not set |
| 186 | CONFIG_INET_TUNNEL=y | ||
| 187 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 188 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 189 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 190 | # CONFIG_INET_LRO is not set | ||
| 171 | CONFIG_INET_DIAG=y | 191 | CONFIG_INET_DIAG=y |
| 172 | CONFIG_INET_TCP_DIAG=y | 192 | CONFIG_INET_TCP_DIAG=y |
| 173 | # CONFIG_TCP_CONG_ADVANCED is not set | 193 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 174 | CONFIG_TCP_CONG_BIC=y | 194 | CONFIG_TCP_CONG_CUBIC=y |
| 195 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 175 | CONFIG_IPV6=y | 196 | CONFIG_IPV6=y |
| 176 | # CONFIG_IPV6_PRIVACY is not set | 197 | # CONFIG_IPV6_PRIVACY is not set |
| 198 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
| 177 | # CONFIG_INET6_AH is not set | 199 | # CONFIG_INET6_AH is not set |
| 178 | # CONFIG_INET6_ESP is not set | 200 | # CONFIG_INET6_ESP is not set |
| 179 | # CONFIG_INET6_IPCOMP is not set | 201 | # CONFIG_INET6_IPCOMP is not set |
| 202 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
| 180 | # CONFIG_INET6_TUNNEL is not set | 203 | # CONFIG_INET6_TUNNEL is not set |
| 204 | CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
| 205 | CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
| 206 | CONFIG_INET6_XFRM_MODE_BEET=y | ||
| 207 | CONFIG_IPV6_SIT=y | ||
| 181 | # CONFIG_IPV6_TUNNEL is not set | 208 | # CONFIG_IPV6_TUNNEL is not set |
| 209 | # CONFIG_NETLABEL is not set | ||
| 210 | # CONFIG_NETWORK_SECMARK is not set | ||
| 182 | # CONFIG_NETFILTER is not set | 211 | # CONFIG_NETFILTER is not set |
| 183 | # CONFIG_BRIDGE is not set | 212 | # CONFIG_BRIDGE is not set |
| 184 | # CONFIG_VLAN_8021Q is not set | 213 | # CONFIG_VLAN_8021Q is not set |
| @@ -199,7 +228,14 @@ CONFIG_IPV6=y | |||
| 199 | # CONFIG_HAMRADIO is not set | 228 | # CONFIG_HAMRADIO is not set |
| 200 | # CONFIG_IRDA is not set | 229 | # CONFIG_IRDA is not set |
| 201 | # CONFIG_BT is not set | 230 | # CONFIG_BT is not set |
| 231 | |||
| 232 | # | ||
| 233 | # Wireless | ||
| 234 | # | ||
| 235 | # CONFIG_CFG80211 is not set | ||
| 236 | # CONFIG_WIRELESS_EXT is not set | ||
| 202 | # CONFIG_IEEE80211 is not set | 237 | # CONFIG_IEEE80211 is not set |
| 238 | # CONFIG_RFKILL is not set | ||
| 203 | 239 | ||
| 204 | # | 240 | # |
| 205 | # Device Drivers | 241 | # Device Drivers |
| @@ -208,39 +244,24 @@ CONFIG_IPV6=y | |||
| 208 | # | 244 | # |
| 209 | # Generic Driver Options | 245 | # Generic Driver Options |
| 210 | # | 246 | # |
| 247 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 211 | CONFIG_STANDALONE=y | 248 | CONFIG_STANDALONE=y |
| 212 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 249 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
| 213 | # CONFIG_FW_LOADER is not set | 250 | # CONFIG_FW_LOADER is not set |
| 214 | # CONFIG_DEBUG_DRIVER is not set | 251 | # CONFIG_DEBUG_DRIVER is not set |
| 215 | 252 | # CONFIG_DEBUG_DEVRES is not set | |
| 216 | # | 253 | # CONFIG_SYS_HYPERVISOR is not set |
| 217 | # Connector - unified userspace <-> kernelspace linker | ||
| 218 | # | ||
| 219 | # CONFIG_CONNECTOR is not set | 254 | # CONFIG_CONNECTOR is not set |
| 220 | |||
| 221 | # | ||
| 222 | # Memory Technology Devices (MTD) | ||
| 223 | # | ||
| 224 | # CONFIG_MTD is not set | 255 | # CONFIG_MTD is not set |
| 225 | |||
| 226 | # | ||
| 227 | # Parallel port support | ||
| 228 | # | ||
| 229 | CONFIG_PARPORT=y | 256 | CONFIG_PARPORT=y |
| 230 | CONFIG_PARPORT_PC=y | 257 | CONFIG_PARPORT_PC=y |
| 231 | # CONFIG_PARPORT_SERIAL is not set | 258 | # CONFIG_PARPORT_SERIAL is not set |
| 232 | CONFIG_PARPORT_NOT_PC=y | ||
| 233 | CONFIG_PARPORT_GSC=y | 259 | CONFIG_PARPORT_GSC=y |
| 260 | # CONFIG_PARPORT_AX88796 is not set | ||
| 234 | # CONFIG_PARPORT_1284 is not set | 261 | # CONFIG_PARPORT_1284 is not set |
| 235 | 262 | CONFIG_PARPORT_NOT_PC=y | |
| 236 | # | ||
| 237 | # Plug and Play support | ||
| 238 | # | ||
| 239 | # CONFIG_PNP is not set | 263 | # CONFIG_PNP is not set |
| 240 | 264 | CONFIG_BLK_DEV=y | |
| 241 | # | ||
| 242 | # Block devices | ||
| 243 | # | ||
| 244 | # CONFIG_PARIDE is not set | 265 | # CONFIG_PARIDE is not set |
| 245 | # CONFIG_BLK_CPQ_DA is not set | 266 | # CONFIG_BLK_CPQ_DA is not set |
| 246 | # CONFIG_BLK_CPQ_CISS_DA is not set | 267 | # CONFIG_BLK_CPQ_CISS_DA is not set |
| @@ -251,15 +272,13 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y | |||
| 251 | # CONFIG_BLK_DEV_NBD is not set | 272 | # CONFIG_BLK_DEV_NBD is not set |
| 252 | # CONFIG_BLK_DEV_SX8 is not set | 273 | # CONFIG_BLK_DEV_SX8 is not set |
| 253 | # CONFIG_BLK_DEV_RAM is not set | 274 | # CONFIG_BLK_DEV_RAM is not set |
| 254 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 255 | CONFIG_CDROM_PKTCDVD=m | 275 | CONFIG_CDROM_PKTCDVD=m |
| 256 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | 276 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 |
| 257 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
| 258 | CONFIG_ATA_OVER_ETH=y | 277 | CONFIG_ATA_OVER_ETH=y |
| 259 | 278 | CONFIG_MISC_DEVICES=y | |
| 260 | # | 279 | # CONFIG_PHANTOM is not set |
| 261 | # ATA/ATAPI/MFM/RLL support | 280 | # CONFIG_EEPROM_93CX6 is not set |
| 262 | # | 281 | # CONFIG_SGI_IOC4 is not set |
| 263 | # CONFIG_IDE is not set | 282 | # CONFIG_IDE is not set |
| 264 | 283 | ||
| 265 | # | 284 | # |
| @@ -267,6 +286,8 @@ CONFIG_ATA_OVER_ETH=y | |||
| 267 | # | 286 | # |
| 268 | # CONFIG_RAID_ATTRS is not set | 287 | # CONFIG_RAID_ATTRS is not set |
| 269 | CONFIG_SCSI=y | 288 | CONFIG_SCSI=y |
| 289 | CONFIG_SCSI_DMA=y | ||
| 290 | # CONFIG_SCSI_NETLINK is not set | ||
| 270 | CONFIG_SCSI_PROC_FS=y | 291 | CONFIG_SCSI_PROC_FS=y |
| 271 | 292 | ||
| 272 | # | 293 | # |
| @@ -286,18 +307,17 @@ CONFIG_CHR_DEV_SG=y | |||
| 286 | # CONFIG_SCSI_MULTI_LUN is not set | 307 | # CONFIG_SCSI_MULTI_LUN is not set |
| 287 | # CONFIG_SCSI_CONSTANTS is not set | 308 | # CONFIG_SCSI_CONSTANTS is not set |
| 288 | # CONFIG_SCSI_LOGGING is not set | 309 | # CONFIG_SCSI_LOGGING is not set |
| 310 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 311 | CONFIG_SCSI_WAIT_SCAN=m | ||
| 289 | 312 | ||
| 290 | # | 313 | # |
| 291 | # SCSI Transport Attributes | 314 | # SCSI Transports |
| 292 | # | 315 | # |
| 293 | CONFIG_SCSI_SPI_ATTRS=y | 316 | CONFIG_SCSI_SPI_ATTRS=y |
| 294 | # CONFIG_SCSI_FC_ATTRS is not set | 317 | # CONFIG_SCSI_FC_ATTRS is not set |
| 295 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 318 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
| 296 | # CONFIG_SCSI_SAS_ATTRS is not set | 319 | # CONFIG_SCSI_SAS_LIBSAS is not set |
| 297 | 320 | CONFIG_SCSI_LOWLEVEL=y | |
| 298 | # | ||
| 299 | # SCSI low-level drivers | ||
| 300 | # | ||
| 301 | # CONFIG_ISCSI_TCP is not set | 321 | # CONFIG_ISCSI_TCP is not set |
| 302 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 322 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
| 303 | # CONFIG_SCSI_3W_9XXX is not set | 323 | # CONFIG_SCSI_3W_9XXX is not set |
| @@ -308,12 +328,14 @@ CONFIG_SCSI_SPI_ATTRS=y | |||
| 308 | # CONFIG_SCSI_AIC7XXX is not set | 328 | # CONFIG_SCSI_AIC7XXX is not set |
| 309 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 329 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
| 310 | # CONFIG_SCSI_AIC79XX is not set | 330 | # CONFIG_SCSI_AIC79XX is not set |
| 331 | # CONFIG_SCSI_AIC94XX is not set | ||
| 311 | # CONFIG_SCSI_DPT_I2O is not set | 332 | # CONFIG_SCSI_DPT_I2O is not set |
| 312 | # CONFIG_SCSI_IN2000 is not set | 333 | # CONFIG_SCSI_IN2000 is not set |
| 334 | # CONFIG_SCSI_ARCMSR is not set | ||
| 313 | # CONFIG_MEGARAID_NEWGEN is not set | 335 | # CONFIG_MEGARAID_NEWGEN is not set |
| 314 | # CONFIG_MEGARAID_LEGACY is not set | 336 | # CONFIG_MEGARAID_LEGACY is not set |
| 315 | # CONFIG_MEGARAID_SAS is not set | 337 | # CONFIG_MEGARAID_SAS is not set |
| 316 | # CONFIG_SCSI_SATA is not set | 338 | # CONFIG_SCSI_HPTIOP is not set |
| 317 | # CONFIG_SCSI_DMX3191D is not set | 339 | # CONFIG_SCSI_DMX3191D is not set |
| 318 | # CONFIG_SCSI_DTC3280 is not set | 340 | # CONFIG_SCSI_DTC3280 is not set |
| 319 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 341 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
| @@ -327,23 +349,22 @@ CONFIG_SCSI_SPI_ATTRS=y | |||
| 327 | # CONFIG_SCSI_NCR53C406A is not set | 349 | # CONFIG_SCSI_NCR53C406A is not set |
| 328 | CONFIG_SCSI_LASI700=y | 350 | CONFIG_SCSI_LASI700=y |
| 329 | CONFIG_53C700_LE_ON_BE=y | 351 | CONFIG_53C700_LE_ON_BE=y |
| 352 | # CONFIG_SCSI_STEX is not set | ||
| 330 | CONFIG_SCSI_SYM53C8XX_2=y | 353 | CONFIG_SCSI_SYM53C8XX_2=y |
| 331 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 | 354 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 |
| 332 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 355 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
| 333 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 356 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
| 334 | CONFIG_SCSI_SYM53C8XX_MMIO=y | 357 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
| 335 | # CONFIG_SCSI_IPR is not set | ||
| 336 | CONFIG_SCSI_ZALON=y | 358 | CONFIG_SCSI_ZALON=y |
| 337 | CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 | 359 | CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 |
| 338 | CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 | 360 | CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 |
| 339 | CONFIG_SCSI_NCR53C8XX_SYNC=40 | 361 | CONFIG_SCSI_NCR53C8XX_SYNC=40 |
| 340 | # CONFIG_SCSI_NCR53C8XX_PROFILE is not set | ||
| 341 | # CONFIG_SCSI_PAS16 is not set | 362 | # CONFIG_SCSI_PAS16 is not set |
| 342 | # CONFIG_SCSI_PSI240I is not set | 363 | # CONFIG_SCSI_PSI240I is not set |
| 343 | # CONFIG_SCSI_QLOGIC_FAS is not set | 364 | # CONFIG_SCSI_QLOGIC_FAS is not set |
| 344 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
| 345 | # CONFIG_SCSI_QLOGIC_1280 is not set | 365 | # CONFIG_SCSI_QLOGIC_1280 is not set |
| 346 | # CONFIG_SCSI_QLA_FC is not set | 366 | # CONFIG_SCSI_QLA_FC is not set |
| 367 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
| 347 | # CONFIG_SCSI_LPFC is not set | 368 | # CONFIG_SCSI_LPFC is not set |
| 348 | # CONFIG_SCSI_SIM710 is not set | 369 | # CONFIG_SCSI_SIM710 is not set |
| 349 | # CONFIG_SCSI_SYM53C416 is not set | 370 | # CONFIG_SCSI_SYM53C416 is not set |
| @@ -351,22 +372,14 @@ CONFIG_SCSI_NCR53C8XX_SYNC=40 | |||
| 351 | # CONFIG_SCSI_T128 is not set | 372 | # CONFIG_SCSI_T128 is not set |
| 352 | # CONFIG_SCSI_NSP32 is not set | 373 | # CONFIG_SCSI_NSP32 is not set |
| 353 | # CONFIG_SCSI_DEBUG is not set | 374 | # CONFIG_SCSI_DEBUG is not set |
| 354 | 375 | # CONFIG_SCSI_SRP is not set | |
| 355 | # | 376 | # CONFIG_ATA is not set |
| 356 | # Old CD-ROM drivers (not SCSI, not IDE) | ||
| 357 | # | ||
| 358 | # CONFIG_CD_NO_IDESCSI is not set | ||
| 359 | |||
| 360 | # | ||
| 361 | # Multi-device support (RAID and LVM) | ||
| 362 | # | ||
| 363 | CONFIG_MD=y | 377 | CONFIG_MD=y |
| 364 | CONFIG_BLK_DEV_MD=y | 378 | CONFIG_BLK_DEV_MD=y |
| 365 | CONFIG_MD_LINEAR=y | 379 | CONFIG_MD_LINEAR=y |
| 366 | CONFIG_MD_RAID0=y | 380 | CONFIG_MD_RAID0=y |
| 367 | CONFIG_MD_RAID1=y | 381 | CONFIG_MD_RAID1=y |
| 368 | CONFIG_MD_RAID5=y | 382 | # CONFIG_MD_RAID456 is not set |
| 369 | CONFIG_MD_RAID6=y | ||
| 370 | # CONFIG_MD_MULTIPATH is not set | 383 | # CONFIG_MD_MULTIPATH is not set |
| 371 | # CONFIG_MD_FAULTY is not set | 384 | # CONFIG_MD_FAULTY is not set |
| 372 | # CONFIG_BLK_DEV_DM is not set | 385 | # CONFIG_BLK_DEV_DM is not set |
| @@ -382,35 +395,21 @@ CONFIG_MD_RAID6=y | |||
| 382 | # | 395 | # |
| 383 | # IEEE 1394 (FireWire) support | 396 | # IEEE 1394 (FireWire) support |
| 384 | # | 397 | # |
| 385 | # CONFIG_IEEE1394 is not set | ||
| 386 | 398 | ||
| 387 | # | 399 | # |
| 388 | # I2O device support | 400 | # An alternative FireWire stack is available with EXPERIMENTAL=y |
| 389 | # | 401 | # |
| 402 | # CONFIG_IEEE1394 is not set | ||
| 390 | # CONFIG_I2O is not set | 403 | # CONFIG_I2O is not set |
| 391 | |||
| 392 | # | ||
| 393 | # Network device support | ||
| 394 | # | ||
| 395 | CONFIG_NETDEVICES=y | 404 | CONFIG_NETDEVICES=y |
| 405 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
| 396 | # CONFIG_DUMMY is not set | 406 | # CONFIG_DUMMY is not set |
| 397 | # CONFIG_BONDING is not set | 407 | # CONFIG_BONDING is not set |
| 398 | # CONFIG_EQUALIZER is not set | 408 | # CONFIG_EQUALIZER is not set |
| 399 | # CONFIG_TUN is not set | 409 | # CONFIG_TUN is not set |
| 400 | 410 | # CONFIG_VETH is not set | |
| 401 | # | ||
| 402 | # ARCnet devices | ||
| 403 | # | ||
| 404 | # CONFIG_ARCNET is not set | 411 | # CONFIG_ARCNET is not set |
| 405 | |||
| 406 | # | ||
| 407 | # PHY device support | ||
| 408 | # | ||
| 409 | # CONFIG_PHYLIB is not set | 412 | # CONFIG_PHYLIB is not set |
| 410 | |||
| 411 | # | ||
| 412 | # Ethernet (10 or 100Mbit) | ||
| 413 | # | ||
| 414 | CONFIG_NET_ETHERNET=y | 413 | CONFIG_NET_ETHERNET=y |
| 415 | # CONFIG_MII is not set | 414 | # CONFIG_MII is not set |
| 416 | CONFIG_LASI_82596=y | 415 | CONFIG_LASI_82596=y |
| @@ -420,10 +419,6 @@ CONFIG_LASI_82596=y | |||
| 420 | # CONFIG_NET_VENDOR_3COM is not set | 419 | # CONFIG_NET_VENDOR_3COM is not set |
| 421 | # CONFIG_NET_VENDOR_SMC is not set | 420 | # CONFIG_NET_VENDOR_SMC is not set |
| 422 | # CONFIG_NET_VENDOR_RACAL is not set | 421 | # CONFIG_NET_VENDOR_RACAL is not set |
| 423 | |||
| 424 | # | ||
| 425 | # Tulip family network device support | ||
| 426 | # | ||
| 427 | CONFIG_NET_TULIP=y | 422 | CONFIG_NET_TULIP=y |
| 428 | CONFIG_TULIP=y | 423 | CONFIG_TULIP=y |
| 429 | # CONFIG_TULIP_MMIO is not set | 424 | # CONFIG_TULIP_MMIO is not set |
| @@ -435,62 +430,47 @@ CONFIG_TULIP=y | |||
| 435 | # CONFIG_DEPCA is not set | 430 | # CONFIG_DEPCA is not set |
| 436 | # CONFIG_HP100 is not set | 431 | # CONFIG_HP100 is not set |
| 437 | # CONFIG_NET_ISA is not set | 432 | # CONFIG_NET_ISA is not set |
| 433 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
| 434 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 435 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 436 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 438 | # CONFIG_NET_PCI is not set | 437 | # CONFIG_NET_PCI is not set |
| 438 | # CONFIG_B44 is not set | ||
| 439 | # CONFIG_NET_POCKET is not set | 439 | # CONFIG_NET_POCKET is not set |
| 440 | 440 | CONFIG_NETDEV_1000=y | |
| 441 | # | ||
| 442 | # Ethernet (1000 Mbit) | ||
| 443 | # | ||
| 444 | # CONFIG_ACENIC is not set | 441 | # CONFIG_ACENIC is not set |
| 445 | # CONFIG_DL2K is not set | 442 | # CONFIG_DL2K is not set |
| 446 | # CONFIG_E1000 is not set | 443 | # CONFIG_E1000 is not set |
| 444 | # CONFIG_E1000E is not set | ||
| 447 | # CONFIG_NS83820 is not set | 445 | # CONFIG_NS83820 is not set |
| 448 | # CONFIG_HAMACHI is not set | 446 | # CONFIG_HAMACHI is not set |
| 449 | # CONFIG_R8169 is not set | 447 | # CONFIG_R8169 is not set |
| 450 | # CONFIG_SIS190 is not set | 448 | # CONFIG_SIS190 is not set |
| 449 | # CONFIG_SKGE is not set | ||
| 450 | # CONFIG_SKY2 is not set | ||
| 451 | # CONFIG_SK98LIN is not set | 451 | # CONFIG_SK98LIN is not set |
| 452 | # CONFIG_VIA_VELOCITY is not set | ||
| 452 | # CONFIG_TIGON3 is not set | 453 | # CONFIG_TIGON3 is not set |
| 453 | # CONFIG_BNX2 is not set | 454 | # CONFIG_BNX2 is not set |
| 454 | 455 | # CONFIG_QLA3XXX is not set | |
| 455 | # | 456 | CONFIG_NETDEV_10000=y |
| 456 | # Ethernet (10000 Mbit) | ||
| 457 | # | ||
| 458 | # CONFIG_CHELSIO_T1 is not set | 457 | # CONFIG_CHELSIO_T1 is not set |
| 458 | # CONFIG_CHELSIO_T3 is not set | ||
| 459 | # CONFIG_IXGBE is not set | ||
| 459 | # CONFIG_IXGB is not set | 460 | # CONFIG_IXGB is not set |
| 460 | # CONFIG_S2IO is not set | 461 | # CONFIG_S2IO is not set |
| 461 | 462 | # CONFIG_MYRI10GE is not set | |
| 462 | # | 463 | # CONFIG_NETXEN_NIC is not set |
| 463 | # Token Ring devices | 464 | # CONFIG_NIU is not set |
| 464 | # | 465 | # CONFIG_MLX4_CORE is not set |
| 466 | # CONFIG_TEHUTI is not set | ||
| 465 | # CONFIG_TR is not set | 467 | # CONFIG_TR is not set |
| 466 | 468 | ||
| 467 | # | 469 | # |
| 468 | # Wireless LAN (non-hamradio) | 470 | # Wireless LAN |
| 469 | # | ||
| 470 | CONFIG_NET_RADIO=y | ||
| 471 | |||
| 472 | # | ||
| 473 | # Obsolete Wireless cards support (pre-802.11) | ||
| 474 | # | ||
| 475 | # CONFIG_STRIP is not set | ||
| 476 | # CONFIG_ARLAN is not set | ||
| 477 | # CONFIG_WAVELAN is not set | ||
| 478 | |||
| 479 | # | ||
| 480 | # Wireless 802.11b ISA/PCI cards support | ||
| 481 | # | ||
| 482 | # CONFIG_HERMES is not set | ||
| 483 | # CONFIG_ATMEL is not set | ||
| 484 | |||
| 485 | # | ||
| 486 | # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support | ||
| 487 | # | ||
| 488 | # CONFIG_HOSTAP is not set | ||
| 489 | CONFIG_NET_WIRELESS=y | ||
| 490 | |||
| 491 | # | ||
| 492 | # Wan interfaces | ||
| 493 | # | 471 | # |
| 472 | # CONFIG_WLAN_PRE80211 is not set | ||
| 473 | # CONFIG_WLAN_80211 is not set | ||
| 494 | # CONFIG_WAN is not set | 474 | # CONFIG_WAN is not set |
| 495 | # CONFIG_FDDI is not set | 475 | # CONFIG_FDDI is not set |
| 496 | # CONFIG_PLIP is not set | 476 | # CONFIG_PLIP is not set |
| @@ -501,24 +481,19 @@ CONFIG_PPP=y | |||
| 501 | # CONFIG_PPP_DEFLATE is not set | 481 | # CONFIG_PPP_DEFLATE is not set |
| 502 | # CONFIG_PPP_BSDCOMP is not set | 482 | # CONFIG_PPP_BSDCOMP is not set |
| 503 | # CONFIG_SLIP is not set | 483 | # CONFIG_SLIP is not set |
| 484 | CONFIG_SLHC=y | ||
| 504 | # CONFIG_NET_FC is not set | 485 | # CONFIG_NET_FC is not set |
| 505 | # CONFIG_NETPOLL is not set | 486 | # CONFIG_NETPOLL is not set |
| 506 | # CONFIG_NET_POLL_CONTROLLER is not set | 487 | # CONFIG_NET_POLL_CONTROLLER is not set |
| 507 | |||
| 508 | # | ||
| 509 | # ISDN subsystem | ||
| 510 | # | ||
| 511 | # CONFIG_ISDN is not set | 488 | # CONFIG_ISDN is not set |
| 512 | |||
| 513 | # | ||
| 514 | # Telephony Support | ||
| 515 | # | ||
| 516 | # CONFIG_PHONE is not set | 489 | # CONFIG_PHONE is not set |
| 517 | 490 | ||
| 518 | # | 491 | # |
| 519 | # Input device support | 492 | # Input device support |
| 520 | # | 493 | # |
| 521 | CONFIG_INPUT=y | 494 | CONFIG_INPUT=y |
| 495 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
| 496 | # CONFIG_INPUT_POLLDEV is not set | ||
| 522 | 497 | ||
| 523 | # | 498 | # |
| 524 | # Userland interfaces | 499 | # Userland interfaces |
| @@ -543,19 +518,31 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y | |||
| 543 | # CONFIG_KEYBOARD_LKKBD is not set | 518 | # CONFIG_KEYBOARD_LKKBD is not set |
| 544 | # CONFIG_KEYBOARD_XTKBD is not set | 519 | # CONFIG_KEYBOARD_XTKBD is not set |
| 545 | # CONFIG_KEYBOARD_NEWTON is not set | 520 | # CONFIG_KEYBOARD_NEWTON is not set |
| 521 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
| 546 | # CONFIG_KEYBOARD_HIL_OLD is not set | 522 | # CONFIG_KEYBOARD_HIL_OLD is not set |
| 547 | CONFIG_KEYBOARD_HIL=y | 523 | CONFIG_KEYBOARD_HIL=y |
| 548 | CONFIG_INPUT_MOUSE=y | 524 | CONFIG_INPUT_MOUSE=y |
| 549 | CONFIG_MOUSE_PS2=y | 525 | CONFIG_MOUSE_PS2=y |
| 526 | CONFIG_MOUSE_PS2_ALPS=y | ||
| 527 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
| 528 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
| 529 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
| 530 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
| 531 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
| 550 | # CONFIG_MOUSE_SERIAL is not set | 532 | # CONFIG_MOUSE_SERIAL is not set |
| 533 | # CONFIG_MOUSE_APPLETOUCH is not set | ||
| 551 | # CONFIG_MOUSE_INPORT is not set | 534 | # CONFIG_MOUSE_INPORT is not set |
| 552 | # CONFIG_MOUSE_LOGIBM is not set | 535 | # CONFIG_MOUSE_LOGIBM is not set |
| 553 | # CONFIG_MOUSE_PC110PAD is not set | 536 | # CONFIG_MOUSE_PC110PAD is not set |
| 554 | # CONFIG_MOUSE_VSXXXAA is not set | 537 | # CONFIG_MOUSE_VSXXXAA is not set |
| 555 | CONFIG_MOUSE_HIL=y | 538 | CONFIG_MOUSE_HIL=y |
| 556 | # CONFIG_INPUT_JOYSTICK is not set | 539 | # CONFIG_INPUT_JOYSTICK is not set |
| 540 | # CONFIG_INPUT_TABLET is not set | ||
| 557 | # CONFIG_INPUT_TOUCHSCREEN is not set | 541 | # CONFIG_INPUT_TOUCHSCREEN is not set |
| 558 | CONFIG_INPUT_MISC=y | 542 | CONFIG_INPUT_MISC=y |
| 543 | # CONFIG_INPUT_ATI_REMOTE is not set | ||
| 544 | # CONFIG_INPUT_ATI_REMOTE2 is not set | ||
| 545 | # CONFIG_INPUT_POWERMATE is not set | ||
| 559 | # CONFIG_INPUT_UINPUT is not set | 546 | # CONFIG_INPUT_UINPUT is not set |
| 560 | # CONFIG_HP_SDC_RTC is not set | 547 | # CONFIG_HP_SDC_RTC is not set |
| 561 | 548 | ||
| @@ -579,6 +566,7 @@ CONFIG_SERIO_LIBPS2=y | |||
| 579 | CONFIG_VT=y | 566 | CONFIG_VT=y |
| 580 | CONFIG_VT_CONSOLE=y | 567 | CONFIG_VT_CONSOLE=y |
| 581 | CONFIG_HW_CONSOLE=y | 568 | CONFIG_HW_CONSOLE=y |
| 569 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 582 | # CONFIG_SERIAL_NONSTANDARD is not set | 570 | # CONFIG_SERIAL_NONSTANDARD is not set |
| 583 | 571 | ||
| 584 | # | 572 | # |
| @@ -586,17 +574,20 @@ CONFIG_HW_CONSOLE=y | |||
| 586 | # | 574 | # |
| 587 | CONFIG_SERIAL_8250=y | 575 | CONFIG_SERIAL_8250=y |
| 588 | CONFIG_SERIAL_8250_CONSOLE=y | 576 | CONFIG_SERIAL_8250_CONSOLE=y |
| 577 | CONFIG_SERIAL_8250_GSC=y | ||
| 578 | CONFIG_SERIAL_8250_PCI=y | ||
| 589 | CONFIG_SERIAL_8250_NR_UARTS=13 | 579 | CONFIG_SERIAL_8250_NR_UARTS=13 |
| 590 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 580 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
| 591 | CONFIG_SERIAL_8250_EXTENDED=y | 581 | CONFIG_SERIAL_8250_EXTENDED=y |
| 592 | CONFIG_SERIAL_8250_MANY_PORTS=y | 582 | CONFIG_SERIAL_8250_MANY_PORTS=y |
| 593 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
| 594 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | ||
| 595 | # CONFIG_SERIAL_8250_RSA is not set | ||
| 596 | # CONFIG_SERIAL_8250_FOURPORT is not set | 583 | # CONFIG_SERIAL_8250_FOURPORT is not set |
| 597 | # CONFIG_SERIAL_8250_ACCENT is not set | 584 | # CONFIG_SERIAL_8250_ACCENT is not set |
| 598 | # CONFIG_SERIAL_8250_BOCA is not set | 585 | # CONFIG_SERIAL_8250_BOCA is not set |
| 586 | # CONFIG_SERIAL_8250_EXAR_ST16C554 is not set | ||
| 599 | # CONFIG_SERIAL_8250_HUB6 is not set | 587 | # CONFIG_SERIAL_8250_HUB6 is not set |
| 588 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
| 589 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | ||
| 590 | # CONFIG_SERIAL_8250_RSA is not set | ||
| 600 | 591 | ||
| 601 | # | 592 | # |
| 602 | # Non-8250 serial port support | 593 | # Non-8250 serial port support |
| @@ -605,6 +596,7 @@ CONFIG_SERIAL_MUX=y | |||
| 605 | CONFIG_SERIAL_MUX_CONSOLE=y | 596 | CONFIG_SERIAL_MUX_CONSOLE=y |
| 606 | CONFIG_SERIAL_CORE=y | 597 | CONFIG_SERIAL_CORE=y |
| 607 | CONFIG_SERIAL_CORE_CONSOLE=y | 598 | CONFIG_SERIAL_CORE_CONSOLE=y |
| 599 | # CONFIG_SERIAL_JSM is not set | ||
| 608 | CONFIG_UNIX98_PTYS=y | 600 | CONFIG_UNIX98_PTYS=y |
| 609 | CONFIG_LEGACY_PTYS=y | 601 | CONFIG_LEGACY_PTYS=y |
| 610 | CONFIG_LEGACY_PTY_COUNT=256 | 602 | CONFIG_LEGACY_PTY_COUNT=256 |
| @@ -612,35 +604,18 @@ CONFIG_PRINTER=y | |||
| 612 | # CONFIG_LP_CONSOLE is not set | 604 | # CONFIG_LP_CONSOLE is not set |
| 613 | # CONFIG_PPDEV is not set | 605 | # CONFIG_PPDEV is not set |
| 614 | # CONFIG_TIPAR is not set | 606 | # CONFIG_TIPAR is not set |
| 615 | |||
| 616 | # | ||
| 617 | # IPMI | ||
| 618 | # | ||
| 619 | # CONFIG_IPMI_HANDLER is not set | 607 | # CONFIG_IPMI_HANDLER is not set |
| 620 | |||
| 621 | # | ||
| 622 | # Watchdog Cards | ||
| 623 | # | ||
| 624 | # CONFIG_WATCHDOG is not set | 608 | # CONFIG_WATCHDOG is not set |
| 609 | # CONFIG_HW_RANDOM is not set | ||
| 625 | CONFIG_GEN_RTC=y | 610 | CONFIG_GEN_RTC=y |
| 626 | # CONFIG_GEN_RTC_X is not set | 611 | # CONFIG_GEN_RTC_X is not set |
| 627 | # CONFIG_DTLK is not set | 612 | # CONFIG_DTLK is not set |
| 628 | # CONFIG_R3964 is not set | 613 | # CONFIG_R3964 is not set |
| 629 | # CONFIG_APPLICOM is not set | 614 | # CONFIG_APPLICOM is not set |
| 630 | 615 | # CONFIG_AGP is not set | |
| 631 | # | ||
| 632 | # Ftape, the floppy tape device driver | ||
| 633 | # | ||
| 634 | # CONFIG_DRM is not set | 616 | # CONFIG_DRM is not set |
| 635 | # CONFIG_RAW_DRIVER is not set | 617 | # CONFIG_RAW_DRIVER is not set |
| 636 | 618 | CONFIG_DEVPORT=y | |
| 637 | # | ||
| 638 | # TPM devices | ||
| 639 | # | ||
| 640 | |||
| 641 | # | ||
| 642 | # I2C support | ||
| 643 | # | ||
| 644 | # CONFIG_I2C is not set | 619 | # CONFIG_I2C is not set |
| 645 | 620 | ||
| 646 | # | 621 | # |
| @@ -648,46 +623,59 @@ CONFIG_GEN_RTC=y | |||
| 648 | # | 623 | # |
| 649 | # CONFIG_SPI is not set | 624 | # CONFIG_SPI is not set |
| 650 | # CONFIG_SPI_MASTER is not set | 625 | # CONFIG_SPI_MASTER is not set |
| 651 | |||
| 652 | # | ||
| 653 | # Dallas's 1-wire bus | ||
| 654 | # | ||
| 655 | # CONFIG_W1 is not set | 626 | # CONFIG_W1 is not set |
| 656 | 627 | # CONFIG_POWER_SUPPLY is not set | |
| 657 | # | ||
| 658 | # Hardware Monitoring support | ||
| 659 | # | ||
| 660 | # CONFIG_HWMON is not set | 628 | # CONFIG_HWMON is not set |
| 661 | # CONFIG_HWMON_VID is not set | ||
| 662 | 629 | ||
| 663 | # | 630 | # |
| 664 | # Misc devices | 631 | # Sonics Silicon Backplane |
| 665 | # | 632 | # |
| 633 | CONFIG_SSB_POSSIBLE=y | ||
| 634 | # CONFIG_SSB is not set | ||
| 666 | 635 | ||
| 667 | # | 636 | # |
| 668 | # Multimedia Capabilities Port drivers | 637 | # Multifunction device drivers |
| 669 | # | 638 | # |
| 639 | # CONFIG_MFD_SM501 is not set | ||
| 670 | 640 | ||
| 671 | # | 641 | # |
| 672 | # Multimedia devices | 642 | # Multimedia devices |
| 673 | # | 643 | # |
| 674 | # CONFIG_VIDEO_DEV is not set | 644 | # CONFIG_VIDEO_DEV is not set |
| 645 | # CONFIG_DVB_CORE is not set | ||
| 646 | # CONFIG_DAB is not set | ||
| 675 | 647 | ||
| 676 | # | 648 | # |
| 677 | # Digital Video Broadcasting Devices | 649 | # Graphics support |
| 678 | # | 650 | # |
| 679 | # CONFIG_DVB is not set | 651 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
| 680 | 652 | ||
| 681 | # | 653 | # |
| 682 | # Graphics support | 654 | # Display device support |
| 683 | # | 655 | # |
| 656 | # CONFIG_DISPLAY_SUPPORT is not set | ||
| 657 | # CONFIG_VGASTATE is not set | ||
| 658 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
| 684 | CONFIG_FB=y | 659 | CONFIG_FB=y |
| 660 | # CONFIG_FIRMWARE_EDID is not set | ||
| 661 | # CONFIG_FB_DDC is not set | ||
| 685 | CONFIG_FB_CFB_FILLRECT=y | 662 | CONFIG_FB_CFB_FILLRECT=y |
| 686 | CONFIG_FB_CFB_COPYAREA=y | 663 | CONFIG_FB_CFB_COPYAREA=y |
| 687 | CONFIG_FB_CFB_IMAGEBLIT=y | 664 | CONFIG_FB_CFB_IMAGEBLIT=y |
| 665 | # CONFIG_FB_SYS_FILLRECT is not set | ||
| 666 | # CONFIG_FB_SYS_COPYAREA is not set | ||
| 667 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
| 668 | # CONFIG_FB_SYS_FOPS is not set | ||
| 669 | CONFIG_FB_DEFERRED_IO=y | ||
| 670 | # CONFIG_FB_SVGALIB is not set | ||
| 688 | # CONFIG_FB_MACMODES is not set | 671 | # CONFIG_FB_MACMODES is not set |
| 672 | # CONFIG_FB_BACKLIGHT is not set | ||
| 689 | # CONFIG_FB_MODE_HELPERS is not set | 673 | # CONFIG_FB_MODE_HELPERS is not set |
| 690 | # CONFIG_FB_TILEBLITTING is not set | 674 | # CONFIG_FB_TILEBLITTING is not set |
| 675 | |||
| 676 | # | ||
| 677 | # Frame buffer hardware drivers | ||
| 678 | # | ||
| 691 | # CONFIG_FB_CIRRUS is not set | 679 | # CONFIG_FB_CIRRUS is not set |
| 692 | # CONFIG_FB_PM2 is not set | 680 | # CONFIG_FB_PM2 is not set |
| 693 | # CONFIG_FB_CYBER2000 is not set | 681 | # CONFIG_FB_CYBER2000 is not set |
| @@ -698,16 +686,18 @@ CONFIG_FB_STI=y | |||
| 698 | # CONFIG_FB_NVIDIA is not set | 686 | # CONFIG_FB_NVIDIA is not set |
| 699 | # CONFIG_FB_RIVA is not set | 687 | # CONFIG_FB_RIVA is not set |
| 700 | # CONFIG_FB_MATROX is not set | 688 | # CONFIG_FB_MATROX is not set |
| 701 | # CONFIG_FB_RADEON_OLD is not set | ||
| 702 | # CONFIG_FB_RADEON is not set | 689 | # CONFIG_FB_RADEON is not set |
| 703 | # CONFIG_FB_ATY128 is not set | 690 | # CONFIG_FB_ATY128 is not set |
| 704 | # CONFIG_FB_ATY is not set | 691 | # CONFIG_FB_ATY is not set |
| 692 | # CONFIG_FB_S3 is not set | ||
| 705 | # CONFIG_FB_SIS is not set | 693 | # CONFIG_FB_SIS is not set |
| 706 | # CONFIG_FB_NEOMAGIC is not set | 694 | # CONFIG_FB_NEOMAGIC is not set |
| 707 | # CONFIG_FB_KYRO is not set | 695 | # CONFIG_FB_KYRO is not set |
| 708 | # CONFIG_FB_3DFX is not set | 696 | # CONFIG_FB_3DFX is not set |
| 709 | # CONFIG_FB_VOODOO1 is not set | 697 | # CONFIG_FB_VOODOO1 is not set |
| 698 | # CONFIG_FB_VT8623 is not set | ||
| 710 | # CONFIG_FB_TRIDENT is not set | 699 | # CONFIG_FB_TRIDENT is not set |
| 700 | # CONFIG_FB_ARK is not set | ||
| 711 | # CONFIG_FB_VIRTUAL is not set | 701 | # CONFIG_FB_VIRTUAL is not set |
| 712 | 702 | ||
| 713 | # | 703 | # |
| @@ -717,21 +707,17 @@ CONFIG_DUMMY_CONSOLE=y | |||
| 717 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 | 707 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 |
| 718 | CONFIG_DUMMY_CONSOLE_ROWS=64 | 708 | CONFIG_DUMMY_CONSOLE_ROWS=64 |
| 719 | CONFIG_FRAMEBUFFER_CONSOLE=y | 709 | CONFIG_FRAMEBUFFER_CONSOLE=y |
| 710 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
| 720 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 711 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
| 721 | CONFIG_STI_CONSOLE=y | 712 | CONFIG_STI_CONSOLE=y |
| 722 | # CONFIG_FONTS is not set | 713 | # CONFIG_FONTS is not set |
| 723 | CONFIG_FONT_8x8=y | 714 | CONFIG_FONT_8x8=y |
| 724 | CONFIG_FONT_8x16=y | 715 | CONFIG_FONT_8x16=y |
| 725 | |||
| 726 | # | ||
| 727 | # Logo configuration | ||
| 728 | # | ||
| 729 | CONFIG_LOGO=y | 716 | CONFIG_LOGO=y |
| 730 | CONFIG_LOGO_LINUX_MONO=y | 717 | CONFIG_LOGO_LINUX_MONO=y |
| 731 | CONFIG_LOGO_LINUX_VGA16=y | 718 | CONFIG_LOGO_LINUX_VGA16=y |
| 732 | CONFIG_LOGO_LINUX_CLUT224=y | 719 | CONFIG_LOGO_LINUX_CLUT224=y |
| 733 | CONFIG_LOGO_PARISC_CLUT224=y | 720 | CONFIG_LOGO_PARISC_CLUT224=y |
| 734 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 735 | 721 | ||
| 736 | # | 722 | # |
| 737 | # Sound | 723 | # Sound |
| @@ -749,8 +735,11 @@ CONFIG_SND_SEQUENCER=y | |||
| 749 | CONFIG_SND_OSSEMUL=y | 735 | CONFIG_SND_OSSEMUL=y |
| 750 | CONFIG_SND_MIXER_OSS=y | 736 | CONFIG_SND_MIXER_OSS=y |
| 751 | CONFIG_SND_PCM_OSS=y | 737 | CONFIG_SND_PCM_OSS=y |
| 738 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
| 752 | CONFIG_SND_SEQUENCER_OSS=y | 739 | CONFIG_SND_SEQUENCER_OSS=y |
| 740 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
| 753 | CONFIG_SND_SUPPORT_OLD_API=y | 741 | CONFIG_SND_SUPPORT_OLD_API=y |
| 742 | CONFIG_SND_VERBOSE_PROCFS=y | ||
| 754 | # CONFIG_SND_VERBOSE_PRINTK is not set | 743 | # CONFIG_SND_VERBOSE_PRINTK is not set |
| 755 | # CONFIG_SND_DEBUG is not set | 744 | # CONFIG_SND_DEBUG is not set |
| 756 | 745 | ||
| @@ -760,13 +749,16 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
| 760 | # CONFIG_SND_DUMMY is not set | 749 | # CONFIG_SND_DUMMY is not set |
| 761 | # CONFIG_SND_VIRMIDI is not set | 750 | # CONFIG_SND_VIRMIDI is not set |
| 762 | # CONFIG_SND_MTPAV is not set | 751 | # CONFIG_SND_MTPAV is not set |
| 752 | # CONFIG_SND_MTS64 is not set | ||
| 763 | # CONFIG_SND_SERIAL_U16550 is not set | 753 | # CONFIG_SND_SERIAL_U16550 is not set |
| 764 | # CONFIG_SND_MPU401 is not set | 754 | # CONFIG_SND_MPU401 is not set |
| 755 | # CONFIG_SND_PORTMAN2X4 is not set | ||
| 765 | 756 | ||
| 766 | # | 757 | # |
| 767 | # PCI devices | 758 | # PCI devices |
| 768 | # | 759 | # |
| 769 | # CONFIG_SND_AD1889 is not set | 760 | # CONFIG_SND_AD1889 is not set |
| 761 | # CONFIG_SND_ALS300 is not set | ||
| 770 | # CONFIG_SND_ALI5451 is not set | 762 | # CONFIG_SND_ALI5451 is not set |
| 771 | # CONFIG_SND_ATIIXP is not set | 763 | # CONFIG_SND_ATIIXP is not set |
| 772 | # CONFIG_SND_ATIIXP_MODEM is not set | 764 | # CONFIG_SND_ATIIXP_MODEM is not set |
| @@ -778,6 +770,18 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
| 778 | # CONFIG_SND_CMIPCI is not set | 770 | # CONFIG_SND_CMIPCI is not set |
| 779 | # CONFIG_SND_CS4281 is not set | 771 | # CONFIG_SND_CS4281 is not set |
| 780 | # CONFIG_SND_CS46XX is not set | 772 | # CONFIG_SND_CS46XX is not set |
| 773 | # CONFIG_SND_DARLA20 is not set | ||
| 774 | # CONFIG_SND_GINA20 is not set | ||
| 775 | # CONFIG_SND_LAYLA20 is not set | ||
| 776 | # CONFIG_SND_DARLA24 is not set | ||
| 777 | # CONFIG_SND_GINA24 is not set | ||
| 778 | # CONFIG_SND_LAYLA24 is not set | ||
| 779 | # CONFIG_SND_MONA is not set | ||
| 780 | # CONFIG_SND_MIA is not set | ||
| 781 | # CONFIG_SND_ECHO3G is not set | ||
| 782 | # CONFIG_SND_INDIGO is not set | ||
| 783 | # CONFIG_SND_INDIGOIO is not set | ||
| 784 | # CONFIG_SND_INDIGODJ is not set | ||
| 781 | # CONFIG_SND_EMU10K1 is not set | 785 | # CONFIG_SND_EMU10K1 is not set |
| 782 | # CONFIG_SND_EMU10K1X is not set | 786 | # CONFIG_SND_EMU10K1X is not set |
| 783 | # CONFIG_SND_ENS1370 is not set | 787 | # CONFIG_SND_ENS1370 is not set |
| @@ -791,11 +795,13 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
| 791 | # CONFIG_SND_ICE1712 is not set | 795 | # CONFIG_SND_ICE1712 is not set |
| 792 | # CONFIG_SND_ICE1724 is not set | 796 | # CONFIG_SND_ICE1724 is not set |
| 793 | # CONFIG_SND_INTEL8X0 is not set | 797 | # CONFIG_SND_INTEL8X0 is not set |
| 798 | # CONFIG_SND_INTEL8X0M is not set | ||
| 794 | # CONFIG_SND_KORG1212 is not set | 799 | # CONFIG_SND_KORG1212 is not set |
| 795 | # CONFIG_SND_MAESTRO3 is not set | 800 | # CONFIG_SND_MAESTRO3 is not set |
| 796 | # CONFIG_SND_MIXART is not set | 801 | # CONFIG_SND_MIXART is not set |
| 797 | # CONFIG_SND_NM256 is not set | 802 | # CONFIG_SND_NM256 is not set |
| 798 | # CONFIG_SND_PCXHR is not set | 803 | # CONFIG_SND_PCXHR is not set |
| 804 | # CONFIG_SND_RIPTIDE is not set | ||
| 799 | # CONFIG_SND_RME32 is not set | 805 | # CONFIG_SND_RME32 is not set |
| 800 | # CONFIG_SND_RME96 is not set | 806 | # CONFIG_SND_RME96 is not set |
| 801 | # CONFIG_SND_RME9652 is not set | 807 | # CONFIG_SND_RME9652 is not set |
| @@ -812,15 +818,25 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
| 812 | CONFIG_SND_HARMONY=y | 818 | CONFIG_SND_HARMONY=y |
| 813 | 819 | ||
| 814 | # | 820 | # |
| 815 | # Open Sound System | 821 | # System on Chip audio support |
| 816 | # | 822 | # |
| 817 | # CONFIG_SOUND_PRIME is not set | 823 | # CONFIG_SND_SOC is not set |
| 818 | 824 | ||
| 819 | # | 825 | # |
| 820 | # USB support | 826 | # SoC Audio support for SuperH |
| 827 | # | ||
| 828 | |||
| 829 | # | ||
| 830 | # Open Sound System | ||
| 821 | # | 831 | # |
| 832 | # CONFIG_SOUND_PRIME is not set | ||
| 833 | CONFIG_HID_SUPPORT=y | ||
| 834 | CONFIG_HID=y | ||
| 835 | CONFIG_HID_DEBUG=y | ||
| 836 | CONFIG_USB_SUPPORT=y | ||
| 822 | CONFIG_USB_ARCH_HAS_HCD=y | 837 | CONFIG_USB_ARCH_HAS_HCD=y |
| 823 | CONFIG_USB_ARCH_HAS_OHCI=y | 838 | CONFIG_USB_ARCH_HAS_OHCI=y |
| 839 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
| 824 | # CONFIG_USB is not set | 840 | # CONFIG_USB is not set |
| 825 | 841 | ||
| 826 | # | 842 | # |
| @@ -831,20 +847,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
| 831 | # USB Gadget Support | 847 | # USB Gadget Support |
| 832 | # | 848 | # |
| 833 | # CONFIG_USB_GADGET is not set | 849 | # CONFIG_USB_GADGET is not set |
| 850 | # CONFIG_MMC is not set | ||
| 851 | # CONFIG_NEW_LEDS is not set | ||
| 852 | # CONFIG_INFINIBAND is not set | ||
| 853 | # CONFIG_RTC_CLASS is not set | ||
| 834 | 854 | ||
| 835 | # | 855 | # |
| 836 | # MMC/SD Card support | 856 | # DMA Engine support |
| 837 | # | 857 | # |
| 838 | # CONFIG_MMC is not set | 858 | # CONFIG_DMA_ENGINE is not set |
| 839 | 859 | ||
| 840 | # | 860 | # |
| 841 | # InfiniBand support | 861 | # DMA Clients |
| 842 | # | 862 | # |
| 843 | # CONFIG_INFINIBAND is not set | ||
| 844 | 863 | ||
| 845 | # | 864 | # |
| 846 | # SN Devices | 865 | # DMA Devices |
| 847 | # | 866 | # |
| 867 | # CONFIG_AUXDISPLAY is not set | ||
| 868 | |||
| 869 | # | ||
| 870 | # Userspace I/O | ||
| 871 | # | ||
| 872 | # CONFIG_UIO is not set | ||
| 848 | 873 | ||
| 849 | # | 874 | # |
| 850 | # File systems | 875 | # File systems |
| @@ -860,9 +885,11 @@ CONFIG_JBD=y | |||
| 860 | # CONFIG_JFS_FS is not set | 885 | # CONFIG_JFS_FS is not set |
| 861 | # CONFIG_FS_POSIX_ACL is not set | 886 | # CONFIG_FS_POSIX_ACL is not set |
| 862 | # CONFIG_XFS_FS is not set | 887 | # CONFIG_XFS_FS is not set |
| 888 | # CONFIG_OCFS2_FS is not set | ||
| 863 | # CONFIG_MINIX_FS is not set | 889 | # CONFIG_MINIX_FS is not set |
| 864 | # CONFIG_ROMFS_FS is not set | 890 | # CONFIG_ROMFS_FS is not set |
| 865 | CONFIG_INOTIFY=y | 891 | CONFIG_INOTIFY=y |
| 892 | CONFIG_INOTIFY_USER=y | ||
| 866 | # CONFIG_QUOTA is not set | 893 | # CONFIG_QUOTA is not set |
| 867 | CONFIG_DNOTIFY=y | 894 | CONFIG_DNOTIFY=y |
| 868 | # CONFIG_AUTOFS_FS is not set | 895 | # CONFIG_AUTOFS_FS is not set |
| @@ -889,11 +916,12 @@ CONFIG_JOLIET=y | |||
| 889 | # | 916 | # |
| 890 | CONFIG_PROC_FS=y | 917 | CONFIG_PROC_FS=y |
| 891 | CONFIG_PROC_KCORE=y | 918 | CONFIG_PROC_KCORE=y |
| 919 | CONFIG_PROC_SYSCTL=y | ||
| 892 | CONFIG_SYSFS=y | 920 | CONFIG_SYSFS=y |
| 893 | CONFIG_TMPFS=y | 921 | CONFIG_TMPFS=y |
| 922 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
| 894 | # CONFIG_HUGETLB_PAGE is not set | 923 | # CONFIG_HUGETLB_PAGE is not set |
| 895 | CONFIG_RAMFS=y | 924 | CONFIG_RAMFS=y |
| 896 | # CONFIG_RELAYFS_FS is not set | ||
| 897 | 925 | ||
| 898 | # | 926 | # |
| 899 | # Miscellaneous filesystems | 927 | # Miscellaneous filesystems |
| @@ -912,6 +940,7 @@ CONFIG_RAMFS=y | |||
| 912 | CONFIG_NFS_FS=y | 940 | CONFIG_NFS_FS=y |
| 913 | CONFIG_NFS_V3=y | 941 | CONFIG_NFS_V3=y |
| 914 | # CONFIG_NFS_V3_ACL is not set | 942 | # CONFIG_NFS_V3_ACL is not set |
| 943 | # CONFIG_NFS_DIRECTIO is not set | ||
| 915 | CONFIG_NFSD=y | 944 | CONFIG_NFSD=y |
| 916 | CONFIG_NFSD_V3=y | 945 | CONFIG_NFSD_V3=y |
| 917 | # CONFIG_NFSD_V3_ACL is not set | 946 | # CONFIG_NFSD_V3_ACL is not set |
| @@ -982,22 +1011,32 @@ CONFIG_NLS_UTF8=m | |||
| 982 | # Kernel hacking | 1011 | # Kernel hacking |
| 983 | # | 1012 | # |
| 984 | # CONFIG_PRINTK_TIME is not set | 1013 | # CONFIG_PRINTK_TIME is not set |
| 1014 | CONFIG_ENABLE_MUST_CHECK=y | ||
| 985 | CONFIG_MAGIC_SYSRQ=y | 1015 | CONFIG_MAGIC_SYSRQ=y |
| 1016 | # CONFIG_UNUSED_SYMBOLS is not set | ||
| 1017 | # CONFIG_DEBUG_FS is not set | ||
| 1018 | CONFIG_HEADERS_CHECK=y | ||
| 986 | CONFIG_DEBUG_KERNEL=y | 1019 | CONFIG_DEBUG_KERNEL=y |
| 987 | CONFIG_LOG_BUF_SHIFT=16 | 1020 | # CONFIG_DEBUG_SHIRQ is not set |
| 988 | CONFIG_DETECT_SOFTLOCKUP=y | 1021 | CONFIG_DETECT_SOFTLOCKUP=y |
| 1022 | CONFIG_SCHED_DEBUG=y | ||
| 989 | # CONFIG_SCHEDSTATS is not set | 1023 | # CONFIG_SCHEDSTATS is not set |
| 1024 | # CONFIG_TIMER_STATS is not set | ||
| 990 | # CONFIG_DEBUG_SLAB is not set | 1025 | # CONFIG_DEBUG_SLAB is not set |
| 991 | # CONFIG_DEBUG_MUTEXES is not set | 1026 | # CONFIG_DEBUG_RT_MUTEXES is not set |
| 1027 | # CONFIG_RT_MUTEX_TESTER is not set | ||
| 992 | # CONFIG_DEBUG_SPINLOCK is not set | 1028 | # CONFIG_DEBUG_SPINLOCK is not set |
| 1029 | # CONFIG_DEBUG_MUTEXES is not set | ||
| 993 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1030 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 1031 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 994 | # CONFIG_DEBUG_KOBJECT is not set | 1032 | # CONFIG_DEBUG_KOBJECT is not set |
| 1033 | CONFIG_DEBUG_BUGVERBOSE=y | ||
| 995 | # CONFIG_DEBUG_INFO is not set | 1034 | # CONFIG_DEBUG_INFO is not set |
| 996 | # CONFIG_DEBUG_IOREMAP is not set | ||
| 997 | # CONFIG_DEBUG_FS is not set | ||
| 998 | # CONFIG_DEBUG_VM is not set | 1035 | # CONFIG_DEBUG_VM is not set |
| 1036 | # CONFIG_DEBUG_LIST is not set | ||
| 999 | CONFIG_FORCED_INLINING=y | 1037 | CONFIG_FORCED_INLINING=y |
| 1000 | # CONFIG_RCU_TORTURE_TEST is not set | 1038 | # CONFIG_RCU_TORTURE_TEST is not set |
| 1039 | # CONFIG_FAULT_INJECTION is not set | ||
| 1001 | # CONFIG_DEBUG_RODATA is not set | 1040 | # CONFIG_DEBUG_RODATA is not set |
| 1002 | 1041 | ||
| 1003 | # | 1042 | # |
| @@ -1007,13 +1046,10 @@ CONFIG_FORCED_INLINING=y | |||
| 1007 | CONFIG_SECURITY=y | 1046 | CONFIG_SECURITY=y |
| 1008 | # CONFIG_SECURITY_NETWORK is not set | 1047 | # CONFIG_SECURITY_NETWORK is not set |
| 1009 | CONFIG_SECURITY_CAPABILITIES=y | 1048 | CONFIG_SECURITY_CAPABILITIES=y |
| 1010 | # CONFIG_SECURITY_SECLVL is not set | ||
| 1011 | # CONFIG_SECURITY_SELINUX is not set | ||
| 1012 | |||
| 1013 | # | ||
| 1014 | # Cryptographic options | ||
| 1015 | # | ||
| 1016 | CONFIG_CRYPTO=y | 1049 | CONFIG_CRYPTO=y |
| 1050 | CONFIG_CRYPTO_ALGAPI=y | ||
| 1051 | CONFIG_CRYPTO_BLKCIPHER=y | ||
| 1052 | CONFIG_CRYPTO_MANAGER=y | ||
| 1017 | # CONFIG_CRYPTO_HMAC is not set | 1053 | # CONFIG_CRYPTO_HMAC is not set |
| 1018 | # CONFIG_CRYPTO_NULL is not set | 1054 | # CONFIG_CRYPTO_NULL is not set |
| 1019 | # CONFIG_CRYPTO_MD4 is not set | 1055 | # CONFIG_CRYPTO_MD4 is not set |
| @@ -1023,7 +1059,12 @@ CONFIG_CRYPTO=y | |||
| 1023 | # CONFIG_CRYPTO_SHA512 is not set | 1059 | # CONFIG_CRYPTO_SHA512 is not set |
| 1024 | # CONFIG_CRYPTO_WP512 is not set | 1060 | # CONFIG_CRYPTO_WP512 is not set |
| 1025 | # CONFIG_CRYPTO_TGR192 is not set | 1061 | # CONFIG_CRYPTO_TGR192 is not set |
| 1062 | # CONFIG_CRYPTO_ECB is not set | ||
| 1063 | CONFIG_CRYPTO_CBC=y | ||
| 1064 | # CONFIG_CRYPTO_PCBC is not set | ||
| 1065 | # CONFIG_CRYPTO_CRYPTD is not set | ||
| 1026 | # CONFIG_CRYPTO_DES is not set | 1066 | # CONFIG_CRYPTO_DES is not set |
| 1067 | # CONFIG_CRYPTO_FCRYPT is not set | ||
| 1027 | # CONFIG_CRYPTO_BLOWFISH is not set | 1068 | # CONFIG_CRYPTO_BLOWFISH is not set |
| 1028 | # CONFIG_CRYPTO_TWOFISH is not set | 1069 | # CONFIG_CRYPTO_TWOFISH is not set |
| 1029 | # CONFIG_CRYPTO_SERPENT is not set | 1070 | # CONFIG_CRYPTO_SERPENT is not set |
| @@ -1034,19 +1075,26 @@ CONFIG_CRYPTO=y | |||
| 1034 | # CONFIG_CRYPTO_ARC4 is not set | 1075 | # CONFIG_CRYPTO_ARC4 is not set |
| 1035 | # CONFIG_CRYPTO_KHAZAD is not set | 1076 | # CONFIG_CRYPTO_KHAZAD is not set |
| 1036 | # CONFIG_CRYPTO_ANUBIS is not set | 1077 | # CONFIG_CRYPTO_ANUBIS is not set |
| 1078 | # CONFIG_CRYPTO_SEED is not set | ||
| 1037 | # CONFIG_CRYPTO_DEFLATE is not set | 1079 | # CONFIG_CRYPTO_DEFLATE is not set |
| 1038 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1080 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
| 1039 | # CONFIG_CRYPTO_CRC32C is not set | 1081 | # CONFIG_CRYPTO_CRC32C is not set |
| 1082 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
| 1040 | # CONFIG_CRYPTO_TEST is not set | 1083 | # CONFIG_CRYPTO_TEST is not set |
| 1041 | 1084 | # CONFIG_CRYPTO_AUTHENC is not set | |
| 1042 | # | 1085 | CONFIG_CRYPTO_HW=y |
| 1043 | # Hardware crypto devices | ||
| 1044 | # | ||
| 1045 | 1086 | ||
| 1046 | # | 1087 | # |
| 1047 | # Library routines | 1088 | # Library routines |
| 1048 | # | 1089 | # |
| 1090 | CONFIG_BITREVERSE=y | ||
| 1049 | # CONFIG_CRC_CCITT is not set | 1091 | # CONFIG_CRC_CCITT is not set |
| 1050 | # CONFIG_CRC16 is not set | 1092 | # CONFIG_CRC16 is not set |
| 1093 | # CONFIG_CRC_ITU_T is not set | ||
| 1051 | CONFIG_CRC32=y | 1094 | CONFIG_CRC32=y |
| 1095 | # CONFIG_CRC7 is not set | ||
| 1052 | # CONFIG_LIBCRC32C is not set | 1096 | # CONFIG_LIBCRC32C is not set |
| 1097 | CONFIG_PLIST=y | ||
| 1098 | CONFIG_HAS_IOMEM=y | ||
| 1099 | CONFIG_HAS_IOPORT=y | ||
| 1100 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/parisc/configs/c3000_defconfig b/arch/parisc/configs/c3000_defconfig index eb2f9a3d515c..c6def3c1d209 100644 --- a/arch/parisc/configs/c3000_defconfig +++ b/arch/parisc/configs/c3000_defconfig | |||
| @@ -1,39 +1,50 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.16-pa6 | 3 | # Linux kernel version: 2.6.23 |
| 4 | # Sun Mar 26 20:03:29 2006 | 4 | # Fri Oct 12 21:24:00 2007 |
| 5 | # | 5 | # |
| 6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| 8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
| 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
| 10 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
| 11 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
| 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 13 | CONFIG_GENERIC_BUG=y | ||
| 14 | CONFIG_GENERIC_HWEIGHT=y | ||
| 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 15 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 16 | CONFIG_GENERIC_TIME=y | ||
| 11 | CONFIG_GENERIC_HARDIRQS=y | 17 | CONFIG_GENERIC_HARDIRQS=y |
| 12 | CONFIG_GENERIC_IRQ_PROBE=y | 18 | CONFIG_GENERIC_IRQ_PROBE=y |
| 19 | CONFIG_IRQ_PER_CPU=y | ||
| 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 13 | 21 | ||
| 14 | # | 22 | # |
| 15 | # Code maturity level options | 23 | # General setup |
| 16 | # | 24 | # |
| 17 | CONFIG_EXPERIMENTAL=y | 25 | CONFIG_EXPERIMENTAL=y |
| 18 | CONFIG_BROKEN_ON_SMP=y | 26 | CONFIG_BROKEN_ON_SMP=y |
| 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
| 20 | |||
| 21 | # | ||
| 22 | # General setup | ||
| 23 | # | ||
| 24 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
| 25 | # CONFIG_LOCALVERSION_AUTO is not set | 29 | # CONFIG_LOCALVERSION_AUTO is not set |
| 26 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
| 27 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
| 32 | CONFIG_SYSVIPC_SYSCTL=y | ||
| 28 | # CONFIG_POSIX_MQUEUE is not set | 33 | # CONFIG_POSIX_MQUEUE is not set |
| 29 | # CONFIG_BSD_PROCESS_ACCT is not set | 34 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 30 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
| 36 | # CONFIG_USER_NS is not set | ||
| 31 | # CONFIG_AUDIT is not set | 37 | # CONFIG_AUDIT is not set |
| 32 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
| 33 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
| 34 | CONFIG_INITRAMFS_SOURCE="" | 40 | CONFIG_LOG_BUF_SHIFT=16 |
| 41 | CONFIG_SYSFS_DEPRECATED=y | ||
| 42 | # CONFIG_RELAY is not set | ||
| 43 | # CONFIG_BLK_DEV_INITRD is not set | ||
| 35 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
| 45 | CONFIG_SYSCTL=y | ||
| 36 | CONFIG_EMBEDDED=y | 46 | CONFIG_EMBEDDED=y |
| 47 | CONFIG_SYSCTL_SYSCALL=y | ||
| 37 | CONFIG_KALLSYMS=y | 48 | CONFIG_KALLSYMS=y |
| 38 | CONFIG_KALLSYMS_ALL=y | 49 | CONFIG_KALLSYMS_ALL=y |
| 39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 50 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| @@ -43,31 +54,29 @@ CONFIG_BUG=y | |||
| 43 | CONFIG_ELF_CORE=y | 54 | CONFIG_ELF_CORE=y |
| 44 | CONFIG_BASE_FULL=y | 55 | CONFIG_BASE_FULL=y |
| 45 | CONFIG_FUTEX=y | 56 | CONFIG_FUTEX=y |
| 57 | CONFIG_ANON_INODES=y | ||
| 46 | CONFIG_EPOLL=y | 58 | CONFIG_EPOLL=y |
| 59 | CONFIG_SIGNALFD=y | ||
| 60 | CONFIG_EVENTFD=y | ||
| 47 | CONFIG_SHMEM=y | 61 | CONFIG_SHMEM=y |
| 48 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 62 | CONFIG_VM_EVENT_COUNTERS=y |
| 49 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 50 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 51 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 52 | CONFIG_SLAB=y | 63 | CONFIG_SLAB=y |
| 64 | # CONFIG_SLUB is not set | ||
| 65 | # CONFIG_SLOB is not set | ||
| 66 | CONFIG_RT_MUTEXES=y | ||
| 53 | # CONFIG_TINY_SHMEM is not set | 67 | # CONFIG_TINY_SHMEM is not set |
| 54 | CONFIG_BASE_SMALL=0 | 68 | CONFIG_BASE_SMALL=0 |
| 55 | # CONFIG_SLOB is not set | ||
| 56 | |||
| 57 | # | ||
| 58 | # Loadable module support | ||
| 59 | # | ||
| 60 | CONFIG_MODULES=y | 69 | CONFIG_MODULES=y |
| 61 | CONFIG_MODULE_UNLOAD=y | 70 | CONFIG_MODULE_UNLOAD=y |
| 62 | CONFIG_MODULE_FORCE_UNLOAD=y | 71 | CONFIG_MODULE_FORCE_UNLOAD=y |
| 63 | CONFIG_OBSOLETE_MODPARM=y | ||
| 64 | # CONFIG_MODVERSIONS is not set | 72 | # CONFIG_MODVERSIONS is not set |
| 65 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 73 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
| 66 | CONFIG_KMOD=y | 74 | CONFIG_KMOD=y |
| 67 | 75 | CONFIG_BLOCK=y | |
| 68 | # | 76 | # CONFIG_LBD is not set |
| 69 | # Block layer | 77 | # CONFIG_BLK_DEV_IO_TRACE is not set |
| 70 | # | 78 | # CONFIG_LSF is not set |
| 79 | # CONFIG_BLK_DEV_BSG is not set | ||
| 71 | 80 | ||
| 72 | # | 81 | # |
| 73 | # IO Schedulers | 82 | # IO Schedulers |
| @@ -93,6 +102,9 @@ CONFIG_PA8X00=y | |||
| 93 | CONFIG_PA20=y | 102 | CONFIG_PA20=y |
| 94 | CONFIG_PREFETCH=y | 103 | CONFIG_PREFETCH=y |
| 95 | # CONFIG_64BIT is not set | 104 | # CONFIG_64BIT is not set |
| 105 | CONFIG_PARISC_PAGE_SIZE_4KB=y | ||
| 106 | # CONFIG_PARISC_PAGE_SIZE_16KB is not set | ||
| 107 | # CONFIG_PARISC_PAGE_SIZE_64KB is not set | ||
| 96 | # CONFIG_SMP is not set | 108 | # CONFIG_SMP is not set |
| 97 | CONFIG_ARCH_FLATMEM_ENABLE=y | 109 | CONFIG_ARCH_FLATMEM_ENABLE=y |
| 98 | # CONFIG_PREEMPT_NONE is not set | 110 | # CONFIG_PREEMPT_NONE is not set |
| @@ -100,6 +112,7 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
| 100 | # CONFIG_PREEMPT is not set | 112 | # CONFIG_PREEMPT is not set |
| 101 | # CONFIG_HZ_100 is not set | 113 | # CONFIG_HZ_100 is not set |
| 102 | CONFIG_HZ_250=y | 114 | CONFIG_HZ_250=y |
| 115 | # CONFIG_HZ_300 is not set | ||
| 103 | # CONFIG_HZ_1000 is not set | 116 | # CONFIG_HZ_1000 is not set |
| 104 | CONFIG_HZ=250 | 117 | CONFIG_HZ=250 |
| 105 | CONFIG_SELECT_MEMORY_MODEL=y | 118 | CONFIG_SELECT_MEMORY_MODEL=y |
| @@ -110,6 +123,9 @@ CONFIG_FLATMEM=y | |||
| 110 | CONFIG_FLAT_NODE_MEM_MAP=y | 123 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 111 | # CONFIG_SPARSEMEM_STATIC is not set | 124 | # CONFIG_SPARSEMEM_STATIC is not set |
| 112 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 125 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
| 126 | # CONFIG_RESOURCES_64BIT is not set | ||
| 127 | CONFIG_ZONE_DMA_FLAG=0 | ||
| 128 | CONFIG_VIRT_TO_BUS=y | ||
| 113 | # CONFIG_HPUX is not set | 129 | # CONFIG_HPUX is not set |
| 114 | 130 | ||
| 115 | # | 131 | # |
| @@ -117,7 +133,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
| 117 | # | 133 | # |
| 118 | # CONFIG_GSC is not set | 134 | # CONFIG_GSC is not set |
| 119 | CONFIG_PCI=y | 135 | CONFIG_PCI=y |
| 120 | CONFIG_PCI_LEGACY_PROC=y | 136 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
| 121 | # CONFIG_PCI_DEBUG is not set | 137 | # CONFIG_PCI_DEBUG is not set |
| 122 | CONFIG_PCI_LBA=y | 138 | CONFIG_PCI_LBA=y |
| 123 | CONFIG_IOSAPIC=y | 139 | CONFIG_IOSAPIC=y |
| @@ -127,10 +143,6 @@ CONFIG_IOMMU_SBA=y | |||
| 127 | # PCCARD (PCMCIA/CardBus) support | 143 | # PCCARD (PCMCIA/CardBus) support |
| 128 | # | 144 | # |
| 129 | # CONFIG_PCCARD is not set | 145 | # CONFIG_PCCARD is not set |
| 130 | |||
| 131 | # | ||
| 132 | # PCI Hotplug Support | ||
| 133 | # | ||
| 134 | # CONFIG_HOTPLUG_PCI is not set | 146 | # CONFIG_HOTPLUG_PCI is not set |
| 135 | 147 | ||
| 136 | # | 148 | # |
| @@ -139,6 +151,7 @@ CONFIG_IOMMU_SBA=y | |||
| 139 | CONFIG_SUPERIO=y | 151 | CONFIG_SUPERIO=y |
| 140 | CONFIG_CHASSIS_LCD_LED=y | 152 | CONFIG_CHASSIS_LCD_LED=y |
| 141 | # CONFIG_PDC_CHASSIS is not set | 153 | # CONFIG_PDC_CHASSIS is not set |
| 154 | CONFIG_PDC_CHASSIS_WARN=y | ||
| 142 | CONFIG_PDC_STABLE=y | 155 | CONFIG_PDC_STABLE=y |
| 143 | 156 | ||
| 144 | # | 157 | # |
| @@ -155,13 +168,15 @@ CONFIG_NET=y | |||
| 155 | # | 168 | # |
| 156 | # Networking options | 169 | # Networking options |
| 157 | # | 170 | # |
| 158 | # CONFIG_NETDEBUG is not set | ||
| 159 | CONFIG_PACKET=y | 171 | CONFIG_PACKET=y |
| 160 | CONFIG_PACKET_MMAP=y | 172 | CONFIG_PACKET_MMAP=y |
| 161 | CONFIG_UNIX=y | 173 | CONFIG_UNIX=y |
| 162 | CONFIG_XFRM=y | 174 | CONFIG_XFRM=y |
| 163 | CONFIG_XFRM_USER=m | 175 | CONFIG_XFRM_USER=m |
| 176 | # CONFIG_XFRM_SUB_POLICY is not set | ||
| 177 | # CONFIG_XFRM_MIGRATE is not set | ||
| 164 | CONFIG_NET_KEY=m | 178 | CONFIG_NET_KEY=m |
| 179 | # CONFIG_NET_KEY_MIGRATE is not set | ||
| 165 | CONFIG_INET=y | 180 | CONFIG_INET=y |
| 166 | CONFIG_IP_MULTICAST=y | 181 | CONFIG_IP_MULTICAST=y |
| 167 | # CONFIG_IP_ADVANCED_ROUTER is not set | 182 | # CONFIG_IP_ADVANCED_ROUTER is not set |
| @@ -178,22 +193,36 @@ CONFIG_IP_PNP_BOOTP=y | |||
| 178 | # CONFIG_INET_AH is not set | 193 | # CONFIG_INET_AH is not set |
| 179 | # CONFIG_INET_ESP is not set | 194 | # CONFIG_INET_ESP is not set |
| 180 | # CONFIG_INET_IPCOMP is not set | 195 | # CONFIG_INET_IPCOMP is not set |
| 181 | # CONFIG_INET_TUNNEL is not set | 196 | # CONFIG_INET_XFRM_TUNNEL is not set |
| 197 | CONFIG_INET_TUNNEL=m | ||
| 198 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 199 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 200 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 201 | # CONFIG_INET_LRO is not set | ||
| 182 | # CONFIG_INET_DIAG is not set | 202 | # CONFIG_INET_DIAG is not set |
| 183 | # CONFIG_TCP_CONG_ADVANCED is not set | 203 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 184 | CONFIG_TCP_CONG_BIC=y | 204 | CONFIG_TCP_CONG_CUBIC=y |
| 185 | 205 | CONFIG_DEFAULT_TCP_CONG="cubic" | |
| 186 | # | 206 | # CONFIG_TCP_MD5SIG is not set |
| 187 | # IP: Virtual Server Configuration | ||
| 188 | # | ||
| 189 | # CONFIG_IP_VS is not set | 207 | # CONFIG_IP_VS is not set |
| 190 | CONFIG_IPV6=m | 208 | CONFIG_IPV6=m |
| 191 | # CONFIG_IPV6_PRIVACY is not set | 209 | # CONFIG_IPV6_PRIVACY is not set |
| 210 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
| 211 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
| 192 | # CONFIG_INET6_AH is not set | 212 | # CONFIG_INET6_AH is not set |
| 193 | # CONFIG_INET6_ESP is not set | 213 | # CONFIG_INET6_ESP is not set |
| 194 | CONFIG_INET6_IPCOMP=m | 214 | CONFIG_INET6_IPCOMP=m |
| 215 | # CONFIG_IPV6_MIP6 is not set | ||
| 216 | CONFIG_INET6_XFRM_TUNNEL=m | ||
| 195 | CONFIG_INET6_TUNNEL=m | 217 | CONFIG_INET6_TUNNEL=m |
| 218 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
| 219 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
| 220 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
| 221 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
| 222 | CONFIG_IPV6_SIT=m | ||
| 196 | CONFIG_IPV6_TUNNEL=m | 223 | CONFIG_IPV6_TUNNEL=m |
| 224 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
| 225 | # CONFIG_NETWORK_SECMARK is not set | ||
| 197 | CONFIG_NETFILTER=y | 226 | CONFIG_NETFILTER=y |
| 198 | CONFIG_NETFILTER_DEBUG=y | 227 | CONFIG_NETFILTER_DEBUG=y |
| 199 | 228 | ||
| @@ -201,42 +230,24 @@ CONFIG_NETFILTER_DEBUG=y | |||
| 201 | # Core Netfilter Configuration | 230 | # Core Netfilter Configuration |
| 202 | # | 231 | # |
| 203 | # CONFIG_NETFILTER_NETLINK is not set | 232 | # CONFIG_NETFILTER_NETLINK is not set |
| 233 | # CONFIG_NF_CONNTRACK_ENABLED is not set | ||
| 234 | # CONFIG_NF_CONNTRACK is not set | ||
| 204 | # CONFIG_NETFILTER_XTABLES is not set | 235 | # CONFIG_NETFILTER_XTABLES is not set |
| 205 | 236 | ||
| 206 | # | 237 | # |
| 207 | # IP: Netfilter Configuration | 238 | # IP: Netfilter Configuration |
| 208 | # | 239 | # |
| 209 | CONFIG_IP_NF_CONNTRACK=m | ||
| 210 | # CONFIG_IP_NF_CT_ACCT is not set | ||
| 211 | # CONFIG_IP_NF_CONNTRACK_MARK is not set | ||
| 212 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
| 213 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
| 214 | CONFIG_IP_NF_FTP=m | ||
| 215 | CONFIG_IP_NF_IRC=m | ||
| 216 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 217 | CONFIG_IP_NF_TFTP=m | ||
| 218 | CONFIG_IP_NF_AMANDA=m | ||
| 219 | # CONFIG_IP_NF_PPTP is not set | ||
| 220 | CONFIG_IP_NF_QUEUE=m | 240 | CONFIG_IP_NF_QUEUE=m |
| 241 | # CONFIG_IP_NF_IPTABLES is not set | ||
| 242 | # CONFIG_IP_NF_ARPTABLES is not set | ||
| 221 | 243 | ||
| 222 | # | 244 | # |
| 223 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 245 | # IPv6: Netfilter Configuration (EXPERIMENTAL) |
| 224 | # | 246 | # |
| 225 | # CONFIG_IP6_NF_QUEUE is not set | 247 | # CONFIG_IP6_NF_QUEUE is not set |
| 226 | 248 | # CONFIG_IP6_NF_IPTABLES is not set | |
| 227 | # | ||
| 228 | # DCCP Configuration (EXPERIMENTAL) | ||
| 229 | # | ||
| 230 | # CONFIG_IP_DCCP is not set | 249 | # CONFIG_IP_DCCP is not set |
| 231 | |||
| 232 | # | ||
| 233 | # SCTP Configuration (EXPERIMENTAL) | ||
| 234 | # | ||
| 235 | # CONFIG_IP_SCTP is not set | 250 | # CONFIG_IP_SCTP is not set |
| 236 | |||
| 237 | # | ||
| 238 | # TIPC Configuration (EXPERIMENTAL) | ||
| 239 | # | ||
| 240 | # CONFIG_TIPC is not set | 251 | # CONFIG_TIPC is not set |
| 241 | # CONFIG_ATM is not set | 252 | # CONFIG_ATM is not set |
| 242 | # CONFIG_BRIDGE is not set | 253 | # CONFIG_BRIDGE is not set |
| @@ -247,7 +258,6 @@ CONFIG_IP_NF_QUEUE=m | |||
| 247 | # CONFIG_ATALK is not set | 258 | # CONFIG_ATALK is not set |
| 248 | # CONFIG_X25 is not set | 259 | # CONFIG_X25 is not set |
| 249 | # CONFIG_LAPB is not set | 260 | # CONFIG_LAPB is not set |
| 250 | # CONFIG_NET_DIVERT is not set | ||
| 251 | # CONFIG_ECONET is not set | 261 | # CONFIG_ECONET is not set |
| 252 | # CONFIG_WAN_ROUTER is not set | 262 | # CONFIG_WAN_ROUTER is not set |
| 253 | 263 | ||
| @@ -263,7 +273,17 @@ CONFIG_NET_PKTGEN=m | |||
| 263 | # CONFIG_HAMRADIO is not set | 273 | # CONFIG_HAMRADIO is not set |
| 264 | # CONFIG_IRDA is not set | 274 | # CONFIG_IRDA is not set |
| 265 | # CONFIG_BT is not set | 275 | # CONFIG_BT is not set |
| 276 | # CONFIG_AF_RXRPC is not set | ||
| 277 | |||
| 278 | # | ||
| 279 | # Wireless | ||
| 280 | # | ||
| 281 | # CONFIG_CFG80211 is not set | ||
| 282 | # CONFIG_WIRELESS_EXT is not set | ||
| 283 | # CONFIG_MAC80211 is not set | ||
| 266 | # CONFIG_IEEE80211 is not set | 284 | # CONFIG_IEEE80211 is not set |
| 285 | # CONFIG_RFKILL is not set | ||
| 286 | # CONFIG_NET_9P is not set | ||
| 267 | 287 | ||
| 268 | # | 288 | # |
| 269 | # Device Drivers | 289 | # Device Drivers |
| @@ -272,33 +292,17 @@ CONFIG_NET_PKTGEN=m | |||
| 272 | # | 292 | # |
| 273 | # Generic Driver Options | 293 | # Generic Driver Options |
| 274 | # | 294 | # |
| 295 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 275 | # CONFIG_STANDALONE is not set | 296 | # CONFIG_STANDALONE is not set |
| 276 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 297 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
| 277 | CONFIG_FW_LOADER=y | 298 | CONFIG_FW_LOADER=y |
| 278 | # CONFIG_DEBUG_DRIVER is not set | 299 | # CONFIG_DEBUG_DRIVER is not set |
| 279 | 300 | # CONFIG_DEBUG_DEVRES is not set | |
| 280 | # | 301 | # CONFIG_SYS_HYPERVISOR is not set |
| 281 | # Connector - unified userspace <-> kernelspace linker | ||
| 282 | # | ||
| 283 | # CONFIG_CONNECTOR is not set | 302 | # CONFIG_CONNECTOR is not set |
| 284 | |||
| 285 | # | ||
| 286 | # Memory Technology Devices (MTD) | ||
| 287 | # | ||
| 288 | # CONFIG_MTD is not set | 303 | # CONFIG_MTD is not set |
| 289 | |||
| 290 | # | ||
| 291 | # Parallel port support | ||
| 292 | # | ||
| 293 | # CONFIG_PARPORT is not set | 304 | # CONFIG_PARPORT is not set |
| 294 | 305 | CONFIG_BLK_DEV=y | |
| 295 | # | ||
| 296 | # Plug and Play support | ||
| 297 | # | ||
| 298 | |||
| 299 | # | ||
| 300 | # Block devices | ||
| 301 | # | ||
| 302 | # CONFIG_BLK_CPQ_DA is not set | 306 | # CONFIG_BLK_CPQ_DA is not set |
| 303 | # CONFIG_BLK_CPQ_CISS_DA is not set | 307 | # CONFIG_BLK_CPQ_CISS_DA is not set |
| 304 | # CONFIG_BLK_DEV_DAC960 is not set | 308 | # CONFIG_BLK_DEV_DAC960 is not set |
| @@ -310,14 +314,15 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m | |||
| 310 | # CONFIG_BLK_DEV_SX8 is not set | 314 | # CONFIG_BLK_DEV_SX8 is not set |
| 311 | # CONFIG_BLK_DEV_UB is not set | 315 | # CONFIG_BLK_DEV_UB is not set |
| 312 | # CONFIG_BLK_DEV_RAM is not set | 316 | # CONFIG_BLK_DEV_RAM is not set |
| 313 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 314 | # CONFIG_CDROM_PKTCDVD is not set | 317 | # CONFIG_CDROM_PKTCDVD is not set |
| 315 | # CONFIG_ATA_OVER_ETH is not set | 318 | # CONFIG_ATA_OVER_ETH is not set |
| 316 | 319 | CONFIG_MISC_DEVICES=y | |
| 317 | # | 320 | # CONFIG_PHANTOM is not set |
| 318 | # ATA/ATAPI/MFM/RLL support | 321 | # CONFIG_EEPROM_93CX6 is not set |
| 319 | # | 322 | # CONFIG_SGI_IOC4 is not set |
| 323 | # CONFIG_TIFM_CORE is not set | ||
| 320 | CONFIG_IDE=y | 324 | CONFIG_IDE=y |
| 325 | CONFIG_IDE_MAX_HWIFS=4 | ||
| 321 | CONFIG_BLK_DEV_IDE=y | 326 | CONFIG_BLK_DEV_IDE=y |
| 322 | 327 | ||
| 323 | # | 328 | # |
| @@ -331,19 +336,26 @@ CONFIG_BLK_DEV_IDECD=y | |||
| 331 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 336 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
| 332 | CONFIG_BLK_DEV_IDESCSI=y | 337 | CONFIG_BLK_DEV_IDESCSI=y |
| 333 | # CONFIG_IDE_TASK_IOCTL is not set | 338 | # CONFIG_IDE_TASK_IOCTL is not set |
| 339 | CONFIG_IDE_PROC_FS=y | ||
| 334 | 340 | ||
| 335 | # | 341 | # |
| 336 | # IDE chipset support/bugfixes | 342 | # IDE chipset support/bugfixes |
| 337 | # | 343 | # |
| 338 | CONFIG_IDE_GENERIC=y | 344 | CONFIG_IDE_GENERIC=y |
| 345 | # CONFIG_BLK_DEV_PLATFORM is not set | ||
| 346 | |||
| 347 | # | ||
| 348 | # PCI IDE chipsets support | ||
| 349 | # | ||
| 339 | CONFIG_BLK_DEV_IDEPCI=y | 350 | CONFIG_BLK_DEV_IDEPCI=y |
| 340 | CONFIG_IDEPCI_SHARE_IRQ=y | 351 | CONFIG_IDEPCI_SHARE_IRQ=y |
| 352 | CONFIG_IDEPCI_PCIBUS_ORDER=y | ||
| 341 | # CONFIG_BLK_DEV_OFFBOARD is not set | 353 | # CONFIG_BLK_DEV_OFFBOARD is not set |
| 342 | # CONFIG_BLK_DEV_GENERIC is not set | 354 | # CONFIG_BLK_DEV_GENERIC is not set |
| 343 | # CONFIG_BLK_DEV_OPTI621 is not set | 355 | # CONFIG_BLK_DEV_OPTI621 is not set |
| 344 | CONFIG_BLK_DEV_IDEDMA_PCI=y | 356 | CONFIG_BLK_DEV_IDEDMA_PCI=y |
| 345 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | 357 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set |
| 346 | # CONFIG_IDEDMA_PCI_AUTO is not set | 358 | CONFIG_IDEDMA_ONLYDISK=y |
| 347 | # CONFIG_BLK_DEV_AEC62XX is not set | 359 | # CONFIG_BLK_DEV_AEC62XX is not set |
| 348 | # CONFIG_BLK_DEV_ALI15X3 is not set | 360 | # CONFIG_BLK_DEV_ALI15X3 is not set |
| 349 | # CONFIG_BLK_DEV_AMD74XX is not set | 361 | # CONFIG_BLK_DEV_AMD74XX is not set |
| @@ -354,8 +366,10 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y | |||
| 354 | # CONFIG_BLK_DEV_CS5530 is not set | 366 | # CONFIG_BLK_DEV_CS5530 is not set |
| 355 | # CONFIG_BLK_DEV_HPT34X is not set | 367 | # CONFIG_BLK_DEV_HPT34X is not set |
| 356 | # CONFIG_BLK_DEV_HPT366 is not set | 368 | # CONFIG_BLK_DEV_HPT366 is not set |
| 369 | # CONFIG_BLK_DEV_JMICRON is not set | ||
| 357 | # CONFIG_BLK_DEV_SC1200 is not set | 370 | # CONFIG_BLK_DEV_SC1200 is not set |
| 358 | # CONFIG_BLK_DEV_PIIX is not set | 371 | # CONFIG_BLK_DEV_PIIX is not set |
| 372 | # CONFIG_BLK_DEV_IT8213 is not set | ||
| 359 | # CONFIG_BLK_DEV_IT821X is not set | 373 | # CONFIG_BLK_DEV_IT821X is not set |
| 360 | CONFIG_BLK_DEV_NS87415=y | 374 | CONFIG_BLK_DEV_NS87415=y |
| 361 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 375 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
| @@ -365,10 +379,10 @@ CONFIG_BLK_DEV_SIIMAGE=m | |||
| 365 | # CONFIG_BLK_DEV_SLC90E66 is not set | 379 | # CONFIG_BLK_DEV_SLC90E66 is not set |
| 366 | # CONFIG_BLK_DEV_TRM290 is not set | 380 | # CONFIG_BLK_DEV_TRM290 is not set |
| 367 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 381 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
| 382 | # CONFIG_BLK_DEV_TC86C001 is not set | ||
| 368 | # CONFIG_IDE_ARM is not set | 383 | # CONFIG_IDE_ARM is not set |
| 369 | CONFIG_BLK_DEV_IDEDMA=y | 384 | CONFIG_BLK_DEV_IDEDMA=y |
| 370 | # CONFIG_IDEDMA_IVB is not set | 385 | # CONFIG_IDEDMA_IVB is not set |
| 371 | # CONFIG_IDEDMA_AUTO is not set | ||
| 372 | # CONFIG_BLK_DEV_HD is not set | 386 | # CONFIG_BLK_DEV_HD is not set |
| 373 | 387 | ||
| 374 | # | 388 | # |
| @@ -376,6 +390,9 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
| 376 | # | 390 | # |
| 377 | # CONFIG_RAID_ATTRS is not set | 391 | # CONFIG_RAID_ATTRS is not set |
| 378 | CONFIG_SCSI=y | 392 | CONFIG_SCSI=y |
| 393 | CONFIG_SCSI_DMA=y | ||
| 394 | # CONFIG_SCSI_TGT is not set | ||
| 395 | # CONFIG_SCSI_NETLINK is not set | ||
| 379 | CONFIG_SCSI_PROC_FS=y | 396 | CONFIG_SCSI_PROC_FS=y |
| 380 | 397 | ||
| 381 | # | 398 | # |
| @@ -395,18 +412,17 @@ CONFIG_CHR_DEV_SG=y | |||
| 395 | CONFIG_SCSI_MULTI_LUN=y | 412 | CONFIG_SCSI_MULTI_LUN=y |
| 396 | # CONFIG_SCSI_CONSTANTS is not set | 413 | # CONFIG_SCSI_CONSTANTS is not set |
| 397 | # CONFIG_SCSI_LOGGING is not set | 414 | # CONFIG_SCSI_LOGGING is not set |
| 415 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 416 | CONFIG_SCSI_WAIT_SCAN=m | ||
| 398 | 417 | ||
| 399 | # | 418 | # |
| 400 | # SCSI Transport Attributes | 419 | # SCSI Transports |
| 401 | # | 420 | # |
| 402 | CONFIG_SCSI_SPI_ATTRS=y | 421 | CONFIG_SCSI_SPI_ATTRS=y |
| 403 | # CONFIG_SCSI_FC_ATTRS is not set | 422 | # CONFIG_SCSI_FC_ATTRS is not set |
| 404 | CONFIG_SCSI_ISCSI_ATTRS=m | 423 | CONFIG_SCSI_ISCSI_ATTRS=m |
| 405 | # CONFIG_SCSI_SAS_ATTRS is not set | 424 | # CONFIG_SCSI_SAS_LIBSAS is not set |
| 406 | 425 | CONFIG_SCSI_LOWLEVEL=y | |
| 407 | # | ||
| 408 | # SCSI low-level drivers | ||
| 409 | # | ||
| 410 | # CONFIG_ISCSI_TCP is not set | 426 | # CONFIG_ISCSI_TCP is not set |
| 411 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 427 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
| 412 | # CONFIG_SCSI_3W_9XXX is not set | 428 | # CONFIG_SCSI_3W_9XXX is not set |
| @@ -415,66 +431,53 @@ CONFIG_SCSI_ISCSI_ATTRS=m | |||
| 415 | # CONFIG_SCSI_AIC7XXX is not set | 431 | # CONFIG_SCSI_AIC7XXX is not set |
| 416 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 432 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
| 417 | # CONFIG_SCSI_AIC79XX is not set | 433 | # CONFIG_SCSI_AIC79XX is not set |
| 434 | # CONFIG_SCSI_AIC94XX is not set | ||
| 418 | # CONFIG_SCSI_DPT_I2O is not set | 435 | # CONFIG_SCSI_DPT_I2O is not set |
| 436 | # CONFIG_SCSI_ARCMSR is not set | ||
| 419 | # CONFIG_MEGARAID_NEWGEN is not set | 437 | # CONFIG_MEGARAID_NEWGEN is not set |
| 420 | # CONFIG_MEGARAID_LEGACY is not set | 438 | # CONFIG_MEGARAID_LEGACY is not set |
| 421 | # CONFIG_MEGARAID_SAS is not set | 439 | # CONFIG_MEGARAID_SAS is not set |
| 422 | CONFIG_SCSI_SATA=y | 440 | # CONFIG_SCSI_HPTIOP is not set |
| 423 | # CONFIG_SCSI_SATA_AHCI is not set | ||
| 424 | # CONFIG_SCSI_SATA_SVW is not set | ||
| 425 | CONFIG_SCSI_ATA_PIIX=m | ||
| 426 | # CONFIG_SCSI_SATA_MV is not set | ||
| 427 | # CONFIG_SCSI_SATA_NV is not set | ||
| 428 | # CONFIG_SCSI_PDC_ADMA is not set | ||
| 429 | # CONFIG_SCSI_SATA_QSTOR is not set | ||
| 430 | CONFIG_SCSI_SATA_PROMISE=m | ||
| 431 | # CONFIG_SCSI_SATA_SX4 is not set | ||
| 432 | CONFIG_SCSI_SATA_SIL=m | ||
| 433 | # CONFIG_SCSI_SATA_SIL24 is not set | ||
| 434 | # CONFIG_SCSI_SATA_SIS is not set | ||
| 435 | # CONFIG_SCSI_SATA_ULI is not set | ||
| 436 | CONFIG_SCSI_SATA_VIA=m | ||
| 437 | # CONFIG_SCSI_SATA_VITESSE is not set | ||
| 438 | # CONFIG_SCSI_DMX3191D is not set | 441 | # CONFIG_SCSI_DMX3191D is not set |
| 439 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 442 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
| 440 | # CONFIG_SCSI_IPS is not set | 443 | # CONFIG_SCSI_IPS is not set |
| 441 | # CONFIG_SCSI_INITIO is not set | 444 | # CONFIG_SCSI_INITIO is not set |
| 442 | # CONFIG_SCSI_INIA100 is not set | 445 | # CONFIG_SCSI_INIA100 is not set |
| 446 | # CONFIG_SCSI_STEX is not set | ||
| 443 | CONFIG_SCSI_SYM53C8XX_2=y | 447 | CONFIG_SCSI_SYM53C8XX_2=y |
| 444 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 | 448 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 |
| 445 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 449 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
| 446 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 450 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
| 447 | CONFIG_SCSI_SYM53C8XX_MMIO=y | 451 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
| 448 | # CONFIG_SCSI_IPR is not set | ||
| 449 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
| 450 | # CONFIG_SCSI_QLOGIC_1280 is not set | 452 | # CONFIG_SCSI_QLOGIC_1280 is not set |
| 451 | # CONFIG_SCSI_QLA_FC is not set | 453 | # CONFIG_SCSI_QLA_FC is not set |
| 454 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
| 452 | # CONFIG_SCSI_LPFC is not set | 455 | # CONFIG_SCSI_LPFC is not set |
| 453 | # CONFIG_SCSI_DC395x is not set | 456 | # CONFIG_SCSI_DC395x is not set |
| 454 | # CONFIG_SCSI_DC390T is not set | 457 | # CONFIG_SCSI_DC390T is not set |
| 455 | # CONFIG_SCSI_NSP32 is not set | 458 | # CONFIG_SCSI_NSP32 is not set |
| 456 | CONFIG_SCSI_DEBUG=m | 459 | CONFIG_SCSI_DEBUG=m |
| 457 | 460 | # CONFIG_SCSI_SRP is not set | |
| 458 | # | 461 | # CONFIG_ATA is not set |
| 459 | # Multi-device support (RAID and LVM) | ||
| 460 | # | ||
| 461 | CONFIG_MD=y | 462 | CONFIG_MD=y |
| 462 | CONFIG_BLK_DEV_MD=y | 463 | CONFIG_BLK_DEV_MD=y |
| 463 | CONFIG_MD_LINEAR=y | 464 | CONFIG_MD_LINEAR=y |
| 464 | CONFIG_MD_RAID0=y | 465 | CONFIG_MD_RAID0=y |
| 465 | CONFIG_MD_RAID1=y | 466 | CONFIG_MD_RAID1=y |
| 466 | # CONFIG_MD_RAID10 is not set | 467 | # CONFIG_MD_RAID10 is not set |
| 467 | # CONFIG_MD_RAID5 is not set | 468 | # CONFIG_MD_RAID456 is not set |
| 468 | # CONFIG_MD_RAID6 is not set | ||
| 469 | # CONFIG_MD_MULTIPATH is not set | 469 | # CONFIG_MD_MULTIPATH is not set |
| 470 | # CONFIG_MD_FAULTY is not set | 470 | # CONFIG_MD_FAULTY is not set |
| 471 | CONFIG_BLK_DEV_DM=m | 471 | CONFIG_BLK_DEV_DM=m |
| 472 | # CONFIG_DM_DEBUG is not set | ||
| 472 | CONFIG_DM_CRYPT=m | 473 | CONFIG_DM_CRYPT=m |
| 473 | CONFIG_DM_SNAPSHOT=m | 474 | CONFIG_DM_SNAPSHOT=m |
| 474 | CONFIG_DM_MIRROR=m | 475 | CONFIG_DM_MIRROR=m |
| 475 | CONFIG_DM_ZERO=m | 476 | CONFIG_DM_ZERO=m |
| 476 | CONFIG_DM_MULTIPATH=m | 477 | CONFIG_DM_MULTIPATH=m |
| 477 | # CONFIG_DM_MULTIPATH_EMC is not set | 478 | # CONFIG_DM_MULTIPATH_EMC is not set |
| 479 | # CONFIG_DM_MULTIPATH_RDAC is not set | ||
| 480 | # CONFIG_DM_DELAY is not set | ||
| 478 | 481 | ||
| 479 | # | 482 | # |
| 480 | # Fusion MPT device support | 483 | # Fusion MPT device support |
| @@ -485,49 +488,31 @@ CONFIG_FUSION_SPI=m | |||
| 485 | # CONFIG_FUSION_SAS is not set | 488 | # CONFIG_FUSION_SAS is not set |
| 486 | CONFIG_FUSION_MAX_SGE=128 | 489 | CONFIG_FUSION_MAX_SGE=128 |
| 487 | CONFIG_FUSION_CTL=m | 490 | CONFIG_FUSION_CTL=m |
| 491 | # CONFIG_FUSION_LOGGING is not set | ||
| 488 | 492 | ||
| 489 | # | 493 | # |
| 490 | # IEEE 1394 (FireWire) support | 494 | # IEEE 1394 (FireWire) support |
| 491 | # | 495 | # |
| 496 | # CONFIG_FIREWIRE is not set | ||
| 492 | # CONFIG_IEEE1394 is not set | 497 | # CONFIG_IEEE1394 is not set |
| 493 | |||
| 494 | # | ||
| 495 | # I2O device support | ||
| 496 | # | ||
| 497 | # CONFIG_I2O is not set | 498 | # CONFIG_I2O is not set |
| 498 | |||
| 499 | # | ||
| 500 | # Network device support | ||
| 501 | # | ||
| 502 | CONFIG_NETDEVICES=y | 499 | CONFIG_NETDEVICES=y |
| 500 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
| 503 | CONFIG_DUMMY=m | 501 | CONFIG_DUMMY=m |
| 504 | CONFIG_BONDING=m | 502 | CONFIG_BONDING=m |
| 503 | # CONFIG_MACVLAN is not set | ||
| 505 | # CONFIG_EQUALIZER is not set | 504 | # CONFIG_EQUALIZER is not set |
| 506 | CONFIG_TUN=m | 505 | CONFIG_TUN=m |
| 507 | 506 | # CONFIG_VETH is not set | |
| 508 | # | 507 | # CONFIG_IP1000 is not set |
| 509 | # ARCnet devices | ||
| 510 | # | ||
| 511 | # CONFIG_ARCNET is not set | 508 | # CONFIG_ARCNET is not set |
| 512 | |||
| 513 | # | ||
| 514 | # PHY device support | ||
| 515 | # | ||
| 516 | # CONFIG_PHYLIB is not set | 509 | # CONFIG_PHYLIB is not set |
| 517 | |||
| 518 | # | ||
| 519 | # Ethernet (10 or 100Mbit) | ||
| 520 | # | ||
| 521 | CONFIG_NET_ETHERNET=y | 510 | CONFIG_NET_ETHERNET=y |
| 522 | CONFIG_MII=m | 511 | CONFIG_MII=m |
| 523 | # CONFIG_HAPPYMEAL is not set | 512 | # CONFIG_HAPPYMEAL is not set |
| 524 | # CONFIG_SUNGEM is not set | 513 | # CONFIG_SUNGEM is not set |
| 525 | # CONFIG_CASSINI is not set | 514 | # CONFIG_CASSINI is not set |
| 526 | # CONFIG_NET_VENDOR_3COM is not set | 515 | # CONFIG_NET_VENDOR_3COM is not set |
| 527 | |||
| 528 | # | ||
| 529 | # Tulip family network device support | ||
| 530 | # | ||
| 531 | CONFIG_NET_TULIP=y | 516 | CONFIG_NET_TULIP=y |
| 532 | CONFIG_DE2104X=m | 517 | CONFIG_DE2104X=m |
| 533 | CONFIG_TULIP=y | 518 | CONFIG_TULIP=y |
| @@ -539,13 +524,16 @@ CONFIG_TULIP_MMIO=y | |||
| 539 | # CONFIG_DM9102 is not set | 524 | # CONFIG_DM9102 is not set |
| 540 | # CONFIG_ULI526X is not set | 525 | # CONFIG_ULI526X is not set |
| 541 | # CONFIG_HP100 is not set | 526 | # CONFIG_HP100 is not set |
| 527 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
| 528 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 529 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 530 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 542 | CONFIG_NET_PCI=y | 531 | CONFIG_NET_PCI=y |
| 543 | # CONFIG_PCNET32 is not set | 532 | # CONFIG_PCNET32 is not set |
| 544 | # CONFIG_AMD8111_ETH is not set | 533 | # CONFIG_AMD8111_ETH is not set |
| 545 | # CONFIG_ADAPTEC_STARFIRE is not set | 534 | # CONFIG_ADAPTEC_STARFIRE is not set |
| 546 | # CONFIG_B44 is not set | 535 | # CONFIG_B44 is not set |
| 547 | # CONFIG_FORCEDETH is not set | 536 | # CONFIG_FORCEDETH is not set |
| 548 | # CONFIG_DGRS is not set | ||
| 549 | # CONFIG_EEPRO100 is not set | 537 | # CONFIG_EEPRO100 is not set |
| 550 | CONFIG_E100=m | 538 | CONFIG_E100=m |
| 551 | # CONFIG_FEALNX is not set | 539 | # CONFIG_FEALNX is not set |
| @@ -558,16 +546,15 @@ CONFIG_E100=m | |||
| 558 | # CONFIG_SUNDANCE is not set | 546 | # CONFIG_SUNDANCE is not set |
| 559 | # CONFIG_TLAN is not set | 547 | # CONFIG_TLAN is not set |
| 560 | # CONFIG_VIA_RHINE is not set | 548 | # CONFIG_VIA_RHINE is not set |
| 561 | 549 | # CONFIG_SC92031 is not set | |
| 562 | # | 550 | CONFIG_NETDEV_1000=y |
| 563 | # Ethernet (1000 Mbit) | ||
| 564 | # | ||
| 565 | CONFIG_ACENIC=m | 551 | CONFIG_ACENIC=m |
| 566 | # CONFIG_ACENIC_OMIT_TIGON_I is not set | 552 | # CONFIG_ACENIC_OMIT_TIGON_I is not set |
| 567 | # CONFIG_DL2K is not set | 553 | # CONFIG_DL2K is not set |
| 568 | CONFIG_E1000=m | 554 | CONFIG_E1000=m |
| 569 | # CONFIG_E1000_NAPI is not set | 555 | # CONFIG_E1000_NAPI is not set |
| 570 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 556 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
| 557 | # CONFIG_E1000E is not set | ||
| 571 | # CONFIG_NS83820 is not set | 558 | # CONFIG_NS83820 is not set |
| 572 | # CONFIG_HAMACHI is not set | 559 | # CONFIG_HAMACHI is not set |
| 573 | # CONFIG_YELLOWFIN is not set | 560 | # CONFIG_YELLOWFIN is not set |
| @@ -579,27 +566,36 @@ CONFIG_E1000=m | |||
| 579 | # CONFIG_VIA_VELOCITY is not set | 566 | # CONFIG_VIA_VELOCITY is not set |
| 580 | CONFIG_TIGON3=m | 567 | CONFIG_TIGON3=m |
| 581 | # CONFIG_BNX2 is not set | 568 | # CONFIG_BNX2 is not set |
| 582 | 569 | # CONFIG_QLA3XXX is not set | |
| 583 | # | 570 | # CONFIG_ATL1 is not set |
| 584 | # Ethernet (10000 Mbit) | 571 | CONFIG_NETDEV_10000=y |
| 585 | # | ||
| 586 | # CONFIG_CHELSIO_T1 is not set | 572 | # CONFIG_CHELSIO_T1 is not set |
| 573 | # CONFIG_CHELSIO_T3 is not set | ||
| 574 | # CONFIG_IXGBE is not set | ||
| 587 | # CONFIG_IXGB is not set | 575 | # CONFIG_IXGB is not set |
| 588 | # CONFIG_S2IO is not set | 576 | # CONFIG_S2IO is not set |
| 589 | 577 | # CONFIG_MYRI10GE is not set | |
| 590 | # | 578 | # CONFIG_NETXEN_NIC is not set |
| 591 | # Token Ring devices | 579 | # CONFIG_NIU is not set |
| 592 | # | 580 | # CONFIG_MLX4_CORE is not set |
| 581 | # CONFIG_TEHUTI is not set | ||
| 593 | # CONFIG_TR is not set | 582 | # CONFIG_TR is not set |
| 594 | 583 | ||
| 595 | # | 584 | # |
| 596 | # Wireless LAN (non-hamradio) | 585 | # Wireless LAN |
| 597 | # | 586 | # |
| 598 | # CONFIG_NET_RADIO is not set | 587 | # CONFIG_WLAN_PRE80211 is not set |
| 588 | # CONFIG_WLAN_80211 is not set | ||
| 599 | 589 | ||
| 600 | # | 590 | # |
| 601 | # Wan interfaces | 591 | # USB Network Adapters |
| 602 | # | 592 | # |
| 593 | # CONFIG_USB_CATC is not set | ||
| 594 | # CONFIG_USB_KAWETH is not set | ||
| 595 | # CONFIG_USB_PEGASUS is not set | ||
| 596 | # CONFIG_USB_RTL8150 is not set | ||
| 597 | # CONFIG_USB_USBNET_MII is not set | ||
| 598 | # CONFIG_USB_USBNET is not set | ||
| 603 | # CONFIG_WAN is not set | 599 | # CONFIG_WAN is not set |
| 604 | # CONFIG_FDDI is not set | 600 | # CONFIG_FDDI is not set |
| 605 | # CONFIG_HIPPI is not set | 601 | # CONFIG_HIPPI is not set |
| @@ -612,27 +608,23 @@ CONFIG_PPP_DEFLATE=m | |||
| 612 | CONFIG_PPP_BSDCOMP=m | 608 | CONFIG_PPP_BSDCOMP=m |
| 613 | # CONFIG_PPP_MPPE is not set | 609 | # CONFIG_PPP_MPPE is not set |
| 614 | CONFIG_PPPOE=m | 610 | CONFIG_PPPOE=m |
| 611 | # CONFIG_PPPOL2TP is not set | ||
| 615 | # CONFIG_SLIP is not set | 612 | # CONFIG_SLIP is not set |
| 613 | CONFIG_SLHC=m | ||
| 616 | # CONFIG_NET_FC is not set | 614 | # CONFIG_NET_FC is not set |
| 617 | # CONFIG_SHAPER is not set | 615 | # CONFIG_SHAPER is not set |
| 618 | # CONFIG_NETCONSOLE is not set | 616 | # CONFIG_NETCONSOLE is not set |
| 619 | # CONFIG_NETPOLL is not set | 617 | # CONFIG_NETPOLL is not set |
| 620 | # CONFIG_NET_POLL_CONTROLLER is not set | 618 | # CONFIG_NET_POLL_CONTROLLER is not set |
| 621 | |||
| 622 | # | ||
| 623 | # ISDN subsystem | ||
| 624 | # | ||
| 625 | # CONFIG_ISDN is not set | 619 | # CONFIG_ISDN is not set |
| 626 | |||
| 627 | # | ||
| 628 | # Telephony Support | ||
| 629 | # | ||
| 630 | # CONFIG_PHONE is not set | 620 | # CONFIG_PHONE is not set |
| 631 | 621 | ||
| 632 | # | 622 | # |
| 633 | # Input device support | 623 | # Input device support |
| 634 | # | 624 | # |
| 635 | CONFIG_INPUT=y | 625 | CONFIG_INPUT=y |
| 626 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
| 627 | # CONFIG_INPUT_POLLDEV is not set | ||
| 636 | 628 | ||
| 637 | # | 629 | # |
| 638 | # Userland interfaces | 630 | # Userland interfaces |
| @@ -655,11 +647,14 @@ CONFIG_INPUT_KEYBOARD=y | |||
| 655 | # CONFIG_KEYBOARD_LKKBD is not set | 647 | # CONFIG_KEYBOARD_LKKBD is not set |
| 656 | # CONFIG_KEYBOARD_XTKBD is not set | 648 | # CONFIG_KEYBOARD_XTKBD is not set |
| 657 | # CONFIG_KEYBOARD_NEWTON is not set | 649 | # CONFIG_KEYBOARD_NEWTON is not set |
| 650 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
| 658 | CONFIG_INPUT_MOUSE=y | 651 | CONFIG_INPUT_MOUSE=y |
| 659 | # CONFIG_MOUSE_PS2 is not set | 652 | # CONFIG_MOUSE_PS2 is not set |
| 660 | # CONFIG_MOUSE_SERIAL is not set | 653 | # CONFIG_MOUSE_SERIAL is not set |
| 654 | # CONFIG_MOUSE_APPLETOUCH is not set | ||
| 661 | # CONFIG_MOUSE_VSXXXAA is not set | 655 | # CONFIG_MOUSE_VSXXXAA is not set |
| 662 | # CONFIG_INPUT_JOYSTICK is not set | 656 | # CONFIG_INPUT_JOYSTICK is not set |
| 657 | # CONFIG_INPUT_TABLET is not set | ||
| 663 | # CONFIG_INPUT_TOUCHSCREEN is not set | 658 | # CONFIG_INPUT_TOUCHSCREEN is not set |
| 664 | # CONFIG_INPUT_MISC is not set | 659 | # CONFIG_INPUT_MISC is not set |
| 665 | 660 | ||
| @@ -679,6 +674,7 @@ CONFIG_SERIO_LIBPS2=m | |||
| 679 | CONFIG_VT=y | 674 | CONFIG_VT=y |
| 680 | CONFIG_VT_CONSOLE=y | 675 | CONFIG_VT_CONSOLE=y |
| 681 | CONFIG_HW_CONSOLE=y | 676 | CONFIG_HW_CONSOLE=y |
| 677 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 682 | # CONFIG_SERIAL_NONSTANDARD is not set | 678 | # CONFIG_SERIAL_NONSTANDARD is not set |
| 683 | 679 | ||
| 684 | # | 680 | # |
| @@ -686,6 +682,7 @@ CONFIG_HW_CONSOLE=y | |||
| 686 | # | 682 | # |
| 687 | CONFIG_SERIAL_8250=y | 683 | CONFIG_SERIAL_8250=y |
| 688 | CONFIG_SERIAL_8250_CONSOLE=y | 684 | CONFIG_SERIAL_8250_CONSOLE=y |
| 685 | CONFIG_SERIAL_8250_PCI=y | ||
| 689 | CONFIG_SERIAL_8250_NR_UARTS=13 | 686 | CONFIG_SERIAL_8250_NR_UARTS=13 |
| 690 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 687 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
| 691 | CONFIG_SERIAL_8250_EXTENDED=y | 688 | CONFIG_SERIAL_8250_EXTENDED=y |
| @@ -704,38 +701,19 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
| 704 | CONFIG_UNIX98_PTYS=y | 701 | CONFIG_UNIX98_PTYS=y |
| 705 | CONFIG_LEGACY_PTYS=y | 702 | CONFIG_LEGACY_PTYS=y |
| 706 | CONFIG_LEGACY_PTY_COUNT=256 | 703 | CONFIG_LEGACY_PTY_COUNT=256 |
| 707 | |||
| 708 | # | ||
| 709 | # IPMI | ||
| 710 | # | ||
| 711 | # CONFIG_IPMI_HANDLER is not set | 704 | # CONFIG_IPMI_HANDLER is not set |
| 712 | |||
| 713 | # | ||
| 714 | # Watchdog Cards | ||
| 715 | # | ||
| 716 | # CONFIG_WATCHDOG is not set | 705 | # CONFIG_WATCHDOG is not set |
| 706 | # CONFIG_HW_RANDOM is not set | ||
| 717 | CONFIG_GEN_RTC=y | 707 | CONFIG_GEN_RTC=y |
| 718 | CONFIG_GEN_RTC_X=y | 708 | CONFIG_GEN_RTC_X=y |
| 719 | # CONFIG_DTLK is not set | ||
| 720 | # CONFIG_R3964 is not set | 709 | # CONFIG_R3964 is not set |
| 721 | # CONFIG_APPLICOM is not set | 710 | # CONFIG_APPLICOM is not set |
| 722 | 711 | # CONFIG_AGP is not set | |
| 723 | # | ||
| 724 | # Ftape, the floppy tape device driver | ||
| 725 | # | ||
| 726 | # CONFIG_DRM is not set | 712 | # CONFIG_DRM is not set |
| 727 | CONFIG_RAW_DRIVER=y | 713 | CONFIG_RAW_DRIVER=y |
| 728 | CONFIG_MAX_RAW_DEVS=256 | 714 | CONFIG_MAX_RAW_DEVS=256 |
| 729 | |||
| 730 | # | ||
| 731 | # TPM devices | ||
| 732 | # | ||
| 733 | # CONFIG_TCG_TPM is not set | 715 | # CONFIG_TCG_TPM is not set |
| 734 | # CONFIG_TELCLOCK is not set | 716 | CONFIG_DEVPORT=y |
| 735 | |||
| 736 | # | ||
| 737 | # I2C support | ||
| 738 | # | ||
| 739 | # CONFIG_I2C is not set | 717 | # CONFIG_I2C is not set |
| 740 | 718 | ||
| 741 | # | 719 | # |
| @@ -743,46 +721,59 @@ CONFIG_MAX_RAW_DEVS=256 | |||
| 743 | # | 721 | # |
| 744 | # CONFIG_SPI is not set | 722 | # CONFIG_SPI is not set |
| 745 | # CONFIG_SPI_MASTER is not set | 723 | # CONFIG_SPI_MASTER is not set |
| 746 | |||
| 747 | # | ||
| 748 | # Dallas's 1-wire bus | ||
| 749 | # | ||
| 750 | # CONFIG_W1 is not set | 724 | # CONFIG_W1 is not set |
| 751 | 725 | # CONFIG_POWER_SUPPLY is not set | |
| 752 | # | ||
| 753 | # Hardware Monitoring support | ||
| 754 | # | ||
| 755 | # CONFIG_HWMON is not set | 726 | # CONFIG_HWMON is not set |
| 756 | # CONFIG_HWMON_VID is not set | ||
| 757 | 727 | ||
| 758 | # | 728 | # |
| 759 | # Misc devices | 729 | # Sonics Silicon Backplane |
| 760 | # | 730 | # |
| 731 | CONFIG_SSB_POSSIBLE=y | ||
| 732 | # CONFIG_SSB is not set | ||
| 761 | 733 | ||
| 762 | # | 734 | # |
| 763 | # Multimedia Capabilities Port drivers | 735 | # Multifunction device drivers |
| 764 | # | 736 | # |
| 737 | # CONFIG_MFD_SM501 is not set | ||
| 765 | 738 | ||
| 766 | # | 739 | # |
| 767 | # Multimedia devices | 740 | # Multimedia devices |
| 768 | # | 741 | # |
| 769 | # CONFIG_VIDEO_DEV is not set | 742 | # CONFIG_VIDEO_DEV is not set |
| 743 | # CONFIG_DVB_CORE is not set | ||
| 744 | # CONFIG_DAB is not set | ||
| 770 | 745 | ||
| 771 | # | 746 | # |
| 772 | # Digital Video Broadcasting Devices | 747 | # Graphics support |
| 773 | # | 748 | # |
| 774 | # CONFIG_DVB is not set | 749 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
| 775 | 750 | ||
| 776 | # | 751 | # |
| 777 | # Graphics support | 752 | # Display device support |
| 778 | # | 753 | # |
| 754 | # CONFIG_DISPLAY_SUPPORT is not set | ||
| 755 | # CONFIG_VGASTATE is not set | ||
| 756 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
| 779 | CONFIG_FB=y | 757 | CONFIG_FB=y |
| 758 | # CONFIG_FIRMWARE_EDID is not set | ||
| 759 | # CONFIG_FB_DDC is not set | ||
| 780 | CONFIG_FB_CFB_FILLRECT=y | 760 | CONFIG_FB_CFB_FILLRECT=y |
| 781 | CONFIG_FB_CFB_COPYAREA=y | 761 | CONFIG_FB_CFB_COPYAREA=y |
| 782 | CONFIG_FB_CFB_IMAGEBLIT=y | 762 | CONFIG_FB_CFB_IMAGEBLIT=y |
| 763 | # CONFIG_FB_SYS_FILLRECT is not set | ||
| 764 | # CONFIG_FB_SYS_COPYAREA is not set | ||
| 765 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
| 766 | # CONFIG_FB_SYS_FOPS is not set | ||
| 767 | CONFIG_FB_DEFERRED_IO=y | ||
| 768 | # CONFIG_FB_SVGALIB is not set | ||
| 783 | # CONFIG_FB_MACMODES is not set | 769 | # CONFIG_FB_MACMODES is not set |
| 770 | # CONFIG_FB_BACKLIGHT is not set | ||
| 784 | # CONFIG_FB_MODE_HELPERS is not set | 771 | # CONFIG_FB_MODE_HELPERS is not set |
| 785 | # CONFIG_FB_TILEBLITTING is not set | 772 | # CONFIG_FB_TILEBLITTING is not set |
| 773 | |||
| 774 | # | ||
| 775 | # Frame buffer hardware drivers | ||
| 776 | # | ||
| 786 | # CONFIG_FB_CIRRUS is not set | 777 | # CONFIG_FB_CIRRUS is not set |
| 787 | # CONFIG_FB_PM2 is not set | 778 | # CONFIG_FB_PM2 is not set |
| 788 | # CONFIG_FB_CYBER2000 is not set | 779 | # CONFIG_FB_CYBER2000 is not set |
| @@ -793,17 +784,20 @@ CONFIG_FB_STI=y | |||
| 793 | # CONFIG_FB_NVIDIA is not set | 784 | # CONFIG_FB_NVIDIA is not set |
| 794 | # CONFIG_FB_RIVA is not set | 785 | # CONFIG_FB_RIVA is not set |
| 795 | # CONFIG_FB_MATROX is not set | 786 | # CONFIG_FB_MATROX is not set |
| 796 | # CONFIG_FB_RADEON_OLD is not set | ||
| 797 | # CONFIG_FB_RADEON is not set | 787 | # CONFIG_FB_RADEON is not set |
| 798 | # CONFIG_FB_ATY128 is not set | 788 | # CONFIG_FB_ATY128 is not set |
| 799 | # CONFIG_FB_ATY is not set | 789 | # CONFIG_FB_ATY is not set |
| 790 | # CONFIG_FB_S3 is not set | ||
| 800 | # CONFIG_FB_SAVAGE is not set | 791 | # CONFIG_FB_SAVAGE is not set |
| 801 | # CONFIG_FB_SIS is not set | 792 | # CONFIG_FB_SIS is not set |
| 802 | # CONFIG_FB_NEOMAGIC is not set | 793 | # CONFIG_FB_NEOMAGIC is not set |
| 803 | # CONFIG_FB_KYRO is not set | 794 | # CONFIG_FB_KYRO is not set |
| 804 | # CONFIG_FB_3DFX is not set | 795 | # CONFIG_FB_3DFX is not set |
| 805 | # CONFIG_FB_VOODOO1 is not set | 796 | # CONFIG_FB_VOODOO1 is not set |
| 797 | # CONFIG_FB_VT8623 is not set | ||
| 806 | # CONFIG_FB_TRIDENT is not set | 798 | # CONFIG_FB_TRIDENT is not set |
| 799 | # CONFIG_FB_ARK is not set | ||
| 800 | # CONFIG_FB_PM3 is not set | ||
| 807 | # CONFIG_FB_VIRTUAL is not set | 801 | # CONFIG_FB_VIRTUAL is not set |
| 808 | 802 | ||
| 809 | # | 803 | # |
| @@ -813,21 +807,17 @@ CONFIG_DUMMY_CONSOLE=y | |||
| 813 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 | 807 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 |
| 814 | CONFIG_DUMMY_CONSOLE_ROWS=64 | 808 | CONFIG_DUMMY_CONSOLE_ROWS=64 |
| 815 | CONFIG_FRAMEBUFFER_CONSOLE=y | 809 | CONFIG_FRAMEBUFFER_CONSOLE=y |
| 810 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
| 816 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 811 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
| 817 | CONFIG_STI_CONSOLE=y | 812 | CONFIG_STI_CONSOLE=y |
| 818 | # CONFIG_FONTS is not set | 813 | # CONFIG_FONTS is not set |
| 819 | CONFIG_FONT_8x8=y | 814 | CONFIG_FONT_8x8=y |
| 820 | CONFIG_FONT_8x16=y | 815 | CONFIG_FONT_8x16=y |
| 821 | |||
| 822 | # | ||
| 823 | # Logo configuration | ||
| 824 | # | ||
| 825 | CONFIG_LOGO=y | 816 | CONFIG_LOGO=y |
| 826 | # CONFIG_LOGO_LINUX_MONO is not set | 817 | # CONFIG_LOGO_LINUX_MONO is not set |
| 827 | # CONFIG_LOGO_LINUX_VGA16 is not set | 818 | # CONFIG_LOGO_LINUX_VGA16 is not set |
| 828 | # CONFIG_LOGO_LINUX_CLUT224 is not set | 819 | # CONFIG_LOGO_LINUX_CLUT224 is not set |
| 829 | CONFIG_LOGO_PARISC_CLUT224=y | 820 | CONFIG_LOGO_PARISC_CLUT224=y |
| 830 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 831 | 821 | ||
| 832 | # | 822 | # |
| 833 | # Sound | 823 | # Sound |
| @@ -845,9 +835,11 @@ CONFIG_SND_SEQUENCER=y | |||
| 845 | CONFIG_SND_OSSEMUL=y | 835 | CONFIG_SND_OSSEMUL=y |
| 846 | CONFIG_SND_MIXER_OSS=y | 836 | CONFIG_SND_MIXER_OSS=y |
| 847 | CONFIG_SND_PCM_OSS=y | 837 | CONFIG_SND_PCM_OSS=y |
| 838 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
| 848 | CONFIG_SND_SEQUENCER_OSS=y | 839 | CONFIG_SND_SEQUENCER_OSS=y |
| 849 | # CONFIG_SND_DYNAMIC_MINORS is not set | 840 | # CONFIG_SND_DYNAMIC_MINORS is not set |
| 850 | CONFIG_SND_SUPPORT_OLD_API=y | 841 | CONFIG_SND_SUPPORT_OLD_API=y |
| 842 | CONFIG_SND_VERBOSE_PROCFS=y | ||
| 851 | # CONFIG_SND_VERBOSE_PRINTK is not set | 843 | # CONFIG_SND_VERBOSE_PRINTK is not set |
| 852 | # CONFIG_SND_DEBUG is not set | 844 | # CONFIG_SND_DEBUG is not set |
| 853 | 845 | ||
| @@ -855,7 +847,6 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
| 855 | # Generic devices | 847 | # Generic devices |
| 856 | # | 848 | # |
| 857 | CONFIG_SND_AC97_CODEC=y | 849 | CONFIG_SND_AC97_CODEC=y |
| 858 | CONFIG_SND_AC97_BUS=y | ||
| 859 | # CONFIG_SND_DUMMY is not set | 850 | # CONFIG_SND_DUMMY is not set |
| 860 | # CONFIG_SND_VIRMIDI is not set | 851 | # CONFIG_SND_VIRMIDI is not set |
| 861 | # CONFIG_SND_MTPAV is not set | 852 | # CONFIG_SND_MTPAV is not set |
| @@ -866,7 +857,7 @@ CONFIG_SND_AC97_BUS=y | |||
| 866 | # PCI devices | 857 | # PCI devices |
| 867 | # | 858 | # |
| 868 | CONFIG_SND_AD1889=y | 859 | CONFIG_SND_AD1889=y |
| 869 | # CONFIG_SND_AD1889_OPL3 is not set | 860 | # CONFIG_SND_ALS300 is not set |
| 870 | # CONFIG_SND_ALI5451 is not set | 861 | # CONFIG_SND_ALI5451 is not set |
| 871 | # CONFIG_SND_ATIIXP is not set | 862 | # CONFIG_SND_ATIIXP is not set |
| 872 | # CONFIG_SND_ATIIXP_MODEM is not set | 863 | # CONFIG_SND_ATIIXP_MODEM is not set |
| @@ -879,6 +870,18 @@ CONFIG_SND_AD1889=y | |||
| 879 | # CONFIG_SND_CMIPCI is not set | 870 | # CONFIG_SND_CMIPCI is not set |
| 880 | # CONFIG_SND_CS4281 is not set | 871 | # CONFIG_SND_CS4281 is not set |
| 881 | # CONFIG_SND_CS46XX is not set | 872 | # CONFIG_SND_CS46XX is not set |
| 873 | # CONFIG_SND_DARLA20 is not set | ||
| 874 | # CONFIG_SND_GINA20 is not set | ||
| 875 | # CONFIG_SND_LAYLA20 is not set | ||
| 876 | # CONFIG_SND_DARLA24 is not set | ||
| 877 | # CONFIG_SND_GINA24 is not set | ||
| 878 | # CONFIG_SND_LAYLA24 is not set | ||
| 879 | # CONFIG_SND_MONA is not set | ||
| 880 | # CONFIG_SND_MIA is not set | ||
| 881 | # CONFIG_SND_ECHO3G is not set | ||
| 882 | # CONFIG_SND_INDIGO is not set | ||
| 883 | # CONFIG_SND_INDIGOIO is not set | ||
| 884 | # CONFIG_SND_INDIGODJ is not set | ||
| 882 | # CONFIG_SND_EMU10K1 is not set | 885 | # CONFIG_SND_EMU10K1 is not set |
| 883 | # CONFIG_SND_EMU10K1X is not set | 886 | # CONFIG_SND_EMU10K1X is not set |
| 884 | # CONFIG_SND_ENS1370 is not set | 887 | # CONFIG_SND_ENS1370 is not set |
| @@ -898,6 +901,7 @@ CONFIG_SND_AD1889=y | |||
| 898 | # CONFIG_SND_MIXART is not set | 901 | # CONFIG_SND_MIXART is not set |
| 899 | # CONFIG_SND_NM256 is not set | 902 | # CONFIG_SND_NM256 is not set |
| 900 | # CONFIG_SND_PCXHR is not set | 903 | # CONFIG_SND_PCXHR is not set |
| 904 | # CONFIG_SND_RIPTIDE is not set | ||
| 901 | # CONFIG_SND_RME32 is not set | 905 | # CONFIG_SND_RME32 is not set |
| 902 | # CONFIG_SND_RME96 is not set | 906 | # CONFIG_SND_RME96 is not set |
| 903 | # CONFIG_SND_RME9652 is not set | 907 | # CONFIG_SND_RME9652 is not set |
| @@ -907,22 +911,43 @@ CONFIG_SND_AD1889=y | |||
| 907 | # CONFIG_SND_VIA82XX_MODEM is not set | 911 | # CONFIG_SND_VIA82XX_MODEM is not set |
| 908 | # CONFIG_SND_VX222 is not set | 912 | # CONFIG_SND_VX222 is not set |
| 909 | # CONFIG_SND_YMFPCI is not set | 913 | # CONFIG_SND_YMFPCI is not set |
| 914 | # CONFIG_SND_AC97_POWER_SAVE is not set | ||
| 910 | 915 | ||
| 911 | # | 916 | # |
| 912 | # USB devices | 917 | # USB devices |
| 913 | # | 918 | # |
| 914 | # CONFIG_SND_USB_AUDIO is not set | 919 | # CONFIG_SND_USB_AUDIO is not set |
| 920 | # CONFIG_SND_USB_CAIAQ is not set | ||
| 921 | |||
| 922 | # | ||
| 923 | # System on Chip audio support | ||
| 924 | # | ||
| 925 | # CONFIG_SND_SOC is not set | ||
| 926 | |||
| 927 | # | ||
| 928 | # SoC Audio support for SuperH | ||
| 929 | # | ||
| 915 | 930 | ||
| 916 | # | 931 | # |
| 917 | # Open Sound System | 932 | # Open Sound System |
| 918 | # | 933 | # |
| 919 | # CONFIG_SOUND_PRIME is not set | 934 | # CONFIG_SOUND_PRIME is not set |
| 935 | CONFIG_AC97_BUS=y | ||
| 936 | CONFIG_HID_SUPPORT=y | ||
| 937 | CONFIG_HID=y | ||
| 938 | # CONFIG_HID_DEBUG is not set | ||
| 920 | 939 | ||
| 921 | # | 940 | # |
| 922 | # USB support | 941 | # USB Input Devices |
| 923 | # | 942 | # |
| 943 | CONFIG_USB_HID=y | ||
| 944 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
| 945 | # CONFIG_HID_FF is not set | ||
| 946 | CONFIG_USB_HIDDEV=y | ||
| 947 | CONFIG_USB_SUPPORT=y | ||
| 924 | CONFIG_USB_ARCH_HAS_HCD=y | 948 | CONFIG_USB_ARCH_HAS_HCD=y |
| 925 | CONFIG_USB_ARCH_HAS_OHCI=y | 949 | CONFIG_USB_ARCH_HAS_OHCI=y |
| 950 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
| 926 | CONFIG_USB=y | 951 | CONFIG_USB=y |
| 927 | CONFIG_USB_DEBUG=y | 952 | CONFIG_USB_DEBUG=y |
| 928 | 953 | ||
| @@ -930,7 +955,7 @@ CONFIG_USB_DEBUG=y | |||
| 930 | # Miscellaneous USB options | 955 | # Miscellaneous USB options |
| 931 | # | 956 | # |
| 932 | CONFIG_USB_DEVICEFS=y | 957 | CONFIG_USB_DEVICEFS=y |
| 933 | # CONFIG_USB_BANDWIDTH is not set | 958 | CONFIG_USB_DEVICE_CLASS=y |
| 934 | # CONFIG_USB_DYNAMIC_MINORS is not set | 959 | # CONFIG_USB_DYNAMIC_MINORS is not set |
| 935 | # CONFIG_USB_OTG is not set | 960 | # CONFIG_USB_OTG is not set |
| 936 | 961 | ||
| @@ -940,15 +965,16 @@ CONFIG_USB_DEVICEFS=y | |||
| 940 | # CONFIG_USB_EHCI_HCD is not set | 965 | # CONFIG_USB_EHCI_HCD is not set |
| 941 | # CONFIG_USB_ISP116X_HCD is not set | 966 | # CONFIG_USB_ISP116X_HCD is not set |
| 942 | CONFIG_USB_OHCI_HCD=y | 967 | CONFIG_USB_OHCI_HCD=y |
| 943 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | 968 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
| 969 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
| 944 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 970 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
| 945 | # CONFIG_USB_UHCI_HCD is not set | 971 | # CONFIG_USB_UHCI_HCD is not set |
| 946 | # CONFIG_USB_SL811_HCD is not set | 972 | # CONFIG_USB_SL811_HCD is not set |
| 973 | # CONFIG_USB_R8A66597_HCD is not set | ||
| 947 | 974 | ||
| 948 | # | 975 | # |
| 949 | # USB Device Class drivers | 976 | # USB Device Class drivers |
| 950 | # | 977 | # |
| 951 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set | ||
| 952 | # CONFIG_USB_ACM is not set | 978 | # CONFIG_USB_ACM is not set |
| 953 | CONFIG_USB_PRINTER=m | 979 | CONFIG_USB_PRINTER=m |
| 954 | 980 | ||
| @@ -970,54 +996,14 @@ CONFIG_USB_STORAGE_SDDR09=y | |||
| 970 | CONFIG_USB_STORAGE_SDDR55=y | 996 | CONFIG_USB_STORAGE_SDDR55=y |
| 971 | CONFIG_USB_STORAGE_JUMPSHOT=y | 997 | CONFIG_USB_STORAGE_JUMPSHOT=y |
| 972 | # CONFIG_USB_STORAGE_ALAUDA is not set | 998 | # CONFIG_USB_STORAGE_ALAUDA is not set |
| 999 | # CONFIG_USB_STORAGE_KARMA is not set | ||
| 973 | # CONFIG_USB_LIBUSUAL is not set | 1000 | # CONFIG_USB_LIBUSUAL is not set |
| 974 | 1001 | ||
| 975 | # | 1002 | # |
| 976 | # USB Input Devices | ||
| 977 | # | ||
| 978 | CONFIG_USB_HID=y | ||
| 979 | CONFIG_USB_HIDINPUT=y | ||
| 980 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
| 981 | # CONFIG_HID_FF is not set | ||
| 982 | CONFIG_USB_HIDDEV=y | ||
| 983 | # CONFIG_USB_AIPTEK is not set | ||
| 984 | # CONFIG_USB_WACOM is not set | ||
| 985 | # CONFIG_USB_ACECAD is not set | ||
| 986 | # CONFIG_USB_KBTAB is not set | ||
| 987 | # CONFIG_USB_POWERMATE is not set | ||
| 988 | # CONFIG_USB_MTOUCH is not set | ||
| 989 | # CONFIG_USB_ITMTOUCH is not set | ||
| 990 | # CONFIG_USB_EGALAX is not set | ||
| 991 | # CONFIG_USB_YEALINK is not set | ||
| 992 | # CONFIG_USB_XPAD is not set | ||
| 993 | # CONFIG_USB_ATI_REMOTE is not set | ||
| 994 | # CONFIG_USB_ATI_REMOTE2 is not set | ||
| 995 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
| 996 | # CONFIG_USB_APPLETOUCH is not set | ||
| 997 | |||
| 998 | # | ||
| 999 | # USB Imaging devices | 1003 | # USB Imaging devices |
| 1000 | # | 1004 | # |
| 1001 | CONFIG_USB_MDC800=m | 1005 | CONFIG_USB_MDC800=m |
| 1002 | CONFIG_USB_MICROTEK=m | 1006 | CONFIG_USB_MICROTEK=m |
| 1003 | |||
| 1004 | # | ||
| 1005 | # USB Multimedia devices | ||
| 1006 | # | ||
| 1007 | # CONFIG_USB_DABUSB is not set | ||
| 1008 | |||
| 1009 | # | ||
| 1010 | # Video4Linux support is needed for USB Multimedia device support | ||
| 1011 | # | ||
| 1012 | |||
| 1013 | # | ||
| 1014 | # USB Network Adapters | ||
| 1015 | # | ||
| 1016 | # CONFIG_USB_CATC is not set | ||
| 1017 | # CONFIG_USB_KAWETH is not set | ||
| 1018 | # CONFIG_USB_PEGASUS is not set | ||
| 1019 | # CONFIG_USB_RTL8150 is not set | ||
| 1020 | # CONFIG_USB_USBNET is not set | ||
| 1021 | # CONFIG_USB_MON is not set | 1007 | # CONFIG_USB_MON is not set |
| 1022 | 1008 | ||
| 1023 | # | 1009 | # |
| @@ -1034,16 +1020,22 @@ CONFIG_USB_MICROTEK=m | |||
| 1034 | # | 1020 | # |
| 1035 | # CONFIG_USB_EMI62 is not set | 1021 | # CONFIG_USB_EMI62 is not set |
| 1036 | # CONFIG_USB_EMI26 is not set | 1022 | # CONFIG_USB_EMI26 is not set |
| 1023 | # CONFIG_USB_ADUTUX is not set | ||
| 1037 | # CONFIG_USB_AUERSWALD is not set | 1024 | # CONFIG_USB_AUERSWALD is not set |
| 1038 | # CONFIG_USB_RIO500 is not set | 1025 | # CONFIG_USB_RIO500 is not set |
| 1039 | CONFIG_USB_LEGOTOWER=m | 1026 | CONFIG_USB_LEGOTOWER=m |
| 1040 | # CONFIG_USB_LCD is not set | 1027 | # CONFIG_USB_LCD is not set |
| 1028 | # CONFIG_USB_BERRY_CHARGE is not set | ||
| 1041 | # CONFIG_USB_LED is not set | 1029 | # CONFIG_USB_LED is not set |
| 1030 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
| 1042 | # CONFIG_USB_CYTHERM is not set | 1031 | # CONFIG_USB_CYTHERM is not set |
| 1043 | # CONFIG_USB_PHIDGETKIT is not set | 1032 | # CONFIG_USB_PHIDGET is not set |
| 1044 | # CONFIG_USB_PHIDGETSERVO is not set | ||
| 1045 | # CONFIG_USB_IDMOUSE is not set | 1033 | # CONFIG_USB_IDMOUSE is not set |
| 1034 | # CONFIG_USB_FTDI_ELAN is not set | ||
| 1035 | # CONFIG_USB_APPLEDISPLAY is not set | ||
| 1046 | # CONFIG_USB_LD is not set | 1036 | # CONFIG_USB_LD is not set |
| 1037 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
| 1038 | # CONFIG_USB_IOWARRIOR is not set | ||
| 1047 | # CONFIG_USB_TEST is not set | 1039 | # CONFIG_USB_TEST is not set |
| 1048 | 1040 | ||
| 1049 | # | 1041 | # |
| @@ -1054,22 +1046,30 @@ CONFIG_USB_LEGOTOWER=m | |||
| 1054 | # USB Gadget Support | 1046 | # USB Gadget Support |
| 1055 | # | 1047 | # |
| 1056 | # CONFIG_USB_GADGET is not set | 1048 | # CONFIG_USB_GADGET is not set |
| 1049 | # CONFIG_MMC is not set | ||
| 1050 | # CONFIG_NEW_LEDS is not set | ||
| 1051 | # CONFIG_INFINIBAND is not set | ||
| 1052 | # CONFIG_RTC_CLASS is not set | ||
| 1057 | 1053 | ||
| 1058 | # | 1054 | # |
| 1059 | # MMC/SD Card support | 1055 | # DMA Engine support |
| 1060 | # | 1056 | # |
| 1061 | # CONFIG_MMC is not set | 1057 | # CONFIG_DMA_ENGINE is not set |
| 1062 | 1058 | ||
| 1063 | # | 1059 | # |
| 1064 | # InfiniBand support | 1060 | # DMA Clients |
| 1065 | # | 1061 | # |
| 1066 | # CONFIG_INFINIBAND is not set | ||
| 1067 | 1062 | ||
| 1068 | # | 1063 | # |
| 1069 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 1064 | # DMA Devices |
| 1070 | # | 1065 | # |
| 1071 | 1066 | ||
| 1072 | # | 1067 | # |
| 1068 | # Userspace I/O | ||
| 1069 | # | ||
| 1070 | # CONFIG_UIO is not set | ||
| 1071 | |||
| 1072 | # | ||
| 1073 | # File systems | 1073 | # File systems |
| 1074 | # | 1074 | # |
| 1075 | CONFIG_EXT2_FS=y | 1075 | CONFIG_EXT2_FS=y |
| @@ -1077,21 +1077,23 @@ CONFIG_EXT2_FS=y | |||
| 1077 | # CONFIG_EXT2_FS_XIP is not set | 1077 | # CONFIG_EXT2_FS_XIP is not set |
| 1078 | CONFIG_EXT3_FS=y | 1078 | CONFIG_EXT3_FS=y |
| 1079 | # CONFIG_EXT3_FS_XATTR is not set | 1079 | # CONFIG_EXT3_FS_XATTR is not set |
| 1080 | # CONFIG_EXT4DEV_FS is not set | ||
| 1080 | CONFIG_JBD=y | 1081 | CONFIG_JBD=y |
| 1081 | # CONFIG_JBD_DEBUG is not set | 1082 | # CONFIG_JBD_DEBUG is not set |
| 1082 | # CONFIG_REISERFS_FS is not set | 1083 | # CONFIG_REISERFS_FS is not set |
| 1083 | # CONFIG_JFS_FS is not set | 1084 | # CONFIG_JFS_FS is not set |
| 1084 | # CONFIG_FS_POSIX_ACL is not set | 1085 | # CONFIG_FS_POSIX_ACL is not set |
| 1085 | CONFIG_XFS_FS=m | 1086 | CONFIG_XFS_FS=m |
| 1086 | CONFIG_XFS_EXPORT=y | ||
| 1087 | # CONFIG_XFS_QUOTA is not set | 1087 | # CONFIG_XFS_QUOTA is not set |
| 1088 | # CONFIG_XFS_SECURITY is not set | 1088 | # CONFIG_XFS_SECURITY is not set |
| 1089 | # CONFIG_XFS_POSIX_ACL is not set | 1089 | # CONFIG_XFS_POSIX_ACL is not set |
| 1090 | # CONFIG_XFS_RT is not set | 1090 | # CONFIG_XFS_RT is not set |
| 1091 | # CONFIG_GFS2_FS is not set | ||
| 1091 | # CONFIG_OCFS2_FS is not set | 1092 | # CONFIG_OCFS2_FS is not set |
| 1092 | # CONFIG_MINIX_FS is not set | 1093 | # CONFIG_MINIX_FS is not set |
| 1093 | # CONFIG_ROMFS_FS is not set | 1094 | # CONFIG_ROMFS_FS is not set |
| 1094 | CONFIG_INOTIFY=y | 1095 | CONFIG_INOTIFY=y |
| 1096 | CONFIG_INOTIFY_USER=y | ||
| 1095 | # CONFIG_QUOTA is not set | 1097 | # CONFIG_QUOTA is not set |
| 1096 | CONFIG_DNOTIFY=y | 1098 | CONFIG_DNOTIFY=y |
| 1097 | # CONFIG_AUTOFS_FS is not set | 1099 | # CONFIG_AUTOFS_FS is not set |
| @@ -1121,11 +1123,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
| 1121 | # | 1123 | # |
| 1122 | CONFIG_PROC_FS=y | 1124 | CONFIG_PROC_FS=y |
| 1123 | CONFIG_PROC_KCORE=y | 1125 | CONFIG_PROC_KCORE=y |
| 1126 | CONFIG_PROC_SYSCTL=y | ||
| 1124 | CONFIG_SYSFS=y | 1127 | CONFIG_SYSFS=y |
| 1125 | CONFIG_TMPFS=y | 1128 | CONFIG_TMPFS=y |
| 1129 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
| 1126 | # CONFIG_HUGETLB_PAGE is not set | 1130 | # CONFIG_HUGETLB_PAGE is not set |
| 1127 | CONFIG_RAMFS=y | 1131 | CONFIG_RAMFS=y |
| 1128 | # CONFIG_RELAYFS_FS is not set | ||
| 1129 | # CONFIG_CONFIGFS_FS is not set | 1132 | # CONFIG_CONFIGFS_FS is not set |
| 1130 | 1133 | ||
| 1131 | # | 1134 | # |
| @@ -1164,6 +1167,7 @@ CONFIG_LOCKD_V4=y | |||
| 1164 | CONFIG_EXPORTFS=y | 1167 | CONFIG_EXPORTFS=y |
| 1165 | CONFIG_NFS_COMMON=y | 1168 | CONFIG_NFS_COMMON=y |
| 1166 | CONFIG_SUNRPC=y | 1169 | CONFIG_SUNRPC=y |
| 1170 | # CONFIG_SUNRPC_BIND34 is not set | ||
| 1167 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 1171 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
| 1168 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1172 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
| 1169 | # CONFIG_SMB_FS is not set | 1173 | # CONFIG_SMB_FS is not set |
| @@ -1171,7 +1175,6 @@ CONFIG_SUNRPC=y | |||
| 1171 | # CONFIG_NCP_FS is not set | 1175 | # CONFIG_NCP_FS is not set |
| 1172 | # CONFIG_CODA_FS is not set | 1176 | # CONFIG_CODA_FS is not set |
| 1173 | # CONFIG_AFS_FS is not set | 1177 | # CONFIG_AFS_FS is not set |
| 1174 | # CONFIG_9P_FS is not set | ||
| 1175 | 1178 | ||
| 1176 | # | 1179 | # |
| 1177 | # Partition Types | 1180 | # Partition Types |
| @@ -1224,6 +1227,11 @@ CONFIG_NLS_ISO8859_15=m | |||
| 1224 | CONFIG_NLS_UTF8=m | 1227 | CONFIG_NLS_UTF8=m |
| 1225 | 1228 | ||
| 1226 | # | 1229 | # |
| 1230 | # Distributed Lock Manager | ||
| 1231 | # | ||
| 1232 | # CONFIG_DLM is not set | ||
| 1233 | |||
| 1234 | # | ||
| 1227 | # Profiling support | 1235 | # Profiling support |
| 1228 | # | 1236 | # |
| 1229 | CONFIG_PROFILING=y | 1237 | CONFIG_PROFILING=y |
| @@ -1233,21 +1241,32 @@ CONFIG_OPROFILE=m | |||
| 1233 | # Kernel hacking | 1241 | # Kernel hacking |
| 1234 | # | 1242 | # |
| 1235 | # CONFIG_PRINTK_TIME is not set | 1243 | # CONFIG_PRINTK_TIME is not set |
| 1244 | CONFIG_ENABLE_MUST_CHECK=y | ||
| 1236 | CONFIG_MAGIC_SYSRQ=y | 1245 | CONFIG_MAGIC_SYSRQ=y |
| 1246 | # CONFIG_UNUSED_SYMBOLS is not set | ||
| 1247 | # CONFIG_DEBUG_FS is not set | ||
| 1248 | CONFIG_HEADERS_CHECK=y | ||
| 1237 | CONFIG_DEBUG_KERNEL=y | 1249 | CONFIG_DEBUG_KERNEL=y |
| 1238 | CONFIG_LOG_BUF_SHIFT=16 | 1250 | # CONFIG_DEBUG_SHIRQ is not set |
| 1239 | CONFIG_DETECT_SOFTLOCKUP=y | 1251 | CONFIG_DETECT_SOFTLOCKUP=y |
| 1252 | CONFIG_SCHED_DEBUG=y | ||
| 1240 | # CONFIG_SCHEDSTATS is not set | 1253 | # CONFIG_SCHEDSTATS is not set |
| 1254 | # CONFIG_TIMER_STATS is not set | ||
| 1241 | # CONFIG_DEBUG_SLAB is not set | 1255 | # CONFIG_DEBUG_SLAB is not set |
| 1242 | CONFIG_DEBUG_MUTEXES=y | 1256 | # CONFIG_DEBUG_RT_MUTEXES is not set |
| 1257 | # CONFIG_RT_MUTEX_TESTER is not set | ||
| 1243 | # CONFIG_DEBUG_SPINLOCK is not set | 1258 | # CONFIG_DEBUG_SPINLOCK is not set |
| 1259 | CONFIG_DEBUG_MUTEXES=y | ||
| 1244 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1260 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 1261 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 1245 | # CONFIG_DEBUG_KOBJECT is not set | 1262 | # CONFIG_DEBUG_KOBJECT is not set |
| 1263 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
| 1246 | # CONFIG_DEBUG_INFO is not set | 1264 | # CONFIG_DEBUG_INFO is not set |
| 1247 | # CONFIG_DEBUG_FS is not set | ||
| 1248 | # CONFIG_DEBUG_VM is not set | 1265 | # CONFIG_DEBUG_VM is not set |
| 1266 | # CONFIG_DEBUG_LIST is not set | ||
| 1249 | CONFIG_FORCED_INLINING=y | 1267 | CONFIG_FORCED_INLINING=y |
| 1250 | # CONFIG_RCU_TORTURE_TEST is not set | 1268 | # CONFIG_RCU_TORTURE_TEST is not set |
| 1269 | # CONFIG_FAULT_INJECTION is not set | ||
| 1251 | CONFIG_DEBUG_RODATA=y | 1270 | CONFIG_DEBUG_RODATA=y |
| 1252 | 1271 | ||
| 1253 | # | 1272 | # |
| @@ -1255,12 +1274,12 @@ CONFIG_DEBUG_RODATA=y | |||
| 1255 | # | 1274 | # |
| 1256 | # CONFIG_KEYS is not set | 1275 | # CONFIG_KEYS is not set |
| 1257 | # CONFIG_SECURITY is not set | 1276 | # CONFIG_SECURITY is not set |
| 1258 | |||
| 1259 | # | ||
| 1260 | # Cryptographic options | ||
| 1261 | # | ||
| 1262 | CONFIG_CRYPTO=y | 1277 | CONFIG_CRYPTO=y |
| 1278 | CONFIG_CRYPTO_ALGAPI=m | ||
| 1279 | CONFIG_CRYPTO_BLKCIPHER=m | ||
| 1280 | CONFIG_CRYPTO_MANAGER=m | ||
| 1263 | # CONFIG_CRYPTO_HMAC is not set | 1281 | # CONFIG_CRYPTO_HMAC is not set |
| 1282 | # CONFIG_CRYPTO_XCBC is not set | ||
| 1264 | CONFIG_CRYPTO_NULL=m | 1283 | CONFIG_CRYPTO_NULL=m |
| 1265 | # CONFIG_CRYPTO_MD4 is not set | 1284 | # CONFIG_CRYPTO_MD4 is not set |
| 1266 | CONFIG_CRYPTO_MD5=m | 1285 | CONFIG_CRYPTO_MD5=m |
| @@ -1269,7 +1288,15 @@ CONFIG_CRYPTO_MD5=m | |||
| 1269 | # CONFIG_CRYPTO_SHA512 is not set | 1288 | # CONFIG_CRYPTO_SHA512 is not set |
| 1270 | # CONFIG_CRYPTO_WP512 is not set | 1289 | # CONFIG_CRYPTO_WP512 is not set |
| 1271 | # CONFIG_CRYPTO_TGR192 is not set | 1290 | # CONFIG_CRYPTO_TGR192 is not set |
| 1291 | # CONFIG_CRYPTO_GF128MUL is not set | ||
| 1292 | # CONFIG_CRYPTO_ECB is not set | ||
| 1293 | CONFIG_CRYPTO_CBC=m | ||
| 1294 | # CONFIG_CRYPTO_PCBC is not set | ||
| 1295 | # CONFIG_CRYPTO_LRW is not set | ||
| 1296 | # CONFIG_CRYPTO_XTS is not set | ||
| 1297 | # CONFIG_CRYPTO_CRYPTD is not set | ||
| 1272 | CONFIG_CRYPTO_DES=m | 1298 | CONFIG_CRYPTO_DES=m |
| 1299 | # CONFIG_CRYPTO_FCRYPT is not set | ||
| 1273 | CONFIG_CRYPTO_BLOWFISH=m | 1300 | CONFIG_CRYPTO_BLOWFISH=m |
| 1274 | # CONFIG_CRYPTO_TWOFISH is not set | 1301 | # CONFIG_CRYPTO_TWOFISH is not set |
| 1275 | # CONFIG_CRYPTO_SERPENT is not set | 1302 | # CONFIG_CRYPTO_SERPENT is not set |
| @@ -1280,21 +1307,28 @@ CONFIG_CRYPTO_BLOWFISH=m | |||
| 1280 | # CONFIG_CRYPTO_ARC4 is not set | 1307 | # CONFIG_CRYPTO_ARC4 is not set |
| 1281 | # CONFIG_CRYPTO_KHAZAD is not set | 1308 | # CONFIG_CRYPTO_KHAZAD is not set |
| 1282 | # CONFIG_CRYPTO_ANUBIS is not set | 1309 | # CONFIG_CRYPTO_ANUBIS is not set |
| 1310 | # CONFIG_CRYPTO_SEED is not set | ||
| 1283 | CONFIG_CRYPTO_DEFLATE=m | 1311 | CONFIG_CRYPTO_DEFLATE=m |
| 1284 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1312 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
| 1285 | CONFIG_CRYPTO_CRC32C=m | 1313 | CONFIG_CRYPTO_CRC32C=m |
| 1314 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
| 1286 | CONFIG_CRYPTO_TEST=m | 1315 | CONFIG_CRYPTO_TEST=m |
| 1287 | 1316 | # CONFIG_CRYPTO_AUTHENC is not set | |
| 1288 | # | 1317 | # CONFIG_CRYPTO_HW is not set |
| 1289 | # Hardware crypto devices | ||
| 1290 | # | ||
| 1291 | 1318 | ||
| 1292 | # | 1319 | # |
| 1293 | # Library routines | 1320 | # Library routines |
| 1294 | # | 1321 | # |
| 1322 | CONFIG_BITREVERSE=y | ||
| 1295 | CONFIG_CRC_CCITT=m | 1323 | CONFIG_CRC_CCITT=m |
| 1296 | # CONFIG_CRC16 is not set | 1324 | # CONFIG_CRC16 is not set |
| 1325 | # CONFIG_CRC_ITU_T is not set | ||
| 1297 | CONFIG_CRC32=y | 1326 | CONFIG_CRC32=y |
| 1327 | # CONFIG_CRC7 is not set | ||
| 1298 | CONFIG_LIBCRC32C=m | 1328 | CONFIG_LIBCRC32C=m |
| 1299 | CONFIG_ZLIB_INFLATE=m | 1329 | CONFIG_ZLIB_INFLATE=m |
| 1300 | CONFIG_ZLIB_DEFLATE=m | 1330 | CONFIG_ZLIB_DEFLATE=m |
| 1331 | CONFIG_PLIST=y | ||
| 1332 | CONFIG_HAS_IOMEM=y | ||
| 1333 | CONFIG_HAS_IOPORT=y | ||
| 1334 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/parisc/defconfig b/arch/parisc/defconfig index b38b58eb9dc2..448a757b06c6 100644 --- a/arch/parisc/defconfig +++ b/arch/parisc/defconfig | |||
| @@ -1,39 +1,51 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.16-pa10 | 3 | # Linux kernel version: 2.6.23 |
| 4 | # Sun Apr 2 15:26:38 2006 | 4 | # Fri Oct 12 20:54:57 2007 |
| 5 | # | 5 | # |
| 6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| 8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
| 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
| 10 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
| 11 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
| 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 13 | CONFIG_GENERIC_BUG=y | ||
| 14 | CONFIG_GENERIC_HWEIGHT=y | ||
| 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 15 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 16 | CONFIG_GENERIC_TIME=y | ||
| 11 | CONFIG_GENERIC_HARDIRQS=y | 17 | CONFIG_GENERIC_HARDIRQS=y |
| 12 | CONFIG_GENERIC_IRQ_PROBE=y | 18 | CONFIG_GENERIC_IRQ_PROBE=y |
| 19 | CONFIG_IRQ_PER_CPU=y | ||
| 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 13 | 21 | ||
| 14 | # | 22 | # |
| 15 | # Code maturity level options | 23 | # General setup |
| 16 | # | 24 | # |
| 17 | CONFIG_EXPERIMENTAL=y | 25 | CONFIG_EXPERIMENTAL=y |
| 18 | CONFIG_BROKEN_ON_SMP=y | 26 | CONFIG_BROKEN_ON_SMP=y |
| 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
| 20 | |||
| 21 | # | ||
| 22 | # General setup | ||
| 23 | # | ||
| 24 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
| 25 | # CONFIG_LOCALVERSION_AUTO is not set | 29 | # CONFIG_LOCALVERSION_AUTO is not set |
| 26 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
| 27 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
| 32 | CONFIG_SYSVIPC_SYSCTL=y | ||
| 28 | CONFIG_POSIX_MQUEUE=y | 33 | CONFIG_POSIX_MQUEUE=y |
| 29 | # CONFIG_BSD_PROCESS_ACCT is not set | 34 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 30 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
| 36 | # CONFIG_USER_NS is not set | ||
| 31 | # CONFIG_AUDIT is not set | 37 | # CONFIG_AUDIT is not set |
| 32 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
| 33 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
| 40 | CONFIG_LOG_BUF_SHIFT=16 | ||
| 41 | CONFIG_SYSFS_DEPRECATED=y | ||
| 42 | # CONFIG_RELAY is not set | ||
| 43 | CONFIG_BLK_DEV_INITRD=y | ||
| 34 | CONFIG_INITRAMFS_SOURCE="" | 44 | CONFIG_INITRAMFS_SOURCE="" |
| 35 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 45 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
| 46 | CONFIG_SYSCTL=y | ||
| 36 | # CONFIG_EMBEDDED is not set | 47 | # CONFIG_EMBEDDED is not set |
| 48 | CONFIG_SYSCTL_SYSCALL=y | ||
| 37 | CONFIG_KALLSYMS=y | 49 | CONFIG_KALLSYMS=y |
| 38 | CONFIG_KALLSYMS_ALL=y | 50 | CONFIG_KALLSYMS_ALL=y |
| 39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 51 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| @@ -43,31 +55,29 @@ CONFIG_BUG=y | |||
| 43 | CONFIG_ELF_CORE=y | 55 | CONFIG_ELF_CORE=y |
| 44 | CONFIG_BASE_FULL=y | 56 | CONFIG_BASE_FULL=y |
| 45 | CONFIG_FUTEX=y | 57 | CONFIG_FUTEX=y |
| 58 | CONFIG_ANON_INODES=y | ||
| 46 | CONFIG_EPOLL=y | 59 | CONFIG_EPOLL=y |
| 60 | CONFIG_SIGNALFD=y | ||
| 61 | CONFIG_EVENTFD=y | ||
| 47 | CONFIG_SHMEM=y | 62 | CONFIG_SHMEM=y |
| 48 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 63 | CONFIG_VM_EVENT_COUNTERS=y |
| 49 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 50 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 51 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 52 | CONFIG_SLAB=y | 64 | CONFIG_SLAB=y |
| 65 | # CONFIG_SLUB is not set | ||
| 66 | # CONFIG_SLOB is not set | ||
| 67 | CONFIG_RT_MUTEXES=y | ||
| 53 | # CONFIG_TINY_SHMEM is not set | 68 | # CONFIG_TINY_SHMEM is not set |
| 54 | CONFIG_BASE_SMALL=0 | 69 | CONFIG_BASE_SMALL=0 |
| 55 | # CONFIG_SLOB is not set | ||
| 56 | |||
| 57 | # | ||
| 58 | # Loadable module support | ||
| 59 | # | ||
| 60 | CONFIG_MODULES=y | 70 | CONFIG_MODULES=y |
| 61 | CONFIG_MODULE_UNLOAD=y | 71 | CONFIG_MODULE_UNLOAD=y |
| 62 | CONFIG_MODULE_FORCE_UNLOAD=y | 72 | CONFIG_MODULE_FORCE_UNLOAD=y |
| 63 | CONFIG_OBSOLETE_MODPARM=y | ||
| 64 | # CONFIG_MODVERSIONS is not set | 73 | # CONFIG_MODVERSIONS is not set |
| 65 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 74 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
| 66 | CONFIG_KMOD=y | 75 | CONFIG_KMOD=y |
| 67 | 76 | CONFIG_BLOCK=y | |
| 68 | # | 77 | # CONFIG_LBD is not set |
| 69 | # Block layer | 78 | # CONFIG_BLK_DEV_IO_TRACE is not set |
| 70 | # | 79 | # CONFIG_LSF is not set |
| 80 | # CONFIG_BLK_DEV_BSG is not set | ||
| 71 | 81 | ||
| 72 | # | 82 | # |
| 73 | # IO Schedulers | 83 | # IO Schedulers |
| @@ -101,6 +111,7 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
| 101 | # CONFIG_PREEMPT is not set | 111 | # CONFIG_PREEMPT is not set |
| 102 | # CONFIG_HZ_100 is not set | 112 | # CONFIG_HZ_100 is not set |
| 103 | CONFIG_HZ_250=y | 113 | CONFIG_HZ_250=y |
| 114 | # CONFIG_HZ_300 is not set | ||
| 104 | # CONFIG_HZ_1000 is not set | 115 | # CONFIG_HZ_1000 is not set |
| 105 | CONFIG_HZ=250 | 116 | CONFIG_HZ=250 |
| 106 | CONFIG_SELECT_MEMORY_MODEL=y | 117 | CONFIG_SELECT_MEMORY_MODEL=y |
| @@ -111,6 +122,9 @@ CONFIG_FLATMEM=y | |||
| 111 | CONFIG_FLAT_NODE_MEM_MAP=y | 122 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 112 | # CONFIG_SPARSEMEM_STATIC is not set | 123 | # CONFIG_SPARSEMEM_STATIC is not set |
| 113 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 124 | CONFIG_SPLIT_PTLOCK_CPUS=4096 |
| 125 | # CONFIG_RESOURCES_64BIT is not set | ||
| 126 | CONFIG_ZONE_DMA_FLAG=0 | ||
| 127 | CONFIG_VIRT_TO_BUS=y | ||
| 114 | # CONFIG_HPUX is not set | 128 | # CONFIG_HPUX is not set |
| 115 | 129 | ||
| 116 | # | 130 | # |
| @@ -125,7 +139,7 @@ CONFIG_EISA=y | |||
| 125 | CONFIG_EISA_NAMES=y | 139 | CONFIG_EISA_NAMES=y |
| 126 | # CONFIG_ISA is not set | 140 | # CONFIG_ISA is not set |
| 127 | CONFIG_PCI=y | 141 | CONFIG_PCI=y |
| 128 | CONFIG_PCI_LEGACY_PROC=y | 142 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
| 129 | # CONFIG_PCI_DEBUG is not set | 143 | # CONFIG_PCI_DEBUG is not set |
| 130 | CONFIG_GSC_DINO=y | 144 | CONFIG_GSC_DINO=y |
| 131 | CONFIG_PCI_LBA=y | 145 | CONFIG_PCI_LBA=y |
| @@ -154,10 +168,6 @@ CONFIG_YENTA_TOSHIBA=y | |||
| 154 | CONFIG_PD6729=y | 168 | CONFIG_PD6729=y |
| 155 | CONFIG_I82092=y | 169 | CONFIG_I82092=y |
| 156 | CONFIG_PCCARD_NONSTATIC=y | 170 | CONFIG_PCCARD_NONSTATIC=y |
| 157 | |||
| 158 | # | ||
| 159 | # PCI Hotplug Support | ||
| 160 | # | ||
| 161 | # CONFIG_HOTPLUG_PCI is not set | 171 | # CONFIG_HOTPLUG_PCI is not set |
| 162 | 172 | ||
| 163 | # | 173 | # |
| @@ -166,6 +176,7 @@ CONFIG_PCCARD_NONSTATIC=y | |||
| 166 | CONFIG_SUPERIO=y | 176 | CONFIG_SUPERIO=y |
| 167 | CONFIG_CHASSIS_LCD_LED=y | 177 | CONFIG_CHASSIS_LCD_LED=y |
| 168 | CONFIG_PDC_CHASSIS=y | 178 | CONFIG_PDC_CHASSIS=y |
| 179 | CONFIG_PDC_CHASSIS_WARN=y | ||
| 169 | CONFIG_PDC_STABLE=y | 180 | CONFIG_PDC_STABLE=y |
| 170 | 181 | ||
| 171 | # | 182 | # |
| @@ -182,13 +193,15 @@ CONFIG_NET=y | |||
| 182 | # | 193 | # |
| 183 | # Networking options | 194 | # Networking options |
| 184 | # | 195 | # |
| 185 | # CONFIG_NETDEBUG is not set | ||
| 186 | CONFIG_PACKET=y | 196 | CONFIG_PACKET=y |
| 187 | CONFIG_PACKET_MMAP=y | 197 | CONFIG_PACKET_MMAP=y |
| 188 | CONFIG_UNIX=y | 198 | CONFIG_UNIX=y |
| 189 | CONFIG_XFRM=y | 199 | CONFIG_XFRM=y |
| 190 | CONFIG_XFRM_USER=m | 200 | CONFIG_XFRM_USER=m |
| 201 | # CONFIG_XFRM_SUB_POLICY is not set | ||
| 202 | # CONFIG_XFRM_MIGRATE is not set | ||
| 191 | CONFIG_NET_KEY=m | 203 | CONFIG_NET_KEY=m |
| 204 | # CONFIG_NET_KEY_MIGRATE is not set | ||
| 192 | CONFIG_INET=y | 205 | CONFIG_INET=y |
| 193 | CONFIG_IP_MULTICAST=y | 206 | CONFIG_IP_MULTICAST=y |
| 194 | # CONFIG_IP_ADVANCED_ROUTER is not set | 207 | # CONFIG_IP_ADVANCED_ROUTER is not set |
| @@ -205,33 +218,39 @@ CONFIG_IP_PNP_BOOTP=y | |||
| 205 | CONFIG_INET_AH=m | 218 | CONFIG_INET_AH=m |
| 206 | CONFIG_INET_ESP=m | 219 | CONFIG_INET_ESP=m |
| 207 | # CONFIG_INET_IPCOMP is not set | 220 | # CONFIG_INET_IPCOMP is not set |
| 208 | CONFIG_INET_TUNNEL=m | 221 | # CONFIG_INET_XFRM_TUNNEL is not set |
| 222 | CONFIG_INET_TUNNEL=y | ||
| 223 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 224 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 225 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 226 | # CONFIG_INET_LRO is not set | ||
| 209 | CONFIG_INET_DIAG=m | 227 | CONFIG_INET_DIAG=m |
| 210 | CONFIG_INET_TCP_DIAG=m | 228 | CONFIG_INET_TCP_DIAG=m |
| 211 | # CONFIG_TCP_CONG_ADVANCED is not set | 229 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 212 | CONFIG_TCP_CONG_BIC=y | 230 | CONFIG_TCP_CONG_CUBIC=y |
| 231 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 232 | # CONFIG_TCP_MD5SIG is not set | ||
| 213 | CONFIG_IPV6=y | 233 | CONFIG_IPV6=y |
| 214 | # CONFIG_IPV6_PRIVACY is not set | 234 | # CONFIG_IPV6_PRIVACY is not set |
| 235 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
| 236 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
| 215 | CONFIG_INET6_AH=y | 237 | CONFIG_INET6_AH=y |
| 216 | CONFIG_INET6_ESP=y | 238 | CONFIG_INET6_ESP=y |
| 217 | CONFIG_INET6_IPCOMP=y | 239 | CONFIG_INET6_IPCOMP=y |
| 240 | # CONFIG_IPV6_MIP6 is not set | ||
| 241 | CONFIG_INET6_XFRM_TUNNEL=y | ||
| 218 | CONFIG_INET6_TUNNEL=y | 242 | CONFIG_INET6_TUNNEL=y |
| 243 | CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
| 244 | CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
| 245 | CONFIG_INET6_XFRM_MODE_BEET=y | ||
| 246 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
| 247 | CONFIG_IPV6_SIT=y | ||
| 219 | # CONFIG_IPV6_TUNNEL is not set | 248 | # CONFIG_IPV6_TUNNEL is not set |
| 249 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
| 250 | # CONFIG_NETWORK_SECMARK is not set | ||
| 220 | # CONFIG_NETFILTER is not set | 251 | # CONFIG_NETFILTER is not set |
| 221 | |||
| 222 | # | ||
| 223 | # DCCP Configuration (EXPERIMENTAL) | ||
| 224 | # | ||
| 225 | # CONFIG_IP_DCCP is not set | 252 | # CONFIG_IP_DCCP is not set |
| 226 | |||
| 227 | # | ||
| 228 | # SCTP Configuration (EXPERIMENTAL) | ||
| 229 | # | ||
| 230 | # CONFIG_IP_SCTP is not set | 253 | # CONFIG_IP_SCTP is not set |
| 231 | |||
| 232 | # | ||
| 233 | # TIPC Configuration (EXPERIMENTAL) | ||
| 234 | # | ||
| 235 | # CONFIG_TIPC is not set | 254 | # CONFIG_TIPC is not set |
| 236 | # CONFIG_ATM is not set | 255 | # CONFIG_ATM is not set |
| 237 | # CONFIG_BRIDGE is not set | 256 | # CONFIG_BRIDGE is not set |
| @@ -243,7 +262,6 @@ CONFIG_LLC2=m | |||
| 243 | # CONFIG_ATALK is not set | 262 | # CONFIG_ATALK is not set |
| 244 | # CONFIG_X25 is not set | 263 | # CONFIG_X25 is not set |
| 245 | # CONFIG_LAPB is not set | 264 | # CONFIG_LAPB is not set |
| 246 | # CONFIG_NET_DIVERT is not set | ||
| 247 | # CONFIG_ECONET is not set | 265 | # CONFIG_ECONET is not set |
| 248 | # CONFIG_WAN_ROUTER is not set | 266 | # CONFIG_WAN_ROUTER is not set |
| 249 | 267 | ||
| @@ -259,7 +277,17 @@ CONFIG_LLC2=m | |||
| 259 | # CONFIG_HAMRADIO is not set | 277 | # CONFIG_HAMRADIO is not set |
| 260 | # CONFIG_IRDA is not set | 278 | # CONFIG_IRDA is not set |
| 261 | # CONFIG_BT is not set | 279 | # CONFIG_BT is not set |
| 280 | # CONFIG_AF_RXRPC is not set | ||
| 281 | |||
| 282 | # | ||
| 283 | # Wireless | ||
| 284 | # | ||
| 285 | # CONFIG_CFG80211 is not set | ||
| 286 | # CONFIG_WIRELESS_EXT is not set | ||
| 287 | # CONFIG_MAC80211 is not set | ||
| 262 | # CONFIG_IEEE80211 is not set | 288 | # CONFIG_IEEE80211 is not set |
| 289 | # CONFIG_RFKILL is not set | ||
| 290 | # CONFIG_NET_9P is not set | ||
| 263 | 291 | ||
| 264 | # | 292 | # |
| 265 | # Device Drivers | 293 | # Device Drivers |
| @@ -268,41 +296,26 @@ CONFIG_LLC2=m | |||
| 268 | # | 296 | # |
| 269 | # Generic Driver Options | 297 | # Generic Driver Options |
| 270 | # | 298 | # |
| 299 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 271 | # CONFIG_STANDALONE is not set | 300 | # CONFIG_STANDALONE is not set |
| 272 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 301 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
| 273 | CONFIG_FW_LOADER=y | 302 | CONFIG_FW_LOADER=y |
| 274 | # CONFIG_DEBUG_DRIVER is not set | 303 | # CONFIG_DEBUG_DRIVER is not set |
| 275 | 304 | # CONFIG_DEBUG_DEVRES is not set | |
| 276 | # | 305 | # CONFIG_SYS_HYPERVISOR is not set |
| 277 | # Connector - unified userspace <-> kernelspace linker | ||
| 278 | # | ||
| 279 | # CONFIG_CONNECTOR is not set | 306 | # CONFIG_CONNECTOR is not set |
| 280 | |||
| 281 | # | ||
| 282 | # Memory Technology Devices (MTD) | ||
| 283 | # | ||
| 284 | # CONFIG_MTD is not set | 307 | # CONFIG_MTD is not set |
| 285 | |||
| 286 | # | ||
| 287 | # Parallel port support | ||
| 288 | # | ||
| 289 | CONFIG_PARPORT=y | 308 | CONFIG_PARPORT=y |
| 290 | CONFIG_PARPORT_PC=m | 309 | CONFIG_PARPORT_PC=m |
| 291 | # CONFIG_PARPORT_SERIAL is not set | 310 | # CONFIG_PARPORT_SERIAL is not set |
| 292 | # CONFIG_PARPORT_PC_FIFO is not set | 311 | # CONFIG_PARPORT_PC_FIFO is not set |
| 293 | # CONFIG_PARPORT_PC_SUPERIO is not set | 312 | # CONFIG_PARPORT_PC_SUPERIO is not set |
| 294 | CONFIG_PARPORT_PC_PCMCIA=m | 313 | CONFIG_PARPORT_PC_PCMCIA=m |
| 295 | CONFIG_PARPORT_NOT_PC=y | ||
| 296 | CONFIG_PARPORT_GSC=y | 314 | CONFIG_PARPORT_GSC=y |
| 315 | # CONFIG_PARPORT_AX88796 is not set | ||
| 297 | CONFIG_PARPORT_1284=y | 316 | CONFIG_PARPORT_1284=y |
| 298 | 317 | CONFIG_PARPORT_NOT_PC=y | |
| 299 | # | 318 | CONFIG_BLK_DEV=y |
| 300 | # Plug and Play support | ||
| 301 | # | ||
| 302 | |||
| 303 | # | ||
| 304 | # Block devices | ||
| 305 | # | ||
| 306 | # CONFIG_PARIDE is not set | 319 | # CONFIG_PARIDE is not set |
| 307 | # CONFIG_BLK_CPQ_DA is not set | 320 | # CONFIG_BLK_CPQ_DA is not set |
| 308 | # CONFIG_BLK_CPQ_CISS_DA is not set | 321 | # CONFIG_BLK_CPQ_CISS_DA is not set |
| @@ -317,13 +330,14 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y | |||
| 317 | CONFIG_BLK_DEV_RAM=y | 330 | CONFIG_BLK_DEV_RAM=y |
| 318 | CONFIG_BLK_DEV_RAM_COUNT=16 | 331 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 319 | CONFIG_BLK_DEV_RAM_SIZE=6144 | 332 | CONFIG_BLK_DEV_RAM_SIZE=6144 |
| 320 | CONFIG_BLK_DEV_INITRD=y | 333 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
| 321 | # CONFIG_CDROM_PKTCDVD is not set | 334 | # CONFIG_CDROM_PKTCDVD is not set |
| 322 | # CONFIG_ATA_OVER_ETH is not set | 335 | # CONFIG_ATA_OVER_ETH is not set |
| 323 | 336 | CONFIG_MISC_DEVICES=y | |
| 324 | # | 337 | # CONFIG_PHANTOM is not set |
| 325 | # ATA/ATAPI/MFM/RLL support | 338 | # CONFIG_EEPROM_93CX6 is not set |
| 326 | # | 339 | # CONFIG_SGI_IOC4 is not set |
| 340 | # CONFIG_TIFM_CORE is not set | ||
| 327 | CONFIG_IDE=y | 341 | CONFIG_IDE=y |
| 328 | CONFIG_BLK_DEV_IDE=y | 342 | CONFIG_BLK_DEV_IDE=y |
| 329 | 343 | ||
| @@ -334,24 +348,32 @@ CONFIG_BLK_DEV_IDE=y | |||
| 334 | CONFIG_BLK_DEV_IDEDISK=y | 348 | CONFIG_BLK_DEV_IDEDISK=y |
| 335 | CONFIG_IDEDISK_MULTI_MODE=y | 349 | CONFIG_IDEDISK_MULTI_MODE=y |
| 336 | CONFIG_BLK_DEV_IDECS=y | 350 | CONFIG_BLK_DEV_IDECS=y |
| 351 | # CONFIG_BLK_DEV_DELKIN is not set | ||
| 337 | CONFIG_BLK_DEV_IDECD=y | 352 | CONFIG_BLK_DEV_IDECD=y |
| 338 | # CONFIG_BLK_DEV_IDETAPE is not set | 353 | # CONFIG_BLK_DEV_IDETAPE is not set |
| 339 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 354 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
| 340 | CONFIG_BLK_DEV_IDESCSI=y | 355 | CONFIG_BLK_DEV_IDESCSI=y |
| 341 | # CONFIG_IDE_TASK_IOCTL is not set | 356 | # CONFIG_IDE_TASK_IOCTL is not set |
| 357 | CONFIG_IDE_PROC_FS=y | ||
| 342 | 358 | ||
| 343 | # | 359 | # |
| 344 | # IDE chipset support/bugfixes | 360 | # IDE chipset support/bugfixes |
| 345 | # | 361 | # |
| 346 | CONFIG_IDE_GENERIC=y | 362 | CONFIG_IDE_GENERIC=y |
| 363 | # CONFIG_BLK_DEV_PLATFORM is not set | ||
| 364 | |||
| 365 | # | ||
| 366 | # PCI IDE chipsets support | ||
| 367 | # | ||
| 347 | CONFIG_BLK_DEV_IDEPCI=y | 368 | CONFIG_BLK_DEV_IDEPCI=y |
| 348 | CONFIG_IDEPCI_SHARE_IRQ=y | 369 | CONFIG_IDEPCI_SHARE_IRQ=y |
| 370 | CONFIG_IDEPCI_PCIBUS_ORDER=y | ||
| 349 | # CONFIG_BLK_DEV_OFFBOARD is not set | 371 | # CONFIG_BLK_DEV_OFFBOARD is not set |
| 350 | CONFIG_BLK_DEV_GENERIC=y | 372 | CONFIG_BLK_DEV_GENERIC=y |
| 351 | # CONFIG_BLK_DEV_OPTI621 is not set | 373 | # CONFIG_BLK_DEV_OPTI621 is not set |
| 352 | CONFIG_BLK_DEV_IDEDMA_PCI=y | 374 | CONFIG_BLK_DEV_IDEDMA_PCI=y |
| 353 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | 375 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set |
| 354 | # CONFIG_IDEDMA_PCI_AUTO is not set | 376 | CONFIG_IDEDMA_ONLYDISK=y |
| 355 | # CONFIG_BLK_DEV_AEC62XX is not set | 377 | # CONFIG_BLK_DEV_AEC62XX is not set |
| 356 | # CONFIG_BLK_DEV_ALI15X3 is not set | 378 | # CONFIG_BLK_DEV_ALI15X3 is not set |
| 357 | # CONFIG_BLK_DEV_AMD74XX is not set | 379 | # CONFIG_BLK_DEV_AMD74XX is not set |
| @@ -362,8 +384,10 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y | |||
| 362 | # CONFIG_BLK_DEV_CS5530 is not set | 384 | # CONFIG_BLK_DEV_CS5530 is not set |
| 363 | # CONFIG_BLK_DEV_HPT34X is not set | 385 | # CONFIG_BLK_DEV_HPT34X is not set |
| 364 | # CONFIG_BLK_DEV_HPT366 is not set | 386 | # CONFIG_BLK_DEV_HPT366 is not set |
| 387 | # CONFIG_BLK_DEV_JMICRON is not set | ||
| 365 | # CONFIG_BLK_DEV_SC1200 is not set | 388 | # CONFIG_BLK_DEV_SC1200 is not set |
| 366 | # CONFIG_BLK_DEV_PIIX is not set | 389 | # CONFIG_BLK_DEV_PIIX is not set |
| 390 | # CONFIG_BLK_DEV_IT8213 is not set | ||
| 367 | # CONFIG_BLK_DEV_IT821X is not set | 391 | # CONFIG_BLK_DEV_IT821X is not set |
| 368 | CONFIG_BLK_DEV_NS87415=y | 392 | CONFIG_BLK_DEV_NS87415=y |
| 369 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 393 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
| @@ -373,10 +397,10 @@ CONFIG_BLK_DEV_NS87415=y | |||
| 373 | # CONFIG_BLK_DEV_SLC90E66 is not set | 397 | # CONFIG_BLK_DEV_SLC90E66 is not set |
| 374 | # CONFIG_BLK_DEV_TRM290 is not set | 398 | # CONFIG_BLK_DEV_TRM290 is not set |
| 375 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 399 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
| 400 | # CONFIG_BLK_DEV_TC86C001 is not set | ||
| 376 | # CONFIG_IDE_ARM is not set | 401 | # CONFIG_IDE_ARM is not set |
| 377 | CONFIG_BLK_DEV_IDEDMA=y | 402 | CONFIG_BLK_DEV_IDEDMA=y |
| 378 | # CONFIG_IDEDMA_IVB is not set | 403 | # CONFIG_IDEDMA_IVB is not set |
| 379 | # CONFIG_IDEDMA_AUTO is not set | ||
| 380 | # CONFIG_BLK_DEV_HD is not set | 404 | # CONFIG_BLK_DEV_HD is not set |
| 381 | 405 | ||
| 382 | # | 406 | # |
| @@ -384,6 +408,9 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
| 384 | # | 408 | # |
| 385 | # CONFIG_RAID_ATTRS is not set | 409 | # CONFIG_RAID_ATTRS is not set |
| 386 | CONFIG_SCSI=y | 410 | CONFIG_SCSI=y |
| 411 | CONFIG_SCSI_DMA=y | ||
| 412 | # CONFIG_SCSI_TGT is not set | ||
| 413 | # CONFIG_SCSI_NETLINK is not set | ||
| 387 | CONFIG_SCSI_PROC_FS=y | 414 | CONFIG_SCSI_PROC_FS=y |
| 388 | 415 | ||
| 389 | # | 416 | # |
| @@ -403,18 +430,17 @@ CONFIG_CHR_DEV_SG=y | |||
| 403 | # CONFIG_SCSI_MULTI_LUN is not set | 430 | # CONFIG_SCSI_MULTI_LUN is not set |
| 404 | # CONFIG_SCSI_CONSTANTS is not set | 431 | # CONFIG_SCSI_CONSTANTS is not set |
| 405 | # CONFIG_SCSI_LOGGING is not set | 432 | # CONFIG_SCSI_LOGGING is not set |
| 433 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 434 | CONFIG_SCSI_WAIT_SCAN=m | ||
| 406 | 435 | ||
| 407 | # | 436 | # |
| 408 | # SCSI Transport Attributes | 437 | # SCSI Transports |
| 409 | # | 438 | # |
| 410 | CONFIG_SCSI_SPI_ATTRS=y | 439 | CONFIG_SCSI_SPI_ATTRS=y |
| 411 | # CONFIG_SCSI_FC_ATTRS is not set | 440 | # CONFIG_SCSI_FC_ATTRS is not set |
| 412 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 441 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
| 413 | # CONFIG_SCSI_SAS_ATTRS is not set | 442 | # CONFIG_SCSI_SAS_LIBSAS is not set |
| 414 | 443 | CONFIG_SCSI_LOWLEVEL=y | |
| 415 | # | ||
| 416 | # SCSI low-level drivers | ||
| 417 | # | ||
| 418 | # CONFIG_ISCSI_TCP is not set | 444 | # CONFIG_ISCSI_TCP is not set |
| 419 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 445 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
| 420 | # CONFIG_SCSI_3W_9XXX is not set | 446 | # CONFIG_SCSI_3W_9XXX is not set |
| @@ -424,11 +450,13 @@ CONFIG_SCSI_SPI_ATTRS=y | |||
| 424 | # CONFIG_SCSI_AIC7XXX is not set | 450 | # CONFIG_SCSI_AIC7XXX is not set |
| 425 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 451 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
| 426 | # CONFIG_SCSI_AIC79XX is not set | 452 | # CONFIG_SCSI_AIC79XX is not set |
| 453 | # CONFIG_SCSI_AIC94XX is not set | ||
| 427 | # CONFIG_SCSI_DPT_I2O is not set | 454 | # CONFIG_SCSI_DPT_I2O is not set |
| 455 | # CONFIG_SCSI_ARCMSR is not set | ||
| 428 | # CONFIG_MEGARAID_NEWGEN is not set | 456 | # CONFIG_MEGARAID_NEWGEN is not set |
| 429 | # CONFIG_MEGARAID_LEGACY is not set | 457 | # CONFIG_MEGARAID_LEGACY is not set |
| 430 | # CONFIG_MEGARAID_SAS is not set | 458 | # CONFIG_MEGARAID_SAS is not set |
| 431 | # CONFIG_SCSI_SATA is not set | 459 | # CONFIG_SCSI_HPTIOP is not set |
| 432 | # CONFIG_SCSI_DMX3191D is not set | 460 | # CONFIG_SCSI_DMX3191D is not set |
| 433 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 461 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
| 434 | # CONFIG_SCSI_IPS is not set | 462 | # CONFIG_SCSI_IPS is not set |
| @@ -438,55 +466,45 @@ CONFIG_SCSI_SPI_ATTRS=y | |||
| 438 | # CONFIG_SCSI_IMM is not set | 466 | # CONFIG_SCSI_IMM is not set |
| 439 | CONFIG_SCSI_LASI700=y | 467 | CONFIG_SCSI_LASI700=y |
| 440 | CONFIG_53C700_LE_ON_BE=y | 468 | CONFIG_53C700_LE_ON_BE=y |
| 469 | # CONFIG_SCSI_STEX is not set | ||
| 441 | CONFIG_SCSI_SYM53C8XX_2=y | 470 | CONFIG_SCSI_SYM53C8XX_2=y |
| 442 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 | 471 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 |
| 443 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 472 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
| 444 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 473 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
| 445 | CONFIG_SCSI_SYM53C8XX_MMIO=y | 474 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
| 446 | # CONFIG_SCSI_IPR is not set | ||
| 447 | CONFIG_SCSI_ZALON=y | 475 | CONFIG_SCSI_ZALON=y |
| 448 | CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 | 476 | CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 |
| 449 | CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 | 477 | CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 |
| 450 | CONFIG_SCSI_NCR53C8XX_SYNC=20 | 478 | CONFIG_SCSI_NCR53C8XX_SYNC=20 |
| 451 | # CONFIG_SCSI_NCR53C8XX_PROFILE is not set | ||
| 452 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
| 453 | # CONFIG_SCSI_QLOGIC_1280 is not set | 479 | # CONFIG_SCSI_QLOGIC_1280 is not set |
| 454 | # CONFIG_SCSI_QLA_FC is not set | 480 | # CONFIG_SCSI_QLA_FC is not set |
| 481 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
| 455 | # CONFIG_SCSI_LPFC is not set | 482 | # CONFIG_SCSI_LPFC is not set |
| 456 | # CONFIG_SCSI_SIM710 is not set | 483 | # CONFIG_SCSI_SIM710 is not set |
| 457 | # CONFIG_SCSI_DC395x is not set | 484 | # CONFIG_SCSI_DC395x is not set |
| 458 | # CONFIG_SCSI_DC390T is not set | 485 | # CONFIG_SCSI_DC390T is not set |
| 459 | # CONFIG_SCSI_NSP32 is not set | 486 | # CONFIG_SCSI_NSP32 is not set |
| 460 | # CONFIG_SCSI_DEBUG is not set | 487 | # CONFIG_SCSI_DEBUG is not set |
| 461 | 488 | # CONFIG_SCSI_SRP is not set | |
| 462 | # | 489 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set |
| 463 | # PCMCIA SCSI adapter support | 490 | # CONFIG_ATA is not set |
| 464 | # | ||
| 465 | # CONFIG_PCMCIA_AHA152X is not set | ||
| 466 | # CONFIG_PCMCIA_FDOMAIN is not set | ||
| 467 | # CONFIG_PCMCIA_NINJA_SCSI is not set | ||
| 468 | # CONFIG_PCMCIA_QLOGIC is not set | ||
| 469 | # CONFIG_PCMCIA_SYM53C500 is not set | ||
| 470 | |||
| 471 | # | ||
| 472 | # Multi-device support (RAID and LVM) | ||
| 473 | # | ||
| 474 | CONFIG_MD=y | 491 | CONFIG_MD=y |
| 475 | CONFIG_BLK_DEV_MD=y | 492 | CONFIG_BLK_DEV_MD=y |
| 476 | CONFIG_MD_LINEAR=y | 493 | CONFIG_MD_LINEAR=y |
| 477 | CONFIG_MD_RAID0=y | 494 | CONFIG_MD_RAID0=y |
| 478 | CONFIG_MD_RAID1=y | 495 | CONFIG_MD_RAID1=y |
| 479 | CONFIG_MD_RAID10=y | 496 | CONFIG_MD_RAID10=y |
| 480 | CONFIG_MD_RAID5=y | 497 | # CONFIG_MD_RAID456 is not set |
| 481 | CONFIG_MD_RAID6=y | ||
| 482 | # CONFIG_MD_MULTIPATH is not set | 498 | # CONFIG_MD_MULTIPATH is not set |
| 483 | # CONFIG_MD_FAULTY is not set | 499 | # CONFIG_MD_FAULTY is not set |
| 484 | CONFIG_BLK_DEV_DM=y | 500 | CONFIG_BLK_DEV_DM=y |
| 501 | # CONFIG_DM_DEBUG is not set | ||
| 485 | # CONFIG_DM_CRYPT is not set | 502 | # CONFIG_DM_CRYPT is not set |
| 486 | # CONFIG_DM_SNAPSHOT is not set | 503 | # CONFIG_DM_SNAPSHOT is not set |
| 487 | # CONFIG_DM_MIRROR is not set | 504 | # CONFIG_DM_MIRROR is not set |
| 488 | # CONFIG_DM_ZERO is not set | 505 | # CONFIG_DM_ZERO is not set |
| 489 | # CONFIG_DM_MULTIPATH is not set | 506 | # CONFIG_DM_MULTIPATH is not set |
| 507 | # CONFIG_DM_DELAY is not set | ||
| 490 | 508 | ||
| 491 | # | 509 | # |
| 492 | # Fusion MPT device support | 510 | # Fusion MPT device support |
| @@ -499,35 +517,20 @@ CONFIG_BLK_DEV_DM=y | |||
| 499 | # | 517 | # |
| 500 | # IEEE 1394 (FireWire) support | 518 | # IEEE 1394 (FireWire) support |
| 501 | # | 519 | # |
| 520 | # CONFIG_FIREWIRE is not set | ||
| 502 | # CONFIG_IEEE1394 is not set | 521 | # CONFIG_IEEE1394 is not set |
| 503 | |||
| 504 | # | ||
| 505 | # I2O device support | ||
| 506 | # | ||
| 507 | # CONFIG_I2O is not set | 522 | # CONFIG_I2O is not set |
| 508 | |||
| 509 | # | ||
| 510 | # Network device support | ||
| 511 | # | ||
| 512 | CONFIG_NETDEVICES=y | 523 | CONFIG_NETDEVICES=y |
| 524 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
| 513 | CONFIG_DUMMY=m | 525 | CONFIG_DUMMY=m |
| 514 | CONFIG_BONDING=m | 526 | CONFIG_BONDING=m |
| 527 | # CONFIG_MACVLAN is not set | ||
| 515 | # CONFIG_EQUALIZER is not set | 528 | # CONFIG_EQUALIZER is not set |
| 516 | CONFIG_TUN=m | 529 | CONFIG_TUN=m |
| 517 | 530 | # CONFIG_VETH is not set | |
| 518 | # | 531 | # CONFIG_IP1000 is not set |
| 519 | # ARCnet devices | ||
| 520 | # | ||
| 521 | # CONFIG_ARCNET is not set | 532 | # CONFIG_ARCNET is not set |
| 522 | |||
| 523 | # | ||
| 524 | # PHY device support | ||
| 525 | # | ||
| 526 | # CONFIG_PHYLIB is not set | 533 | # CONFIG_PHYLIB is not set |
| 527 | |||
| 528 | # | ||
| 529 | # Ethernet (10 or 100Mbit) | ||
| 530 | # | ||
| 531 | CONFIG_NET_ETHERNET=y | 534 | CONFIG_NET_ETHERNET=y |
| 532 | CONFIG_MII=m | 535 | CONFIG_MII=m |
| 533 | CONFIG_LASI_82596=y | 536 | CONFIG_LASI_82596=y |
| @@ -536,10 +539,6 @@ CONFIG_LASI_82596=y | |||
| 536 | # CONFIG_CASSINI is not set | 539 | # CONFIG_CASSINI is not set |
| 537 | # CONFIG_NET_VENDOR_3COM is not set | 540 | # CONFIG_NET_VENDOR_3COM is not set |
| 538 | # CONFIG_NET_VENDOR_SMC is not set | 541 | # CONFIG_NET_VENDOR_SMC is not set |
| 539 | |||
| 540 | # | ||
| 541 | # Tulip family network device support | ||
| 542 | # | ||
| 543 | CONFIG_NET_TULIP=y | 542 | CONFIG_NET_TULIP=y |
| 544 | # CONFIG_DE2104X is not set | 543 | # CONFIG_DE2104X is not set |
| 545 | CONFIG_TULIP=y | 544 | CONFIG_TULIP=y |
| @@ -554,6 +553,10 @@ CONFIG_TULIP=y | |||
| 554 | # CONFIG_PCMCIA_XIRTULIP is not set | 553 | # CONFIG_PCMCIA_XIRTULIP is not set |
| 555 | # CONFIG_DEPCA is not set | 554 | # CONFIG_DEPCA is not set |
| 556 | # CONFIG_HP100 is not set | 555 | # CONFIG_HP100 is not set |
| 556 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
| 557 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 558 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 559 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 557 | CONFIG_NET_PCI=y | 560 | CONFIG_NET_PCI=y |
| 558 | # CONFIG_PCNET32 is not set | 561 | # CONFIG_PCNET32 is not set |
| 559 | # CONFIG_AMD8111_ETH is not set | 562 | # CONFIG_AMD8111_ETH is not set |
| @@ -561,7 +564,6 @@ CONFIG_NET_PCI=y | |||
| 561 | # CONFIG_AC3200 is not set | 564 | # CONFIG_AC3200 is not set |
| 562 | # CONFIG_B44 is not set | 565 | # CONFIG_B44 is not set |
| 563 | # CONFIG_FORCEDETH is not set | 566 | # CONFIG_FORCEDETH is not set |
| 564 | # CONFIG_DGRS is not set | ||
| 565 | # CONFIG_EEPRO100 is not set | 567 | # CONFIG_EEPRO100 is not set |
| 566 | # CONFIG_E100 is not set | 568 | # CONFIG_E100 is not set |
| 567 | # CONFIG_LNE390 is not set | 569 | # CONFIG_LNE390 is not set |
| @@ -577,15 +579,14 @@ CONFIG_NET_PCI=y | |||
| 577 | # CONFIG_SUNDANCE is not set | 579 | # CONFIG_SUNDANCE is not set |
| 578 | # CONFIG_TLAN is not set | 580 | # CONFIG_TLAN is not set |
| 579 | # CONFIG_VIA_RHINE is not set | 581 | # CONFIG_VIA_RHINE is not set |
| 582 | # CONFIG_SC92031 is not set | ||
| 580 | # CONFIG_NET_POCKET is not set | 583 | # CONFIG_NET_POCKET is not set |
| 581 | 584 | CONFIG_NETDEV_1000=y | |
| 582 | # | ||
| 583 | # Ethernet (1000 Mbit) | ||
| 584 | # | ||
| 585 | CONFIG_ACENIC=y | 585 | CONFIG_ACENIC=y |
| 586 | # CONFIG_ACENIC_OMIT_TIGON_I is not set | 586 | # CONFIG_ACENIC_OMIT_TIGON_I is not set |
| 587 | # CONFIG_DL2K is not set | 587 | # CONFIG_DL2K is not set |
| 588 | # CONFIG_E1000 is not set | 588 | # CONFIG_E1000 is not set |
| 589 | # CONFIG_E1000E is not set | ||
| 589 | # CONFIG_NS83820 is not set | 590 | # CONFIG_NS83820 is not set |
| 590 | # CONFIG_HAMACHI is not set | 591 | # CONFIG_HAMACHI is not set |
| 591 | # CONFIG_YELLOWFIN is not set | 592 | # CONFIG_YELLOWFIN is not set |
| @@ -597,64 +598,36 @@ CONFIG_ACENIC=y | |||
| 597 | # CONFIG_VIA_VELOCITY is not set | 598 | # CONFIG_VIA_VELOCITY is not set |
| 598 | CONFIG_TIGON3=y | 599 | CONFIG_TIGON3=y |
| 599 | # CONFIG_BNX2 is not set | 600 | # CONFIG_BNX2 is not set |
| 600 | 601 | # CONFIG_QLA3XXX is not set | |
| 601 | # | 602 | # CONFIG_ATL1 is not set |
| 602 | # Ethernet (10000 Mbit) | 603 | CONFIG_NETDEV_10000=y |
| 603 | # | ||
| 604 | # CONFIG_CHELSIO_T1 is not set | 604 | # CONFIG_CHELSIO_T1 is not set |
| 605 | # CONFIG_CHELSIO_T3 is not set | ||
| 606 | # CONFIG_IXGBE is not set | ||
| 605 | # CONFIG_IXGB is not set | 607 | # CONFIG_IXGB is not set |
| 606 | # CONFIG_S2IO is not set | 608 | # CONFIG_S2IO is not set |
| 607 | 609 | # CONFIG_MYRI10GE is not set | |
| 608 | # | 610 | # CONFIG_NETXEN_NIC is not set |
| 609 | # Token Ring devices | 611 | # CONFIG_NIU is not set |
| 610 | # | 612 | # CONFIG_MLX4_CORE is not set |
| 613 | # CONFIG_TEHUTI is not set | ||
| 611 | # CONFIG_TR is not set | 614 | # CONFIG_TR is not set |
| 612 | 615 | ||
| 613 | # | 616 | # |
| 614 | # Wireless LAN (non-hamradio) | 617 | # Wireless LAN |
| 615 | # | ||
| 616 | CONFIG_NET_RADIO=y | ||
| 617 | |||
| 618 | # | ||
| 619 | # Obsolete Wireless cards support (pre-802.11) | ||
| 620 | # | ||
| 621 | # CONFIG_STRIP is not set | ||
| 622 | # CONFIG_PCMCIA_WAVELAN is not set | ||
| 623 | # CONFIG_PCMCIA_NETWAVE is not set | ||
| 624 | |||
| 625 | # | ||
| 626 | # Wireless 802.11 Frequency Hopping cards support | ||
| 627 | # | ||
| 628 | # CONFIG_PCMCIA_RAYCS is not set | ||
| 629 | |||
| 630 | # | ||
| 631 | # Wireless 802.11b ISA/PCI cards support | ||
| 632 | # | ||
| 633 | CONFIG_HERMES=y | ||
| 634 | # CONFIG_PLX_HERMES is not set | ||
| 635 | # CONFIG_TMD_HERMES is not set | ||
| 636 | # CONFIG_NORTEL_HERMES is not set | ||
| 637 | # CONFIG_PCI_HERMES is not set | ||
| 638 | # CONFIG_ATMEL is not set | ||
| 639 | |||
| 640 | # | ||
| 641 | # Wireless 802.11b Pcmcia/Cardbus cards support | ||
| 642 | # | 618 | # |
| 643 | CONFIG_PCMCIA_HERMES=y | 619 | # CONFIG_WLAN_PRE80211 is not set |
| 644 | CONFIG_PCMCIA_SPECTRUM=y | 620 | # CONFIG_WLAN_80211 is not set |
| 645 | # CONFIG_AIRO_CS is not set | ||
| 646 | # CONFIG_PCMCIA_WL3501 is not set | ||
| 647 | 621 | ||
| 648 | # | 622 | # |
| 649 | # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support | 623 | # USB Network Adapters |
| 650 | # | ||
| 651 | # CONFIG_PRISM54 is not set | ||
| 652 | # CONFIG_HOSTAP is not set | ||
| 653 | CONFIG_NET_WIRELESS=y | ||
| 654 | |||
| 655 | # | ||
| 656 | # PCMCIA network device support | ||
| 657 | # | 624 | # |
| 625 | # CONFIG_USB_CATC is not set | ||
| 626 | # CONFIG_USB_KAWETH is not set | ||
| 627 | # CONFIG_USB_PEGASUS is not set | ||
| 628 | # CONFIG_USB_RTL8150 is not set | ||
| 629 | # CONFIG_USB_USBNET_MII is not set | ||
| 630 | # CONFIG_USB_USBNET is not set | ||
| 658 | CONFIG_NET_PCMCIA=y | 631 | CONFIG_NET_PCMCIA=y |
| 659 | # CONFIG_PCMCIA_3C589 is not set | 632 | # CONFIG_PCMCIA_3C589 is not set |
| 660 | # CONFIG_PCMCIA_3C574 is not set | 633 | # CONFIG_PCMCIA_3C574 is not set |
| @@ -664,10 +637,6 @@ CONFIG_NET_PCMCIA=y | |||
| 664 | # CONFIG_PCMCIA_SMC91C92 is not set | 637 | # CONFIG_PCMCIA_SMC91C92 is not set |
| 665 | # CONFIG_PCMCIA_XIRC2PS is not set | 638 | # CONFIG_PCMCIA_XIRC2PS is not set |
| 666 | # CONFIG_PCMCIA_AXNET is not set | 639 | # CONFIG_PCMCIA_AXNET is not set |
| 667 | |||
| 668 | # | ||
| 669 | # Wan interfaces | ||
| 670 | # | ||
| 671 | # CONFIG_WAN is not set | 640 | # CONFIG_WAN is not set |
| 672 | # CONFIG_FDDI is not set | 641 | # CONFIG_FDDI is not set |
| 673 | # CONFIG_HIPPI is not set | 642 | # CONFIG_HIPPI is not set |
| @@ -681,27 +650,23 @@ CONFIG_PPP_DEFLATE=m | |||
| 681 | CONFIG_PPP_BSDCOMP=m | 650 | CONFIG_PPP_BSDCOMP=m |
| 682 | # CONFIG_PPP_MPPE is not set | 651 | # CONFIG_PPP_MPPE is not set |
| 683 | CONFIG_PPPOE=m | 652 | CONFIG_PPPOE=m |
| 653 | # CONFIG_PPPOL2TP is not set | ||
| 684 | # CONFIG_SLIP is not set | 654 | # CONFIG_SLIP is not set |
| 655 | CONFIG_SLHC=m | ||
| 685 | # CONFIG_NET_FC is not set | 656 | # CONFIG_NET_FC is not set |
| 686 | # CONFIG_SHAPER is not set | 657 | # CONFIG_SHAPER is not set |
| 687 | # CONFIG_NETCONSOLE is not set | 658 | # CONFIG_NETCONSOLE is not set |
| 688 | # CONFIG_NETPOLL is not set | 659 | # CONFIG_NETPOLL is not set |
| 689 | # CONFIG_NET_POLL_CONTROLLER is not set | 660 | # CONFIG_NET_POLL_CONTROLLER is not set |
| 690 | |||
| 691 | # | ||
| 692 | # ISDN subsystem | ||
| 693 | # | ||
| 694 | # CONFIG_ISDN is not set | 661 | # CONFIG_ISDN is not set |
| 695 | |||
| 696 | # | ||
| 697 | # Telephony Support | ||
| 698 | # | ||
| 699 | # CONFIG_PHONE is not set | 662 | # CONFIG_PHONE is not set |
| 700 | 663 | ||
| 701 | # | 664 | # |
| 702 | # Input device support | 665 | # Input device support |
| 703 | # | 666 | # |
| 704 | CONFIG_INPUT=y | 667 | CONFIG_INPUT=y |
| 668 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
| 669 | # CONFIG_INPUT_POLLDEV is not set | ||
| 705 | 670 | ||
| 706 | # | 671 | # |
| 707 | # Userland interfaces | 672 | # Userland interfaces |
| @@ -726,14 +691,23 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y | |||
| 726 | # CONFIG_KEYBOARD_LKKBD is not set | 691 | # CONFIG_KEYBOARD_LKKBD is not set |
| 727 | # CONFIG_KEYBOARD_XTKBD is not set | 692 | # CONFIG_KEYBOARD_XTKBD is not set |
| 728 | # CONFIG_KEYBOARD_NEWTON is not set | 693 | # CONFIG_KEYBOARD_NEWTON is not set |
| 694 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
| 729 | # CONFIG_KEYBOARD_HIL_OLD is not set | 695 | # CONFIG_KEYBOARD_HIL_OLD is not set |
| 730 | CONFIG_KEYBOARD_HIL=y | 696 | CONFIG_KEYBOARD_HIL=y |
| 731 | CONFIG_INPUT_MOUSE=y | 697 | CONFIG_INPUT_MOUSE=y |
| 732 | CONFIG_MOUSE_PS2=y | 698 | CONFIG_MOUSE_PS2=y |
| 699 | CONFIG_MOUSE_PS2_ALPS=y | ||
| 700 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
| 701 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
| 702 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
| 703 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
| 704 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
| 733 | CONFIG_MOUSE_SERIAL=y | 705 | CONFIG_MOUSE_SERIAL=y |
| 706 | # CONFIG_MOUSE_APPLETOUCH is not set | ||
| 734 | # CONFIG_MOUSE_VSXXXAA is not set | 707 | # CONFIG_MOUSE_VSXXXAA is not set |
| 735 | CONFIG_MOUSE_HIL=y | 708 | CONFIG_MOUSE_HIL=y |
| 736 | # CONFIG_INPUT_JOYSTICK is not set | 709 | # CONFIG_INPUT_JOYSTICK is not set |
| 710 | # CONFIG_INPUT_TABLET is not set | ||
| 737 | # CONFIG_INPUT_TOUCHSCREEN is not set | 711 | # CONFIG_INPUT_TOUCHSCREEN is not set |
| 738 | # CONFIG_INPUT_MISC is not set | 712 | # CONFIG_INPUT_MISC is not set |
| 739 | 713 | ||
| @@ -757,6 +731,7 @@ CONFIG_SERIO_LIBPS2=y | |||
| 757 | CONFIG_VT=y | 731 | CONFIG_VT=y |
| 758 | CONFIG_VT_CONSOLE=y | 732 | CONFIG_VT_CONSOLE=y |
| 759 | CONFIG_HW_CONSOLE=y | 733 | CONFIG_HW_CONSOLE=y |
| 734 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 760 | # CONFIG_SERIAL_NONSTANDARD is not set | 735 | # CONFIG_SERIAL_NONSTANDARD is not set |
| 761 | 736 | ||
| 762 | # | 737 | # |
| @@ -764,6 +739,8 @@ CONFIG_HW_CONSOLE=y | |||
| 764 | # | 739 | # |
| 765 | CONFIG_SERIAL_8250=y | 740 | CONFIG_SERIAL_8250=y |
| 766 | CONFIG_SERIAL_8250_CONSOLE=y | 741 | CONFIG_SERIAL_8250_CONSOLE=y |
| 742 | CONFIG_SERIAL_8250_GSC=y | ||
| 743 | CONFIG_SERIAL_8250_PCI=y | ||
| 767 | CONFIG_SERIAL_8250_CS=y | 744 | CONFIG_SERIAL_8250_CS=y |
| 768 | CONFIG_SERIAL_8250_NR_UARTS=17 | 745 | CONFIG_SERIAL_8250_NR_UARTS=17 |
| 769 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 746 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
| @@ -788,25 +765,14 @@ CONFIG_PRINTER=m | |||
| 788 | # CONFIG_LP_CONSOLE is not set | 765 | # CONFIG_LP_CONSOLE is not set |
| 789 | CONFIG_PPDEV=m | 766 | CONFIG_PPDEV=m |
| 790 | # CONFIG_TIPAR is not set | 767 | # CONFIG_TIPAR is not set |
| 791 | |||
| 792 | # | ||
| 793 | # IPMI | ||
| 794 | # | ||
| 795 | # CONFIG_IPMI_HANDLER is not set | 768 | # CONFIG_IPMI_HANDLER is not set |
| 796 | |||
| 797 | # | ||
| 798 | # Watchdog Cards | ||
| 799 | # | ||
| 800 | # CONFIG_WATCHDOG is not set | 769 | # CONFIG_WATCHDOG is not set |
| 770 | # CONFIG_HW_RANDOM is not set | ||
| 801 | CONFIG_GEN_RTC=y | 771 | CONFIG_GEN_RTC=y |
| 802 | CONFIG_GEN_RTC_X=y | 772 | CONFIG_GEN_RTC_X=y |
| 803 | # CONFIG_DTLK is not set | ||
| 804 | # CONFIG_R3964 is not set | 773 | # CONFIG_R3964 is not set |
| 805 | # CONFIG_APPLICOM is not set | 774 | # CONFIG_APPLICOM is not set |
| 806 | 775 | # CONFIG_AGP is not set | |
| 807 | # | ||
| 808 | # Ftape, the floppy tape device driver | ||
| 809 | # | ||
| 810 | # CONFIG_DRM is not set | 776 | # CONFIG_DRM is not set |
| 811 | 777 | ||
| 812 | # | 778 | # |
| @@ -816,16 +782,8 @@ CONFIG_GEN_RTC_X=y | |||
| 816 | # CONFIG_CARDMAN_4000 is not set | 782 | # CONFIG_CARDMAN_4000 is not set |
| 817 | # CONFIG_CARDMAN_4040 is not set | 783 | # CONFIG_CARDMAN_4040 is not set |
| 818 | # CONFIG_RAW_DRIVER is not set | 784 | # CONFIG_RAW_DRIVER is not set |
| 819 | |||
| 820 | # | ||
| 821 | # TPM devices | ||
| 822 | # | ||
| 823 | # CONFIG_TCG_TPM is not set | 785 | # CONFIG_TCG_TPM is not set |
| 824 | # CONFIG_TELCLOCK is not set | 786 | CONFIG_DEVPORT=y |
| 825 | |||
| 826 | # | ||
| 827 | # I2C support | ||
| 828 | # | ||
| 829 | # CONFIG_I2C is not set | 787 | # CONFIG_I2C is not set |
| 830 | 788 | ||
| 831 | # | 789 | # |
| @@ -833,46 +791,59 @@ CONFIG_GEN_RTC_X=y | |||
| 833 | # | 791 | # |
| 834 | # CONFIG_SPI is not set | 792 | # CONFIG_SPI is not set |
| 835 | # CONFIG_SPI_MASTER is not set | 793 | # CONFIG_SPI_MASTER is not set |
| 836 | |||
| 837 | # | ||
| 838 | # Dallas's 1-wire bus | ||
| 839 | # | ||
| 840 | # CONFIG_W1 is not set | 794 | # CONFIG_W1 is not set |
| 841 | 795 | # CONFIG_POWER_SUPPLY is not set | |
| 842 | # | ||
| 843 | # Hardware Monitoring support | ||
| 844 | # | ||
| 845 | # CONFIG_HWMON is not set | 796 | # CONFIG_HWMON is not set |
| 846 | # CONFIG_HWMON_VID is not set | ||
| 847 | 797 | ||
| 848 | # | 798 | # |
| 849 | # Misc devices | 799 | # Sonics Silicon Backplane |
| 850 | # | 800 | # |
| 801 | CONFIG_SSB_POSSIBLE=y | ||
| 802 | # CONFIG_SSB is not set | ||
| 851 | 803 | ||
| 852 | # | 804 | # |
| 853 | # Multimedia Capabilities Port drivers | 805 | # Multifunction device drivers |
| 854 | # | 806 | # |
| 807 | # CONFIG_MFD_SM501 is not set | ||
| 855 | 808 | ||
| 856 | # | 809 | # |
| 857 | # Multimedia devices | 810 | # Multimedia devices |
| 858 | # | 811 | # |
| 859 | # CONFIG_VIDEO_DEV is not set | 812 | # CONFIG_VIDEO_DEV is not set |
| 813 | # CONFIG_DVB_CORE is not set | ||
| 814 | # CONFIG_DAB is not set | ||
| 860 | 815 | ||
| 861 | # | 816 | # |
| 862 | # Digital Video Broadcasting Devices | 817 | # Graphics support |
| 863 | # | 818 | # |
| 864 | # CONFIG_DVB is not set | 819 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
| 865 | 820 | ||
| 866 | # | 821 | # |
| 867 | # Graphics support | 822 | # Display device support |
| 868 | # | 823 | # |
| 824 | # CONFIG_DISPLAY_SUPPORT is not set | ||
| 825 | # CONFIG_VGASTATE is not set | ||
| 826 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
| 869 | CONFIG_FB=y | 827 | CONFIG_FB=y |
| 828 | # CONFIG_FIRMWARE_EDID is not set | ||
| 829 | # CONFIG_FB_DDC is not set | ||
| 870 | CONFIG_FB_CFB_FILLRECT=y | 830 | CONFIG_FB_CFB_FILLRECT=y |
| 871 | CONFIG_FB_CFB_COPYAREA=y | 831 | CONFIG_FB_CFB_COPYAREA=y |
| 872 | CONFIG_FB_CFB_IMAGEBLIT=y | 832 | CONFIG_FB_CFB_IMAGEBLIT=y |
| 833 | # CONFIG_FB_SYS_FILLRECT is not set | ||
| 834 | # CONFIG_FB_SYS_COPYAREA is not set | ||
| 835 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
| 836 | # CONFIG_FB_SYS_FOPS is not set | ||
| 837 | CONFIG_FB_DEFERRED_IO=y | ||
| 838 | # CONFIG_FB_SVGALIB is not set | ||
| 873 | # CONFIG_FB_MACMODES is not set | 839 | # CONFIG_FB_MACMODES is not set |
| 840 | # CONFIG_FB_BACKLIGHT is not set | ||
| 874 | CONFIG_FB_MODE_HELPERS=y | 841 | CONFIG_FB_MODE_HELPERS=y |
| 875 | CONFIG_FB_TILEBLITTING=y | 842 | CONFIG_FB_TILEBLITTING=y |
| 843 | |||
| 844 | # | ||
| 845 | # Frame buffer hardware drivers | ||
| 846 | # | ||
| 876 | # CONFIG_FB_CIRRUS is not set | 847 | # CONFIG_FB_CIRRUS is not set |
| 877 | # CONFIG_FB_PM2 is not set | 848 | # CONFIG_FB_PM2 is not set |
| 878 | # CONFIG_FB_CYBER2000 is not set | 849 | # CONFIG_FB_CYBER2000 is not set |
| @@ -883,17 +854,20 @@ CONFIG_FB_STI=y | |||
| 883 | # CONFIG_FB_NVIDIA is not set | 854 | # CONFIG_FB_NVIDIA is not set |
| 884 | # CONFIG_FB_RIVA is not set | 855 | # CONFIG_FB_RIVA is not set |
| 885 | # CONFIG_FB_MATROX is not set | 856 | # CONFIG_FB_MATROX is not set |
| 886 | # CONFIG_FB_RADEON_OLD is not set | ||
| 887 | # CONFIG_FB_RADEON is not set | 857 | # CONFIG_FB_RADEON is not set |
| 888 | # CONFIG_FB_ATY128 is not set | 858 | # CONFIG_FB_ATY128 is not set |
| 889 | # CONFIG_FB_ATY is not set | 859 | # CONFIG_FB_ATY is not set |
| 860 | # CONFIG_FB_S3 is not set | ||
| 890 | # CONFIG_FB_SAVAGE is not set | 861 | # CONFIG_FB_SAVAGE is not set |
| 891 | # CONFIG_FB_SIS is not set | 862 | # CONFIG_FB_SIS is not set |
| 892 | # CONFIG_FB_NEOMAGIC is not set | 863 | # CONFIG_FB_NEOMAGIC is not set |
| 893 | # CONFIG_FB_KYRO is not set | 864 | # CONFIG_FB_KYRO is not set |
| 894 | # CONFIG_FB_3DFX is not set | 865 | # CONFIG_FB_3DFX is not set |
| 895 | # CONFIG_FB_VOODOO1 is not set | 866 | # CONFIG_FB_VOODOO1 is not set |
| 867 | # CONFIG_FB_VT8623 is not set | ||
| 896 | # CONFIG_FB_TRIDENT is not set | 868 | # CONFIG_FB_TRIDENT is not set |
| 869 | # CONFIG_FB_ARK is not set | ||
| 870 | # CONFIG_FB_PM3 is not set | ||
| 897 | # CONFIG_FB_VIRTUAL is not set | 871 | # CONFIG_FB_VIRTUAL is not set |
| 898 | 872 | ||
| 899 | # | 873 | # |
| @@ -903,6 +877,7 @@ CONFIG_DUMMY_CONSOLE=y | |||
| 903 | CONFIG_DUMMY_CONSOLE_COLUMNS=128 | 877 | CONFIG_DUMMY_CONSOLE_COLUMNS=128 |
| 904 | CONFIG_DUMMY_CONSOLE_ROWS=48 | 878 | CONFIG_DUMMY_CONSOLE_ROWS=48 |
| 905 | CONFIG_FRAMEBUFFER_CONSOLE=y | 879 | CONFIG_FRAMEBUFFER_CONSOLE=y |
| 880 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
| 906 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 881 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
| 907 | CONFIG_STI_CONSOLE=y | 882 | CONFIG_STI_CONSOLE=y |
| 908 | CONFIG_FONTS=y | 883 | CONFIG_FONTS=y |
| @@ -916,16 +891,11 @@ CONFIG_FONT_8x16=y | |||
| 916 | # CONFIG_FONT_SUN8x16 is not set | 891 | # CONFIG_FONT_SUN8x16 is not set |
| 917 | # CONFIG_FONT_SUN12x22 is not set | 892 | # CONFIG_FONT_SUN12x22 is not set |
| 918 | # CONFIG_FONT_10x18 is not set | 893 | # CONFIG_FONT_10x18 is not set |
| 919 | |||
| 920 | # | ||
| 921 | # Logo configuration | ||
| 922 | # | ||
| 923 | CONFIG_LOGO=y | 894 | CONFIG_LOGO=y |
| 924 | # CONFIG_LOGO_LINUX_MONO is not set | 895 | # CONFIG_LOGO_LINUX_MONO is not set |
| 925 | # CONFIG_LOGO_LINUX_VGA16 is not set | 896 | # CONFIG_LOGO_LINUX_VGA16 is not set |
| 926 | # CONFIG_LOGO_LINUX_CLUT224 is not set | 897 | # CONFIG_LOGO_LINUX_CLUT224 is not set |
| 927 | CONFIG_LOGO_PARISC_CLUT224=y | 898 | CONFIG_LOGO_PARISC_CLUT224=y |
| 928 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 929 | 899 | ||
| 930 | # | 900 | # |
| 931 | # Sound | 901 | # Sound |
| @@ -938,35 +908,36 @@ CONFIG_SOUND=y | |||
| 938 | CONFIG_SND=y | 908 | CONFIG_SND=y |
| 939 | CONFIG_SND_TIMER=y | 909 | CONFIG_SND_TIMER=y |
| 940 | CONFIG_SND_PCM=y | 910 | CONFIG_SND_PCM=y |
| 941 | CONFIG_SND_HWDEP=y | ||
| 942 | CONFIG_SND_SEQUENCER=y | 911 | CONFIG_SND_SEQUENCER=y |
| 943 | # CONFIG_SND_SEQ_DUMMY is not set | 912 | # CONFIG_SND_SEQ_DUMMY is not set |
| 944 | CONFIG_SND_OSSEMUL=y | 913 | CONFIG_SND_OSSEMUL=y |
| 945 | CONFIG_SND_MIXER_OSS=y | 914 | CONFIG_SND_MIXER_OSS=y |
| 946 | CONFIG_SND_PCM_OSS=y | 915 | CONFIG_SND_PCM_OSS=y |
| 916 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
| 947 | CONFIG_SND_SEQUENCER_OSS=y | 917 | CONFIG_SND_SEQUENCER_OSS=y |
| 948 | CONFIG_SND_DYNAMIC_MINORS=y | 918 | CONFIG_SND_DYNAMIC_MINORS=y |
| 949 | CONFIG_SND_SUPPORT_OLD_API=y | 919 | CONFIG_SND_SUPPORT_OLD_API=y |
| 920 | CONFIG_SND_VERBOSE_PROCFS=y | ||
| 950 | # CONFIG_SND_VERBOSE_PRINTK is not set | 921 | # CONFIG_SND_VERBOSE_PRINTK is not set |
| 951 | # CONFIG_SND_DEBUG is not set | 922 | # CONFIG_SND_DEBUG is not set |
| 952 | 923 | ||
| 953 | # | 924 | # |
| 954 | # Generic devices | 925 | # Generic devices |
| 955 | # | 926 | # |
| 956 | CONFIG_SND_OPL3_LIB=y | ||
| 957 | CONFIG_SND_AC97_CODEC=y | 927 | CONFIG_SND_AC97_CODEC=y |
| 958 | CONFIG_SND_AC97_BUS=y | ||
| 959 | # CONFIG_SND_DUMMY is not set | 928 | # CONFIG_SND_DUMMY is not set |
| 960 | # CONFIG_SND_VIRMIDI is not set | 929 | # CONFIG_SND_VIRMIDI is not set |
| 961 | # CONFIG_SND_MTPAV is not set | 930 | # CONFIG_SND_MTPAV is not set |
| 931 | # CONFIG_SND_MTS64 is not set | ||
| 962 | # CONFIG_SND_SERIAL_U16550 is not set | 932 | # CONFIG_SND_SERIAL_U16550 is not set |
| 963 | # CONFIG_SND_MPU401 is not set | 933 | # CONFIG_SND_MPU401 is not set |
| 934 | # CONFIG_SND_PORTMAN2X4 is not set | ||
| 964 | 935 | ||
| 965 | # | 936 | # |
| 966 | # PCI devices | 937 | # PCI devices |
| 967 | # | 938 | # |
| 968 | CONFIG_SND_AD1889=y | 939 | CONFIG_SND_AD1889=y |
| 969 | CONFIG_SND_AD1889_OPL3=y | 940 | # CONFIG_SND_ALS300 is not set |
| 970 | # CONFIG_SND_ALI5451 is not set | 941 | # CONFIG_SND_ALI5451 is not set |
| 971 | # CONFIG_SND_ATIIXP is not set | 942 | # CONFIG_SND_ATIIXP is not set |
| 972 | # CONFIG_SND_ATIIXP_MODEM is not set | 943 | # CONFIG_SND_ATIIXP_MODEM is not set |
| @@ -979,6 +950,18 @@ CONFIG_SND_AD1889_OPL3=y | |||
| 979 | # CONFIG_SND_CMIPCI is not set | 950 | # CONFIG_SND_CMIPCI is not set |
| 980 | # CONFIG_SND_CS4281 is not set | 951 | # CONFIG_SND_CS4281 is not set |
| 981 | # CONFIG_SND_CS46XX is not set | 952 | # CONFIG_SND_CS46XX is not set |
| 953 | # CONFIG_SND_DARLA20 is not set | ||
| 954 | # CONFIG_SND_GINA20 is not set | ||
| 955 | # CONFIG_SND_LAYLA20 is not set | ||
| 956 | # CONFIG_SND_DARLA24 is not set | ||
| 957 | # CONFIG_SND_GINA24 is not set | ||
| 958 | # CONFIG_SND_LAYLA24 is not set | ||
| 959 | # CONFIG_SND_MONA is not set | ||
| 960 | # CONFIG_SND_MIA is not set | ||
| 961 | # CONFIG_SND_ECHO3G is not set | ||
| 962 | # CONFIG_SND_INDIGO is not set | ||
| 963 | # CONFIG_SND_INDIGOIO is not set | ||
| 964 | # CONFIG_SND_INDIGODJ is not set | ||
| 982 | # CONFIG_SND_EMU10K1 is not set | 965 | # CONFIG_SND_EMU10K1 is not set |
| 983 | # CONFIG_SND_EMU10K1X is not set | 966 | # CONFIG_SND_EMU10K1X is not set |
| 984 | # CONFIG_SND_ENS1370 is not set | 967 | # CONFIG_SND_ENS1370 is not set |
| @@ -998,6 +981,7 @@ CONFIG_SND_AD1889_OPL3=y | |||
| 998 | # CONFIG_SND_MIXART is not set | 981 | # CONFIG_SND_MIXART is not set |
| 999 | # CONFIG_SND_NM256 is not set | 982 | # CONFIG_SND_NM256 is not set |
| 1000 | # CONFIG_SND_PCXHR is not set | 983 | # CONFIG_SND_PCXHR is not set |
| 984 | # CONFIG_SND_RIPTIDE is not set | ||
| 1001 | # CONFIG_SND_RME32 is not set | 985 | # CONFIG_SND_RME32 is not set |
| 1002 | # CONFIG_SND_RME96 is not set | 986 | # CONFIG_SND_RME96 is not set |
| 1003 | # CONFIG_SND_RME9652 is not set | 987 | # CONFIG_SND_RME9652 is not set |
| @@ -1007,15 +991,19 @@ CONFIG_SND_AD1889_OPL3=y | |||
| 1007 | # CONFIG_SND_VIA82XX_MODEM is not set | 991 | # CONFIG_SND_VIA82XX_MODEM is not set |
| 1008 | # CONFIG_SND_VX222 is not set | 992 | # CONFIG_SND_VX222 is not set |
| 1009 | # CONFIG_SND_YMFPCI is not set | 993 | # CONFIG_SND_YMFPCI is not set |
| 994 | # CONFIG_SND_AC97_POWER_SAVE is not set | ||
| 1010 | 995 | ||
| 1011 | # | 996 | # |
| 1012 | # USB devices | 997 | # USB devices |
| 1013 | # | 998 | # |
| 1014 | # CONFIG_SND_USB_AUDIO is not set | 999 | # CONFIG_SND_USB_AUDIO is not set |
| 1000 | # CONFIG_SND_USB_CAIAQ is not set | ||
| 1015 | 1001 | ||
| 1016 | # | 1002 | # |
| 1017 | # PCMCIA devices | 1003 | # PCMCIA devices |
| 1018 | # | 1004 | # |
| 1005 | # CONFIG_SND_VXPOCKET is not set | ||
| 1006 | # CONFIG_SND_PDAUDIOCF is not set | ||
| 1019 | 1007 | ||
| 1020 | # | 1008 | # |
| 1021 | # GSC devices | 1009 | # GSC devices |
| @@ -1023,15 +1011,34 @@ CONFIG_SND_AD1889_OPL3=y | |||
| 1023 | CONFIG_SND_HARMONY=y | 1011 | CONFIG_SND_HARMONY=y |
| 1024 | 1012 | ||
| 1025 | # | 1013 | # |
| 1014 | # System on Chip audio support | ||
| 1015 | # | ||
| 1016 | # CONFIG_SND_SOC is not set | ||
| 1017 | |||
| 1018 | # | ||
| 1019 | # SoC Audio support for SuperH | ||
| 1020 | # | ||
| 1021 | |||
| 1022 | # | ||
| 1026 | # Open Sound System | 1023 | # Open Sound System |
| 1027 | # | 1024 | # |
| 1028 | # CONFIG_SOUND_PRIME is not set | 1025 | # CONFIG_SOUND_PRIME is not set |
| 1026 | CONFIG_AC97_BUS=y | ||
| 1027 | CONFIG_HID_SUPPORT=y | ||
| 1028 | CONFIG_HID=y | ||
| 1029 | CONFIG_HID_DEBUG=y | ||
| 1029 | 1030 | ||
| 1030 | # | 1031 | # |
| 1031 | # USB support | 1032 | # USB Input Devices |
| 1032 | # | 1033 | # |
| 1034 | CONFIG_USB_HID=y | ||
| 1035 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
| 1036 | # CONFIG_HID_FF is not set | ||
| 1037 | # CONFIG_USB_HIDDEV is not set | ||
| 1038 | CONFIG_USB_SUPPORT=y | ||
| 1033 | CONFIG_USB_ARCH_HAS_HCD=y | 1039 | CONFIG_USB_ARCH_HAS_HCD=y |
| 1034 | CONFIG_USB_ARCH_HAS_OHCI=y | 1040 | CONFIG_USB_ARCH_HAS_OHCI=y |
| 1041 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
| 1035 | CONFIG_USB=y | 1042 | CONFIG_USB=y |
| 1036 | # CONFIG_USB_DEBUG is not set | 1043 | # CONFIG_USB_DEBUG is not set |
| 1037 | 1044 | ||
| @@ -1039,7 +1046,7 @@ CONFIG_USB=y | |||
| 1039 | # Miscellaneous USB options | 1046 | # Miscellaneous USB options |
| 1040 | # | 1047 | # |
| 1041 | CONFIG_USB_DEVICEFS=y | 1048 | CONFIG_USB_DEVICEFS=y |
| 1042 | # CONFIG_USB_BANDWIDTH is not set | 1049 | CONFIG_USB_DEVICE_CLASS=y |
| 1043 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1050 | # CONFIG_USB_DYNAMIC_MINORS is not set |
| 1044 | # CONFIG_USB_OTG is not set | 1051 | # CONFIG_USB_OTG is not set |
| 1045 | 1052 | ||
| @@ -1049,15 +1056,16 @@ CONFIG_USB_DEVICEFS=y | |||
| 1049 | # CONFIG_USB_EHCI_HCD is not set | 1056 | # CONFIG_USB_EHCI_HCD is not set |
| 1050 | # CONFIG_USB_ISP116X_HCD is not set | 1057 | # CONFIG_USB_ISP116X_HCD is not set |
| 1051 | CONFIG_USB_OHCI_HCD=y | 1058 | CONFIG_USB_OHCI_HCD=y |
| 1052 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | 1059 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
| 1060 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
| 1053 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 1061 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
| 1054 | CONFIG_USB_UHCI_HCD=y | 1062 | CONFIG_USB_UHCI_HCD=y |
| 1055 | # CONFIG_USB_SL811_HCD is not set | 1063 | # CONFIG_USB_SL811_HCD is not set |
| 1064 | # CONFIG_USB_R8A66597_HCD is not set | ||
| 1056 | 1065 | ||
| 1057 | # | 1066 | # |
| 1058 | # USB Device Class drivers | 1067 | # USB Device Class drivers |
| 1059 | # | 1068 | # |
| 1060 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set | ||
| 1061 | # CONFIG_USB_ACM is not set | 1069 | # CONFIG_USB_ACM is not set |
| 1062 | # CONFIG_USB_PRINTER is not set | 1070 | # CONFIG_USB_PRINTER is not set |
| 1063 | 1071 | ||
| @@ -1072,52 +1080,10 @@ CONFIG_USB_UHCI_HCD=y | |||
| 1072 | # CONFIG_USB_LIBUSUAL is not set | 1080 | # CONFIG_USB_LIBUSUAL is not set |
| 1073 | 1081 | ||
| 1074 | # | 1082 | # |
| 1075 | # USB Input Devices | ||
| 1076 | # | ||
| 1077 | CONFIG_USB_HID=y | ||
| 1078 | CONFIG_USB_HIDINPUT=y | ||
| 1079 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
| 1080 | # CONFIG_HID_FF is not set | ||
| 1081 | # CONFIG_USB_HIDDEV is not set | ||
| 1082 | # CONFIG_USB_AIPTEK is not set | ||
| 1083 | # CONFIG_USB_WACOM is not set | ||
| 1084 | # CONFIG_USB_ACECAD is not set | ||
| 1085 | # CONFIG_USB_KBTAB is not set | ||
| 1086 | # CONFIG_USB_POWERMATE is not set | ||
| 1087 | # CONFIG_USB_MTOUCH is not set | ||
| 1088 | # CONFIG_USB_ITMTOUCH is not set | ||
| 1089 | # CONFIG_USB_EGALAX is not set | ||
| 1090 | # CONFIG_USB_YEALINK is not set | ||
| 1091 | # CONFIG_USB_XPAD is not set | ||
| 1092 | # CONFIG_USB_ATI_REMOTE is not set | ||
| 1093 | # CONFIG_USB_ATI_REMOTE2 is not set | ||
| 1094 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
| 1095 | # CONFIG_USB_APPLETOUCH is not set | ||
| 1096 | |||
| 1097 | # | ||
| 1098 | # USB Imaging devices | 1083 | # USB Imaging devices |
| 1099 | # | 1084 | # |
| 1100 | # CONFIG_USB_MDC800 is not set | 1085 | # CONFIG_USB_MDC800 is not set |
| 1101 | # CONFIG_USB_MICROTEK is not set | 1086 | # CONFIG_USB_MICROTEK is not set |
| 1102 | |||
| 1103 | # | ||
| 1104 | # USB Multimedia devices | ||
| 1105 | # | ||
| 1106 | # CONFIG_USB_DABUSB is not set | ||
| 1107 | |||
| 1108 | # | ||
| 1109 | # Video4Linux support is needed for USB Multimedia device support | ||
| 1110 | # | ||
| 1111 | |||
| 1112 | # | ||
| 1113 | # USB Network Adapters | ||
| 1114 | # | ||
| 1115 | # CONFIG_USB_CATC is not set | ||
| 1116 | # CONFIG_USB_KAWETH is not set | ||
| 1117 | # CONFIG_USB_PEGASUS is not set | ||
| 1118 | # CONFIG_USB_RTL8150 is not set | ||
| 1119 | # CONFIG_USB_USBNET is not set | ||
| 1120 | # CONFIG_USB_ZD1201 is not set | ||
| 1121 | CONFIG_USB_MON=y | 1087 | CONFIG_USB_MON=y |
| 1122 | 1088 | ||
| 1123 | # | 1089 | # |
| @@ -1135,16 +1101,22 @@ CONFIG_USB_MON=y | |||
| 1135 | # | 1101 | # |
| 1136 | # CONFIG_USB_EMI62 is not set | 1102 | # CONFIG_USB_EMI62 is not set |
| 1137 | # CONFIG_USB_EMI26 is not set | 1103 | # CONFIG_USB_EMI26 is not set |
| 1104 | # CONFIG_USB_ADUTUX is not set | ||
| 1138 | # CONFIG_USB_AUERSWALD is not set | 1105 | # CONFIG_USB_AUERSWALD is not set |
| 1139 | # CONFIG_USB_RIO500 is not set | 1106 | # CONFIG_USB_RIO500 is not set |
| 1140 | # CONFIG_USB_LEGOTOWER is not set | 1107 | # CONFIG_USB_LEGOTOWER is not set |
| 1141 | # CONFIG_USB_LCD is not set | 1108 | # CONFIG_USB_LCD is not set |
| 1109 | # CONFIG_USB_BERRY_CHARGE is not set | ||
| 1142 | # CONFIG_USB_LED is not set | 1110 | # CONFIG_USB_LED is not set |
| 1111 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
| 1143 | # CONFIG_USB_CYTHERM is not set | 1112 | # CONFIG_USB_CYTHERM is not set |
| 1144 | # CONFIG_USB_PHIDGETKIT is not set | 1113 | # CONFIG_USB_PHIDGET is not set |
| 1145 | # CONFIG_USB_PHIDGETSERVO is not set | ||
| 1146 | # CONFIG_USB_IDMOUSE is not set | 1114 | # CONFIG_USB_IDMOUSE is not set |
| 1115 | # CONFIG_USB_FTDI_ELAN is not set | ||
| 1116 | # CONFIG_USB_APPLEDISPLAY is not set | ||
| 1147 | # CONFIG_USB_LD is not set | 1117 | # CONFIG_USB_LD is not set |
| 1118 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
| 1119 | # CONFIG_USB_IOWARRIOR is not set | ||
| 1148 | # CONFIG_USB_TEST is not set | 1120 | # CONFIG_USB_TEST is not set |
| 1149 | 1121 | ||
| 1150 | # | 1122 | # |
| @@ -1155,20 +1127,29 @@ CONFIG_USB_MON=y | |||
| 1155 | # USB Gadget Support | 1127 | # USB Gadget Support |
| 1156 | # | 1128 | # |
| 1157 | # CONFIG_USB_GADGET is not set | 1129 | # CONFIG_USB_GADGET is not set |
| 1130 | # CONFIG_MMC is not set | ||
| 1131 | # CONFIG_NEW_LEDS is not set | ||
| 1132 | # CONFIG_INFINIBAND is not set | ||
| 1133 | # CONFIG_RTC_CLASS is not set | ||
| 1158 | 1134 | ||
| 1159 | # | 1135 | # |
| 1160 | # MMC/SD Card support | 1136 | # DMA Engine support |
| 1161 | # | 1137 | # |
| 1162 | # CONFIG_MMC is not set | 1138 | # CONFIG_DMA_ENGINE is not set |
| 1163 | 1139 | ||
| 1164 | # | 1140 | # |
| 1165 | # InfiniBand support | 1141 | # DMA Clients |
| 1166 | # | 1142 | # |
| 1167 | # CONFIG_INFINIBAND is not set | ||
| 1168 | 1143 | ||
| 1169 | # | 1144 | # |
| 1170 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 1145 | # DMA Devices |
| 1146 | # | ||
| 1147 | # CONFIG_AUXDISPLAY is not set | ||
| 1148 | |||
| 1149 | # | ||
| 1150 | # Userspace I/O | ||
| 1171 | # | 1151 | # |
| 1152 | # CONFIG_UIO is not set | ||
| 1172 | 1153 | ||
| 1173 | # | 1154 | # |
| 1174 | # File systems | 1155 | # File systems |
| @@ -1178,16 +1159,19 @@ CONFIG_EXT2_FS=y | |||
| 1178 | # CONFIG_EXT2_FS_XIP is not set | 1159 | # CONFIG_EXT2_FS_XIP is not set |
| 1179 | CONFIG_EXT3_FS=y | 1160 | CONFIG_EXT3_FS=y |
| 1180 | # CONFIG_EXT3_FS_XATTR is not set | 1161 | # CONFIG_EXT3_FS_XATTR is not set |
| 1162 | # CONFIG_EXT4DEV_FS is not set | ||
| 1181 | CONFIG_JBD=y | 1163 | CONFIG_JBD=y |
| 1182 | # CONFIG_JBD_DEBUG is not set | 1164 | # CONFIG_JBD_DEBUG is not set |
| 1183 | # CONFIG_REISERFS_FS is not set | 1165 | # CONFIG_REISERFS_FS is not set |
| 1184 | # CONFIG_JFS_FS is not set | 1166 | # CONFIG_JFS_FS is not set |
| 1185 | CONFIG_FS_POSIX_ACL=y | 1167 | CONFIG_FS_POSIX_ACL=y |
| 1186 | # CONFIG_XFS_FS is not set | 1168 | # CONFIG_XFS_FS is not set |
| 1169 | # CONFIG_GFS2_FS is not set | ||
| 1187 | # CONFIG_OCFS2_FS is not set | 1170 | # CONFIG_OCFS2_FS is not set |
| 1188 | # CONFIG_MINIX_FS is not set | 1171 | # CONFIG_MINIX_FS is not set |
| 1189 | # CONFIG_ROMFS_FS is not set | 1172 | # CONFIG_ROMFS_FS is not set |
| 1190 | CONFIG_INOTIFY=y | 1173 | CONFIG_INOTIFY=y |
| 1174 | CONFIG_INOTIFY_USER=y | ||
| 1191 | # CONFIG_QUOTA is not set | 1175 | # CONFIG_QUOTA is not set |
| 1192 | CONFIG_DNOTIFY=y | 1176 | CONFIG_DNOTIFY=y |
| 1193 | CONFIG_AUTOFS_FS=y | 1177 | CONFIG_AUTOFS_FS=y |
| @@ -1217,11 +1201,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
| 1217 | # | 1201 | # |
| 1218 | CONFIG_PROC_FS=y | 1202 | CONFIG_PROC_FS=y |
| 1219 | CONFIG_PROC_KCORE=y | 1203 | CONFIG_PROC_KCORE=y |
| 1204 | CONFIG_PROC_SYSCTL=y | ||
| 1220 | CONFIG_SYSFS=y | 1205 | CONFIG_SYSFS=y |
| 1221 | CONFIG_TMPFS=y | 1206 | CONFIG_TMPFS=y |
| 1207 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
| 1222 | # CONFIG_HUGETLB_PAGE is not set | 1208 | # CONFIG_HUGETLB_PAGE is not set |
| 1223 | CONFIG_RAMFS=y | 1209 | CONFIG_RAMFS=y |
| 1224 | # CONFIG_RELAYFS_FS is not set | ||
| 1225 | # CONFIG_CONFIGFS_FS is not set | 1210 | # CONFIG_CONFIGFS_FS is not set |
| 1226 | 1211 | ||
| 1227 | # | 1212 | # |
| @@ -1229,6 +1214,7 @@ CONFIG_RAMFS=y | |||
| 1229 | # | 1214 | # |
| 1230 | # CONFIG_ADFS_FS is not set | 1215 | # CONFIG_ADFS_FS is not set |
| 1231 | # CONFIG_AFFS_FS is not set | 1216 | # CONFIG_AFFS_FS is not set |
| 1217 | # CONFIG_ECRYPT_FS is not set | ||
| 1232 | # CONFIG_HFS_FS is not set | 1218 | # CONFIG_HFS_FS is not set |
| 1233 | # CONFIG_HFSPLUS_FS is not set | 1219 | # CONFIG_HFSPLUS_FS is not set |
| 1234 | # CONFIG_BEFS_FS is not set | 1220 | # CONFIG_BEFS_FS is not set |
| @@ -1261,6 +1247,7 @@ CONFIG_EXPORTFS=y | |||
| 1261 | CONFIG_NFS_COMMON=y | 1247 | CONFIG_NFS_COMMON=y |
| 1262 | CONFIG_SUNRPC=y | 1248 | CONFIG_SUNRPC=y |
| 1263 | CONFIG_SUNRPC_GSS=y | 1249 | CONFIG_SUNRPC_GSS=y |
| 1250 | # CONFIG_SUNRPC_BIND34 is not set | ||
| 1264 | CONFIG_RPCSEC_GSS_KRB5=y | 1251 | CONFIG_RPCSEC_GSS_KRB5=y |
| 1265 | CONFIG_RPCSEC_GSS_SPKM3=m | 1252 | CONFIG_RPCSEC_GSS_SPKM3=m |
| 1266 | CONFIG_SMB_FS=m | 1253 | CONFIG_SMB_FS=m |
| @@ -1268,12 +1255,13 @@ CONFIG_SMB_NLS_DEFAULT=y | |||
| 1268 | CONFIG_SMB_NLS_REMOTE="cp437" | 1255 | CONFIG_SMB_NLS_REMOTE="cp437" |
| 1269 | CONFIG_CIFS=m | 1256 | CONFIG_CIFS=m |
| 1270 | # CONFIG_CIFS_STATS is not set | 1257 | # CONFIG_CIFS_STATS is not set |
| 1258 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
| 1271 | # CONFIG_CIFS_XATTR is not set | 1259 | # CONFIG_CIFS_XATTR is not set |
| 1260 | # CONFIG_CIFS_DEBUG2 is not set | ||
| 1272 | # CONFIG_CIFS_EXPERIMENTAL is not set | 1261 | # CONFIG_CIFS_EXPERIMENTAL is not set |
| 1273 | # CONFIG_NCP_FS is not set | 1262 | # CONFIG_NCP_FS is not set |
| 1274 | # CONFIG_CODA_FS is not set | 1263 | # CONFIG_CODA_FS is not set |
| 1275 | # CONFIG_AFS_FS is not set | 1264 | # CONFIG_AFS_FS is not set |
| 1276 | # CONFIG_9P_FS is not set | ||
| 1277 | 1265 | ||
| 1278 | # | 1266 | # |
| 1279 | # Partition Types | 1267 | # Partition Types |
| @@ -1326,6 +1314,11 @@ CONFIG_NLS_KOI8_U=m | |||
| 1326 | CONFIG_NLS_UTF8=y | 1314 | CONFIG_NLS_UTF8=y |
| 1327 | 1315 | ||
| 1328 | # | 1316 | # |
| 1317 | # Distributed Lock Manager | ||
| 1318 | # | ||
| 1319 | # CONFIG_DLM is not set | ||
| 1320 | |||
| 1321 | # | ||
| 1329 | # Profiling support | 1322 | # Profiling support |
| 1330 | # | 1323 | # |
| 1331 | CONFIG_PROFILING=y | 1324 | CONFIG_PROFILING=y |
| @@ -1335,21 +1328,32 @@ CONFIG_OPROFILE=m | |||
| 1335 | # Kernel hacking | 1328 | # Kernel hacking |
| 1336 | # | 1329 | # |
| 1337 | # CONFIG_PRINTK_TIME is not set | 1330 | # CONFIG_PRINTK_TIME is not set |
| 1331 | CONFIG_ENABLE_MUST_CHECK=y | ||
| 1338 | CONFIG_MAGIC_SYSRQ=y | 1332 | CONFIG_MAGIC_SYSRQ=y |
| 1333 | # CONFIG_UNUSED_SYMBOLS is not set | ||
| 1334 | # CONFIG_DEBUG_FS is not set | ||
| 1335 | CONFIG_HEADERS_CHECK=y | ||
| 1339 | CONFIG_DEBUG_KERNEL=y | 1336 | CONFIG_DEBUG_KERNEL=y |
| 1340 | CONFIG_LOG_BUF_SHIFT=16 | 1337 | # CONFIG_DEBUG_SHIRQ is not set |
| 1341 | CONFIG_DETECT_SOFTLOCKUP=y | 1338 | CONFIG_DETECT_SOFTLOCKUP=y |
| 1339 | CONFIG_SCHED_DEBUG=y | ||
| 1342 | # CONFIG_SCHEDSTATS is not set | 1340 | # CONFIG_SCHEDSTATS is not set |
| 1341 | # CONFIG_TIMER_STATS is not set | ||
| 1343 | # CONFIG_DEBUG_SLAB is not set | 1342 | # CONFIG_DEBUG_SLAB is not set |
| 1344 | CONFIG_DEBUG_MUTEXES=y | 1343 | # CONFIG_DEBUG_RT_MUTEXES is not set |
| 1344 | # CONFIG_RT_MUTEX_TESTER is not set | ||
| 1345 | # CONFIG_DEBUG_SPINLOCK is not set | 1345 | # CONFIG_DEBUG_SPINLOCK is not set |
| 1346 | CONFIG_DEBUG_MUTEXES=y | ||
| 1346 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1347 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 1348 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 1347 | # CONFIG_DEBUG_KOBJECT is not set | 1349 | # CONFIG_DEBUG_KOBJECT is not set |
| 1350 | CONFIG_DEBUG_BUGVERBOSE=y | ||
| 1348 | # CONFIG_DEBUG_INFO is not set | 1351 | # CONFIG_DEBUG_INFO is not set |
| 1349 | # CONFIG_DEBUG_FS is not set | ||
| 1350 | # CONFIG_DEBUG_VM is not set | 1352 | # CONFIG_DEBUG_VM is not set |
| 1353 | # CONFIG_DEBUG_LIST is not set | ||
| 1351 | CONFIG_FORCED_INLINING=y | 1354 | CONFIG_FORCED_INLINING=y |
| 1352 | # CONFIG_RCU_TORTURE_TEST is not set | 1355 | # CONFIG_RCU_TORTURE_TEST is not set |
| 1356 | # CONFIG_FAULT_INJECTION is not set | ||
| 1353 | # CONFIG_DEBUG_RODATA is not set | 1357 | # CONFIG_DEBUG_RODATA is not set |
| 1354 | 1358 | ||
| 1355 | # | 1359 | # |
| @@ -1358,12 +1362,13 @@ CONFIG_FORCED_INLINING=y | |||
| 1358 | CONFIG_KEYS=y | 1362 | CONFIG_KEYS=y |
| 1359 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | 1363 | CONFIG_KEYS_DEBUG_PROC_KEYS=y |
| 1360 | # CONFIG_SECURITY is not set | 1364 | # CONFIG_SECURITY is not set |
| 1361 | |||
| 1362 | # | ||
| 1363 | # Cryptographic options | ||
| 1364 | # | ||
| 1365 | CONFIG_CRYPTO=y | 1365 | CONFIG_CRYPTO=y |
| 1366 | CONFIG_CRYPTO_ALGAPI=y | ||
| 1367 | CONFIG_CRYPTO_BLKCIPHER=y | ||
| 1368 | CONFIG_CRYPTO_HASH=y | ||
| 1369 | CONFIG_CRYPTO_MANAGER=y | ||
| 1366 | CONFIG_CRYPTO_HMAC=y | 1370 | CONFIG_CRYPTO_HMAC=y |
| 1371 | # CONFIG_CRYPTO_XCBC is not set | ||
| 1367 | CONFIG_CRYPTO_NULL=m | 1372 | CONFIG_CRYPTO_NULL=m |
| 1368 | CONFIG_CRYPTO_MD4=m | 1373 | CONFIG_CRYPTO_MD4=m |
| 1369 | CONFIG_CRYPTO_MD5=y | 1374 | CONFIG_CRYPTO_MD5=y |
| @@ -1372,9 +1377,18 @@ CONFIG_CRYPTO_SHA256=m | |||
| 1372 | CONFIG_CRYPTO_SHA512=m | 1377 | CONFIG_CRYPTO_SHA512=m |
| 1373 | CONFIG_CRYPTO_WP512=m | 1378 | CONFIG_CRYPTO_WP512=m |
| 1374 | CONFIG_CRYPTO_TGR192=m | 1379 | CONFIG_CRYPTO_TGR192=m |
| 1380 | # CONFIG_CRYPTO_GF128MUL is not set | ||
| 1381 | # CONFIG_CRYPTO_ECB is not set | ||
| 1382 | CONFIG_CRYPTO_CBC=y | ||
| 1383 | # CONFIG_CRYPTO_PCBC is not set | ||
| 1384 | # CONFIG_CRYPTO_LRW is not set | ||
| 1385 | # CONFIG_CRYPTO_XTS is not set | ||
| 1386 | # CONFIG_CRYPTO_CRYPTD is not set | ||
| 1375 | CONFIG_CRYPTO_DES=y | 1387 | CONFIG_CRYPTO_DES=y |
| 1388 | # CONFIG_CRYPTO_FCRYPT is not set | ||
| 1376 | CONFIG_CRYPTO_BLOWFISH=m | 1389 | CONFIG_CRYPTO_BLOWFISH=m |
| 1377 | CONFIG_CRYPTO_TWOFISH=m | 1390 | CONFIG_CRYPTO_TWOFISH=m |
| 1391 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
| 1378 | CONFIG_CRYPTO_SERPENT=m | 1392 | CONFIG_CRYPTO_SERPENT=m |
| 1379 | CONFIG_CRYPTO_AES=m | 1393 | CONFIG_CRYPTO_AES=m |
| 1380 | CONFIG_CRYPTO_CAST5=m | 1394 | CONFIG_CRYPTO_CAST5=m |
| @@ -1383,21 +1397,28 @@ CONFIG_CRYPTO_TEA=m | |||
| 1383 | CONFIG_CRYPTO_ARC4=m | 1397 | CONFIG_CRYPTO_ARC4=m |
| 1384 | CONFIG_CRYPTO_KHAZAD=m | 1398 | CONFIG_CRYPTO_KHAZAD=m |
| 1385 | CONFIG_CRYPTO_ANUBIS=m | 1399 | CONFIG_CRYPTO_ANUBIS=m |
| 1400 | # CONFIG_CRYPTO_SEED is not set | ||
| 1386 | CONFIG_CRYPTO_DEFLATE=y | 1401 | CONFIG_CRYPTO_DEFLATE=y |
| 1387 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1402 | CONFIG_CRYPTO_MICHAEL_MIC=m |
| 1388 | CONFIG_CRYPTO_CRC32C=m | 1403 | CONFIG_CRYPTO_CRC32C=m |
| 1404 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
| 1389 | CONFIG_CRYPTO_TEST=m | 1405 | CONFIG_CRYPTO_TEST=m |
| 1390 | 1406 | # CONFIG_CRYPTO_AUTHENC is not set | |
| 1391 | # | 1407 | # CONFIG_CRYPTO_HW is not set |
| 1392 | # Hardware crypto devices | ||
| 1393 | # | ||
| 1394 | 1408 | ||
| 1395 | # | 1409 | # |
| 1396 | # Library routines | 1410 | # Library routines |
| 1397 | # | 1411 | # |
| 1412 | CONFIG_BITREVERSE=y | ||
| 1398 | CONFIG_CRC_CCITT=m | 1413 | CONFIG_CRC_CCITT=m |
| 1399 | # CONFIG_CRC16 is not set | 1414 | # CONFIG_CRC16 is not set |
| 1415 | # CONFIG_CRC_ITU_T is not set | ||
| 1400 | CONFIG_CRC32=y | 1416 | CONFIG_CRC32=y |
| 1417 | # CONFIG_CRC7 is not set | ||
| 1401 | CONFIG_LIBCRC32C=m | 1418 | CONFIG_LIBCRC32C=m |
| 1402 | CONFIG_ZLIB_INFLATE=y | 1419 | CONFIG_ZLIB_INFLATE=y |
| 1403 | CONFIG_ZLIB_DEFLATE=y | 1420 | CONFIG_ZLIB_DEFLATE=y |
| 1421 | CONFIG_PLIST=y | ||
| 1422 | CONFIG_HAS_IOMEM=y | ||
| 1423 | CONFIG_HAS_IOPORT=y | ||
| 1424 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/parisc/hpux/gate.S b/arch/parisc/hpux/gate.S index 0b9d5b1e4b37..38a1c1b8d4e8 100644 --- a/arch/parisc/hpux/gate.S +++ b/arch/parisc/hpux/gate.S | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | .import hpux_call_table | 20 | .import hpux_call_table |
| 21 | .import hpux_syscall_exit,code | 21 | .import hpux_syscall_exit,code |
| 22 | 22 | ||
| 23 | .align 4096 | 23 | .align PAGE_SIZE |
| 24 | ENTRY(hpux_gateway_page) | 24 | ENTRY(hpux_gateway_page) |
| 25 | nop | 25 | nop |
| 26 | #ifdef CONFIG_64BIT | 26 | #ifdef CONFIG_64BIT |
| @@ -103,5 +103,5 @@ syscall_nosys: | |||
| 103 | ldo -ENOSYS(%r0),%r28 | 103 | ldo -ENOSYS(%r0),%r28 |
| 104 | ENDPROC(hpux_gateway_page) | 104 | ENDPROC(hpux_gateway_page) |
| 105 | 105 | ||
| 106 | .align 4096 | 106 | .align PAGE_SIZE |
| 107 | ENTRY(end_hpux_gateway_page) | 107 | ENTRY(end_hpux_gateway_page) |
diff --git a/arch/parisc/kernel/asm-offsets.c b/arch/parisc/kernel/asm-offsets.c index d3b7917a87cb..eaa79bc14d94 100644 --- a/arch/parisc/kernel/asm-offsets.c +++ b/arch/parisc/kernel/asm-offsets.c | |||
| @@ -290,9 +290,6 @@ int main(void) | |||
| 290 | DEFINE(ASM_PTE_ENTRY_SIZE, PTE_ENTRY_SIZE); | 290 | DEFINE(ASM_PTE_ENTRY_SIZE, PTE_ENTRY_SIZE); |
| 291 | DEFINE(ASM_PFN_PTE_SHIFT, PFN_PTE_SHIFT); | 291 | DEFINE(ASM_PFN_PTE_SHIFT, PFN_PTE_SHIFT); |
| 292 | DEFINE(ASM_PT_INITIAL, PT_INITIAL); | 292 | DEFINE(ASM_PT_INITIAL, PT_INITIAL); |
| 293 | DEFINE(ASM_PAGE_SIZE, PAGE_SIZE); | ||
| 294 | DEFINE(ASM_PAGE_SIZE_DIV64, PAGE_SIZE/64); | ||
| 295 | DEFINE(ASM_PAGE_SIZE_DIV128, PAGE_SIZE/128); | ||
| 296 | BLANK(); | 293 | BLANK(); |
| 297 | DEFINE(EXCDATA_IP, offsetof(struct exception_data, fault_ip)); | 294 | DEFINE(EXCDATA_IP, offsetof(struct exception_data, fault_ip)); |
| 298 | DEFINE(EXCDATA_SPACE, offsetof(struct exception_data, fault_space)); | 295 | DEFINE(EXCDATA_SPACE, offsetof(struct exception_data, fault_space)); |
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 42598abf4576..111d47284eac 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
| @@ -98,7 +98,6 @@ | |||
| 98 | * The "get_stack" macros are responsible for determining the | 98 | * The "get_stack" macros are responsible for determining the |
| 99 | * kernel stack value. | 99 | * kernel stack value. |
| 100 | * | 100 | * |
| 101 | * For Faults: | ||
| 102 | * If sr7 == 0 | 101 | * If sr7 == 0 |
| 103 | * Already using a kernel stack, so call the | 102 | * Already using a kernel stack, so call the |
| 104 | * get_stack_use_r30 macro to push a pt_regs structure | 103 | * get_stack_use_r30 macro to push a pt_regs structure |
| @@ -110,26 +109,6 @@ | |||
| 110 | * task pointer pointed to by cr30. Set the stack | 109 | * task pointer pointed to by cr30. Set the stack |
| 111 | * pointer to point to the end of the task structure. | 110 | * pointer to point to the end of the task structure. |
| 112 | * | 111 | * |
| 113 | * For Interrupts: | ||
| 114 | * If sr7 == 0 | ||
| 115 | * Already using a kernel stack, check to see if r30 | ||
| 116 | * is already pointing to the per processor interrupt | ||
| 117 | * stack. If it is, call the get_stack_use_r30 macro | ||
| 118 | * to push a pt_regs structure on the stack, and store | ||
| 119 | * registers there. Otherwise, call get_stack_use_cr31 | ||
| 120 | * to get a pointer to the base of the interrupt stack | ||
| 121 | * and push a pt_regs structure on that stack. | ||
| 122 | * else | ||
| 123 | * Need to set up a kernel stack, so call the | ||
| 124 | * get_stack_use_cr30 macro to set up a pointer | ||
| 125 | * to the pt_regs structure contained within the | ||
| 126 | * task pointer pointed to by cr30. Set the stack | ||
| 127 | * pointer to point to the end of the task structure. | ||
| 128 | * N.B: We don't use the interrupt stack for the | ||
| 129 | * first interrupt from userland, because signals/ | ||
| 130 | * resched's are processed when returning to userland, | ||
| 131 | * and we can sleep in those cases. | ||
| 132 | * | ||
| 133 | * Note that we use shadowed registers for temps until | 112 | * Note that we use shadowed registers for temps until |
| 134 | * we can save %r26 and %r29. %r26 is used to preserve | 113 | * we can save %r26 and %r29. %r26 is used to preserve |
| 135 | * %r8 (a shadowed register) which temporarily contained | 114 | * %r8 (a shadowed register) which temporarily contained |
| @@ -652,7 +631,7 @@ | |||
| 652 | 631 | ||
| 653 | .text | 632 | .text |
| 654 | 633 | ||
| 655 | .align 4096 | 634 | .align PAGE_SIZE |
| 656 | 635 | ||
| 657 | ENTRY(fault_vector_20) | 636 | ENTRY(fault_vector_20) |
| 658 | /* First vector is invalid (0) */ | 637 | /* First vector is invalid (0) */ |
| @@ -904,7 +883,7 @@ ENDPROC(_switch_to) | |||
| 904 | * | 883 | * |
| 905 | */ | 884 | */ |
| 906 | 885 | ||
| 907 | .align 4096 | 886 | .align PAGE_SIZE |
| 908 | 887 | ||
| 909 | ENTRY(syscall_exit_rfi) | 888 | ENTRY(syscall_exit_rfi) |
| 910 | mfctl %cr30,%r16 | 889 | mfctl %cr30,%r16 |
| @@ -1086,23 +1065,13 @@ intr_do_preempt: | |||
| 1086 | 1065 | ||
| 1087 | intr_extint: | 1066 | intr_extint: |
| 1088 | CMPIB=,n 0,%r16,1f | 1067 | CMPIB=,n 0,%r16,1f |
| 1068 | |||
| 1089 | get_stack_use_cr30 | 1069 | get_stack_use_cr30 |
| 1090 | b,n 3f | 1070 | b,n 2f |
| 1091 | 1071 | ||
| 1092 | 1: | 1072 | 1: |
| 1093 | #if 0 /* Interrupt Stack support not working yet! */ | ||
| 1094 | mfctl %cr31,%r1 | ||
| 1095 | copy %r30,%r17 | ||
| 1096 | /* FIXME! depi below has hardcoded idea of interrupt stack size (32k)*/ | ||
| 1097 | DEPI 0,31,15,%r17 | ||
| 1098 | CMPB=,n %r1,%r17,2f | ||
| 1099 | get_stack_use_cr31 | ||
| 1100 | b,n 3f | ||
| 1101 | #endif | ||
| 1102 | 2: | ||
| 1103 | get_stack_use_r30 | 1073 | get_stack_use_r30 |
| 1104 | 1074 | 2: | |
| 1105 | 3: | ||
| 1106 | save_specials %r29 | 1075 | save_specials %r29 |
| 1107 | virt_map | 1076 | virt_map |
| 1108 | save_general %r29 | 1077 | save_general %r29 |
diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S index 9676c486bb63..a7b8859488bb 100644 --- a/arch/parisc/kernel/head.S +++ b/arch/parisc/kernel/head.S | |||
| @@ -95,7 +95,7 @@ $bss_loop: | |||
| 95 | 95 | ||
| 96 | 1: | 96 | 1: |
| 97 | stw %r3,0(%r4) | 97 | stw %r3,0(%r4) |
| 98 | ldo (ASM_PAGE_SIZE >> PxD_VALUE_SHIFT)(%r3),%r3 | 98 | ldo (PAGE_SIZE >> PxD_VALUE_SHIFT)(%r3),%r3 |
| 99 | addib,> -1,%r1,1b | 99 | addib,> -1,%r1,1b |
| 100 | #if PT_NLEVELS == 3 | 100 | #if PT_NLEVELS == 3 |
| 101 | ldo ASM_PMD_ENTRY_SIZE(%r4),%r4 | 101 | ldo ASM_PMD_ENTRY_SIZE(%r4),%r4 |
| @@ -128,10 +128,6 @@ $pgt_fill_loop: | |||
| 128 | /* And the stack pointer too */ | 128 | /* And the stack pointer too */ |
| 129 | ldo THREAD_SZ_ALGN(%r6),%sp | 129 | ldo THREAD_SZ_ALGN(%r6),%sp |
| 130 | 130 | ||
| 131 | /* And the interrupt stack */ | ||
| 132 | load32 interrupt_stack,%r6 | ||
| 133 | mtctl %r6,%cr31 | ||
| 134 | |||
| 135 | #ifdef CONFIG_SMP | 131 | #ifdef CONFIG_SMP |
| 136 | /* Set the smp rendevous address into page zero. | 132 | /* Set the smp rendevous address into page zero. |
| 137 | ** It would be safer to do this in init_smp_config() but | 133 | ** It would be safer to do this in init_smp_config() but |
diff --git a/arch/parisc/kernel/hpmc.S b/arch/parisc/kernel/hpmc.S index 43b41df0b541..2cbf13b3ef11 100644 --- a/arch/parisc/kernel/hpmc.S +++ b/arch/parisc/kernel/hpmc.S | |||
| @@ -55,13 +55,13 @@ | |||
| 55 | * IODC requires 7K byte stack. That leaves 1K byte for os_hpmc. | 55 | * IODC requires 7K byte stack. That leaves 1K byte for os_hpmc. |
| 56 | */ | 56 | */ |
| 57 | 57 | ||
| 58 | .align 4096 | 58 | .align PAGE_SIZE |
| 59 | hpmc_stack: | 59 | hpmc_stack: |
| 60 | .block 16384 | 60 | .block 16384 |
| 61 | 61 | ||
| 62 | #define HPMC_IODC_BUF_SIZE 0x8000 | 62 | #define HPMC_IODC_BUF_SIZE 0x8000 |
| 63 | 63 | ||
| 64 | .align 4096 | 64 | .align PAGE_SIZE |
| 65 | hpmc_iodc_buf: | 65 | hpmc_iodc_buf: |
| 66 | .block HPMC_IODC_BUF_SIZE | 66 | .block HPMC_IODC_BUF_SIZE |
| 67 | 67 | ||
diff --git a/arch/parisc/kernel/init_task.c b/arch/parisc/kernel/init_task.c index 446f98d3fd7b..26198a074d67 100644 --- a/arch/parisc/kernel/init_task.c +++ b/arch/parisc/kernel/init_task.c | |||
| @@ -49,7 +49,6 @@ EXPORT_SYMBOL(init_mm); | |||
| 49 | * way process stacks are handled. This is done by having a special | 49 | * way process stacks are handled. This is done by having a special |
| 50 | * "init_task" linker map entry.. | 50 | * "init_task" linker map entry.. |
| 51 | */ | 51 | */ |
| 52 | unsigned char interrupt_stack[ISTACK_SIZE] __attribute__ ((section("init_istack"), aligned(4096))); | ||
| 53 | union thread_union init_thread_union | 52 | union thread_union init_thread_union |
| 54 | __attribute__((aligned(128))) __attribute__((__section__(".data.init_task"))) = | 53 | __attribute__((aligned(128))) __attribute__((__section__(".data.init_task"))) = |
| 55 | { INIT_THREAD_INFO(init_task) }; | 54 | { INIT_THREAD_INFO(init_task) }; |
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S index 90b240878520..5901092e0196 100644 --- a/arch/parisc/kernel/pacache.S +++ b/arch/parisc/kernel/pacache.S | |||
| @@ -289,7 +289,7 @@ ENTRY(copy_user_page_asm) | |||
| 289 | */ | 289 | */ |
| 290 | 290 | ||
| 291 | ldd 0(%r25), %r19 | 291 | ldd 0(%r25), %r19 |
| 292 | ldi ASM_PAGE_SIZE_DIV128, %r1 | 292 | ldi (PAGE_SIZE / 128), %r1 |
| 293 | 293 | ||
| 294 | ldw 64(%r25), %r0 /* prefetch 1 cacheline ahead */ | 294 | ldw 64(%r25), %r0 /* prefetch 1 cacheline ahead */ |
| 295 | ldw 128(%r25), %r0 /* prefetch 2 */ | 295 | ldw 128(%r25), %r0 /* prefetch 2 */ |
| @@ -355,7 +355,7 @@ ENTRY(copy_user_page_asm) | |||
| 355 | * use ldd/std on a 32 bit kernel. | 355 | * use ldd/std on a 32 bit kernel. |
| 356 | */ | 356 | */ |
| 357 | ldw 0(%r25), %r19 | 357 | ldw 0(%r25), %r19 |
| 358 | ldi ASM_PAGE_SIZE_DIV64, %r1 | 358 | ldi (PAGE_SIZE / 64), %r1 |
| 359 | 359 | ||
| 360 | 1: | 360 | 1: |
| 361 | ldw 4(%r25), %r20 | 361 | ldw 4(%r25), %r20 |
| @@ -553,7 +553,7 @@ ENTRY(__clear_user_page_asm) | |||
| 553 | pdtlb 0(%r28) | 553 | pdtlb 0(%r28) |
| 554 | 554 | ||
| 555 | #ifdef CONFIG_64BIT | 555 | #ifdef CONFIG_64BIT |
| 556 | ldi ASM_PAGE_SIZE_DIV128, %r1 | 556 | ldi (PAGE_SIZE / 128), %r1 |
| 557 | 557 | ||
| 558 | /* PREFETCH (Write) has not (yet) been proven to help here */ | 558 | /* PREFETCH (Write) has not (yet) been proven to help here */ |
| 559 | /* #define PREFETCHW_OP ldd 256(%0), %r0 */ | 559 | /* #define PREFETCHW_OP ldd 256(%0), %r0 */ |
| @@ -578,7 +578,7 @@ ENTRY(__clear_user_page_asm) | |||
| 578 | ldo 128(%r28), %r28 | 578 | ldo 128(%r28), %r28 |
| 579 | 579 | ||
| 580 | #else /* ! CONFIG_64BIT */ | 580 | #else /* ! CONFIG_64BIT */ |
| 581 | ldi ASM_PAGE_SIZE_DIV64, %r1 | 581 | ldi (PAGE_SIZE / 64), %r1 |
| 582 | 582 | ||
| 583 | 1: | 583 | 1: |
| 584 | stw %r0, 0(%r28) | 584 | stw %r0, 0(%r28) |
diff --git a/arch/parisc/kernel/parisc_ksyms.c b/arch/parisc/kernel/parisc_ksyms.c index 7aca704e96f0..671ee5b9950c 100644 --- a/arch/parisc/kernel/parisc_ksyms.c +++ b/arch/parisc/kernel/parisc_ksyms.c | |||
| @@ -122,31 +122,9 @@ EXPORT_SYMBOL($$divI_12); | |||
| 122 | EXPORT_SYMBOL($$divI_14); | 122 | EXPORT_SYMBOL($$divI_14); |
| 123 | EXPORT_SYMBOL($$divI_15); | 123 | EXPORT_SYMBOL($$divI_15); |
| 124 | 124 | ||
| 125 | extern void __ashrdi3(void); | ||
| 126 | extern void __ashldi3(void); | ||
| 127 | extern void __lshrdi3(void); | ||
| 128 | extern void __muldi3(void); | ||
| 129 | |||
| 130 | EXPORT_SYMBOL(__ashrdi3); | ||
| 131 | EXPORT_SYMBOL(__ashldi3); | ||
| 132 | EXPORT_SYMBOL(__lshrdi3); | ||
| 133 | EXPORT_SYMBOL(__muldi3); | ||
| 134 | |||
| 135 | asmlinkage void * __canonicalize_funcptr_for_compare(void *); | 125 | asmlinkage void * __canonicalize_funcptr_for_compare(void *); |
| 136 | EXPORT_SYMBOL(__canonicalize_funcptr_for_compare); | 126 | EXPORT_SYMBOL(__canonicalize_funcptr_for_compare); |
| 137 | 127 | ||
| 138 | #ifdef CONFIG_64BIT | ||
| 139 | extern void __divdi3(void); | ||
| 140 | extern void __udivdi3(void); | ||
| 141 | extern void __umoddi3(void); | ||
| 142 | extern void __moddi3(void); | ||
| 143 | |||
| 144 | EXPORT_SYMBOL(__divdi3); | ||
| 145 | EXPORT_SYMBOL(__udivdi3); | ||
| 146 | EXPORT_SYMBOL(__umoddi3); | ||
| 147 | EXPORT_SYMBOL(__moddi3); | ||
| 148 | #endif | ||
| 149 | |||
| 150 | #ifndef CONFIG_64BIT | 128 | #ifndef CONFIG_64BIT |
| 151 | extern void $$dyncall(void); | 129 | extern void $$dyncall(void); |
| 152 | EXPORT_SYMBOL($$dyncall); | 130 | EXPORT_SYMBOL($$dyncall); |
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c index 23c1388df1f5..41f8e321e34c 100644 --- a/arch/parisc/kernel/pci-dma.c +++ b/arch/parisc/kernel/pci-dma.c | |||
| @@ -569,11 +569,10 @@ static void *fail_alloc_consistent(struct device *dev, size_t size, | |||
| 569 | static void *pa11_dma_alloc_noncoherent(struct device *dev, size_t size, | 569 | static void *pa11_dma_alloc_noncoherent(struct device *dev, size_t size, |
| 570 | dma_addr_t *dma_handle, gfp_t flag) | 570 | dma_addr_t *dma_handle, gfp_t flag) |
| 571 | { | 571 | { |
| 572 | void *addr = NULL; | 572 | void *addr; |
| 573 | 573 | ||
| 574 | /* rely on kmalloc to be cacheline aligned */ | 574 | addr = (void *)__get_free_pages(flag, get_order(size)); |
| 575 | addr = kmalloc(size, flag); | 575 | if (addr) |
| 576 | if(addr) | ||
| 577 | *dma_handle = (dma_addr_t)virt_to_phys(addr); | 576 | *dma_handle = (dma_addr_t)virt_to_phys(addr); |
| 578 | 577 | ||
| 579 | return addr; | 578 | return addr; |
| @@ -582,7 +581,7 @@ static void *pa11_dma_alloc_noncoherent(struct device *dev, size_t size, | |||
| 582 | static void pa11_dma_free_noncoherent(struct device *dev, size_t size, | 581 | static void pa11_dma_free_noncoherent(struct device *dev, size_t size, |
| 583 | void *vaddr, dma_addr_t iova) | 582 | void *vaddr, dma_addr_t iova) |
| 584 | { | 583 | { |
| 585 | kfree(vaddr); | 584 | free_pages((unsigned long)vaddr, get_order(size)); |
| 586 | return; | 585 | return; |
| 587 | } | 586 | } |
| 588 | 587 | ||
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c index 563df0072dee..507d0ac99f66 100644 --- a/arch/parisc/kernel/pci.c +++ b/arch/parisc/kernel/pci.c | |||
| @@ -194,37 +194,13 @@ void __init pcibios_init_bus(struct pci_bus *bus) | |||
| 194 | pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bridge_ctl); | 194 | pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bridge_ctl); |
| 195 | } | 195 | } |
| 196 | 196 | ||
| 197 | |||
| 198 | /* KLUGE: Link the child and parent resources - generic PCI didn't */ | ||
| 199 | static void | ||
| 200 | pcibios_link_hba_resources( struct resource *hba_res, struct resource *r) | ||
| 201 | { | ||
| 202 | if (!r->parent) { | ||
| 203 | printk(KERN_EMERG "PCI: resource not parented! [%p-%p]\n", | ||
| 204 | (void*) r->start, (void*) r->end); | ||
| 205 | r->parent = hba_res; | ||
| 206 | |||
| 207 | /* reverse link is harder *sigh* */ | ||
| 208 | if (r->parent->child) { | ||
| 209 | if (r->parent->sibling) { | ||
| 210 | struct resource *next = r->parent->sibling; | ||
| 211 | while (next->sibling) | ||
| 212 | next = next->sibling; | ||
| 213 | next->sibling = r; | ||
| 214 | } else { | ||
| 215 | r->parent->sibling = r; | ||
| 216 | } | ||
| 217 | } else | ||
| 218 | r->parent->child = r; | ||
| 219 | } | ||
| 220 | } | ||
| 221 | |||
| 222 | /* called by drivers/pci/setup-bus.c:pci_setup_bridge(). */ | 197 | /* called by drivers/pci/setup-bus.c:pci_setup_bridge(). */ |
| 223 | void __devinit pcibios_resource_to_bus(struct pci_dev *dev, | 198 | void __devinit pcibios_resource_to_bus(struct pci_dev *dev, |
| 224 | struct pci_bus_region *region, struct resource *res) | 199 | struct pci_bus_region *region, struct resource *res) |
| 225 | { | 200 | { |
| 226 | struct pci_bus *bus = dev->bus; | 201 | #ifdef CONFIG_64BIT |
| 227 | struct pci_hba_data *hba = HBA_DATA(bus->bridge->platform_data); | 202 | struct pci_hba_data *hba = HBA_DATA(dev->bus->bridge->platform_data); |
| 203 | #endif | ||
| 228 | 204 | ||
| 229 | if (res->flags & IORESOURCE_IO) { | 205 | if (res->flags & IORESOURCE_IO) { |
| 230 | /* | 206 | /* |
| @@ -243,23 +219,15 @@ void __devinit pcibios_resource_to_bus(struct pci_dev *dev, | |||
| 243 | } | 219 | } |
| 244 | 220 | ||
| 245 | DBG_RES("pcibios_resource_to_bus(%02x %s [%lx,%lx])\n", | 221 | DBG_RES("pcibios_resource_to_bus(%02x %s [%lx,%lx])\n", |
| 246 | bus->number, res->flags & IORESOURCE_IO ? "IO" : "MEM", | 222 | dev->bus->number, res->flags & IORESOURCE_IO ? "IO" : "MEM", |
| 247 | region->start, region->end); | 223 | region->start, region->end); |
| 248 | |||
| 249 | /* KLUGE ALERT | ||
| 250 | ** if this resource isn't linked to a "parent", then it seems | ||
| 251 | ** to be a child of the HBA - lets link it in. | ||
| 252 | */ | ||
| 253 | pcibios_link_hba_resources(&hba->io_space, bus->resource[0]); | ||
| 254 | pcibios_link_hba_resources(&hba->lmmio_space, bus->resource[1]); | ||
| 255 | } | 224 | } |
| 256 | 225 | ||
| 257 | void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, | 226 | void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, |
| 258 | struct pci_bus_region *region) | 227 | struct pci_bus_region *region) |
| 259 | { | 228 | { |
| 260 | #ifdef CONFIG_64BIT | 229 | #ifdef CONFIG_64BIT |
| 261 | struct pci_bus *bus = dev->bus; | 230 | struct pci_hba_data *hba = HBA_DATA(dev->bus->bridge->platform_data); |
| 262 | struct pci_hba_data *hba = HBA_DATA(bus->bridge->platform_data); | ||
| 263 | #endif | 231 | #endif |
| 264 | 232 | ||
| 265 | if (res->flags & IORESOURCE_MEM) { | 233 | if (res->flags & IORESOURCE_MEM) { |
diff --git a/arch/parisc/kernel/processor.c b/arch/parisc/kernel/processor.c index 549f5484342c..370086fb8333 100644 --- a/arch/parisc/kernel/processor.c +++ b/arch/parisc/kernel/processor.c | |||
| @@ -82,7 +82,12 @@ static int __cpuinit processor_probe(struct parisc_device *dev) | |||
| 82 | unsigned long cpuid; | 82 | unsigned long cpuid; |
| 83 | struct cpuinfo_parisc *p; | 83 | struct cpuinfo_parisc *p; |
| 84 | 84 | ||
| 85 | #ifndef CONFIG_SMP | 85 | #ifdef CONFIG_SMP |
| 86 | if (num_online_cpus() >= NR_CPUS) { | ||
| 87 | printk(KERN_INFO "num_online_cpus() >= NR_CPUS\n"); | ||
| 88 | return 1; | ||
| 89 | } | ||
| 90 | #else | ||
| 86 | if (boot_cpu_data.cpu_count > 0) { | 91 | if (boot_cpu_data.cpu_count > 0) { |
| 87 | printk(KERN_INFO "CONFIG_SMP=n ignoring additional CPUs\n"); | 92 | printk(KERN_INFO "CONFIG_SMP=n ignoring additional CPUs\n"); |
| 88 | return 1; | 93 | return 1; |
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index d7bc7bb42c94..85fc7754ec25 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
| @@ -432,22 +432,10 @@ smp_cpu_init(int cpunum) | |||
| 432 | void __init smp_callin(void) | 432 | void __init smp_callin(void) |
| 433 | { | 433 | { |
| 434 | int slave_id = cpu_now_booting; | 434 | int slave_id = cpu_now_booting; |
| 435 | #if 0 | ||
| 436 | void *istack; | ||
| 437 | #endif | ||
| 438 | 435 | ||
| 439 | smp_cpu_init(slave_id); | 436 | smp_cpu_init(slave_id); |
| 440 | preempt_disable(); | 437 | preempt_disable(); |
| 441 | 438 | ||
| 442 | #if 0 /* NOT WORKING YET - see entry.S */ | ||
| 443 | istack = (void *)__get_free_pages(GFP_KERNEL,ISTACK_ORDER); | ||
| 444 | if (istack == NULL) { | ||
| 445 | printk(KERN_CRIT "Failed to allocate interrupt stack for cpu %d\n",slave_id); | ||
| 446 | BUG(); | ||
| 447 | } | ||
| 448 | mtctl(istack,31); | ||
| 449 | #endif | ||
| 450 | |||
| 451 | flush_cache_all_local(); /* start with known state */ | 439 | flush_cache_all_local(); /* start with known state */ |
| 452 | flush_tlb_all_local(NULL); | 440 | flush_tlb_all_local(NULL); |
| 453 | 441 | ||
diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c index 2989c6682bf6..50bbf33ee00c 100644 --- a/arch/parisc/kernel/sys_parisc32.c +++ b/arch/parisc/kernel/sys_parisc32.c | |||
| @@ -473,3 +473,10 @@ long sys32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char __user *buf, | |||
| 473 | return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low, | 473 | return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low, |
| 474 | buf, len); | 474 | buf, len); |
| 475 | } | 475 | } |
| 476 | |||
| 477 | asmlinkage long compat_sys_fallocate(int fd, int mode, u32 offhi, u32 offlo, | ||
| 478 | u32 lenhi, u32 lenlo) | ||
| 479 | { | ||
| 480 | return sys_fallocate(fd, mode, ((loff_t)offhi << 32) | offlo, | ||
| 481 | ((loff_t)lenhi << 32) | lenlo); | ||
| 482 | } | ||
diff --git a/arch/parisc/kernel/syscall.S b/arch/parisc/kernel/syscall.S index 56f6231cb863..69b6eebc466e 100644 --- a/arch/parisc/kernel/syscall.S +++ b/arch/parisc/kernel/syscall.S | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | #include <asm/asm-offsets.h> | 10 | #include <asm/asm-offsets.h> |
| 11 | #include <asm/unistd.h> | 11 | #include <asm/unistd.h> |
| 12 | #include <asm/errno.h> | 12 | #include <asm/errno.h> |
| 13 | #include <asm/page.h> | ||
| 13 | #include <asm/psw.h> | 14 | #include <asm/psw.h> |
| 14 | #include <asm/thread_info.h> | 15 | #include <asm/thread_info.h> |
| 15 | #include <asm/assembly.h> | 16 | #include <asm/assembly.h> |
| @@ -38,7 +39,7 @@ | |||
| 38 | * pointers. | 39 | * pointers. |
| 39 | */ | 40 | */ |
| 40 | 41 | ||
| 41 | .align ASM_PAGE_SIZE | 42 | .align PAGE_SIZE |
| 42 | ENTRY(linux_gateway_page) | 43 | ENTRY(linux_gateway_page) |
| 43 | 44 | ||
| 44 | /* ADDRESS 0x00 to 0xb0 = 176 bytes / 4 bytes per insn = 44 insns */ | 45 | /* ADDRESS 0x00 to 0xb0 = 176 bytes / 4 bytes per insn = 44 insns */ |
| @@ -597,7 +598,7 @@ cas_action: | |||
| 597 | 598 | ||
| 598 | 599 | ||
| 599 | /* Make sure nothing else is placed on this page */ | 600 | /* Make sure nothing else is placed on this page */ |
| 600 | .align ASM_PAGE_SIZE | 601 | .align PAGE_SIZE |
| 601 | END(linux_gateway_page) | 602 | END(linux_gateway_page) |
| 602 | ENTRY(end_linux_gateway_page) | 603 | ENTRY(end_linux_gateway_page) |
| 603 | 604 | ||
| @@ -608,7 +609,7 @@ ENTRY(end_linux_gateway_page) | |||
| 608 | 609 | ||
| 609 | .section .rodata,"a" | 610 | .section .rodata,"a" |
| 610 | 611 | ||
| 611 | .align ASM_PAGE_SIZE | 612 | .align PAGE_SIZE |
| 612 | /* Light-weight-syscall table */ | 613 | /* Light-weight-syscall table */ |
| 613 | /* Start of lws table. */ | 614 | /* Start of lws table. */ |
| 614 | ENTRY(lws_table) | 615 | ENTRY(lws_table) |
| @@ -617,13 +618,13 @@ ENTRY(lws_table) | |||
| 617 | END(lws_table) | 618 | END(lws_table) |
| 618 | /* End of lws table */ | 619 | /* End of lws table */ |
| 619 | 620 | ||
| 620 | .align ASM_PAGE_SIZE | 621 | .align PAGE_SIZE |
| 621 | ENTRY(sys_call_table) | 622 | ENTRY(sys_call_table) |
| 622 | #include "syscall_table.S" | 623 | #include "syscall_table.S" |
| 623 | END(sys_call_table) | 624 | END(sys_call_table) |
| 624 | 625 | ||
| 625 | #ifdef CONFIG_64BIT | 626 | #ifdef CONFIG_64BIT |
| 626 | .align ASM_PAGE_SIZE | 627 | .align PAGE_SIZE |
| 627 | ENTRY(sys_call_table64) | 628 | ENTRY(sys_call_table64) |
| 628 | #define SYSCALL_TABLE_64BIT | 629 | #define SYSCALL_TABLE_64BIT |
| 629 | #include "syscall_table.S" | 630 | #include "syscall_table.S" |
| @@ -636,7 +637,7 @@ END(sys_call_table64) | |||
| 636 | will use this set of locks | 637 | will use this set of locks |
| 637 | */ | 638 | */ |
| 638 | .section .data | 639 | .section .data |
| 639 | .align 4096 | 640 | .align PAGE_SIZE |
| 640 | ENTRY(lws_lock_start) | 641 | ENTRY(lws_lock_start) |
| 641 | /* lws locks */ | 642 | /* lws locks */ |
| 642 | .align 16 | 643 | .align 16 |
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S index 2540786a970f..117438e9eb2a 100644 --- a/arch/parisc/kernel/syscall_table.S +++ b/arch/parisc/kernel/syscall_table.S | |||
| @@ -403,6 +403,7 @@ | |||
| 403 | ENTRY_COMP(signalfd) | 403 | ENTRY_COMP(signalfd) |
| 404 | ENTRY_COMP(timerfd) | 404 | ENTRY_COMP(timerfd) |
| 405 | ENTRY_SAME(eventfd) | 405 | ENTRY_SAME(eventfd) |
| 406 | ENTRY_COMP(fallocate) /* 305 */ | ||
| 406 | 407 | ||
| 407 | /* Nothing yet */ | 408 | /* Nothing yet */ |
| 408 | 409 | ||
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c index 8b3062a5c812..24be86bba94d 100644 --- a/arch/parisc/kernel/time.c +++ b/arch/parisc/kernel/time.c | |||
| @@ -189,16 +189,14 @@ static struct clocksource clocksource_cr16 = { | |||
| 189 | #ifdef CONFIG_SMP | 189 | #ifdef CONFIG_SMP |
| 190 | int update_cr16_clocksource(void) | 190 | int update_cr16_clocksource(void) |
| 191 | { | 191 | { |
| 192 | int change = 0; | ||
| 193 | |||
| 194 | /* since the cr16 cycle counters are not synchronized across CPUs, | 192 | /* since the cr16 cycle counters are not synchronized across CPUs, |
| 195 | we'll check if we should switch to a safe clocksource: */ | 193 | we'll check if we should switch to a safe clocksource: */ |
| 196 | if (clocksource_cr16.rating != 0 && num_online_cpus() > 1) { | 194 | if (clocksource_cr16.rating != 0 && num_online_cpus() > 1) { |
| 197 | clocksource_change_rating(&clocksource_cr16, 0); | 195 | clocksource_change_rating(&clocksource_cr16, 0); |
| 198 | change = 1; | 196 | return 1; |
| 199 | } | 197 | } |
| 200 | 198 | ||
| 201 | return change; | 199 | return 0; |
| 202 | } | 200 | } |
| 203 | #else | 201 | #else |
| 204 | int update_cr16_clocksource(void) | 202 | int update_cr16_clocksource(void) |
diff --git a/arch/parisc/kernel/unwind.c b/arch/parisc/kernel/unwind.c index cf780cb3b916..701b2d2d8882 100644 --- a/arch/parisc/kernel/unwind.c +++ b/arch/parisc/kernel/unwind.c | |||
| @@ -209,8 +209,8 @@ static int unwind_init(void) | |||
| 209 | 209 | ||
| 210 | static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int frame_size) | 210 | static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int frame_size) |
| 211 | { | 211 | { |
| 212 | void handle_interruption(int, struct pt_regs *); | 212 | extern void handle_interruption(int, struct pt_regs *); |
| 213 | static unsigned long *hi = (unsigned long)&handle_interruption; | 213 | static unsigned long *hi = (unsigned long *)&handle_interruption; |
| 214 | 214 | ||
| 215 | if (pc == get_func_addr(hi)) { | 215 | if (pc == get_func_addr(hi)) { |
| 216 | struct pt_regs *regs = (struct pt_regs *)(info->sp - frame_size - PT_SZ_ALGN); | 216 | struct pt_regs *regs = (struct pt_regs *)(info->sp - frame_size - PT_SZ_ALGN); |
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S index ee7a16eb6fdd..40d0ff9b81ab 100644 --- a/arch/parisc/kernel/vmlinux.lds.S +++ b/arch/parisc/kernel/vmlinux.lds.S | |||
| @@ -46,168 +46,211 @@ jiffies = jiffies_64; | |||
| 46 | #endif | 46 | #endif |
| 47 | SECTIONS | 47 | SECTIONS |
| 48 | { | 48 | { |
| 49 | . = KERNEL_BINARY_TEXT_START; | ||
| 49 | 50 | ||
| 50 | . = KERNEL_BINARY_TEXT_START; | 51 | _text = .; /* Text and read-only data */ |
| 51 | 52 | .text ALIGN(16) : { | |
| 52 | _text = .; /* Text and read-only data */ | 53 | TEXT_TEXT |
| 53 | .text ALIGN(16) : { | 54 | SCHED_TEXT |
| 54 | TEXT_TEXT | 55 | LOCK_TEXT |
| 55 | SCHED_TEXT | 56 | *(.text.do_softirq) |
| 56 | LOCK_TEXT | 57 | *(.text.sys_exit) |
| 57 | *(.text.do_softirq) | 58 | *(.text.do_sigaltstack) |
| 58 | *(.text.sys_exit) | 59 | *(.text.do_fork) |
| 59 | *(.text.do_sigaltstack) | 60 | *(.text.*) |
| 60 | *(.text.do_fork) | 61 | *(.fixup) |
| 61 | *(.text.*) | 62 | *(.lock.text) /* out-of-line lock text */ |
| 62 | *(.fixup) | 63 | *(.gnu.warning) |
| 63 | *(.lock.text) /* out-of-line lock text */ | ||
| 64 | *(.gnu.warning) | ||
| 65 | } = 0 | 64 | } = 0 |
| 65 | /* End of text section */ | ||
| 66 | _etext = .; | ||
| 66 | 67 | ||
| 67 | _etext = .; /* End of text section */ | 68 | RODATA |
| 69 | BUG_TABLE | ||
| 68 | 70 | ||
| 69 | RODATA | 71 | /* writeable */ |
| 70 | 72 | /* Make sure this is page aligned so | |
| 71 | BUG_TABLE | 73 | * that we can properly leave these |
| 72 | 74 | * as writable | |
| 73 | /* writeable */ | 75 | */ |
| 74 | . = ALIGN(ASM_PAGE_SIZE); /* Make sure this is page aligned so | 76 | . = ALIGN(PAGE_SIZE); |
| 75 | that we can properly leave these | 77 | data_start = .; |
| 76 | as writable */ | 78 | . = ALIGN(16); |
| 77 | data_start = .; | 79 | /* Exception table */ |
| 78 | 80 | __ex_table : { | |
| 79 | . = ALIGN(16); /* Exception table */ | 81 | __start___ex_table = .; |
| 80 | __start___ex_table = .; | 82 | *(__ex_table) |
| 81 | __ex_table : { *(__ex_table) } | 83 | __stop___ex_table = .; |
| 82 | __stop___ex_table = .; | 84 | } |
| 83 | 85 | ||
| 84 | NOTES | 86 | NOTES |
| 85 | 87 | ||
| 86 | __start___unwind = .; /* unwind info */ | 88 | /* unwind info */ |
| 87 | .PARISC.unwind : { *(.PARISC.unwind) } | 89 | .PARISC.unwind : { |
| 88 | __stop___unwind = .; | 90 | __start___unwind = .; |
| 91 | *(.PARISC.unwind) | ||
| 92 | __stop___unwind = .; | ||
| 93 | } | ||
| 89 | 94 | ||
| 90 | /* rarely changed data like cpu maps */ | 95 | /* rarely changed data like cpu maps */ |
| 91 | . = ALIGN(16); | 96 | . = ALIGN(16); |
| 92 | .data.read_mostly : { *(.data.read_mostly) } | 97 | .data.read_mostly : { |
| 98 | *(.data.read_mostly) | ||
| 99 | } | ||
| 93 | 100 | ||
| 94 | . = ALIGN(L1_CACHE_BYTES); | 101 | . = ALIGN(L1_CACHE_BYTES); |
| 95 | .data : { /* Data */ | 102 | /* Data */ |
| 96 | DATA_DATA | 103 | .data : { |
| 97 | CONSTRUCTORS | 104 | DATA_DATA |
| 105 | CONSTRUCTORS | ||
| 98 | } | 106 | } |
| 99 | 107 | ||
| 100 | . = ALIGN(L1_CACHE_BYTES); | 108 | . = ALIGN(L1_CACHE_BYTES); |
| 101 | .data.cacheline_aligned : { *(.data.cacheline_aligned) } | 109 | .data.cacheline_aligned : { |
| 110 | *(.data.cacheline_aligned) | ||
| 111 | } | ||
| 102 | 112 | ||
| 103 | /* PA-RISC locks requires 16-byte alignment */ | 113 | /* PA-RISC locks requires 16-byte alignment */ |
| 104 | . = ALIGN(16); | 114 | . = ALIGN(16); |
| 105 | .data.lock_aligned : { *(.data.lock_aligned) } | 115 | .data.lock_aligned : { |
| 116 | *(.data.lock_aligned) | ||
| 117 | } | ||
| 106 | 118 | ||
| 107 | . = ALIGN(ASM_PAGE_SIZE); | 119 | /* nosave data is really only used for software suspend...it's here |
| 108 | /* nosave data is really only used for software suspend...it's here | 120 | * just in case we ever implement it |
| 109 | * just in case we ever implement it */ | 121 | */ |
| 110 | __nosave_begin = .; | 122 | . = ALIGN(PAGE_SIZE); |
| 111 | .data_nosave : { *(.data.nosave) } | 123 | __nosave_begin = .; |
| 112 | . = ALIGN(ASM_PAGE_SIZE); | 124 | .data_nosave : { |
| 113 | __nosave_end = .; | 125 | *(.data.nosave) |
| 126 | } | ||
| 127 | . = ALIGN(PAGE_SIZE); | ||
| 128 | __nosave_end = .; | ||
| 114 | 129 | ||
| 115 | _edata = .; /* End of data section */ | 130 | /* End of data section */ |
| 131 | _edata = .; | ||
| 116 | 132 | ||
| 117 | __bss_start = .; /* BSS */ | 133 | /* BSS */ |
| 118 | /* page table entries need to be PAGE_SIZE aligned */ | 134 | __bss_start = .; |
| 119 | . = ALIGN(ASM_PAGE_SIZE); | 135 | /* page table entries need to be PAGE_SIZE aligned */ |
| 120 | .data.vmpages : { | 136 | . = ALIGN(PAGE_SIZE); |
| 121 | *(.data.vm0.pmd) | 137 | .data.vmpages : { |
| 122 | *(.data.vm0.pgd) | 138 | *(.data.vm0.pmd) |
| 123 | *(.data.vm0.pte) | 139 | *(.data.vm0.pgd) |
| 140 | *(.data.vm0.pte) | ||
| 124 | } | 141 | } |
| 125 | .bss : { *(.bss) *(COMMON) } | 142 | .bss : { |
| 126 | __bss_stop = .; | 143 | *(.bss) |
| 127 | 144 | *(COMMON) | |
| 145 | } | ||
| 146 | __bss_stop = .; | ||
| 128 | 147 | ||
| 129 | /* assembler code expects init_task to be 16k aligned */ | ||
| 130 | . = ALIGN(16384); /* init_task */ | ||
| 131 | .data.init_task : { *(.data.init_task) } | ||
| 132 | 148 | ||
| 133 | /* The interrupt stack is currently partially coded, but not yet | 149 | /* assembler code expects init_task to be 16k aligned */ |
| 134 | * implemented */ | 150 | . = ALIGN(16384); |
| 135 | . = ALIGN(16384); | 151 | /* init_task */ |
| 136 | init_istack : { *(init_istack) } | 152 | .data.init_task : { |
| 153 | *(.data.init_task) | ||
| 154 | } | ||
| 137 | 155 | ||
| 138 | #ifdef CONFIG_64BIT | 156 | #ifdef CONFIG_64BIT |
| 139 | . = ALIGN(16); /* Linkage tables */ | 157 | . = ALIGN(16); |
| 140 | .opd : { *(.opd) } PROVIDE (__gp = .); | 158 | /* Linkage tables */ |
| 141 | .plt : { *(.plt) } | 159 | .opd : { |
| 142 | .dlt : { *(.dlt) } | 160 | *(.opd) |
| 161 | } PROVIDE (__gp = .); | ||
| 162 | .plt : { | ||
| 163 | *(.plt) | ||
| 164 | } | ||
| 165 | .dlt : { | ||
| 166 | *(.dlt) | ||
| 167 | } | ||
| 143 | #endif | 168 | #endif |
| 144 | 169 | ||
| 145 | /* reserve space for interrupt stack by aligning __init* to 16k */ | 170 | /* reserve space for interrupt stack by aligning __init* to 16k */ |
| 146 | . = ALIGN(16384); | 171 | . = ALIGN(16384); |
| 147 | __init_begin = .; | 172 | __init_begin = .; |
| 148 | .init.text : { | 173 | .init.text : { |
| 149 | _sinittext = .; | 174 | _sinittext = .; |
| 150 | *(.init.text) | 175 | *(.init.text) |
| 151 | _einittext = .; | 176 | _einittext = .; |
| 152 | } | 177 | } |
| 153 | .init.data : { *(.init.data) } | 178 | .init.data : { |
| 154 | . = ALIGN(16); | 179 | *(.init.data) |
| 155 | __setup_start = .; | 180 | } |
| 156 | .init.setup : { *(.init.setup) } | 181 | . = ALIGN(16); |
| 157 | __setup_end = .; | 182 | .init.setup : { |
| 158 | __initcall_start = .; | 183 | __setup_start = .; |
| 159 | .initcall.init : { | 184 | *(.init.setup) |
| 160 | INITCALLS | 185 | __setup_end = .; |
| 161 | } | 186 | } |
| 162 | __initcall_end = .; | 187 | .initcall.init : { |
| 163 | __con_initcall_start = .; | 188 | __initcall_start = .; |
| 164 | .con_initcall.init : { *(.con_initcall.init) } | 189 | INITCALLS |
| 165 | __con_initcall_end = .; | 190 | __initcall_end = .; |
| 166 | SECURITY_INIT | 191 | } |
| 167 | /* alternate instruction replacement. This is a mechanism x86 uses | 192 | .con_initcall.init : { |
| 168 | * to detect the CPU type and replace generic instruction sequences | 193 | __con_initcall_start = .; |
| 169 | * with CPU specific ones. We don't currently do this in PA, but | 194 | *(.con_initcall.init) |
| 170 | * it seems like a good idea... */ | 195 | __con_initcall_end = .; |
| 171 | . = ALIGN(4); | 196 | } |
| 172 | __alt_instructions = .; | 197 | SECURITY_INIT |
| 173 | .altinstructions : { *(.altinstructions) } | 198 | |
| 174 | __alt_instructions_end = .; | 199 | /* alternate instruction replacement. This is a mechanism x86 uses |
| 175 | .altinstr_replacement : { *(.altinstr_replacement) } | 200 | * to detect the CPU type and replace generic instruction sequences |
| 176 | /* .exit.text is discard at runtime, not link time, to deal with references | 201 | * with CPU specific ones. We don't currently do this in PA, but |
| 177 | from .altinstructions and .eh_frame */ | 202 | * it seems like a good idea... |
| 178 | .exit.text : { *(.exit.text) } | 203 | */ |
| 179 | .exit.data : { *(.exit.data) } | 204 | . = ALIGN(4); |
| 205 | .altinstructions : { | ||
| 206 | __alt_instructions = .; | ||
| 207 | *(.altinstructions) | ||
| 208 | __alt_instructions_end = .; | ||
| 209 | } | ||
| 210 | .altinstr_replacement : { | ||
| 211 | *(.altinstr_replacement) | ||
| 212 | } | ||
| 213 | |||
| 214 | /* .exit.text is discard at runtime, not link time, to deal with references | ||
| 215 | * from .altinstructions and .eh_frame | ||
| 216 | */ | ||
| 217 | .exit.text : { | ||
| 218 | *(.exit.text) | ||
| 219 | } | ||
| 220 | .exit.data : { | ||
| 221 | *(.exit.data) | ||
| 222 | } | ||
| 180 | #ifdef CONFIG_BLK_DEV_INITRD | 223 | #ifdef CONFIG_BLK_DEV_INITRD |
| 181 | . = ALIGN(ASM_PAGE_SIZE); | 224 | . = ALIGN(PAGE_SIZE); |
| 182 | __initramfs_start = .; | 225 | .init.ramfs : { |
| 183 | .init.ramfs : { *(.init.ramfs) } | 226 | __initramfs_start = .; |
| 184 | __initramfs_end = .; | 227 | *(.init.ramfs) |
| 228 | __initramfs_end = .; | ||
| 229 | } | ||
| 185 | #endif | 230 | #endif |
| 186 | 231 | ||
| 187 | PERCPU(ASM_PAGE_SIZE) | 232 | PERCPU(PAGE_SIZE) |
| 233 | . = ALIGN(PAGE_SIZE); | ||
| 234 | __init_end = .; | ||
| 235 | /* freed after init ends here */ | ||
| 236 | _end = . ; | ||
| 188 | 237 | ||
| 189 | . = ALIGN(ASM_PAGE_SIZE); | 238 | /* Sections to be discarded */ |
| 190 | __init_end = .; | 239 | /DISCARD/ : { |
| 191 | /* freed after init ends here */ | 240 | *(.exitcall.exit) |
| 192 | |||
| 193 | _end = . ; | ||
| 194 | |||
| 195 | /* Sections to be discarded */ | ||
| 196 | /DISCARD/ : { | ||
| 197 | *(.exitcall.exit) | ||
| 198 | #ifdef CONFIG_64BIT | 241 | #ifdef CONFIG_64BIT |
| 199 | /* temporary hack until binutils is fixed to not emit these | 242 | /* temporary hack until binutils is fixed to not emit these |
| 200 | for static binaries */ | 243 | * for static binaries |
| 201 | *(.interp) | 244 | */ |
| 202 | *(.dynsym) | 245 | *(.interp) |
| 203 | *(.dynstr) | 246 | *(.dynsym) |
| 204 | *(.dynamic) | 247 | *(.dynstr) |
| 205 | *(.hash) | 248 | *(.dynamic) |
| 206 | *(.gnu.hash) | 249 | *(.hash) |
| 250 | *(.gnu.hash) | ||
| 207 | #endif | 251 | #endif |
| 208 | } | 252 | } |
| 209 | 253 | ||
| 210 | STABS_DEBUG | 254 | STABS_DEBUG |
| 211 | .note 0 : { *(.note) } | 255 | .note 0 : { *(.note) } |
| 212 | |||
| 213 | } | 256 | } |
diff --git a/arch/parisc/lib/Makefile b/arch/parisc/lib/Makefile index 5f2e6904d14a..7ce406c7daf5 100644 --- a/arch/parisc/lib/Makefile +++ b/arch/parisc/lib/Makefile | |||
| @@ -4,4 +4,4 @@ | |||
| 4 | 4 | ||
| 5 | lib-y := lusercopy.o bitops.o checksum.o io.o memset.o fixup.o memcpy.o | 5 | lib-y := lusercopy.o bitops.o checksum.o io.o memset.o fixup.o memcpy.o |
| 6 | 6 | ||
| 7 | obj-y := iomap.o | 7 | obj-y := libgcc/ milli/ iomap.o |
diff --git a/arch/parisc/lib/libgcc/Makefile b/arch/parisc/lib/libgcc/Makefile new file mode 100644 index 000000000000..b67a85ad9c87 --- /dev/null +++ b/arch/parisc/lib/libgcc/Makefile | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | obj-y := __ashldi3.o __ashrdi3.o __clzsi2.o __divdi3.o __divsi3.o \ | ||
| 2 | __lshrdi3.o __moddi3.o __modsi3.o __udivdi3.o \ | ||
| 3 | __udivmoddi4.o __udivmodsi4.o __udivsi3.o \ | ||
| 4 | __umoddi3.o __umodsi3.o __muldi3.o __umulsidi3.o | ||
diff --git a/arch/parisc/lib/libgcc/__ashldi3.c b/arch/parisc/lib/libgcc/__ashldi3.c new file mode 100644 index 000000000000..a14a257abb2b --- /dev/null +++ b/arch/parisc/lib/libgcc/__ashldi3.c | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | u64 __ashldi3(u64 v, int cnt) | ||
| 4 | { | ||
| 5 | int c = cnt & 31; | ||
| 6 | u32 vl = (u32) v; | ||
| 7 | u32 vh = (u32) (v >> 32); | ||
| 8 | |||
| 9 | if (cnt & 32) { | ||
| 10 | vh = (vl << c); | ||
| 11 | vl = 0; | ||
| 12 | } else { | ||
| 13 | vh = (vh << c) + (vl >> (32 - c)); | ||
| 14 | vl = (vl << c); | ||
| 15 | } | ||
| 16 | |||
| 17 | return ((u64) vh << 32) + vl; | ||
| 18 | } | ||
| 19 | EXPORT_SYMBOL(__ashldi3); | ||
diff --git a/arch/parisc/lib/libgcc/__ashrdi3.c b/arch/parisc/lib/libgcc/__ashrdi3.c new file mode 100644 index 000000000000..8636a5aa4f77 --- /dev/null +++ b/arch/parisc/lib/libgcc/__ashrdi3.c | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | u64 __ashrdi3(u64 v, int cnt) | ||
| 4 | { | ||
| 5 | int c = cnt & 31; | ||
| 6 | u32 vl = (u32) v; | ||
| 7 | u32 vh = (u32) (v >> 32); | ||
| 8 | |||
| 9 | if (cnt & 32) { | ||
| 10 | vl = ((s32) vh >> c); | ||
| 11 | vh = (s32) vh >> 31; | ||
| 12 | } else { | ||
| 13 | vl = (vl >> c) + (vh << (32 - c)); | ||
| 14 | vh = ((s32) vh >> c); | ||
| 15 | } | ||
| 16 | |||
| 17 | return ((u64) vh << 32) + vl; | ||
| 18 | } | ||
| 19 | EXPORT_SYMBOL(__ashrdi3); | ||
diff --git a/arch/parisc/lib/libgcc/__clzsi2.c b/arch/parisc/lib/libgcc/__clzsi2.c new file mode 100644 index 000000000000..a7aa2f55a9c6 --- /dev/null +++ b/arch/parisc/lib/libgcc/__clzsi2.c | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | u32 __clzsi2(u32 v) | ||
| 4 | { | ||
| 5 | int p = 31; | ||
| 6 | |||
| 7 | if (v & 0xffff0000) { | ||
| 8 | p -= 16; | ||
| 9 | v >>= 16; | ||
| 10 | } | ||
| 11 | if (v & 0xff00) { | ||
| 12 | p -= 8; | ||
| 13 | v >>= 8; | ||
| 14 | } | ||
| 15 | if (v & 0xf0) { | ||
| 16 | p -= 4; | ||
| 17 | v >>= 4; | ||
| 18 | } | ||
| 19 | if (v & 0xc) { | ||
| 20 | p -= 2; | ||
| 21 | v >>= 2; | ||
| 22 | } | ||
| 23 | if (v & 0x2) { | ||
| 24 | p -= 1; | ||
| 25 | v >>= 1; | ||
| 26 | } | ||
| 27 | |||
| 28 | return p; | ||
| 29 | } | ||
| 30 | EXPORT_SYMBOL(__clzsi2); | ||
diff --git a/arch/parisc/lib/libgcc/__divdi3.c b/arch/parisc/lib/libgcc/__divdi3.c new file mode 100644 index 000000000000..f23c6fe2838b --- /dev/null +++ b/arch/parisc/lib/libgcc/__divdi3.c | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | s64 __divdi3(s64 num, s64 den) | ||
| 4 | { | ||
| 5 | int minus = 0; | ||
| 6 | s64 v; | ||
| 7 | |||
| 8 | if (num < 0) { | ||
| 9 | num = -num; | ||
| 10 | minus = 1; | ||
| 11 | } | ||
| 12 | if (den < 0) { | ||
| 13 | den = -den; | ||
| 14 | minus ^= 1; | ||
| 15 | } | ||
| 16 | |||
| 17 | v = __udivmoddi4(num, den, NULL); | ||
| 18 | if (minus) | ||
| 19 | v = -v; | ||
| 20 | |||
| 21 | return v; | ||
| 22 | } | ||
| 23 | EXPORT_SYMBOL(__divdi3); | ||
diff --git a/arch/parisc/lib/libgcc/__divsi3.c b/arch/parisc/lib/libgcc/__divsi3.c new file mode 100644 index 000000000000..730fb530680d --- /dev/null +++ b/arch/parisc/lib/libgcc/__divsi3.c | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | s32 __divsi3(s32 num, s32 den) | ||
| 4 | { | ||
| 5 | int minus = 0; | ||
| 6 | s32 v; | ||
| 7 | |||
| 8 | if (num < 0) { | ||
| 9 | num = -num; | ||
| 10 | minus = 1; | ||
| 11 | } | ||
| 12 | if (den < 0) { | ||
| 13 | den = -den; | ||
| 14 | minus ^= 1; | ||
| 15 | } | ||
| 16 | |||
| 17 | v = __udivmodsi4(num, den, NULL); | ||
| 18 | if (minus) | ||
| 19 | v = -v; | ||
| 20 | |||
| 21 | return v; | ||
| 22 | } | ||
| 23 | EXPORT_SYMBOL(__divsi3); | ||
diff --git a/arch/parisc/lib/libgcc/__lshrdi3.c b/arch/parisc/lib/libgcc/__lshrdi3.c new file mode 100644 index 000000000000..4a820708ec57 --- /dev/null +++ b/arch/parisc/lib/libgcc/__lshrdi3.c | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | u64 __lshrdi3(u64 v, int cnt) | ||
| 4 | { | ||
| 5 | int c = cnt & 31; | ||
| 6 | u32 vl = (u32) v; | ||
| 7 | u32 vh = (u32) (v >> 32); | ||
| 8 | |||
| 9 | if (cnt & 32) { | ||
| 10 | vl = (vh >> c); | ||
| 11 | vh = 0; | ||
| 12 | } else { | ||
| 13 | vl = (vl >> c) + (vh << (32 - c)); | ||
| 14 | vh = (vh >> c); | ||
| 15 | } | ||
| 16 | |||
| 17 | return ((u64) vh << 32) + vl; | ||
| 18 | } | ||
| 19 | EXPORT_SYMBOL(__lshrdi3); | ||
diff --git a/arch/parisc/lib/libgcc/__moddi3.c b/arch/parisc/lib/libgcc/__moddi3.c new file mode 100644 index 000000000000..ed64bbafc989 --- /dev/null +++ b/arch/parisc/lib/libgcc/__moddi3.c | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | s64 __moddi3(s64 num, s64 den) | ||
| 4 | { | ||
| 5 | int minus = 0; | ||
| 6 | s64 v; | ||
| 7 | |||
| 8 | if (num < 0) { | ||
| 9 | num = -num; | ||
| 10 | minus = 1; | ||
| 11 | } | ||
| 12 | if (den < 0) { | ||
| 13 | den = -den; | ||
| 14 | minus ^= 1; | ||
| 15 | } | ||
| 16 | |||
| 17 | (void)__udivmoddi4(num, den, (u64 *) & v); | ||
| 18 | if (minus) | ||
| 19 | v = -v; | ||
| 20 | |||
| 21 | return v; | ||
| 22 | } | ||
| 23 | EXPORT_SYMBOL(__moddi3); | ||
diff --git a/arch/parisc/lib/libgcc/__modsi3.c b/arch/parisc/lib/libgcc/__modsi3.c new file mode 100644 index 000000000000..62f773efaeea --- /dev/null +++ b/arch/parisc/lib/libgcc/__modsi3.c | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | s32 __modsi3(s32 num, s32 den) | ||
| 4 | { | ||
| 5 | int minus = 0; | ||
| 6 | s32 v; | ||
| 7 | |||
| 8 | if (num < 0) { | ||
| 9 | num = -num; | ||
| 10 | minus = 1; | ||
| 11 | } | ||
| 12 | if (den < 0) { | ||
| 13 | den = -den; | ||
| 14 | minus ^= 1; | ||
| 15 | } | ||
| 16 | |||
| 17 | (void)__udivmodsi4(num, den, (u32 *) & v); | ||
| 18 | if (minus) | ||
| 19 | v = -v; | ||
| 20 | |||
| 21 | return v; | ||
| 22 | } | ||
| 23 | EXPORT_SYMBOL(__modsi3); | ||
diff --git a/arch/parisc/lib/libgcc/__muldi3.c b/arch/parisc/lib/libgcc/__muldi3.c new file mode 100644 index 000000000000..3308abdd5580 --- /dev/null +++ b/arch/parisc/lib/libgcc/__muldi3.c | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | union DWunion { | ||
| 4 | struct { | ||
| 5 | s32 high; | ||
| 6 | s32 low; | ||
| 7 | } s; | ||
| 8 | s64 ll; | ||
| 9 | }; | ||
| 10 | |||
| 11 | s64 __muldi3(s64 u, s64 v) | ||
| 12 | { | ||
| 13 | const union DWunion uu = { .ll = u }; | ||
| 14 | const union DWunion vv = { .ll = v }; | ||
| 15 | union DWunion w = { .ll = __umulsidi3(uu.s.low, vv.s.low) }; | ||
| 16 | |||
| 17 | w.s.high += ((u32)uu.s.low * (u32)vv.s.high | ||
| 18 | + (u32)uu.s.high * (u32)vv.s.low); | ||
| 19 | |||
| 20 | return w.ll; | ||
| 21 | } | ||
| 22 | EXPORT_SYMBOL(__muldi3); | ||
diff --git a/arch/parisc/lib/libgcc/__udivdi3.c b/arch/parisc/lib/libgcc/__udivdi3.c new file mode 100644 index 000000000000..740023d690f5 --- /dev/null +++ b/arch/parisc/lib/libgcc/__udivdi3.c | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | u64 __udivdi3(u64 num, u64 den) | ||
| 4 | { | ||
| 5 | return __udivmoddi4(num, den, NULL); | ||
| 6 | } | ||
| 7 | EXPORT_SYMBOL(__udivdi3); | ||
diff --git a/arch/parisc/lib/libgcc/__udivmoddi4.c b/arch/parisc/lib/libgcc/__udivmoddi4.c new file mode 100644 index 000000000000..2df0caa5a7d8 --- /dev/null +++ b/arch/parisc/lib/libgcc/__udivmoddi4.c | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | u64 __udivmoddi4(u64 num, u64 den, u64 * rem_p) | ||
| 4 | { | ||
| 5 | u64 quot = 0, qbit = 1; | ||
| 6 | |||
| 7 | if (den == 0) { | ||
| 8 | BUG(); | ||
| 9 | } | ||
| 10 | |||
| 11 | /* Left-justify denominator and count shift */ | ||
| 12 | while ((s64) den >= 0) { | ||
| 13 | den <<= 1; | ||
| 14 | qbit <<= 1; | ||
| 15 | } | ||
| 16 | |||
| 17 | while (qbit) { | ||
| 18 | if (den <= num) { | ||
| 19 | num -= den; | ||
| 20 | quot += qbit; | ||
| 21 | } | ||
| 22 | den >>= 1; | ||
| 23 | qbit >>= 1; | ||
| 24 | } | ||
| 25 | |||
| 26 | if (rem_p) | ||
| 27 | *rem_p = num; | ||
| 28 | |||
| 29 | return quot; | ||
| 30 | } | ||
| 31 | EXPORT_SYMBOL(__udivmoddi4); | ||
diff --git a/arch/parisc/lib/libgcc/__udivmodsi4.c b/arch/parisc/lib/libgcc/__udivmodsi4.c new file mode 100644 index 000000000000..2a2fc28b2026 --- /dev/null +++ b/arch/parisc/lib/libgcc/__udivmodsi4.c | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | u32 __udivmodsi4(u32 num, u32 den, u32 * rem_p) | ||
| 4 | { | ||
| 5 | u32 quot = 0, qbit = 1; | ||
| 6 | |||
| 7 | if (den == 0) { | ||
| 8 | BUG(); | ||
| 9 | } | ||
| 10 | |||
| 11 | /* Left-justify denominator and count shift */ | ||
| 12 | while ((s32) den >= 0) { | ||
| 13 | den <<= 1; | ||
| 14 | qbit <<= 1; | ||
| 15 | } | ||
| 16 | |||
| 17 | while (qbit) { | ||
| 18 | if (den <= num) { | ||
| 19 | num -= den; | ||
| 20 | quot += qbit; | ||
| 21 | } | ||
| 22 | den >>= 1; | ||
| 23 | qbit >>= 1; | ||
| 24 | } | ||
| 25 | |||
| 26 | if (rem_p) | ||
| 27 | *rem_p = num; | ||
| 28 | |||
| 29 | return quot; | ||
| 30 | } | ||
| 31 | EXPORT_SYMBOL(__udivmodsi4); | ||
diff --git a/arch/parisc/lib/libgcc/__udivsi3.c b/arch/parisc/lib/libgcc/__udivsi3.c new file mode 100644 index 000000000000..756a44164e90 --- /dev/null +++ b/arch/parisc/lib/libgcc/__udivsi3.c | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | u32 __udivsi3(u32 num, u32 den) | ||
| 4 | { | ||
| 5 | return __udivmodsi4(num, den, NULL); | ||
| 6 | } | ||
| 7 | EXPORT_SYMBOL(__udivsi3); | ||
diff --git a/arch/parisc/lib/libgcc/__umoddi3.c b/arch/parisc/lib/libgcc/__umoddi3.c new file mode 100644 index 000000000000..ac744e948bc1 --- /dev/null +++ b/arch/parisc/lib/libgcc/__umoddi3.c | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | u64 __umoddi3(u64 num, u64 den) | ||
| 4 | { | ||
| 5 | u64 v; | ||
| 6 | |||
| 7 | (void)__udivmoddi4(num, den, &v); | ||
| 8 | return v; | ||
| 9 | } | ||
| 10 | EXPORT_SYMBOL(__umoddi3); | ||
diff --git a/arch/parisc/lib/libgcc/__umodsi3.c b/arch/parisc/lib/libgcc/__umodsi3.c new file mode 100644 index 000000000000..51f55aa89f9a --- /dev/null +++ b/arch/parisc/lib/libgcc/__umodsi3.c | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | u32 __umodsi3(u32 num, u32 den) | ||
| 4 | { | ||
| 5 | u32 v; | ||
| 6 | |||
| 7 | (void)__udivmodsi4(num, den, &v); | ||
| 8 | return v; | ||
| 9 | } | ||
| 10 | EXPORT_SYMBOL(__umodsi3); | ||
diff --git a/arch/parisc/lib/libgcc/__umulsidi3.c b/arch/parisc/lib/libgcc/__umulsidi3.c new file mode 100644 index 000000000000..396f669164d4 --- /dev/null +++ b/arch/parisc/lib/libgcc/__umulsidi3.c | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | #include "libgcc.h" | ||
| 2 | |||
| 3 | #define __ll_B ((u32) 1 << (32 / 2)) | ||
| 4 | #define __ll_lowpart(t) ((u32) (t) & (__ll_B - 1)) | ||
| 5 | #define __ll_highpart(t) ((u32) (t) >> 16) | ||
| 6 | |||
| 7 | #define umul_ppmm(w1, w0, u, v) \ | ||
| 8 | do { \ | ||
| 9 | u32 __x0, __x1, __x2, __x3; \ | ||
| 10 | u16 __ul, __vl, __uh, __vh; \ | ||
| 11 | \ | ||
| 12 | __ul = __ll_lowpart (u); \ | ||
| 13 | __uh = __ll_highpart (u); \ | ||
| 14 | __vl = __ll_lowpart (v); \ | ||
| 15 | __vh = __ll_highpart (v); \ | ||
| 16 | \ | ||
| 17 | __x0 = (u32) __ul * __vl; \ | ||
| 18 | __x1 = (u32) __ul * __vh; \ | ||
| 19 | __x2 = (u32) __uh * __vl; \ | ||
| 20 | __x3 = (u32) __uh * __vh; \ | ||
| 21 | \ | ||
| 22 | __x1 += __ll_highpart (__x0);/* this can't give carry */ \ | ||
| 23 | __x1 += __x2; /* but this indeed can */ \ | ||
| 24 | if (__x1 < __x2) /* did we get it? */ \ | ||
| 25 | __x3 += __ll_B; /* yes, add it in the proper pos. */ \ | ||
| 26 | \ | ||
| 27 | (w1) = __x3 + __ll_highpart (__x1); \ | ||
| 28 | (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0); \ | ||
| 29 | } while (0) | ||
| 30 | |||
| 31 | union DWunion { | ||
| 32 | struct { | ||
| 33 | s32 high; | ||
| 34 | s32 low; | ||
| 35 | } s; | ||
| 36 | s64 ll; | ||
| 37 | }; | ||
| 38 | |||
| 39 | u64 __umulsidi3(u32 u, u32 v) | ||
| 40 | { | ||
| 41 | union DWunion __w; | ||
| 42 | |||
| 43 | umul_ppmm(__w.s.high, __w.s.low, u, v); | ||
| 44 | |||
| 45 | return __w.ll; | ||
| 46 | } | ||
diff --git a/arch/parisc/lib/libgcc/libgcc.h b/arch/parisc/lib/libgcc/libgcc.h new file mode 100644 index 000000000000..5a6f7a510fbd --- /dev/null +++ b/arch/parisc/lib/libgcc/libgcc.h | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | #ifndef _PA_LIBGCC_H_ | ||
| 2 | #define _PA_LIBGCC_H_ | ||
| 3 | |||
| 4 | #include <linux/types.h> | ||
| 5 | #include <linux/module.h> | ||
| 6 | |||
| 7 | /* Cribbed from klibc/libgcc/ */ | ||
| 8 | u64 __ashldi3(u64 v, int cnt); | ||
| 9 | u64 __ashrdi3(u64 v, int cnt); | ||
| 10 | |||
| 11 | u32 __clzsi2(u32 v); | ||
| 12 | |||
| 13 | s64 __divdi3(s64 num, s64 den); | ||
| 14 | s32 __divsi3(s32 num, s32 den); | ||
| 15 | |||
| 16 | u64 __lshrdi3(u64 v, int cnt); | ||
| 17 | |||
| 18 | s64 __moddi3(s64 num, s64 den); | ||
| 19 | s32 __modsi3(s32 num, s32 den); | ||
| 20 | |||
| 21 | u64 __udivdi3(u64 num, u64 den); | ||
| 22 | u32 __udivsi3(u32 num, u32 den); | ||
| 23 | |||
| 24 | u64 __udivmoddi4(u64 num, u64 den, u64 * rem_p); | ||
| 25 | u32 __udivmodsi4(u32 num, u32 den, u32 * rem_p); | ||
| 26 | |||
| 27 | u64 __umulsidi3(u32 u, u32 v); | ||
| 28 | |||
| 29 | u64 __umoddi3(u64 num, u64 den); | ||
| 30 | u32 __umodsi3(u32 num, u32 den); | ||
| 31 | |||
| 32 | #endif /*_PA_LIBGCC_H_*/ | ||
diff --git a/arch/parisc/lib/memcpy.c b/arch/parisc/lib/memcpy.c index 2c43ebe99a9c..d22042d33100 100644 --- a/arch/parisc/lib/memcpy.c +++ b/arch/parisc/lib/memcpy.c | |||
| @@ -139,12 +139,12 @@ DECLARE_PER_CPU(struct exception_data, exception_data); | |||
| 139 | #define stw(_s,_t,_o,_a,_e) def_store_insn(stw,"r",_s,_t,_o,_a,_e) | 139 | #define stw(_s,_t,_o,_a,_e) def_store_insn(stw,"r",_s,_t,_o,_a,_e) |
| 140 | 140 | ||
| 141 | #ifdef CONFIG_PREFETCH | 141 | #ifdef CONFIG_PREFETCH |
| 142 | extern inline void prefetch_src(const void *addr) | 142 | static inline void prefetch_src(const void *addr) |
| 143 | { | 143 | { |
| 144 | __asm__("ldw 0(" s_space ",%0), %%r0" : : "r" (addr)); | 144 | __asm__("ldw 0(" s_space ",%0), %%r0" : : "r" (addr)); |
| 145 | } | 145 | } |
| 146 | 146 | ||
| 147 | extern inline void prefetch_dst(const void *addr) | 147 | static inline void prefetch_dst(const void *addr) |
| 148 | { | 148 | { |
| 149 | __asm__("ldd 0(" d_space ",%0), %%r0" : : "r" (addr)); | 149 | __asm__("ldd 0(" d_space ",%0), %%r0" : : "r" (addr)); |
| 150 | } | 150 | } |
diff --git a/arch/parisc/lib/milli/Makefile b/arch/parisc/lib/milli/Makefile new file mode 100644 index 000000000000..9b24e9b1f3cb --- /dev/null +++ b/arch/parisc/lib/milli/Makefile | |||
| @@ -0,0 +1 @@ | |||
| obj-y := dyncall.o divI.o divU.o remI.o remU.o div_const.o mulI.o | |||
diff --git a/arch/parisc/lib/milli/divI.S b/arch/parisc/lib/milli/divI.S new file mode 100644 index 000000000000..ac106b7b6f24 --- /dev/null +++ b/arch/parisc/lib/milli/divI.S | |||
| @@ -0,0 +1,254 @@ | |||
| 1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
| 2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
| 3 | and Alan Modra <alan@linuxcare.com.au>. | ||
| 4 | |||
| 5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
| 6 | |||
| 7 | This file is part of GCC and is released under the terms of | ||
| 8 | of the GNU General Public License as published by the Free Software | ||
| 9 | Foundation; either version 2, or (at your option) any later version. | ||
| 10 | See the file COPYING in the top-level GCC source directory for a copy | ||
| 11 | of the license. */ | ||
| 12 | |||
| 13 | #include "milli.h" | ||
| 14 | |||
| 15 | #ifdef L_divI | ||
| 16 | /* ROUTINES: $$divI, $$divoI | ||
| 17 | |||
| 18 | Single precision divide for signed binary integers. | ||
| 19 | |||
| 20 | The quotient is truncated towards zero. | ||
| 21 | The sign of the quotient is the XOR of the signs of the dividend and | ||
| 22 | divisor. | ||
| 23 | Divide by zero is trapped. | ||
| 24 | Divide of -2**31 by -1 is trapped for $$divoI but not for $$divI. | ||
| 25 | |||
| 26 | INPUT REGISTERS: | ||
| 27 | . arg0 == dividend | ||
| 28 | . arg1 == divisor | ||
| 29 | . mrp == return pc | ||
| 30 | . sr0 == return space when called externally | ||
| 31 | |||
| 32 | OUTPUT REGISTERS: | ||
| 33 | . arg0 = undefined | ||
| 34 | . arg1 = undefined | ||
| 35 | . ret1 = quotient | ||
| 36 | |||
| 37 | OTHER REGISTERS AFFECTED: | ||
| 38 | . r1 = undefined | ||
| 39 | |||
| 40 | SIDE EFFECTS: | ||
| 41 | . Causes a trap under the following conditions: | ||
| 42 | . divisor is zero (traps with ADDIT,= 0,25,0) | ||
| 43 | . dividend==-2**31 and divisor==-1 and routine is $$divoI | ||
| 44 | . (traps with ADDO 26,25,0) | ||
| 45 | . Changes memory at the following places: | ||
| 46 | . NONE | ||
| 47 | |||
| 48 | PERMISSIBLE CONTEXT: | ||
| 49 | . Unwindable. | ||
| 50 | . Suitable for internal or external millicode. | ||
| 51 | . Assumes the special millicode register conventions. | ||
| 52 | |||
| 53 | DISCUSSION: | ||
| 54 | . Branchs to other millicode routines using BE | ||
| 55 | . $$div_# for # being 2,3,4,5,6,7,8,9,10,12,14,15 | ||
| 56 | . | ||
| 57 | . For selected divisors, calls a divide by constant routine written by | ||
| 58 | . Karl Pettis. Eligible divisors are 1..15 excluding 11 and 13. | ||
| 59 | . | ||
| 60 | . The only overflow case is -2**31 divided by -1. | ||
| 61 | . Both routines return -2**31 but only $$divoI traps. */ | ||
| 62 | |||
| 63 | RDEFINE(temp,r1) | ||
| 64 | RDEFINE(retreg,ret1) /* r29 */ | ||
| 65 | RDEFINE(temp1,arg0) | ||
| 66 | SUBSPA_MILLI_DIV | ||
| 67 | ATTR_MILLI | ||
| 68 | .import $$divI_2,millicode | ||
| 69 | .import $$divI_3,millicode | ||
| 70 | .import $$divI_4,millicode | ||
| 71 | .import $$divI_5,millicode | ||
| 72 | .import $$divI_6,millicode | ||
| 73 | .import $$divI_7,millicode | ||
| 74 | .import $$divI_8,millicode | ||
| 75 | .import $$divI_9,millicode | ||
| 76 | .import $$divI_10,millicode | ||
| 77 | .import $$divI_12,millicode | ||
| 78 | .import $$divI_14,millicode | ||
| 79 | .import $$divI_15,millicode | ||
| 80 | .export $$divI,millicode | ||
| 81 | .export $$divoI,millicode | ||
| 82 | .proc | ||
| 83 | .callinfo millicode | ||
| 84 | .entry | ||
| 85 | GSYM($$divoI) | ||
| 86 | comib,=,n -1,arg1,LREF(negative1) /* when divisor == -1 */ | ||
| 87 | GSYM($$divI) | ||
| 88 | ldo -1(arg1),temp /* is there at most one bit set ? */ | ||
| 89 | and,<> arg1,temp,r0 /* if not, don't use power of 2 divide */ | ||
| 90 | addi,> 0,arg1,r0 /* if divisor > 0, use power of 2 divide */ | ||
| 91 | b,n LREF(neg_denom) | ||
| 92 | LSYM(pow2) | ||
| 93 | addi,>= 0,arg0,retreg /* if numerator is negative, add the */ | ||
| 94 | add arg0,temp,retreg /* (denominaotr -1) to correct for shifts */ | ||
| 95 | extru,= arg1,15,16,temp /* test denominator with 0xffff0000 */ | ||
| 96 | extrs retreg,15,16,retreg /* retreg = retreg >> 16 */ | ||
| 97 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 16) */ | ||
| 98 | ldi 0xcc,temp1 /* setup 0xcc in temp1 */ | ||
| 99 | extru,= arg1,23,8,temp /* test denominator with 0xff00 */ | ||
| 100 | extrs retreg,23,24,retreg /* retreg = retreg >> 8 */ | ||
| 101 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 8) */ | ||
| 102 | ldi 0xaa,temp /* setup 0xaa in temp */ | ||
| 103 | extru,= arg1,27,4,r0 /* test denominator with 0xf0 */ | ||
| 104 | extrs retreg,27,28,retreg /* retreg = retreg >> 4 */ | ||
| 105 | and,= arg1,temp1,r0 /* test denominator with 0xcc */ | ||
| 106 | extrs retreg,29,30,retreg /* retreg = retreg >> 2 */ | ||
| 107 | and,= arg1,temp,r0 /* test denominator with 0xaa */ | ||
| 108 | extrs retreg,30,31,retreg /* retreg = retreg >> 1 */ | ||
| 109 | MILLIRETN | ||
| 110 | LSYM(neg_denom) | ||
| 111 | addi,< 0,arg1,r0 /* if arg1 >= 0, it's not power of 2 */ | ||
| 112 | b,n LREF(regular_seq) | ||
| 113 | sub r0,arg1,temp /* make denominator positive */ | ||
| 114 | comb,=,n arg1,temp,LREF(regular_seq) /* test against 0x80000000 and 0 */ | ||
| 115 | ldo -1(temp),retreg /* is there at most one bit set ? */ | ||
| 116 | and,= temp,retreg,r0 /* if so, the denominator is power of 2 */ | ||
| 117 | b,n LREF(regular_seq) | ||
| 118 | sub r0,arg0,retreg /* negate numerator */ | ||
| 119 | comb,=,n arg0,retreg,LREF(regular_seq) /* test against 0x80000000 */ | ||
| 120 | copy retreg,arg0 /* set up arg0, arg1 and temp */ | ||
| 121 | copy temp,arg1 /* before branching to pow2 */ | ||
| 122 | b LREF(pow2) | ||
| 123 | ldo -1(arg1),temp | ||
| 124 | LSYM(regular_seq) | ||
| 125 | comib,>>=,n 15,arg1,LREF(small_divisor) | ||
| 126 | add,>= 0,arg0,retreg /* move dividend, if retreg < 0, */ | ||
| 127 | LSYM(normal) | ||
| 128 | subi 0,retreg,retreg /* make it positive */ | ||
| 129 | sub 0,arg1,temp /* clear carry, */ | ||
| 130 | /* negate the divisor */ | ||
| 131 | ds 0,temp,0 /* set V-bit to the comple- */ | ||
| 132 | /* ment of the divisor sign */ | ||
| 133 | add retreg,retreg,retreg /* shift msb bit into carry */ | ||
| 134 | ds r0,arg1,temp /* 1st divide step, if no carry */ | ||
| 135 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 136 | ds temp,arg1,temp /* 2nd divide step */ | ||
| 137 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 138 | ds temp,arg1,temp /* 3rd divide step */ | ||
| 139 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 140 | ds temp,arg1,temp /* 4th divide step */ | ||
| 141 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 142 | ds temp,arg1,temp /* 5th divide step */ | ||
| 143 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 144 | ds temp,arg1,temp /* 6th divide step */ | ||
| 145 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 146 | ds temp,arg1,temp /* 7th divide step */ | ||
| 147 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 148 | ds temp,arg1,temp /* 8th divide step */ | ||
| 149 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 150 | ds temp,arg1,temp /* 9th divide step */ | ||
| 151 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 152 | ds temp,arg1,temp /* 10th divide step */ | ||
| 153 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 154 | ds temp,arg1,temp /* 11th divide step */ | ||
| 155 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 156 | ds temp,arg1,temp /* 12th divide step */ | ||
| 157 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 158 | ds temp,arg1,temp /* 13th divide step */ | ||
| 159 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 160 | ds temp,arg1,temp /* 14th divide step */ | ||
| 161 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 162 | ds temp,arg1,temp /* 15th divide step */ | ||
| 163 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 164 | ds temp,arg1,temp /* 16th divide step */ | ||
| 165 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 166 | ds temp,arg1,temp /* 17th divide step */ | ||
| 167 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 168 | ds temp,arg1,temp /* 18th divide step */ | ||
| 169 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 170 | ds temp,arg1,temp /* 19th divide step */ | ||
| 171 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 172 | ds temp,arg1,temp /* 20th divide step */ | ||
| 173 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 174 | ds temp,arg1,temp /* 21st divide step */ | ||
| 175 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 176 | ds temp,arg1,temp /* 22nd divide step */ | ||
| 177 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 178 | ds temp,arg1,temp /* 23rd divide step */ | ||
| 179 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 180 | ds temp,arg1,temp /* 24th divide step */ | ||
| 181 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 182 | ds temp,arg1,temp /* 25th divide step */ | ||
| 183 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 184 | ds temp,arg1,temp /* 26th divide step */ | ||
| 185 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 186 | ds temp,arg1,temp /* 27th divide step */ | ||
| 187 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 188 | ds temp,arg1,temp /* 28th divide step */ | ||
| 189 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 190 | ds temp,arg1,temp /* 29th divide step */ | ||
| 191 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 192 | ds temp,arg1,temp /* 30th divide step */ | ||
| 193 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 194 | ds temp,arg1,temp /* 31st divide step */ | ||
| 195 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 196 | ds temp,arg1,temp /* 32nd divide step, */ | ||
| 197 | addc retreg,retreg,retreg /* shift last retreg bit into retreg */ | ||
| 198 | xor,>= arg0,arg1,0 /* get correct sign of quotient */ | ||
| 199 | sub 0,retreg,retreg /* based on operand signs */ | ||
| 200 | MILLIRETN | ||
| 201 | nop | ||
| 202 | |||
| 203 | LSYM(small_divisor) | ||
| 204 | |||
| 205 | #if defined(CONFIG_64BIT) | ||
| 206 | /* Clear the upper 32 bits of the arg1 register. We are working with */ | ||
| 207 | /* small divisors (and 32-bit integers) We must not be mislead */ | ||
| 208 | /* by "1" bits left in the upper 32 bits. */ | ||
| 209 | depd %r0,31,32,%r25 | ||
| 210 | #endif | ||
| 211 | blr,n arg1,r0 | ||
| 212 | nop | ||
| 213 | /* table for divisor == 0,1, ... ,15 */ | ||
| 214 | addit,= 0,arg1,r0 /* trap if divisor == 0 */ | ||
| 215 | nop | ||
| 216 | MILLIRET /* divisor == 1 */ | ||
| 217 | copy arg0,retreg | ||
| 218 | MILLI_BEN($$divI_2) /* divisor == 2 */ | ||
| 219 | nop | ||
| 220 | MILLI_BEN($$divI_3) /* divisor == 3 */ | ||
| 221 | nop | ||
| 222 | MILLI_BEN($$divI_4) /* divisor == 4 */ | ||
| 223 | nop | ||
| 224 | MILLI_BEN($$divI_5) /* divisor == 5 */ | ||
| 225 | nop | ||
| 226 | MILLI_BEN($$divI_6) /* divisor == 6 */ | ||
| 227 | nop | ||
| 228 | MILLI_BEN($$divI_7) /* divisor == 7 */ | ||
| 229 | nop | ||
| 230 | MILLI_BEN($$divI_8) /* divisor == 8 */ | ||
| 231 | nop | ||
| 232 | MILLI_BEN($$divI_9) /* divisor == 9 */ | ||
| 233 | nop | ||
| 234 | MILLI_BEN($$divI_10) /* divisor == 10 */ | ||
| 235 | nop | ||
| 236 | b LREF(normal) /* divisor == 11 */ | ||
| 237 | add,>= 0,arg0,retreg | ||
| 238 | MILLI_BEN($$divI_12) /* divisor == 12 */ | ||
| 239 | nop | ||
| 240 | b LREF(normal) /* divisor == 13 */ | ||
| 241 | add,>= 0,arg0,retreg | ||
| 242 | MILLI_BEN($$divI_14) /* divisor == 14 */ | ||
| 243 | nop | ||
| 244 | MILLI_BEN($$divI_15) /* divisor == 15 */ | ||
| 245 | nop | ||
| 246 | |||
| 247 | LSYM(negative1) | ||
| 248 | sub 0,arg0,retreg /* result is negation of dividend */ | ||
| 249 | MILLIRET | ||
| 250 | addo arg0,arg1,r0 /* trap iff dividend==0x80000000 && divisor==-1 */ | ||
| 251 | .exit | ||
| 252 | .procend | ||
| 253 | .end | ||
| 254 | #endif | ||
diff --git a/arch/parisc/lib/milli/divU.S b/arch/parisc/lib/milli/divU.S new file mode 100644 index 000000000000..9287fe2546fa --- /dev/null +++ b/arch/parisc/lib/milli/divU.S | |||
| @@ -0,0 +1,235 @@ | |||
| 1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
| 2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
| 3 | and Alan Modra <alan@linuxcare.com.au>. | ||
| 4 | |||
| 5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
| 6 | |||
| 7 | This file is part of GCC and is released under the terms of | ||
| 8 | of the GNU General Public License as published by the Free Software | ||
| 9 | Foundation; either version 2, or (at your option) any later version. | ||
| 10 | See the file COPYING in the top-level GCC source directory for a copy | ||
| 11 | of the license. */ | ||
| 12 | |||
| 13 | #include "milli.h" | ||
| 14 | |||
| 15 | #ifdef L_divU | ||
| 16 | /* ROUTINE: $$divU | ||
| 17 | . | ||
| 18 | . Single precision divide for unsigned integers. | ||
| 19 | . | ||
| 20 | . Quotient is truncated towards zero. | ||
| 21 | . Traps on divide by zero. | ||
| 22 | |||
| 23 | INPUT REGISTERS: | ||
| 24 | . arg0 == dividend | ||
| 25 | . arg1 == divisor | ||
| 26 | . mrp == return pc | ||
| 27 | . sr0 == return space when called externally | ||
| 28 | |||
| 29 | OUTPUT REGISTERS: | ||
| 30 | . arg0 = undefined | ||
| 31 | . arg1 = undefined | ||
| 32 | . ret1 = quotient | ||
| 33 | |||
| 34 | OTHER REGISTERS AFFECTED: | ||
| 35 | . r1 = undefined | ||
| 36 | |||
| 37 | SIDE EFFECTS: | ||
| 38 | . Causes a trap under the following conditions: | ||
| 39 | . divisor is zero | ||
| 40 | . Changes memory at the following places: | ||
| 41 | . NONE | ||
| 42 | |||
| 43 | PERMISSIBLE CONTEXT: | ||
| 44 | . Unwindable. | ||
| 45 | . Does not create a stack frame. | ||
| 46 | . Suitable for internal or external millicode. | ||
| 47 | . Assumes the special millicode register conventions. | ||
| 48 | |||
| 49 | DISCUSSION: | ||
| 50 | . Branchs to other millicode routines using BE: | ||
| 51 | . $$divU_# for 3,5,6,7,9,10,12,14,15 | ||
| 52 | . | ||
| 53 | . For selected small divisors calls the special divide by constant | ||
| 54 | . routines written by Karl Pettis. These are: 3,5,6,7,9,10,12,14,15. */ | ||
| 55 | |||
| 56 | RDEFINE(temp,r1) | ||
| 57 | RDEFINE(retreg,ret1) /* r29 */ | ||
| 58 | RDEFINE(temp1,arg0) | ||
| 59 | SUBSPA_MILLI_DIV | ||
| 60 | ATTR_MILLI | ||
| 61 | .export $$divU,millicode | ||
| 62 | .import $$divU_3,millicode | ||
| 63 | .import $$divU_5,millicode | ||
| 64 | .import $$divU_6,millicode | ||
| 65 | .import $$divU_7,millicode | ||
| 66 | .import $$divU_9,millicode | ||
| 67 | .import $$divU_10,millicode | ||
| 68 | .import $$divU_12,millicode | ||
| 69 | .import $$divU_14,millicode | ||
| 70 | .import $$divU_15,millicode | ||
| 71 | .proc | ||
| 72 | .callinfo millicode | ||
| 73 | .entry | ||
| 74 | GSYM($$divU) | ||
| 75 | /* The subtract is not nullified since it does no harm and can be used | ||
| 76 | by the two cases that branch back to "normal". */ | ||
| 77 | ldo -1(arg1),temp /* is there at most one bit set ? */ | ||
| 78 | and,= arg1,temp,r0 /* if so, denominator is power of 2 */ | ||
| 79 | b LREF(regular_seq) | ||
| 80 | addit,= 0,arg1,0 /* trap for zero dvr */ | ||
| 81 | copy arg0,retreg | ||
| 82 | extru,= arg1,15,16,temp /* test denominator with 0xffff0000 */ | ||
| 83 | extru retreg,15,16,retreg /* retreg = retreg >> 16 */ | ||
| 84 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 16) */ | ||
| 85 | ldi 0xcc,temp1 /* setup 0xcc in temp1 */ | ||
| 86 | extru,= arg1,23,8,temp /* test denominator with 0xff00 */ | ||
| 87 | extru retreg,23,24,retreg /* retreg = retreg >> 8 */ | ||
| 88 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 8) */ | ||
| 89 | ldi 0xaa,temp /* setup 0xaa in temp */ | ||
| 90 | extru,= arg1,27,4,r0 /* test denominator with 0xf0 */ | ||
| 91 | extru retreg,27,28,retreg /* retreg = retreg >> 4 */ | ||
| 92 | and,= arg1,temp1,r0 /* test denominator with 0xcc */ | ||
| 93 | extru retreg,29,30,retreg /* retreg = retreg >> 2 */ | ||
| 94 | and,= arg1,temp,r0 /* test denominator with 0xaa */ | ||
| 95 | extru retreg,30,31,retreg /* retreg = retreg >> 1 */ | ||
| 96 | MILLIRETN | ||
| 97 | nop | ||
| 98 | LSYM(regular_seq) | ||
| 99 | comib,>= 15,arg1,LREF(special_divisor) | ||
| 100 | subi 0,arg1,temp /* clear carry, negate the divisor */ | ||
| 101 | ds r0,temp,r0 /* set V-bit to 1 */ | ||
| 102 | LSYM(normal) | ||
| 103 | add arg0,arg0,retreg /* shift msb bit into carry */ | ||
| 104 | ds r0,arg1,temp /* 1st divide step, if no carry */ | ||
| 105 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 106 | ds temp,arg1,temp /* 2nd divide step */ | ||
| 107 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 108 | ds temp,arg1,temp /* 3rd divide step */ | ||
| 109 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 110 | ds temp,arg1,temp /* 4th divide step */ | ||
| 111 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 112 | ds temp,arg1,temp /* 5th divide step */ | ||
| 113 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 114 | ds temp,arg1,temp /* 6th divide step */ | ||
| 115 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 116 | ds temp,arg1,temp /* 7th divide step */ | ||
| 117 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 118 | ds temp,arg1,temp /* 8th divide step */ | ||
| 119 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 120 | ds temp,arg1,temp /* 9th divide step */ | ||
| 121 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 122 | ds temp,arg1,temp /* 10th divide step */ | ||
| 123 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 124 | ds temp,arg1,temp /* 11th divide step */ | ||
| 125 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 126 | ds temp,arg1,temp /* 12th divide step */ | ||
| 127 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 128 | ds temp,arg1,temp /* 13th divide step */ | ||
| 129 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 130 | ds temp,arg1,temp /* 14th divide step */ | ||
| 131 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 132 | ds temp,arg1,temp /* 15th divide step */ | ||
| 133 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 134 | ds temp,arg1,temp /* 16th divide step */ | ||
| 135 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 136 | ds temp,arg1,temp /* 17th divide step */ | ||
| 137 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 138 | ds temp,arg1,temp /* 18th divide step */ | ||
| 139 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 140 | ds temp,arg1,temp /* 19th divide step */ | ||
| 141 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 142 | ds temp,arg1,temp /* 20th divide step */ | ||
| 143 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 144 | ds temp,arg1,temp /* 21st divide step */ | ||
| 145 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 146 | ds temp,arg1,temp /* 22nd divide step */ | ||
| 147 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 148 | ds temp,arg1,temp /* 23rd divide step */ | ||
| 149 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 150 | ds temp,arg1,temp /* 24th divide step */ | ||
| 151 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 152 | ds temp,arg1,temp /* 25th divide step */ | ||
| 153 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 154 | ds temp,arg1,temp /* 26th divide step */ | ||
| 155 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 156 | ds temp,arg1,temp /* 27th divide step */ | ||
| 157 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 158 | ds temp,arg1,temp /* 28th divide step */ | ||
| 159 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 160 | ds temp,arg1,temp /* 29th divide step */ | ||
| 161 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 162 | ds temp,arg1,temp /* 30th divide step */ | ||
| 163 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 164 | ds temp,arg1,temp /* 31st divide step */ | ||
| 165 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 166 | ds temp,arg1,temp /* 32nd divide step, */ | ||
| 167 | MILLIRET | ||
| 168 | addc retreg,retreg,retreg /* shift last retreg bit into retreg */ | ||
| 169 | |||
| 170 | /* Handle the cases where divisor is a small constant or has high bit on. */ | ||
| 171 | LSYM(special_divisor) | ||
| 172 | /* blr arg1,r0 */ | ||
| 173 | /* comib,>,n 0,arg1,LREF(big_divisor) ; nullify previous instruction */ | ||
| 174 | |||
| 175 | /* Pratap 8/13/90. The 815 Stirling chip set has a bug that prevents us from | ||
| 176 | generating such a blr, comib sequence. A problem in nullification. So I | ||
| 177 | rewrote this code. */ | ||
| 178 | |||
| 179 | #if defined(CONFIG_64BIT) | ||
| 180 | /* Clear the upper 32 bits of the arg1 register. We are working with | ||
| 181 | small divisors (and 32-bit unsigned integers) We must not be mislead | ||
| 182 | by "1" bits left in the upper 32 bits. */ | ||
| 183 | depd %r0,31,32,%r25 | ||
| 184 | #endif | ||
| 185 | comib,> 0,arg1,LREF(big_divisor) | ||
| 186 | nop | ||
| 187 | blr arg1,r0 | ||
| 188 | nop | ||
| 189 | |||
| 190 | LSYM(zero_divisor) /* this label is here to provide external visibility */ | ||
| 191 | addit,= 0,arg1,0 /* trap for zero dvr */ | ||
| 192 | nop | ||
| 193 | MILLIRET /* divisor == 1 */ | ||
| 194 | copy arg0,retreg | ||
| 195 | MILLIRET /* divisor == 2 */ | ||
| 196 | extru arg0,30,31,retreg | ||
| 197 | MILLI_BEN($$divU_3) /* divisor == 3 */ | ||
| 198 | nop | ||
| 199 | MILLIRET /* divisor == 4 */ | ||
| 200 | extru arg0,29,30,retreg | ||
| 201 | MILLI_BEN($$divU_5) /* divisor == 5 */ | ||
| 202 | nop | ||
| 203 | MILLI_BEN($$divU_6) /* divisor == 6 */ | ||
| 204 | nop | ||
| 205 | MILLI_BEN($$divU_7) /* divisor == 7 */ | ||
| 206 | nop | ||
| 207 | MILLIRET /* divisor == 8 */ | ||
| 208 | extru arg0,28,29,retreg | ||
| 209 | MILLI_BEN($$divU_9) /* divisor == 9 */ | ||
| 210 | nop | ||
| 211 | MILLI_BEN($$divU_10) /* divisor == 10 */ | ||
| 212 | nop | ||
| 213 | b LREF(normal) /* divisor == 11 */ | ||
| 214 | ds r0,temp,r0 /* set V-bit to 1 */ | ||
| 215 | MILLI_BEN($$divU_12) /* divisor == 12 */ | ||
| 216 | nop | ||
| 217 | b LREF(normal) /* divisor == 13 */ | ||
| 218 | ds r0,temp,r0 /* set V-bit to 1 */ | ||
| 219 | MILLI_BEN($$divU_14) /* divisor == 14 */ | ||
| 220 | nop | ||
| 221 | MILLI_BEN($$divU_15) /* divisor == 15 */ | ||
| 222 | nop | ||
| 223 | |||
| 224 | /* Handle the case where the high bit is on in the divisor. | ||
| 225 | Compute: if( dividend>=divisor) quotient=1; else quotient=0; | ||
| 226 | Note: dividend>==divisor iff dividend-divisor does not borrow | ||
| 227 | and not borrow iff carry. */ | ||
| 228 | LSYM(big_divisor) | ||
| 229 | sub arg0,arg1,r0 | ||
| 230 | MILLIRET | ||
| 231 | addc r0,r0,retreg | ||
| 232 | .exit | ||
| 233 | .procend | ||
| 234 | .end | ||
| 235 | #endif | ||
diff --git a/arch/parisc/lib/milli/div_const.S b/arch/parisc/lib/milli/div_const.S new file mode 100644 index 000000000000..dd660076e944 --- /dev/null +++ b/arch/parisc/lib/milli/div_const.S | |||
| @@ -0,0 +1,682 @@ | |||
| 1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
| 2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
| 3 | and Alan Modra <alan@linuxcare.com.au>. | ||
| 4 | |||
| 5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
| 6 | |||
| 7 | This file is part of GCC and is released under the terms of | ||
| 8 | of the GNU General Public License as published by the Free Software | ||
| 9 | Foundation; either version 2, or (at your option) any later version. | ||
| 10 | See the file COPYING in the top-level GCC source directory for a copy | ||
| 11 | of the license. */ | ||
| 12 | |||
| 13 | #include "milli.h" | ||
| 14 | |||
| 15 | #ifdef L_div_const | ||
| 16 | /* ROUTINE: $$divI_2 | ||
| 17 | . $$divI_3 $$divU_3 | ||
| 18 | . $$divI_4 | ||
| 19 | . $$divI_5 $$divU_5 | ||
| 20 | . $$divI_6 $$divU_6 | ||
| 21 | . $$divI_7 $$divU_7 | ||
| 22 | . $$divI_8 | ||
| 23 | . $$divI_9 $$divU_9 | ||
| 24 | . $$divI_10 $$divU_10 | ||
| 25 | . | ||
| 26 | . $$divI_12 $$divU_12 | ||
| 27 | . | ||
| 28 | . $$divI_14 $$divU_14 | ||
| 29 | . $$divI_15 $$divU_15 | ||
| 30 | . $$divI_16 | ||
| 31 | . $$divI_17 $$divU_17 | ||
| 32 | . | ||
| 33 | . Divide by selected constants for single precision binary integers. | ||
| 34 | |||
| 35 | INPUT REGISTERS: | ||
| 36 | . arg0 == dividend | ||
| 37 | . mrp == return pc | ||
| 38 | . sr0 == return space when called externally | ||
| 39 | |||
| 40 | OUTPUT REGISTERS: | ||
| 41 | . arg0 = undefined | ||
| 42 | . arg1 = undefined | ||
| 43 | . ret1 = quotient | ||
| 44 | |||
| 45 | OTHER REGISTERS AFFECTED: | ||
| 46 | . r1 = undefined | ||
| 47 | |||
| 48 | SIDE EFFECTS: | ||
| 49 | . Causes a trap under the following conditions: NONE | ||
| 50 | . Changes memory at the following places: NONE | ||
| 51 | |||
| 52 | PERMISSIBLE CONTEXT: | ||
| 53 | . Unwindable. | ||
| 54 | . Does not create a stack frame. | ||
| 55 | . Suitable for internal or external millicode. | ||
| 56 | . Assumes the special millicode register conventions. | ||
| 57 | |||
| 58 | DISCUSSION: | ||
| 59 | . Calls other millicode routines using mrp: NONE | ||
| 60 | . Calls other millicode routines: NONE */ | ||
| 61 | |||
| 62 | |||
| 63 | /* TRUNCATED DIVISION BY SMALL INTEGERS | ||
| 64 | |||
| 65 | We are interested in q(x) = floor(x/y), where x >= 0 and y > 0 | ||
| 66 | (with y fixed). | ||
| 67 | |||
| 68 | Let a = floor(z/y), for some choice of z. Note that z will be | ||
| 69 | chosen so that division by z is cheap. | ||
| 70 | |||
| 71 | Let r be the remainder(z/y). In other words, r = z - ay. | ||
| 72 | |||
| 73 | Now, our method is to choose a value for b such that | ||
| 74 | |||
| 75 | q'(x) = floor((ax+b)/z) | ||
| 76 | |||
| 77 | is equal to q(x) over as large a range of x as possible. If the | ||
| 78 | two are equal over a sufficiently large range, and if it is easy to | ||
| 79 | form the product (ax), and it is easy to divide by z, then we can | ||
| 80 | perform the division much faster than the general division algorithm. | ||
| 81 | |||
| 82 | So, we want the following to be true: | ||
| 83 | |||
| 84 | . For x in the following range: | ||
| 85 | . | ||
| 86 | . ky <= x < (k+1)y | ||
| 87 | . | ||
| 88 | . implies that | ||
| 89 | . | ||
| 90 | . k <= (ax+b)/z < (k+1) | ||
| 91 | |||
| 92 | We want to determine b such that this is true for all k in the | ||
| 93 | range {0..K} for some maximum K. | ||
| 94 | |||
| 95 | Since (ax+b) is an increasing function of x, we can take each | ||
| 96 | bound separately to determine the "best" value for b. | ||
| 97 | |||
| 98 | (ax+b)/z < (k+1) implies | ||
| 99 | |||
| 100 | (a((k+1)y-1)+b < (k+1)z implies | ||
| 101 | |||
| 102 | b < a + (k+1)(z-ay) implies | ||
| 103 | |||
| 104 | b < a + (k+1)r | ||
| 105 | |||
| 106 | This needs to be true for all k in the range {0..K}. In | ||
| 107 | particular, it is true for k = 0 and this leads to a maximum | ||
| 108 | acceptable value for b. | ||
| 109 | |||
| 110 | b < a+r or b <= a+r-1 | ||
| 111 | |||
| 112 | Taking the other bound, we have | ||
| 113 | |||
| 114 | k <= (ax+b)/z implies | ||
| 115 | |||
| 116 | k <= (aky+b)/z implies | ||
| 117 | |||
| 118 | k(z-ay) <= b implies | ||
| 119 | |||
| 120 | kr <= b | ||
| 121 | |||
| 122 | Clearly, the largest range for k will be achieved by maximizing b, | ||
| 123 | when r is not zero. When r is zero, then the simplest choice for b | ||
| 124 | is 0. When r is not 0, set | ||
| 125 | |||
| 126 | . b = a+r-1 | ||
| 127 | |||
| 128 | Now, by construction, q'(x) = floor((ax+b)/z) = q(x) = floor(x/y) | ||
| 129 | for all x in the range: | ||
| 130 | |||
| 131 | . 0 <= x < (K+1)y | ||
| 132 | |||
| 133 | We need to determine what K is. Of our two bounds, | ||
| 134 | |||
| 135 | . b < a+(k+1)r is satisfied for all k >= 0, by construction. | ||
| 136 | |||
| 137 | The other bound is | ||
| 138 | |||
| 139 | . kr <= b | ||
| 140 | |||
| 141 | This is always true if r = 0. If r is not 0 (the usual case), then | ||
| 142 | K = floor((a+r-1)/r), is the maximum value for k. | ||
| 143 | |||
| 144 | Therefore, the formula q'(x) = floor((ax+b)/z) yields the correct | ||
| 145 | answer for q(x) = floor(x/y) when x is in the range | ||
| 146 | |||
| 147 | (0,(K+1)y-1) K = floor((a+r-1)/r) | ||
| 148 | |||
| 149 | To be most useful, we want (K+1)y-1 = (max x) >= 2**32-1 so that | ||
| 150 | the formula for q'(x) yields the correct value of q(x) for all x | ||
| 151 | representable by a single word in HPPA. | ||
| 152 | |||
| 153 | We are also constrained in that computing the product (ax), adding | ||
| 154 | b, and dividing by z must all be done quickly, otherwise we will be | ||
| 155 | better off going through the general algorithm using the DS | ||
| 156 | instruction, which uses approximately 70 cycles. | ||
| 157 | |||
| 158 | For each y, there is a choice of z which satisfies the constraints | ||
| 159 | for (K+1)y >= 2**32. We may not, however, be able to satisfy the | ||
| 160 | timing constraints for arbitrary y. It seems that z being equal to | ||
| 161 | a power of 2 or a power of 2 minus 1 is as good as we can do, since | ||
| 162 | it minimizes the time to do division by z. We want the choice of z | ||
| 163 | to also result in a value for (a) that minimizes the computation of | ||
| 164 | the product (ax). This is best achieved if (a) has a regular bit | ||
| 165 | pattern (so the multiplication can be done with shifts and adds). | ||
| 166 | The value of (a) also needs to be less than 2**32 so the product is | ||
| 167 | always guaranteed to fit in 2 words. | ||
| 168 | |||
| 169 | In actual practice, the following should be done: | ||
| 170 | |||
| 171 | 1) For negative x, you should take the absolute value and remember | ||
| 172 | . the fact so that the result can be negated. This obviously does | ||
| 173 | . not apply in the unsigned case. | ||
| 174 | 2) For even y, you should factor out the power of 2 that divides y | ||
| 175 | . and divide x by it. You can then proceed by dividing by the | ||
| 176 | . odd factor of y. | ||
| 177 | |||
| 178 | Here is a table of some odd values of y, and corresponding choices | ||
| 179 | for z which are "good". | ||
| 180 | |||
| 181 | y z r a (hex) max x (hex) | ||
| 182 | |||
| 183 | 3 2**32 1 55555555 100000001 | ||
| 184 | 5 2**32 1 33333333 100000003 | ||
| 185 | 7 2**24-1 0 249249 (infinite) | ||
| 186 | 9 2**24-1 0 1c71c7 (infinite) | ||
| 187 | 11 2**20-1 0 1745d (infinite) | ||
| 188 | 13 2**24-1 0 13b13b (infinite) | ||
| 189 | 15 2**32 1 11111111 10000000d | ||
| 190 | 17 2**32 1 f0f0f0f 10000000f | ||
| 191 | |||
| 192 | If r is 1, then b = a+r-1 = a. This simplifies the computation | ||
| 193 | of (ax+b), since you can compute (x+1)(a) instead. If r is 0, | ||
| 194 | then b = 0 is ok to use which simplifies (ax+b). | ||
| 195 | |||
| 196 | The bit patterns for 55555555, 33333333, and 11111111 are obviously | ||
| 197 | very regular. The bit patterns for the other values of a above are: | ||
| 198 | |||
| 199 | y (hex) (binary) | ||
| 200 | |||
| 201 | 7 249249 001001001001001001001001 << regular >> | ||
| 202 | 9 1c71c7 000111000111000111000111 << regular >> | ||
| 203 | 11 1745d 000000010111010001011101 << irregular >> | ||
| 204 | 13 13b13b 000100111011000100111011 << irregular >> | ||
| 205 | |||
| 206 | The bit patterns for (a) corresponding to (y) of 11 and 13 may be | ||
| 207 | too irregular to warrant using this method. | ||
| 208 | |||
| 209 | When z is a power of 2 minus 1, then the division by z is slightly | ||
| 210 | more complicated, involving an iterative solution. | ||
| 211 | |||
| 212 | The code presented here solves division by 1 through 17, except for | ||
| 213 | 11 and 13. There are algorithms for both signed and unsigned | ||
| 214 | quantities given. | ||
| 215 | |||
| 216 | TIMINGS (cycles) | ||
| 217 | |||
| 218 | divisor positive negative unsigned | ||
| 219 | |||
| 220 | . 1 2 2 2 | ||
| 221 | . 2 4 4 2 | ||
| 222 | . 3 19 21 19 | ||
| 223 | . 4 4 4 2 | ||
| 224 | . 5 18 22 19 | ||
| 225 | . 6 19 22 19 | ||
| 226 | . 8 4 4 2 | ||
| 227 | . 10 18 19 17 | ||
| 228 | . 12 18 20 18 | ||
| 229 | . 15 16 18 16 | ||
| 230 | . 16 4 4 2 | ||
| 231 | . 17 16 18 16 | ||
| 232 | |||
| 233 | Now, the algorithm for 7, 9, and 14 is an iterative one. That is, | ||
| 234 | a loop body is executed until the tentative quotient is 0. The | ||
| 235 | number of times the loop body is executed varies depending on the | ||
| 236 | dividend, but is never more than two times. If the dividend is | ||
| 237 | less than the divisor, then the loop body is not executed at all. | ||
| 238 | Each iteration adds 4 cycles to the timings. | ||
| 239 | |||
| 240 | divisor positive negative unsigned | ||
| 241 | |||
| 242 | . 7 19+4n 20+4n 20+4n n = number of iterations | ||
| 243 | . 9 21+4n 22+4n 21+4n | ||
| 244 | . 14 21+4n 22+4n 20+4n | ||
| 245 | |||
| 246 | To give an idea of how the number of iterations varies, here is a | ||
| 247 | table of dividend versus number of iterations when dividing by 7. | ||
| 248 | |||
| 249 | smallest largest required | ||
| 250 | dividend dividend iterations | ||
| 251 | |||
| 252 | . 0 6 0 | ||
| 253 | . 7 0x6ffffff 1 | ||
| 254 | 0x1000006 0xffffffff 2 | ||
| 255 | |||
| 256 | There is some overlap in the range of numbers requiring 1 and 2 | ||
| 257 | iterations. */ | ||
| 258 | |||
| 259 | RDEFINE(t2,r1) | ||
| 260 | RDEFINE(x2,arg0) /* r26 */ | ||
| 261 | RDEFINE(t1,arg1) /* r25 */ | ||
| 262 | RDEFINE(x1,ret1) /* r29 */ | ||
| 263 | |||
| 264 | SUBSPA_MILLI_DIV | ||
| 265 | ATTR_MILLI | ||
| 266 | |||
| 267 | .proc | ||
| 268 | .callinfo millicode | ||
| 269 | .entry | ||
| 270 | /* NONE of these routines require a stack frame | ||
| 271 | ALL of these routines are unwindable from millicode */ | ||
| 272 | |||
| 273 | GSYM($$divide_by_constant) | ||
| 274 | .export $$divide_by_constant,millicode | ||
| 275 | /* Provides a "nice" label for the code covered by the unwind descriptor | ||
| 276 | for things like gprof. */ | ||
| 277 | |||
| 278 | /* DIVISION BY 2 (shift by 1) */ | ||
| 279 | GSYM($$divI_2) | ||
| 280 | .export $$divI_2,millicode | ||
| 281 | comclr,>= arg0,0,0 | ||
| 282 | addi 1,arg0,arg0 | ||
| 283 | MILLIRET | ||
| 284 | extrs arg0,30,31,ret1 | ||
| 285 | |||
| 286 | |||
| 287 | /* DIVISION BY 4 (shift by 2) */ | ||
| 288 | GSYM($$divI_4) | ||
| 289 | .export $$divI_4,millicode | ||
| 290 | comclr,>= arg0,0,0 | ||
| 291 | addi 3,arg0,arg0 | ||
| 292 | MILLIRET | ||
| 293 | extrs arg0,29,30,ret1 | ||
| 294 | |||
| 295 | |||
| 296 | /* DIVISION BY 8 (shift by 3) */ | ||
| 297 | GSYM($$divI_8) | ||
| 298 | .export $$divI_8,millicode | ||
| 299 | comclr,>= arg0,0,0 | ||
| 300 | addi 7,arg0,arg0 | ||
| 301 | MILLIRET | ||
| 302 | extrs arg0,28,29,ret1 | ||
| 303 | |||
| 304 | /* DIVISION BY 16 (shift by 4) */ | ||
| 305 | GSYM($$divI_16) | ||
| 306 | .export $$divI_16,millicode | ||
| 307 | comclr,>= arg0,0,0 | ||
| 308 | addi 15,arg0,arg0 | ||
| 309 | MILLIRET | ||
| 310 | extrs arg0,27,28,ret1 | ||
| 311 | |||
| 312 | /**************************************************************************** | ||
| 313 | * | ||
| 314 | * DIVISION BY DIVISORS OF FFFFFFFF, and powers of 2 times these | ||
| 315 | * | ||
| 316 | * includes 3,5,15,17 and also 6,10,12 | ||
| 317 | * | ||
| 318 | ****************************************************************************/ | ||
| 319 | |||
| 320 | /* DIVISION BY 3 (use z = 2**32; a = 55555555) */ | ||
| 321 | |||
| 322 | GSYM($$divI_3) | ||
| 323 | .export $$divI_3,millicode | ||
| 324 | comb,<,N x2,0,LREF(neg3) | ||
| 325 | |||
| 326 | addi 1,x2,x2 /* this cannot overflow */ | ||
| 327 | extru x2,1,2,x1 /* multiply by 5 to get started */ | ||
| 328 | sh2add x2,x2,x2 | ||
| 329 | b LREF(pos) | ||
| 330 | addc x1,0,x1 | ||
| 331 | |||
| 332 | LSYM(neg3) | ||
| 333 | subi 1,x2,x2 /* this cannot overflow */ | ||
| 334 | extru x2,1,2,x1 /* multiply by 5 to get started */ | ||
| 335 | sh2add x2,x2,x2 | ||
| 336 | b LREF(neg) | ||
| 337 | addc x1,0,x1 | ||
| 338 | |||
| 339 | GSYM($$divU_3) | ||
| 340 | .export $$divU_3,millicode | ||
| 341 | addi 1,x2,x2 /* this CAN overflow */ | ||
| 342 | addc 0,0,x1 | ||
| 343 | shd x1,x2,30,t1 /* multiply by 5 to get started */ | ||
| 344 | sh2add x2,x2,x2 | ||
| 345 | b LREF(pos) | ||
| 346 | addc x1,t1,x1 | ||
| 347 | |||
| 348 | /* DIVISION BY 5 (use z = 2**32; a = 33333333) */ | ||
| 349 | |||
| 350 | GSYM($$divI_5) | ||
| 351 | .export $$divI_5,millicode | ||
| 352 | comb,<,N x2,0,LREF(neg5) | ||
| 353 | |||
| 354 | addi 3,x2,t1 /* this cannot overflow */ | ||
| 355 | sh1add x2,t1,x2 /* multiply by 3 to get started */ | ||
| 356 | b LREF(pos) | ||
| 357 | addc 0,0,x1 | ||
| 358 | |||
| 359 | LSYM(neg5) | ||
| 360 | sub 0,x2,x2 /* negate x2 */ | ||
| 361 | addi 1,x2,x2 /* this cannot overflow */ | ||
| 362 | shd 0,x2,31,x1 /* get top bit (can be 1) */ | ||
| 363 | sh1add x2,x2,x2 /* multiply by 3 to get started */ | ||
| 364 | b LREF(neg) | ||
| 365 | addc x1,0,x1 | ||
| 366 | |||
| 367 | GSYM($$divU_5) | ||
| 368 | .export $$divU_5,millicode | ||
| 369 | addi 1,x2,x2 /* this CAN overflow */ | ||
| 370 | addc 0,0,x1 | ||
| 371 | shd x1,x2,31,t1 /* multiply by 3 to get started */ | ||
| 372 | sh1add x2,x2,x2 | ||
| 373 | b LREF(pos) | ||
| 374 | addc t1,x1,x1 | ||
| 375 | |||
| 376 | /* DIVISION BY 6 (shift to divide by 2 then divide by 3) */ | ||
| 377 | GSYM($$divI_6) | ||
| 378 | .export $$divI_6,millicode | ||
| 379 | comb,<,N x2,0,LREF(neg6) | ||
| 380 | extru x2,30,31,x2 /* divide by 2 */ | ||
| 381 | addi 5,x2,t1 /* compute 5*(x2+1) = 5*x2+5 */ | ||
| 382 | sh2add x2,t1,x2 /* multiply by 5 to get started */ | ||
| 383 | b LREF(pos) | ||
| 384 | addc 0,0,x1 | ||
| 385 | |||
| 386 | LSYM(neg6) | ||
| 387 | subi 2,x2,x2 /* negate, divide by 2, and add 1 */ | ||
| 388 | /* negation and adding 1 are done */ | ||
| 389 | /* at the same time by the SUBI */ | ||
| 390 | extru x2,30,31,x2 | ||
| 391 | shd 0,x2,30,x1 | ||
| 392 | sh2add x2,x2,x2 /* multiply by 5 to get started */ | ||
| 393 | b LREF(neg) | ||
| 394 | addc x1,0,x1 | ||
| 395 | |||
| 396 | GSYM($$divU_6) | ||
| 397 | .export $$divU_6,millicode | ||
| 398 | extru x2,30,31,x2 /* divide by 2 */ | ||
| 399 | addi 1,x2,x2 /* cannot carry */ | ||
| 400 | shd 0,x2,30,x1 /* multiply by 5 to get started */ | ||
| 401 | sh2add x2,x2,x2 | ||
| 402 | b LREF(pos) | ||
| 403 | addc x1,0,x1 | ||
| 404 | |||
| 405 | /* DIVISION BY 10 (shift to divide by 2 then divide by 5) */ | ||
| 406 | GSYM($$divU_10) | ||
| 407 | .export $$divU_10,millicode | ||
| 408 | extru x2,30,31,x2 /* divide by 2 */ | ||
| 409 | addi 3,x2,t1 /* compute 3*(x2+1) = (3*x2)+3 */ | ||
| 410 | sh1add x2,t1,x2 /* multiply by 3 to get started */ | ||
| 411 | addc 0,0,x1 | ||
| 412 | LSYM(pos) | ||
| 413 | shd x1,x2,28,t1 /* multiply by 0x11 */ | ||
| 414 | shd x2,0,28,t2 | ||
| 415 | add x2,t2,x2 | ||
| 416 | addc x1,t1,x1 | ||
| 417 | LSYM(pos_for_17) | ||
| 418 | shd x1,x2,24,t1 /* multiply by 0x101 */ | ||
| 419 | shd x2,0,24,t2 | ||
| 420 | add x2,t2,x2 | ||
| 421 | addc x1,t1,x1 | ||
| 422 | |||
| 423 | shd x1,x2,16,t1 /* multiply by 0x10001 */ | ||
| 424 | shd x2,0,16,t2 | ||
| 425 | add x2,t2,x2 | ||
| 426 | MILLIRET | ||
| 427 | addc x1,t1,x1 | ||
| 428 | |||
| 429 | GSYM($$divI_10) | ||
| 430 | .export $$divI_10,millicode | ||
| 431 | comb,< x2,0,LREF(neg10) | ||
| 432 | copy 0,x1 | ||
| 433 | extru x2,30,31,x2 /* divide by 2 */ | ||
| 434 | addib,TR 1,x2,LREF(pos) /* add 1 (cannot overflow) */ | ||
| 435 | sh1add x2,x2,x2 /* multiply by 3 to get started */ | ||
| 436 | |||
| 437 | LSYM(neg10) | ||
| 438 | subi 2,x2,x2 /* negate, divide by 2, and add 1 */ | ||
| 439 | /* negation and adding 1 are done */ | ||
| 440 | /* at the same time by the SUBI */ | ||
| 441 | extru x2,30,31,x2 | ||
| 442 | sh1add x2,x2,x2 /* multiply by 3 to get started */ | ||
| 443 | LSYM(neg) | ||
| 444 | shd x1,x2,28,t1 /* multiply by 0x11 */ | ||
| 445 | shd x2,0,28,t2 | ||
| 446 | add x2,t2,x2 | ||
| 447 | addc x1,t1,x1 | ||
| 448 | LSYM(neg_for_17) | ||
| 449 | shd x1,x2,24,t1 /* multiply by 0x101 */ | ||
| 450 | shd x2,0,24,t2 | ||
| 451 | add x2,t2,x2 | ||
| 452 | addc x1,t1,x1 | ||
| 453 | |||
| 454 | shd x1,x2,16,t1 /* multiply by 0x10001 */ | ||
| 455 | shd x2,0,16,t2 | ||
| 456 | add x2,t2,x2 | ||
| 457 | addc x1,t1,x1 | ||
| 458 | MILLIRET | ||
| 459 | sub 0,x1,x1 | ||
| 460 | |||
| 461 | /* DIVISION BY 12 (shift to divide by 4 then divide by 3) */ | ||
| 462 | GSYM($$divI_12) | ||
| 463 | .export $$divI_12,millicode | ||
| 464 | comb,< x2,0,LREF(neg12) | ||
| 465 | copy 0,x1 | ||
| 466 | extru x2,29,30,x2 /* divide by 4 */ | ||
| 467 | addib,tr 1,x2,LREF(pos) /* compute 5*(x2+1) = 5*x2+5 */ | ||
| 468 | sh2add x2,x2,x2 /* multiply by 5 to get started */ | ||
| 469 | |||
| 470 | LSYM(neg12) | ||
| 471 | subi 4,x2,x2 /* negate, divide by 4, and add 1 */ | ||
| 472 | /* negation and adding 1 are done */ | ||
| 473 | /* at the same time by the SUBI */ | ||
| 474 | extru x2,29,30,x2 | ||
| 475 | b LREF(neg) | ||
| 476 | sh2add x2,x2,x2 /* multiply by 5 to get started */ | ||
| 477 | |||
| 478 | GSYM($$divU_12) | ||
| 479 | .export $$divU_12,millicode | ||
| 480 | extru x2,29,30,x2 /* divide by 4 */ | ||
| 481 | addi 5,x2,t1 /* cannot carry */ | ||
| 482 | sh2add x2,t1,x2 /* multiply by 5 to get started */ | ||
| 483 | b LREF(pos) | ||
| 484 | addc 0,0,x1 | ||
| 485 | |||
| 486 | /* DIVISION BY 15 (use z = 2**32; a = 11111111) */ | ||
| 487 | GSYM($$divI_15) | ||
| 488 | .export $$divI_15,millicode | ||
| 489 | comb,< x2,0,LREF(neg15) | ||
| 490 | copy 0,x1 | ||
| 491 | addib,tr 1,x2,LREF(pos)+4 | ||
| 492 | shd x1,x2,28,t1 | ||
| 493 | |||
| 494 | LSYM(neg15) | ||
| 495 | b LREF(neg) | ||
| 496 | subi 1,x2,x2 | ||
| 497 | |||
| 498 | GSYM($$divU_15) | ||
| 499 | .export $$divU_15,millicode | ||
| 500 | addi 1,x2,x2 /* this CAN overflow */ | ||
| 501 | b LREF(pos) | ||
| 502 | addc 0,0,x1 | ||
| 503 | |||
| 504 | /* DIVISION BY 17 (use z = 2**32; a = f0f0f0f) */ | ||
| 505 | GSYM($$divI_17) | ||
| 506 | .export $$divI_17,millicode | ||
| 507 | comb,<,n x2,0,LREF(neg17) | ||
| 508 | addi 1,x2,x2 /* this cannot overflow */ | ||
| 509 | shd 0,x2,28,t1 /* multiply by 0xf to get started */ | ||
| 510 | shd x2,0,28,t2 | ||
| 511 | sub t2,x2,x2 | ||
| 512 | b LREF(pos_for_17) | ||
| 513 | subb t1,0,x1 | ||
| 514 | |||
| 515 | LSYM(neg17) | ||
| 516 | subi 1,x2,x2 /* this cannot overflow */ | ||
| 517 | shd 0,x2,28,t1 /* multiply by 0xf to get started */ | ||
| 518 | shd x2,0,28,t2 | ||
| 519 | sub t2,x2,x2 | ||
| 520 | b LREF(neg_for_17) | ||
| 521 | subb t1,0,x1 | ||
| 522 | |||
| 523 | GSYM($$divU_17) | ||
| 524 | .export $$divU_17,millicode | ||
| 525 | addi 1,x2,x2 /* this CAN overflow */ | ||
| 526 | addc 0,0,x1 | ||
| 527 | shd x1,x2,28,t1 /* multiply by 0xf to get started */ | ||
| 528 | LSYM(u17) | ||
| 529 | shd x2,0,28,t2 | ||
| 530 | sub t2,x2,x2 | ||
| 531 | b LREF(pos_for_17) | ||
| 532 | subb t1,x1,x1 | ||
| 533 | |||
| 534 | |||
| 535 | /* DIVISION BY DIVISORS OF FFFFFF, and powers of 2 times these | ||
| 536 | includes 7,9 and also 14 | ||
| 537 | |||
| 538 | |||
| 539 | z = 2**24-1 | ||
| 540 | r = z mod x = 0 | ||
| 541 | |||
| 542 | so choose b = 0 | ||
| 543 | |||
| 544 | Also, in order to divide by z = 2**24-1, we approximate by dividing | ||
| 545 | by (z+1) = 2**24 (which is easy), and then correcting. | ||
| 546 | |||
| 547 | (ax) = (z+1)q' + r | ||
| 548 | . = zq' + (q'+r) | ||
| 549 | |||
| 550 | So to compute (ax)/z, compute q' = (ax)/(z+1) and r = (ax) mod (z+1) | ||
| 551 | Then the true remainder of (ax)/z is (q'+r). Repeat the process | ||
| 552 | with this new remainder, adding the tentative quotients together, | ||
| 553 | until a tentative quotient is 0 (and then we are done). There is | ||
| 554 | one last correction to be done. It is possible that (q'+r) = z. | ||
| 555 | If so, then (q'+r)/(z+1) = 0 and it looks like we are done. But, | ||
| 556 | in fact, we need to add 1 more to the quotient. Now, it turns | ||
| 557 | out that this happens if and only if the original value x is | ||
| 558 | an exact multiple of y. So, to avoid a three instruction test at | ||
| 559 | the end, instead use 1 instruction to add 1 to x at the beginning. */ | ||
| 560 | |||
| 561 | /* DIVISION BY 7 (use z = 2**24-1; a = 249249) */ | ||
| 562 | GSYM($$divI_7) | ||
| 563 | .export $$divI_7,millicode | ||
| 564 | comb,<,n x2,0,LREF(neg7) | ||
| 565 | LSYM(7) | ||
| 566 | addi 1,x2,x2 /* cannot overflow */ | ||
| 567 | shd 0,x2,29,x1 | ||
| 568 | sh3add x2,x2,x2 | ||
| 569 | addc x1,0,x1 | ||
| 570 | LSYM(pos7) | ||
| 571 | shd x1,x2,26,t1 | ||
| 572 | shd x2,0,26,t2 | ||
| 573 | add x2,t2,x2 | ||
| 574 | addc x1,t1,x1 | ||
| 575 | |||
| 576 | shd x1,x2,20,t1 | ||
| 577 | shd x2,0,20,t2 | ||
| 578 | add x2,t2,x2 | ||
| 579 | addc x1,t1,t1 | ||
| 580 | |||
| 581 | /* computed <t1,x2>. Now divide it by (2**24 - 1) */ | ||
| 582 | |||
| 583 | copy 0,x1 | ||
| 584 | shd,= t1,x2,24,t1 /* tentative quotient */ | ||
| 585 | LSYM(1) | ||
| 586 | addb,tr t1,x1,LREF(2) /* add to previous quotient */ | ||
| 587 | extru x2,31,24,x2 /* new remainder (unadjusted) */ | ||
| 588 | |||
| 589 | MILLIRETN | ||
| 590 | |||
| 591 | LSYM(2) | ||
| 592 | addb,tr t1,x2,LREF(1) /* adjust remainder */ | ||
| 593 | extru,= x2,7,8,t1 /* new quotient */ | ||
| 594 | |||
| 595 | LSYM(neg7) | ||
| 596 | subi 1,x2,x2 /* negate x2 and add 1 */ | ||
| 597 | LSYM(8) | ||
| 598 | shd 0,x2,29,x1 | ||
| 599 | sh3add x2,x2,x2 | ||
| 600 | addc x1,0,x1 | ||
| 601 | |||
| 602 | LSYM(neg7_shift) | ||
| 603 | shd x1,x2,26,t1 | ||
| 604 | shd x2,0,26,t2 | ||
| 605 | add x2,t2,x2 | ||
| 606 | addc x1,t1,x1 | ||
| 607 | |||
| 608 | shd x1,x2,20,t1 | ||
| 609 | shd x2,0,20,t2 | ||
| 610 | add x2,t2,x2 | ||
| 611 | addc x1,t1,t1 | ||
| 612 | |||
| 613 | /* computed <t1,x2>. Now divide it by (2**24 - 1) */ | ||
| 614 | |||
| 615 | copy 0,x1 | ||
| 616 | shd,= t1,x2,24,t1 /* tentative quotient */ | ||
| 617 | LSYM(3) | ||
| 618 | addb,tr t1,x1,LREF(4) /* add to previous quotient */ | ||
| 619 | extru x2,31,24,x2 /* new remainder (unadjusted) */ | ||
| 620 | |||
| 621 | MILLIRET | ||
| 622 | sub 0,x1,x1 /* negate result */ | ||
| 623 | |||
| 624 | LSYM(4) | ||
| 625 | addb,tr t1,x2,LREF(3) /* adjust remainder */ | ||
| 626 | extru,= x2,7,8,t1 /* new quotient */ | ||
| 627 | |||
| 628 | GSYM($$divU_7) | ||
| 629 | .export $$divU_7,millicode | ||
| 630 | addi 1,x2,x2 /* can carry */ | ||
| 631 | addc 0,0,x1 | ||
| 632 | shd x1,x2,29,t1 | ||
| 633 | sh3add x2,x2,x2 | ||
| 634 | b LREF(pos7) | ||
| 635 | addc t1,x1,x1 | ||
| 636 | |||
| 637 | /* DIVISION BY 9 (use z = 2**24-1; a = 1c71c7) */ | ||
| 638 | GSYM($$divI_9) | ||
| 639 | .export $$divI_9,millicode | ||
| 640 | comb,<,n x2,0,LREF(neg9) | ||
| 641 | addi 1,x2,x2 /* cannot overflow */ | ||
| 642 | shd 0,x2,29,t1 | ||
| 643 | shd x2,0,29,t2 | ||
| 644 | sub t2,x2,x2 | ||
| 645 | b LREF(pos7) | ||
| 646 | subb t1,0,x1 | ||
| 647 | |||
| 648 | LSYM(neg9) | ||
| 649 | subi 1,x2,x2 /* negate and add 1 */ | ||
| 650 | shd 0,x2,29,t1 | ||
| 651 | shd x2,0,29,t2 | ||
| 652 | sub t2,x2,x2 | ||
| 653 | b LREF(neg7_shift) | ||
| 654 | subb t1,0,x1 | ||
| 655 | |||
| 656 | GSYM($$divU_9) | ||
| 657 | .export $$divU_9,millicode | ||
| 658 | addi 1,x2,x2 /* can carry */ | ||
| 659 | addc 0,0,x1 | ||
| 660 | shd x1,x2,29,t1 | ||
| 661 | shd x2,0,29,t2 | ||
| 662 | sub t2,x2,x2 | ||
| 663 | b LREF(pos7) | ||
| 664 | subb t1,x1,x1 | ||
| 665 | |||
| 666 | /* DIVISION BY 14 (shift to divide by 2 then divide by 7) */ | ||
| 667 | GSYM($$divI_14) | ||
| 668 | .export $$divI_14,millicode | ||
| 669 | comb,<,n x2,0,LREF(neg14) | ||
| 670 | GSYM($$divU_14) | ||
| 671 | .export $$divU_14,millicode | ||
| 672 | b LREF(7) /* go to 7 case */ | ||
| 673 | extru x2,30,31,x2 /* divide by 2 */ | ||
| 674 | |||
| 675 | LSYM(neg14) | ||
| 676 | subi 2,x2,x2 /* negate (and add 2) */ | ||
| 677 | b LREF(8) | ||
| 678 | extru x2,30,31,x2 /* divide by 2 */ | ||
| 679 | .exit | ||
| 680 | .procend | ||
| 681 | .end | ||
| 682 | #endif | ||
diff --git a/arch/parisc/lib/milli/dyncall.S b/arch/parisc/lib/milli/dyncall.S new file mode 100644 index 000000000000..27f9ca558d0a --- /dev/null +++ b/arch/parisc/lib/milli/dyncall.S | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
| 2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
| 3 | and Alan Modra <alan@linuxcare.com.au>. | ||
| 4 | |||
| 5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
| 6 | |||
| 7 | This file is part of GCC and is released under the terms of | ||
| 8 | of the GNU General Public License as published by the Free Software | ||
| 9 | Foundation; either version 2, or (at your option) any later version. | ||
| 10 | See the file COPYING in the top-level GCC source directory for a copy | ||
| 11 | of the license. */ | ||
| 12 | |||
| 13 | #include "milli.h" | ||
| 14 | |||
| 15 | #ifdef L_dyncall | ||
| 16 | SUBSPA_MILLI | ||
| 17 | ATTR_DATA | ||
| 18 | GSYM($$dyncall) | ||
| 19 | .export $$dyncall,millicode | ||
| 20 | .proc | ||
| 21 | .callinfo millicode | ||
| 22 | .entry | ||
| 23 | bb,>=,n %r22,30,LREF(1) ; branch if not plabel address | ||
| 24 | depi 0,31,2,%r22 ; clear the two least significant bits | ||
| 25 | ldw 4(%r22),%r19 ; load new LTP value | ||
| 26 | ldw 0(%r22),%r22 ; load address of target | ||
| 27 | LSYM(1) | ||
| 28 | bv %r0(%r22) ; branch to the real target | ||
| 29 | stw %r2,-24(%r30) ; save return address into frame marker | ||
| 30 | .exit | ||
| 31 | .procend | ||
| 32 | #endif | ||
diff --git a/arch/parisc/lib/milli/milli.S b/arch/parisc/lib/milli/milli.S new file mode 100644 index 000000000000..47c6cde712e3 --- /dev/null +++ b/arch/parisc/lib/milli/milli.S | |||
| @@ -0,0 +1,2071 @@ | |||
| 1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
| 2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
| 3 | and Alan Modra <alan@linuxcare.com.au>. | ||
| 4 | |||
| 5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
| 6 | |||
| 7 | This file is part of GCC and is released under the terms of | ||
| 8 | of the GNU General Public License as published by the Free Software | ||
| 9 | Foundation; either version 2, or (at your option) any later version. | ||
| 10 | See the file COPYING in the top-level GCC source directory for a copy | ||
| 11 | of the license. */ | ||
| 12 | |||
| 13 | #ifdef CONFIG_64BIT | ||
| 14 | .level 2.0w | ||
| 15 | #endif | ||
| 16 | |||
| 17 | /* Hardware General Registers. */ | ||
| 18 | r0: .reg %r0 | ||
| 19 | r1: .reg %r1 | ||
| 20 | r2: .reg %r2 | ||
| 21 | r3: .reg %r3 | ||
| 22 | r4: .reg %r4 | ||
| 23 | r5: .reg %r5 | ||
| 24 | r6: .reg %r6 | ||
| 25 | r7: .reg %r7 | ||
| 26 | r8: .reg %r8 | ||
| 27 | r9: .reg %r9 | ||
| 28 | r10: .reg %r10 | ||
| 29 | r11: .reg %r11 | ||
| 30 | r12: .reg %r12 | ||
| 31 | r13: .reg %r13 | ||
| 32 | r14: .reg %r14 | ||
| 33 | r15: .reg %r15 | ||
| 34 | r16: .reg %r16 | ||
| 35 | r17: .reg %r17 | ||
| 36 | r18: .reg %r18 | ||
| 37 | r19: .reg %r19 | ||
| 38 | r20: .reg %r20 | ||
| 39 | r21: .reg %r21 | ||
| 40 | r22: .reg %r22 | ||
| 41 | r23: .reg %r23 | ||
| 42 | r24: .reg %r24 | ||
| 43 | r25: .reg %r25 | ||
| 44 | r26: .reg %r26 | ||
| 45 | r27: .reg %r27 | ||
| 46 | r28: .reg %r28 | ||
| 47 | r29: .reg %r29 | ||
| 48 | r30: .reg %r30 | ||
| 49 | r31: .reg %r31 | ||
| 50 | |||
| 51 | /* Hardware Space Registers. */ | ||
| 52 | sr0: .reg %sr0 | ||
| 53 | sr1: .reg %sr1 | ||
| 54 | sr2: .reg %sr2 | ||
| 55 | sr3: .reg %sr3 | ||
| 56 | sr4: .reg %sr4 | ||
| 57 | sr5: .reg %sr5 | ||
| 58 | sr6: .reg %sr6 | ||
| 59 | sr7: .reg %sr7 | ||
| 60 | |||
| 61 | /* Hardware Floating Point Registers. */ | ||
| 62 | fr0: .reg %fr0 | ||
| 63 | fr1: .reg %fr1 | ||
| 64 | fr2: .reg %fr2 | ||
| 65 | fr3: .reg %fr3 | ||
| 66 | fr4: .reg %fr4 | ||
| 67 | fr5: .reg %fr5 | ||
| 68 | fr6: .reg %fr6 | ||
| 69 | fr7: .reg %fr7 | ||
| 70 | fr8: .reg %fr8 | ||
| 71 | fr9: .reg %fr9 | ||
| 72 | fr10: .reg %fr10 | ||
| 73 | fr11: .reg %fr11 | ||
| 74 | fr12: .reg %fr12 | ||
| 75 | fr13: .reg %fr13 | ||
| 76 | fr14: .reg %fr14 | ||
| 77 | fr15: .reg %fr15 | ||
| 78 | |||
| 79 | /* Hardware Control Registers. */ | ||
| 80 | cr11: .reg %cr11 | ||
| 81 | sar: .reg %cr11 /* Shift Amount Register */ | ||
| 82 | |||
| 83 | /* Software Architecture General Registers. */ | ||
| 84 | rp: .reg r2 /* return pointer */ | ||
| 85 | #ifdef CONFIG_64BIT | ||
| 86 | mrp: .reg r2 /* millicode return pointer */ | ||
| 87 | #else | ||
| 88 | mrp: .reg r31 /* millicode return pointer */ | ||
| 89 | #endif | ||
| 90 | ret0: .reg r28 /* return value */ | ||
| 91 | ret1: .reg r29 /* return value (high part of double) */ | ||
| 92 | sp: .reg r30 /* stack pointer */ | ||
| 93 | dp: .reg r27 /* data pointer */ | ||
| 94 | arg0: .reg r26 /* argument */ | ||
| 95 | arg1: .reg r25 /* argument or high part of double argument */ | ||
| 96 | arg2: .reg r24 /* argument */ | ||
| 97 | arg3: .reg r23 /* argument or high part of double argument */ | ||
| 98 | |||
| 99 | /* Software Architecture Space Registers. */ | ||
| 100 | /* sr0 ; return link from BLE */ | ||
| 101 | sret: .reg sr1 /* return value */ | ||
| 102 | sarg: .reg sr1 /* argument */ | ||
| 103 | /* sr4 ; PC SPACE tracker */ | ||
| 104 | /* sr5 ; process private data */ | ||
| 105 | |||
| 106 | /* Frame Offsets (millicode convention!) Used when calling other | ||
| 107 | millicode routines. Stack unwinding is dependent upon these | ||
| 108 | definitions. */ | ||
| 109 | r31_slot: .equ -20 /* "current RP" slot */ | ||
| 110 | sr0_slot: .equ -16 /* "static link" slot */ | ||
| 111 | #if defined(CONFIG_64BIT) | ||
| 112 | mrp_slot: .equ -16 /* "current RP" slot */ | ||
| 113 | psp_slot: .equ -8 /* "previous SP" slot */ | ||
| 114 | #else | ||
| 115 | mrp_slot: .equ -20 /* "current RP" slot (replacing "r31_slot") */ | ||
| 116 | #endif | ||
| 117 | |||
| 118 | |||
| 119 | #define DEFINE(name,value)name: .EQU value | ||
| 120 | #define RDEFINE(name,value)name: .REG value | ||
| 121 | #ifdef milliext | ||
| 122 | #define MILLI_BE(lbl) BE lbl(sr7,r0) | ||
| 123 | #define MILLI_BEN(lbl) BE,n lbl(sr7,r0) | ||
| 124 | #define MILLI_BLE(lbl) BLE lbl(sr7,r0) | ||
| 125 | #define MILLI_BLEN(lbl) BLE,n lbl(sr7,r0) | ||
| 126 | #define MILLIRETN BE,n 0(sr0,mrp) | ||
| 127 | #define MILLIRET BE 0(sr0,mrp) | ||
| 128 | #define MILLI_RETN BE,n 0(sr0,mrp) | ||
| 129 | #define MILLI_RET BE 0(sr0,mrp) | ||
| 130 | #else | ||
| 131 | #define MILLI_BE(lbl) B lbl | ||
| 132 | #define MILLI_BEN(lbl) B,n lbl | ||
| 133 | #define MILLI_BLE(lbl) BL lbl,mrp | ||
| 134 | #define MILLI_BLEN(lbl) BL,n lbl,mrp | ||
| 135 | #define MILLIRETN BV,n 0(mrp) | ||
| 136 | #define MILLIRET BV 0(mrp) | ||
| 137 | #define MILLI_RETN BV,n 0(mrp) | ||
| 138 | #define MILLI_RET BV 0(mrp) | ||
| 139 | #endif | ||
| 140 | |||
| 141 | #define CAT(a,b) a##b | ||
| 142 | |||
| 143 | #define SUBSPA_MILLI .section .text | ||
| 144 | #define SUBSPA_MILLI_DIV .section .text.div,"ax",@progbits! .align 16 | ||
| 145 | #define SUBSPA_MILLI_MUL .section .text.mul,"ax",@progbits! .align 16 | ||
| 146 | #define ATTR_MILLI | ||
| 147 | #define SUBSPA_DATA .section .data | ||
| 148 | #define ATTR_DATA | ||
| 149 | #define GLOBAL $global$ | ||
| 150 | #define GSYM(sym) !sym: | ||
| 151 | #define LSYM(sym) !CAT(.L,sym:) | ||
| 152 | #define LREF(sym) CAT(.L,sym) | ||
| 153 | |||
| 154 | #ifdef L_dyncall | ||
| 155 | SUBSPA_MILLI | ||
| 156 | ATTR_DATA | ||
| 157 | GSYM($$dyncall) | ||
| 158 | .export $$dyncall,millicode | ||
| 159 | .proc | ||
| 160 | .callinfo millicode | ||
| 161 | .entry | ||
| 162 | bb,>=,n %r22,30,LREF(1) ; branch if not plabel address | ||
| 163 | depi 0,31,2,%r22 ; clear the two least significant bits | ||
| 164 | ldw 4(%r22),%r19 ; load new LTP value | ||
| 165 | ldw 0(%r22),%r22 ; load address of target | ||
| 166 | LSYM(1) | ||
| 167 | bv %r0(%r22) ; branch to the real target | ||
| 168 | stw %r2,-24(%r30) ; save return address into frame marker | ||
| 169 | .exit | ||
| 170 | .procend | ||
| 171 | #endif | ||
| 172 | |||
| 173 | #ifdef L_divI | ||
| 174 | /* ROUTINES: $$divI, $$divoI | ||
| 175 | |||
| 176 | Single precision divide for signed binary integers. | ||
| 177 | |||
| 178 | The quotient is truncated towards zero. | ||
| 179 | The sign of the quotient is the XOR of the signs of the dividend and | ||
| 180 | divisor. | ||
| 181 | Divide by zero is trapped. | ||
| 182 | Divide of -2**31 by -1 is trapped for $$divoI but not for $$divI. | ||
| 183 | |||
| 184 | INPUT REGISTERS: | ||
| 185 | . arg0 == dividend | ||
| 186 | . arg1 == divisor | ||
| 187 | . mrp == return pc | ||
| 188 | . sr0 == return space when called externally | ||
| 189 | |||
| 190 | OUTPUT REGISTERS: | ||
| 191 | . arg0 = undefined | ||
| 192 | . arg1 = undefined | ||
| 193 | . ret1 = quotient | ||
| 194 | |||
| 195 | OTHER REGISTERS AFFECTED: | ||
| 196 | . r1 = undefined | ||
| 197 | |||
| 198 | SIDE EFFECTS: | ||
| 199 | . Causes a trap under the following conditions: | ||
| 200 | . divisor is zero (traps with ADDIT,= 0,25,0) | ||
| 201 | . dividend==-2**31 and divisor==-1 and routine is $$divoI | ||
| 202 | . (traps with ADDO 26,25,0) | ||
| 203 | . Changes memory at the following places: | ||
| 204 | . NONE | ||
| 205 | |||
| 206 | PERMISSIBLE CONTEXT: | ||
| 207 | . Unwindable. | ||
| 208 | . Suitable for internal or external millicode. | ||
| 209 | . Assumes the special millicode register conventions. | ||
| 210 | |||
| 211 | DISCUSSION: | ||
| 212 | . Branchs to other millicode routines using BE | ||
| 213 | . $$div_# for # being 2,3,4,5,6,7,8,9,10,12,14,15 | ||
| 214 | . | ||
| 215 | . For selected divisors, calls a divide by constant routine written by | ||
| 216 | . Karl Pettis. Eligible divisors are 1..15 excluding 11 and 13. | ||
| 217 | . | ||
| 218 | . The only overflow case is -2**31 divided by -1. | ||
| 219 | . Both routines return -2**31 but only $$divoI traps. */ | ||
| 220 | |||
| 221 | RDEFINE(temp,r1) | ||
| 222 | RDEFINE(retreg,ret1) /* r29 */ | ||
| 223 | RDEFINE(temp1,arg0) | ||
| 224 | SUBSPA_MILLI_DIV | ||
| 225 | ATTR_MILLI | ||
| 226 | .import $$divI_2,millicode | ||
| 227 | .import $$divI_3,millicode | ||
| 228 | .import $$divI_4,millicode | ||
| 229 | .import $$divI_5,millicode | ||
| 230 | .import $$divI_6,millicode | ||
| 231 | .import $$divI_7,millicode | ||
| 232 | .import $$divI_8,millicode | ||
| 233 | .import $$divI_9,millicode | ||
| 234 | .import $$divI_10,millicode | ||
| 235 | .import $$divI_12,millicode | ||
| 236 | .import $$divI_14,millicode | ||
| 237 | .import $$divI_15,millicode | ||
| 238 | .export $$divI,millicode | ||
| 239 | .export $$divoI,millicode | ||
| 240 | .proc | ||
| 241 | .callinfo millicode | ||
| 242 | .entry | ||
| 243 | GSYM($$divoI) | ||
| 244 | comib,=,n -1,arg1,LREF(negative1) /* when divisor == -1 */ | ||
| 245 | GSYM($$divI) | ||
| 246 | ldo -1(arg1),temp /* is there at most one bit set ? */ | ||
| 247 | and,<> arg1,temp,r0 /* if not, don't use power of 2 divide */ | ||
| 248 | addi,> 0,arg1,r0 /* if divisor > 0, use power of 2 divide */ | ||
| 249 | b,n LREF(neg_denom) | ||
| 250 | LSYM(pow2) | ||
| 251 | addi,>= 0,arg0,retreg /* if numerator is negative, add the */ | ||
| 252 | add arg0,temp,retreg /* (denominaotr -1) to correct for shifts */ | ||
| 253 | extru,= arg1,15,16,temp /* test denominator with 0xffff0000 */ | ||
| 254 | extrs retreg,15,16,retreg /* retreg = retreg >> 16 */ | ||
| 255 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 16) */ | ||
| 256 | ldi 0xcc,temp1 /* setup 0xcc in temp1 */ | ||
| 257 | extru,= arg1,23,8,temp /* test denominator with 0xff00 */ | ||
| 258 | extrs retreg,23,24,retreg /* retreg = retreg >> 8 */ | ||
| 259 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 8) */ | ||
| 260 | ldi 0xaa,temp /* setup 0xaa in temp */ | ||
| 261 | extru,= arg1,27,4,r0 /* test denominator with 0xf0 */ | ||
| 262 | extrs retreg,27,28,retreg /* retreg = retreg >> 4 */ | ||
| 263 | and,= arg1,temp1,r0 /* test denominator with 0xcc */ | ||
| 264 | extrs retreg,29,30,retreg /* retreg = retreg >> 2 */ | ||
| 265 | and,= arg1,temp,r0 /* test denominator with 0xaa */ | ||
| 266 | extrs retreg,30,31,retreg /* retreg = retreg >> 1 */ | ||
| 267 | MILLIRETN | ||
| 268 | LSYM(neg_denom) | ||
| 269 | addi,< 0,arg1,r0 /* if arg1 >= 0, it's not power of 2 */ | ||
| 270 | b,n LREF(regular_seq) | ||
| 271 | sub r0,arg1,temp /* make denominator positive */ | ||
| 272 | comb,=,n arg1,temp,LREF(regular_seq) /* test against 0x80000000 and 0 */ | ||
| 273 | ldo -1(temp),retreg /* is there at most one bit set ? */ | ||
| 274 | and,= temp,retreg,r0 /* if so, the denominator is power of 2 */ | ||
| 275 | b,n LREF(regular_seq) | ||
| 276 | sub r0,arg0,retreg /* negate numerator */ | ||
| 277 | comb,=,n arg0,retreg,LREF(regular_seq) /* test against 0x80000000 */ | ||
| 278 | copy retreg,arg0 /* set up arg0, arg1 and temp */ | ||
| 279 | copy temp,arg1 /* before branching to pow2 */ | ||
| 280 | b LREF(pow2) | ||
| 281 | ldo -1(arg1),temp | ||
| 282 | LSYM(regular_seq) | ||
| 283 | comib,>>=,n 15,arg1,LREF(small_divisor) | ||
| 284 | add,>= 0,arg0,retreg /* move dividend, if retreg < 0, */ | ||
| 285 | LSYM(normal) | ||
| 286 | subi 0,retreg,retreg /* make it positive */ | ||
| 287 | sub 0,arg1,temp /* clear carry, */ | ||
| 288 | /* negate the divisor */ | ||
| 289 | ds 0,temp,0 /* set V-bit to the comple- */ | ||
| 290 | /* ment of the divisor sign */ | ||
| 291 | add retreg,retreg,retreg /* shift msb bit into carry */ | ||
| 292 | ds r0,arg1,temp /* 1st divide step, if no carry */ | ||
| 293 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 294 | ds temp,arg1,temp /* 2nd divide step */ | ||
| 295 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 296 | ds temp,arg1,temp /* 3rd divide step */ | ||
| 297 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 298 | ds temp,arg1,temp /* 4th divide step */ | ||
| 299 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 300 | ds temp,arg1,temp /* 5th divide step */ | ||
| 301 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 302 | ds temp,arg1,temp /* 6th divide step */ | ||
| 303 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 304 | ds temp,arg1,temp /* 7th divide step */ | ||
| 305 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 306 | ds temp,arg1,temp /* 8th divide step */ | ||
| 307 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 308 | ds temp,arg1,temp /* 9th divide step */ | ||
| 309 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 310 | ds temp,arg1,temp /* 10th divide step */ | ||
| 311 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 312 | ds temp,arg1,temp /* 11th divide step */ | ||
| 313 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 314 | ds temp,arg1,temp /* 12th divide step */ | ||
| 315 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 316 | ds temp,arg1,temp /* 13th divide step */ | ||
| 317 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 318 | ds temp,arg1,temp /* 14th divide step */ | ||
| 319 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 320 | ds temp,arg1,temp /* 15th divide step */ | ||
| 321 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 322 | ds temp,arg1,temp /* 16th divide step */ | ||
| 323 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 324 | ds temp,arg1,temp /* 17th divide step */ | ||
| 325 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 326 | ds temp,arg1,temp /* 18th divide step */ | ||
| 327 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 328 | ds temp,arg1,temp /* 19th divide step */ | ||
| 329 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 330 | ds temp,arg1,temp /* 20th divide step */ | ||
| 331 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 332 | ds temp,arg1,temp /* 21st divide step */ | ||
| 333 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 334 | ds temp,arg1,temp /* 22nd divide step */ | ||
| 335 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 336 | ds temp,arg1,temp /* 23rd divide step */ | ||
| 337 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 338 | ds temp,arg1,temp /* 24th divide step */ | ||
| 339 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 340 | ds temp,arg1,temp /* 25th divide step */ | ||
| 341 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 342 | ds temp,arg1,temp /* 26th divide step */ | ||
| 343 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 344 | ds temp,arg1,temp /* 27th divide step */ | ||
| 345 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 346 | ds temp,arg1,temp /* 28th divide step */ | ||
| 347 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 348 | ds temp,arg1,temp /* 29th divide step */ | ||
| 349 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 350 | ds temp,arg1,temp /* 30th divide step */ | ||
| 351 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 352 | ds temp,arg1,temp /* 31st divide step */ | ||
| 353 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 354 | ds temp,arg1,temp /* 32nd divide step, */ | ||
| 355 | addc retreg,retreg,retreg /* shift last retreg bit into retreg */ | ||
| 356 | xor,>= arg0,arg1,0 /* get correct sign of quotient */ | ||
| 357 | sub 0,retreg,retreg /* based on operand signs */ | ||
| 358 | MILLIRETN | ||
| 359 | nop | ||
| 360 | |||
| 361 | LSYM(small_divisor) | ||
| 362 | |||
| 363 | #if defined(CONFIG_64BIT) | ||
| 364 | /* Clear the upper 32 bits of the arg1 register. We are working with */ | ||
| 365 | /* small divisors (and 32-bit integers) We must not be mislead */ | ||
| 366 | /* by "1" bits left in the upper 32 bits. */ | ||
| 367 | depd %r0,31,32,%r25 | ||
| 368 | #endif | ||
| 369 | blr,n arg1,r0 | ||
| 370 | nop | ||
| 371 | /* table for divisor == 0,1, ... ,15 */ | ||
| 372 | addit,= 0,arg1,r0 /* trap if divisor == 0 */ | ||
| 373 | nop | ||
| 374 | MILLIRET /* divisor == 1 */ | ||
| 375 | copy arg0,retreg | ||
| 376 | MILLI_BEN($$divI_2) /* divisor == 2 */ | ||
| 377 | nop | ||
| 378 | MILLI_BEN($$divI_3) /* divisor == 3 */ | ||
| 379 | nop | ||
| 380 | MILLI_BEN($$divI_4) /* divisor == 4 */ | ||
| 381 | nop | ||
| 382 | MILLI_BEN($$divI_5) /* divisor == 5 */ | ||
| 383 | nop | ||
| 384 | MILLI_BEN($$divI_6) /* divisor == 6 */ | ||
| 385 | nop | ||
| 386 | MILLI_BEN($$divI_7) /* divisor == 7 */ | ||
| 387 | nop | ||
| 388 | MILLI_BEN($$divI_8) /* divisor == 8 */ | ||
| 389 | nop | ||
| 390 | MILLI_BEN($$divI_9) /* divisor == 9 */ | ||
| 391 | nop | ||
| 392 | MILLI_BEN($$divI_10) /* divisor == 10 */ | ||
| 393 | nop | ||
| 394 | b LREF(normal) /* divisor == 11 */ | ||
| 395 | add,>= 0,arg0,retreg | ||
| 396 | MILLI_BEN($$divI_12) /* divisor == 12 */ | ||
| 397 | nop | ||
| 398 | b LREF(normal) /* divisor == 13 */ | ||
| 399 | add,>= 0,arg0,retreg | ||
| 400 | MILLI_BEN($$divI_14) /* divisor == 14 */ | ||
| 401 | nop | ||
| 402 | MILLI_BEN($$divI_15) /* divisor == 15 */ | ||
| 403 | nop | ||
| 404 | |||
| 405 | LSYM(negative1) | ||
| 406 | sub 0,arg0,retreg /* result is negation of dividend */ | ||
| 407 | MILLIRET | ||
| 408 | addo arg0,arg1,r0 /* trap iff dividend==0x80000000 && divisor==-1 */ | ||
| 409 | .exit | ||
| 410 | .procend | ||
| 411 | .end | ||
| 412 | #endif | ||
| 413 | |||
| 414 | #ifdef L_divU | ||
| 415 | /* ROUTINE: $$divU | ||
| 416 | . | ||
| 417 | . Single precision divide for unsigned integers. | ||
| 418 | . | ||
| 419 | . Quotient is truncated towards zero. | ||
| 420 | . Traps on divide by zero. | ||
| 421 | |||
| 422 | INPUT REGISTERS: | ||
| 423 | . arg0 == dividend | ||
| 424 | . arg1 == divisor | ||
| 425 | . mrp == return pc | ||
| 426 | . sr0 == return space when called externally | ||
| 427 | |||
| 428 | OUTPUT REGISTERS: | ||
| 429 | . arg0 = undefined | ||
| 430 | . arg1 = undefined | ||
| 431 | . ret1 = quotient | ||
| 432 | |||
| 433 | OTHER REGISTERS AFFECTED: | ||
| 434 | . r1 = undefined | ||
| 435 | |||
| 436 | SIDE EFFECTS: | ||
| 437 | . Causes a trap under the following conditions: | ||
| 438 | . divisor is zero | ||
| 439 | . Changes memory at the following places: | ||
| 440 | . NONE | ||
| 441 | |||
| 442 | PERMISSIBLE CONTEXT: | ||
| 443 | . Unwindable. | ||
| 444 | . Does not create a stack frame. | ||
| 445 | . Suitable for internal or external millicode. | ||
| 446 | . Assumes the special millicode register conventions. | ||
| 447 | |||
| 448 | DISCUSSION: | ||
| 449 | . Branchs to other millicode routines using BE: | ||
| 450 | . $$divU_# for 3,5,6,7,9,10,12,14,15 | ||
| 451 | . | ||
| 452 | . For selected small divisors calls the special divide by constant | ||
| 453 | . routines written by Karl Pettis. These are: 3,5,6,7,9,10,12,14,15. */ | ||
| 454 | |||
| 455 | RDEFINE(temp,r1) | ||
| 456 | RDEFINE(retreg,ret1) /* r29 */ | ||
| 457 | RDEFINE(temp1,arg0) | ||
| 458 | SUBSPA_MILLI_DIV | ||
| 459 | ATTR_MILLI | ||
| 460 | .export $$divU,millicode | ||
| 461 | .import $$divU_3,millicode | ||
| 462 | .import $$divU_5,millicode | ||
| 463 | .import $$divU_6,millicode | ||
| 464 | .import $$divU_7,millicode | ||
| 465 | .import $$divU_9,millicode | ||
| 466 | .import $$divU_10,millicode | ||
| 467 | .import $$divU_12,millicode | ||
| 468 | .import $$divU_14,millicode | ||
| 469 | .import $$divU_15,millicode | ||
| 470 | .proc | ||
| 471 | .callinfo millicode | ||
| 472 | .entry | ||
| 473 | GSYM($$divU) | ||
| 474 | /* The subtract is not nullified since it does no harm and can be used | ||
| 475 | by the two cases that branch back to "normal". */ | ||
| 476 | ldo -1(arg1),temp /* is there at most one bit set ? */ | ||
| 477 | and,= arg1,temp,r0 /* if so, denominator is power of 2 */ | ||
| 478 | b LREF(regular_seq) | ||
| 479 | addit,= 0,arg1,0 /* trap for zero dvr */ | ||
| 480 | copy arg0,retreg | ||
| 481 | extru,= arg1,15,16,temp /* test denominator with 0xffff0000 */ | ||
| 482 | extru retreg,15,16,retreg /* retreg = retreg >> 16 */ | ||
| 483 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 16) */ | ||
| 484 | ldi 0xcc,temp1 /* setup 0xcc in temp1 */ | ||
| 485 | extru,= arg1,23,8,temp /* test denominator with 0xff00 */ | ||
| 486 | extru retreg,23,24,retreg /* retreg = retreg >> 8 */ | ||
| 487 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 8) */ | ||
| 488 | ldi 0xaa,temp /* setup 0xaa in temp */ | ||
| 489 | extru,= arg1,27,4,r0 /* test denominator with 0xf0 */ | ||
| 490 | extru retreg,27,28,retreg /* retreg = retreg >> 4 */ | ||
| 491 | and,= arg1,temp1,r0 /* test denominator with 0xcc */ | ||
| 492 | extru retreg,29,30,retreg /* retreg = retreg >> 2 */ | ||
| 493 | and,= arg1,temp,r0 /* test denominator with 0xaa */ | ||
| 494 | extru retreg,30,31,retreg /* retreg = retreg >> 1 */ | ||
| 495 | MILLIRETN | ||
| 496 | nop | ||
| 497 | LSYM(regular_seq) | ||
| 498 | comib,>= 15,arg1,LREF(special_divisor) | ||
| 499 | subi 0,arg1,temp /* clear carry, negate the divisor */ | ||
| 500 | ds r0,temp,r0 /* set V-bit to 1 */ | ||
| 501 | LSYM(normal) | ||
| 502 | add arg0,arg0,retreg /* shift msb bit into carry */ | ||
| 503 | ds r0,arg1,temp /* 1st divide step, if no carry */ | ||
| 504 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 505 | ds temp,arg1,temp /* 2nd divide step */ | ||
| 506 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 507 | ds temp,arg1,temp /* 3rd divide step */ | ||
| 508 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 509 | ds temp,arg1,temp /* 4th divide step */ | ||
| 510 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 511 | ds temp,arg1,temp /* 5th divide step */ | ||
| 512 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 513 | ds temp,arg1,temp /* 6th divide step */ | ||
| 514 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 515 | ds temp,arg1,temp /* 7th divide step */ | ||
| 516 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 517 | ds temp,arg1,temp /* 8th divide step */ | ||
| 518 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 519 | ds temp,arg1,temp /* 9th divide step */ | ||
| 520 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 521 | ds temp,arg1,temp /* 10th divide step */ | ||
| 522 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 523 | ds temp,arg1,temp /* 11th divide step */ | ||
| 524 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 525 | ds temp,arg1,temp /* 12th divide step */ | ||
| 526 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 527 | ds temp,arg1,temp /* 13th divide step */ | ||
| 528 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 529 | ds temp,arg1,temp /* 14th divide step */ | ||
| 530 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 531 | ds temp,arg1,temp /* 15th divide step */ | ||
| 532 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 533 | ds temp,arg1,temp /* 16th divide step */ | ||
| 534 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 535 | ds temp,arg1,temp /* 17th divide step */ | ||
| 536 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 537 | ds temp,arg1,temp /* 18th divide step */ | ||
| 538 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 539 | ds temp,arg1,temp /* 19th divide step */ | ||
| 540 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 541 | ds temp,arg1,temp /* 20th divide step */ | ||
| 542 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 543 | ds temp,arg1,temp /* 21st divide step */ | ||
| 544 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 545 | ds temp,arg1,temp /* 22nd divide step */ | ||
| 546 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 547 | ds temp,arg1,temp /* 23rd divide step */ | ||
| 548 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 549 | ds temp,arg1,temp /* 24th divide step */ | ||
| 550 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 551 | ds temp,arg1,temp /* 25th divide step */ | ||
| 552 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 553 | ds temp,arg1,temp /* 26th divide step */ | ||
| 554 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 555 | ds temp,arg1,temp /* 27th divide step */ | ||
| 556 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 557 | ds temp,arg1,temp /* 28th divide step */ | ||
| 558 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 559 | ds temp,arg1,temp /* 29th divide step */ | ||
| 560 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 561 | ds temp,arg1,temp /* 30th divide step */ | ||
| 562 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 563 | ds temp,arg1,temp /* 31st divide step */ | ||
| 564 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 565 | ds temp,arg1,temp /* 32nd divide step, */ | ||
| 566 | MILLIRET | ||
| 567 | addc retreg,retreg,retreg /* shift last retreg bit into retreg */ | ||
| 568 | |||
| 569 | /* Handle the cases where divisor is a small constant or has high bit on. */ | ||
| 570 | LSYM(special_divisor) | ||
| 571 | /* blr arg1,r0 */ | ||
| 572 | /* comib,>,n 0,arg1,LREF(big_divisor) ; nullify previous instruction */ | ||
| 573 | |||
| 574 | /* Pratap 8/13/90. The 815 Stirling chip set has a bug that prevents us from | ||
| 575 | generating such a blr, comib sequence. A problem in nullification. So I | ||
| 576 | rewrote this code. */ | ||
| 577 | |||
| 578 | #if defined(CONFIG_64BIT) | ||
| 579 | /* Clear the upper 32 bits of the arg1 register. We are working with | ||
| 580 | small divisors (and 32-bit unsigned integers) We must not be mislead | ||
| 581 | by "1" bits left in the upper 32 bits. */ | ||
| 582 | depd %r0,31,32,%r25 | ||
| 583 | #endif | ||
| 584 | comib,> 0,arg1,LREF(big_divisor) | ||
| 585 | nop | ||
| 586 | blr arg1,r0 | ||
| 587 | nop | ||
| 588 | |||
| 589 | LSYM(zero_divisor) /* this label is here to provide external visibility */ | ||
| 590 | addit,= 0,arg1,0 /* trap for zero dvr */ | ||
| 591 | nop | ||
| 592 | MILLIRET /* divisor == 1 */ | ||
| 593 | copy arg0,retreg | ||
| 594 | MILLIRET /* divisor == 2 */ | ||
| 595 | extru arg0,30,31,retreg | ||
| 596 | MILLI_BEN($$divU_3) /* divisor == 3 */ | ||
| 597 | nop | ||
| 598 | MILLIRET /* divisor == 4 */ | ||
| 599 | extru arg0,29,30,retreg | ||
| 600 | MILLI_BEN($$divU_5) /* divisor == 5 */ | ||
| 601 | nop | ||
| 602 | MILLI_BEN($$divU_6) /* divisor == 6 */ | ||
| 603 | nop | ||
| 604 | MILLI_BEN($$divU_7) /* divisor == 7 */ | ||
| 605 | nop | ||
| 606 | MILLIRET /* divisor == 8 */ | ||
| 607 | extru arg0,28,29,retreg | ||
| 608 | MILLI_BEN($$divU_9) /* divisor == 9 */ | ||
| 609 | nop | ||
| 610 | MILLI_BEN($$divU_10) /* divisor == 10 */ | ||
| 611 | nop | ||
| 612 | b LREF(normal) /* divisor == 11 */ | ||
| 613 | ds r0,temp,r0 /* set V-bit to 1 */ | ||
| 614 | MILLI_BEN($$divU_12) /* divisor == 12 */ | ||
| 615 | nop | ||
| 616 | b LREF(normal) /* divisor == 13 */ | ||
| 617 | ds r0,temp,r0 /* set V-bit to 1 */ | ||
| 618 | MILLI_BEN($$divU_14) /* divisor == 14 */ | ||
| 619 | nop | ||
| 620 | MILLI_BEN($$divU_15) /* divisor == 15 */ | ||
| 621 | nop | ||
| 622 | |||
| 623 | /* Handle the case where the high bit is on in the divisor. | ||
| 624 | Compute: if( dividend>=divisor) quotient=1; else quotient=0; | ||
| 625 | Note: dividend>==divisor iff dividend-divisor does not borrow | ||
| 626 | and not borrow iff carry. */ | ||
| 627 | LSYM(big_divisor) | ||
| 628 | sub arg0,arg1,r0 | ||
| 629 | MILLIRET | ||
| 630 | addc r0,r0,retreg | ||
| 631 | .exit | ||
| 632 | .procend | ||
| 633 | .end | ||
| 634 | #endif | ||
| 635 | |||
| 636 | #ifdef L_remI | ||
| 637 | /* ROUTINE: $$remI | ||
| 638 | |||
| 639 | DESCRIPTION: | ||
| 640 | . $$remI returns the remainder of the division of two signed 32-bit | ||
| 641 | . integers. The sign of the remainder is the same as the sign of | ||
| 642 | . the dividend. | ||
| 643 | |||
| 644 | |||
| 645 | INPUT REGISTERS: | ||
| 646 | . arg0 == dividend | ||
| 647 | . arg1 == divisor | ||
| 648 | . mrp == return pc | ||
| 649 | . sr0 == return space when called externally | ||
| 650 | |||
| 651 | OUTPUT REGISTERS: | ||
| 652 | . arg0 = destroyed | ||
| 653 | . arg1 = destroyed | ||
| 654 | . ret1 = remainder | ||
| 655 | |||
| 656 | OTHER REGISTERS AFFECTED: | ||
| 657 | . r1 = undefined | ||
| 658 | |||
| 659 | SIDE EFFECTS: | ||
| 660 | . Causes a trap under the following conditions: DIVIDE BY ZERO | ||
| 661 | . Changes memory at the following places: NONE | ||
| 662 | |||
| 663 | PERMISSIBLE CONTEXT: | ||
| 664 | . Unwindable | ||
| 665 | . Does not create a stack frame | ||
| 666 | . Is usable for internal or external microcode | ||
| 667 | |||
| 668 | DISCUSSION: | ||
| 669 | . Calls other millicode routines via mrp: NONE | ||
| 670 | . Calls other millicode routines: NONE */ | ||
| 671 | |||
| 672 | RDEFINE(tmp,r1) | ||
| 673 | RDEFINE(retreg,ret1) | ||
| 674 | |||
| 675 | SUBSPA_MILLI | ||
| 676 | ATTR_MILLI | ||
| 677 | .proc | ||
| 678 | .callinfo millicode | ||
| 679 | .entry | ||
| 680 | GSYM($$remI) | ||
| 681 | GSYM($$remoI) | ||
| 682 | .export $$remI,MILLICODE | ||
| 683 | .export $$remoI,MILLICODE | ||
| 684 | ldo -1(arg1),tmp /* is there at most one bit set ? */ | ||
| 685 | and,<> arg1,tmp,r0 /* if not, don't use power of 2 */ | ||
| 686 | addi,> 0,arg1,r0 /* if denominator > 0, use power */ | ||
| 687 | /* of 2 */ | ||
| 688 | b,n LREF(neg_denom) | ||
| 689 | LSYM(pow2) | ||
| 690 | comb,>,n 0,arg0,LREF(neg_num) /* is numerator < 0 ? */ | ||
| 691 | and arg0,tmp,retreg /* get the result */ | ||
| 692 | MILLIRETN | ||
| 693 | LSYM(neg_num) | ||
| 694 | subi 0,arg0,arg0 /* negate numerator */ | ||
| 695 | and arg0,tmp,retreg /* get the result */ | ||
| 696 | subi 0,retreg,retreg /* negate result */ | ||
| 697 | MILLIRETN | ||
| 698 | LSYM(neg_denom) | ||
| 699 | addi,< 0,arg1,r0 /* if arg1 >= 0, it's not power */ | ||
| 700 | /* of 2 */ | ||
| 701 | b,n LREF(regular_seq) | ||
| 702 | sub r0,arg1,tmp /* make denominator positive */ | ||
| 703 | comb,=,n arg1,tmp,LREF(regular_seq) /* test against 0x80000000 and 0 */ | ||
| 704 | ldo -1(tmp),retreg /* is there at most one bit set ? */ | ||
| 705 | and,= tmp,retreg,r0 /* if not, go to regular_seq */ | ||
| 706 | b,n LREF(regular_seq) | ||
| 707 | comb,>,n 0,arg0,LREF(neg_num_2) /* if arg0 < 0, negate it */ | ||
| 708 | and arg0,retreg,retreg | ||
| 709 | MILLIRETN | ||
| 710 | LSYM(neg_num_2) | ||
| 711 | subi 0,arg0,tmp /* test against 0x80000000 */ | ||
| 712 | and tmp,retreg,retreg | ||
| 713 | subi 0,retreg,retreg | ||
| 714 | MILLIRETN | ||
| 715 | LSYM(regular_seq) | ||
| 716 | addit,= 0,arg1,0 /* trap if div by zero */ | ||
| 717 | add,>= 0,arg0,retreg /* move dividend, if retreg < 0, */ | ||
| 718 | sub 0,retreg,retreg /* make it positive */ | ||
| 719 | sub 0,arg1, tmp /* clear carry, */ | ||
| 720 | /* negate the divisor */ | ||
| 721 | ds 0, tmp,0 /* set V-bit to the comple- */ | ||
| 722 | /* ment of the divisor sign */ | ||
| 723 | or 0,0, tmp /* clear tmp */ | ||
| 724 | add retreg,retreg,retreg /* shift msb bit into carry */ | ||
| 725 | ds tmp,arg1, tmp /* 1st divide step, if no carry */ | ||
| 726 | /* out, msb of quotient = 0 */ | ||
| 727 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 728 | LSYM(t1) | ||
| 729 | ds tmp,arg1, tmp /* 2nd divide step */ | ||
| 730 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 731 | ds tmp,arg1, tmp /* 3rd divide step */ | ||
| 732 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 733 | ds tmp,arg1, tmp /* 4th divide step */ | ||
| 734 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 735 | ds tmp,arg1, tmp /* 5th divide step */ | ||
| 736 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 737 | ds tmp,arg1, tmp /* 6th divide step */ | ||
| 738 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 739 | ds tmp,arg1, tmp /* 7th divide step */ | ||
| 740 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 741 | ds tmp,arg1, tmp /* 8th divide step */ | ||
| 742 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 743 | ds tmp,arg1, tmp /* 9th divide step */ | ||
| 744 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 745 | ds tmp,arg1, tmp /* 10th divide step */ | ||
| 746 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 747 | ds tmp,arg1, tmp /* 11th divide step */ | ||
| 748 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 749 | ds tmp,arg1, tmp /* 12th divide step */ | ||
| 750 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 751 | ds tmp,arg1, tmp /* 13th divide step */ | ||
| 752 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 753 | ds tmp,arg1, tmp /* 14th divide step */ | ||
| 754 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 755 | ds tmp,arg1, tmp /* 15th divide step */ | ||
| 756 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 757 | ds tmp,arg1, tmp /* 16th divide step */ | ||
| 758 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 759 | ds tmp,arg1, tmp /* 17th divide step */ | ||
| 760 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 761 | ds tmp,arg1, tmp /* 18th divide step */ | ||
| 762 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 763 | ds tmp,arg1, tmp /* 19th divide step */ | ||
| 764 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 765 | ds tmp,arg1, tmp /* 20th divide step */ | ||
| 766 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 767 | ds tmp,arg1, tmp /* 21st divide step */ | ||
| 768 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 769 | ds tmp,arg1, tmp /* 22nd divide step */ | ||
| 770 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 771 | ds tmp,arg1, tmp /* 23rd divide step */ | ||
| 772 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 773 | ds tmp,arg1, tmp /* 24th divide step */ | ||
| 774 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 775 | ds tmp,arg1, tmp /* 25th divide step */ | ||
| 776 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 777 | ds tmp,arg1, tmp /* 26th divide step */ | ||
| 778 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 779 | ds tmp,arg1, tmp /* 27th divide step */ | ||
| 780 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 781 | ds tmp,arg1, tmp /* 28th divide step */ | ||
| 782 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 783 | ds tmp,arg1, tmp /* 29th divide step */ | ||
| 784 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 785 | ds tmp,arg1, tmp /* 30th divide step */ | ||
| 786 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 787 | ds tmp,arg1, tmp /* 31st divide step */ | ||
| 788 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 789 | ds tmp,arg1, tmp /* 32nd divide step, */ | ||
| 790 | addc retreg,retreg,retreg /* shift last bit into retreg */ | ||
| 791 | movb,>=,n tmp,retreg,LREF(finish) /* branch if pos. tmp */ | ||
| 792 | add,< arg1,0,0 /* if arg1 > 0, add arg1 */ | ||
| 793 | add,tr tmp,arg1,retreg /* for correcting remainder tmp */ | ||
| 794 | sub tmp,arg1,retreg /* else add absolute value arg1 */ | ||
| 795 | LSYM(finish) | ||
| 796 | add,>= arg0,0,0 /* set sign of remainder */ | ||
| 797 | sub 0,retreg,retreg /* to sign of dividend */ | ||
| 798 | MILLIRET | ||
| 799 | nop | ||
| 800 | .exit | ||
| 801 | .procend | ||
| 802 | #ifdef milliext | ||
| 803 | .origin 0x00000200 | ||
| 804 | #endif | ||
| 805 | .end | ||
| 806 | #endif | ||
| 807 | |||
| 808 | #ifdef L_remU | ||
| 809 | /* ROUTINE: $$remU | ||
| 810 | . Single precision divide for remainder with unsigned binary integers. | ||
| 811 | . | ||
| 812 | . The remainder must be dividend-(dividend/divisor)*divisor. | ||
| 813 | . Divide by zero is trapped. | ||
| 814 | |||
| 815 | INPUT REGISTERS: | ||
| 816 | . arg0 == dividend | ||
| 817 | . arg1 == divisor | ||
| 818 | . mrp == return pc | ||
| 819 | . sr0 == return space when called externally | ||
| 820 | |||
| 821 | OUTPUT REGISTERS: | ||
| 822 | . arg0 = undefined | ||
| 823 | . arg1 = undefined | ||
| 824 | . ret1 = remainder | ||
| 825 | |||
| 826 | OTHER REGISTERS AFFECTED: | ||
| 827 | . r1 = undefined | ||
| 828 | |||
| 829 | SIDE EFFECTS: | ||
| 830 | . Causes a trap under the following conditions: DIVIDE BY ZERO | ||
| 831 | . Changes memory at the following places: NONE | ||
| 832 | |||
| 833 | PERMISSIBLE CONTEXT: | ||
| 834 | . Unwindable. | ||
| 835 | . Does not create a stack frame. | ||
| 836 | . Suitable for internal or external millicode. | ||
| 837 | . Assumes the special millicode register conventions. | ||
| 838 | |||
| 839 | DISCUSSION: | ||
| 840 | . Calls other millicode routines using mrp: NONE | ||
| 841 | . Calls other millicode routines: NONE */ | ||
| 842 | |||
| 843 | |||
| 844 | RDEFINE(temp,r1) | ||
| 845 | RDEFINE(rmndr,ret1) /* r29 */ | ||
| 846 | SUBSPA_MILLI | ||
| 847 | ATTR_MILLI | ||
| 848 | .export $$remU,millicode | ||
| 849 | .proc | ||
| 850 | .callinfo millicode | ||
| 851 | .entry | ||
| 852 | GSYM($$remU) | ||
| 853 | ldo -1(arg1),temp /* is there at most one bit set ? */ | ||
| 854 | and,= arg1,temp,r0 /* if not, don't use power of 2 */ | ||
| 855 | b LREF(regular_seq) | ||
| 856 | addit,= 0,arg1,r0 /* trap on div by zero */ | ||
| 857 | and arg0,temp,rmndr /* get the result for power of 2 */ | ||
| 858 | MILLIRETN | ||
| 859 | LSYM(regular_seq) | ||
| 860 | comib,>=,n 0,arg1,LREF(special_case) | ||
| 861 | subi 0,arg1,rmndr /* clear carry, negate the divisor */ | ||
| 862 | ds r0,rmndr,r0 /* set V-bit to 1 */ | ||
| 863 | add arg0,arg0,temp /* shift msb bit into carry */ | ||
| 864 | ds r0,arg1,rmndr /* 1st divide step, if no carry */ | ||
| 865 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 866 | ds rmndr,arg1,rmndr /* 2nd divide step */ | ||
| 867 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 868 | ds rmndr,arg1,rmndr /* 3rd divide step */ | ||
| 869 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 870 | ds rmndr,arg1,rmndr /* 4th divide step */ | ||
| 871 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 872 | ds rmndr,arg1,rmndr /* 5th divide step */ | ||
| 873 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 874 | ds rmndr,arg1,rmndr /* 6th divide step */ | ||
| 875 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 876 | ds rmndr,arg1,rmndr /* 7th divide step */ | ||
| 877 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 878 | ds rmndr,arg1,rmndr /* 8th divide step */ | ||
| 879 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 880 | ds rmndr,arg1,rmndr /* 9th divide step */ | ||
| 881 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 882 | ds rmndr,arg1,rmndr /* 10th divide step */ | ||
| 883 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 884 | ds rmndr,arg1,rmndr /* 11th divide step */ | ||
| 885 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 886 | ds rmndr,arg1,rmndr /* 12th divide step */ | ||
| 887 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 888 | ds rmndr,arg1,rmndr /* 13th divide step */ | ||
| 889 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 890 | ds rmndr,arg1,rmndr /* 14th divide step */ | ||
| 891 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 892 | ds rmndr,arg1,rmndr /* 15th divide step */ | ||
| 893 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 894 | ds rmndr,arg1,rmndr /* 16th divide step */ | ||
| 895 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 896 | ds rmndr,arg1,rmndr /* 17th divide step */ | ||
| 897 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 898 | ds rmndr,arg1,rmndr /* 18th divide step */ | ||
| 899 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 900 | ds rmndr,arg1,rmndr /* 19th divide step */ | ||
| 901 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 902 | ds rmndr,arg1,rmndr /* 20th divide step */ | ||
| 903 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 904 | ds rmndr,arg1,rmndr /* 21st divide step */ | ||
| 905 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 906 | ds rmndr,arg1,rmndr /* 22nd divide step */ | ||
| 907 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 908 | ds rmndr,arg1,rmndr /* 23rd divide step */ | ||
| 909 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 910 | ds rmndr,arg1,rmndr /* 24th divide step */ | ||
| 911 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 912 | ds rmndr,arg1,rmndr /* 25th divide step */ | ||
| 913 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 914 | ds rmndr,arg1,rmndr /* 26th divide step */ | ||
| 915 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 916 | ds rmndr,arg1,rmndr /* 27th divide step */ | ||
| 917 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 918 | ds rmndr,arg1,rmndr /* 28th divide step */ | ||
| 919 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 920 | ds rmndr,arg1,rmndr /* 29th divide step */ | ||
| 921 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 922 | ds rmndr,arg1,rmndr /* 30th divide step */ | ||
| 923 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 924 | ds rmndr,arg1,rmndr /* 31st divide step */ | ||
| 925 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 926 | ds rmndr,arg1,rmndr /* 32nd divide step, */ | ||
| 927 | comiclr,<= 0,rmndr,r0 | ||
| 928 | add rmndr,arg1,rmndr /* correction */ | ||
| 929 | MILLIRETN | ||
| 930 | nop | ||
| 931 | |||
| 932 | /* Putting >= on the last DS and deleting COMICLR does not work! */ | ||
| 933 | LSYM(special_case) | ||
| 934 | sub,>>= arg0,arg1,rmndr | ||
| 935 | copy arg0,rmndr | ||
| 936 | MILLIRETN | ||
| 937 | nop | ||
| 938 | .exit | ||
| 939 | .procend | ||
| 940 | .end | ||
| 941 | #endif | ||
| 942 | |||
| 943 | #ifdef L_div_const | ||
| 944 | /* ROUTINE: $$divI_2 | ||
| 945 | . $$divI_3 $$divU_3 | ||
| 946 | . $$divI_4 | ||
| 947 | . $$divI_5 $$divU_5 | ||
| 948 | . $$divI_6 $$divU_6 | ||
| 949 | . $$divI_7 $$divU_7 | ||
| 950 | . $$divI_8 | ||
| 951 | . $$divI_9 $$divU_9 | ||
| 952 | . $$divI_10 $$divU_10 | ||
| 953 | . | ||
| 954 | . $$divI_12 $$divU_12 | ||
| 955 | . | ||
| 956 | . $$divI_14 $$divU_14 | ||
| 957 | . $$divI_15 $$divU_15 | ||
| 958 | . $$divI_16 | ||
| 959 | . $$divI_17 $$divU_17 | ||
| 960 | . | ||
| 961 | . Divide by selected constants for single precision binary integers. | ||
| 962 | |||
| 963 | INPUT REGISTERS: | ||
| 964 | . arg0 == dividend | ||
| 965 | . mrp == return pc | ||
| 966 | . sr0 == return space when called externally | ||
| 967 | |||
| 968 | OUTPUT REGISTERS: | ||
| 969 | . arg0 = undefined | ||
| 970 | . arg1 = undefined | ||
| 971 | . ret1 = quotient | ||
| 972 | |||
| 973 | OTHER REGISTERS AFFECTED: | ||
| 974 | . r1 = undefined | ||
| 975 | |||
| 976 | SIDE EFFECTS: | ||
| 977 | . Causes a trap under the following conditions: NONE | ||
| 978 | . Changes memory at the following places: NONE | ||
| 979 | |||
| 980 | PERMISSIBLE CONTEXT: | ||
| 981 | . Unwindable. | ||
| 982 | . Does not create a stack frame. | ||
| 983 | . Suitable for internal or external millicode. | ||
| 984 | . Assumes the special millicode register conventions. | ||
| 985 | |||
| 986 | DISCUSSION: | ||
| 987 | . Calls other millicode routines using mrp: NONE | ||
| 988 | . Calls other millicode routines: NONE */ | ||
| 989 | |||
| 990 | |||
| 991 | /* TRUNCATED DIVISION BY SMALL INTEGERS | ||
| 992 | |||
| 993 | We are interested in q(x) = floor(x/y), where x >= 0 and y > 0 | ||
| 994 | (with y fixed). | ||
| 995 | |||
| 996 | Let a = floor(z/y), for some choice of z. Note that z will be | ||
| 997 | chosen so that division by z is cheap. | ||
| 998 | |||
| 999 | Let r be the remainder(z/y). In other words, r = z - ay. | ||
| 1000 | |||
| 1001 | Now, our method is to choose a value for b such that | ||
| 1002 | |||
| 1003 | q'(x) = floor((ax+b)/z) | ||
| 1004 | |||
| 1005 | is equal to q(x) over as large a range of x as possible. If the | ||
| 1006 | two are equal over a sufficiently large range, and if it is easy to | ||
| 1007 | form the product (ax), and it is easy to divide by z, then we can | ||
| 1008 | perform the division much faster than the general division algorithm. | ||
| 1009 | |||
| 1010 | So, we want the following to be true: | ||
| 1011 | |||
| 1012 | . For x in the following range: | ||
| 1013 | . | ||
| 1014 | . ky <= x < (k+1)y | ||
| 1015 | . | ||
| 1016 | . implies that | ||
| 1017 | . | ||
| 1018 | . k <= (ax+b)/z < (k+1) | ||
| 1019 | |||
| 1020 | We want to determine b such that this is true for all k in the | ||
| 1021 | range {0..K} for some maximum K. | ||
| 1022 | |||
| 1023 | Since (ax+b) is an increasing function of x, we can take each | ||
| 1024 | bound separately to determine the "best" value for b. | ||
| 1025 | |||
| 1026 | (ax+b)/z < (k+1) implies | ||
| 1027 | |||
| 1028 | (a((k+1)y-1)+b < (k+1)z implies | ||
| 1029 | |||
| 1030 | b < a + (k+1)(z-ay) implies | ||
| 1031 | |||
| 1032 | b < a + (k+1)r | ||
| 1033 | |||
| 1034 | This needs to be true for all k in the range {0..K}. In | ||
| 1035 | particular, it is true for k = 0 and this leads to a maximum | ||
| 1036 | acceptable value for b. | ||
| 1037 | |||
| 1038 | b < a+r or b <= a+r-1 | ||
| 1039 | |||
| 1040 | Taking the other bound, we have | ||
| 1041 | |||
| 1042 | k <= (ax+b)/z implies | ||
| 1043 | |||
| 1044 | k <= (aky+b)/z implies | ||
| 1045 | |||
| 1046 | k(z-ay) <= b implies | ||
| 1047 | |||
| 1048 | kr <= b | ||
| 1049 | |||
| 1050 | Clearly, the largest range for k will be achieved by maximizing b, | ||
| 1051 | when r is not zero. When r is zero, then the simplest choice for b | ||
| 1052 | is 0. When r is not 0, set | ||
| 1053 | |||
| 1054 | . b = a+r-1 | ||
| 1055 | |||
| 1056 | Now, by construction, q'(x) = floor((ax+b)/z) = q(x) = floor(x/y) | ||
| 1057 | for all x in the range: | ||
| 1058 | |||
| 1059 | . 0 <= x < (K+1)y | ||
| 1060 | |||
| 1061 | We need to determine what K is. Of our two bounds, | ||
| 1062 | |||
| 1063 | . b < a+(k+1)r is satisfied for all k >= 0, by construction. | ||
| 1064 | |||
| 1065 | The other bound is | ||
| 1066 | |||
| 1067 | . kr <= b | ||
| 1068 | |||
| 1069 | This is always true if r = 0. If r is not 0 (the usual case), then | ||
| 1070 | K = floor((a+r-1)/r), is the maximum value for k. | ||
| 1071 | |||
| 1072 | Therefore, the formula q'(x) = floor((ax+b)/z) yields the correct | ||
| 1073 | answer for q(x) = floor(x/y) when x is in the range | ||
| 1074 | |||
| 1075 | (0,(K+1)y-1) K = floor((a+r-1)/r) | ||
| 1076 | |||
| 1077 | To be most useful, we want (K+1)y-1 = (max x) >= 2**32-1 so that | ||
| 1078 | the formula for q'(x) yields the correct value of q(x) for all x | ||
| 1079 | representable by a single word in HPPA. | ||
| 1080 | |||
| 1081 | We are also constrained in that computing the product (ax), adding | ||
| 1082 | b, and dividing by z must all be done quickly, otherwise we will be | ||
| 1083 | better off going through the general algorithm using the DS | ||
| 1084 | instruction, which uses approximately 70 cycles. | ||
| 1085 | |||
| 1086 | For each y, there is a choice of z which satisfies the constraints | ||
| 1087 | for (K+1)y >= 2**32. We may not, however, be able to satisfy the | ||
| 1088 | timing constraints for arbitrary y. It seems that z being equal to | ||
| 1089 | a power of 2 or a power of 2 minus 1 is as good as we can do, since | ||
| 1090 | it minimizes the time to do division by z. We want the choice of z | ||
| 1091 | to also result in a value for (a) that minimizes the computation of | ||
| 1092 | the product (ax). This is best achieved if (a) has a regular bit | ||
| 1093 | pattern (so the multiplication can be done with shifts and adds). | ||
| 1094 | The value of (a) also needs to be less than 2**32 so the product is | ||
| 1095 | always guaranteed to fit in 2 words. | ||
| 1096 | |||
| 1097 | In actual practice, the following should be done: | ||
| 1098 | |||
| 1099 | 1) For negative x, you should take the absolute value and remember | ||
| 1100 | . the fact so that the result can be negated. This obviously does | ||
| 1101 | . not apply in the unsigned case. | ||
| 1102 | 2) For even y, you should factor out the power of 2 that divides y | ||
| 1103 | . and divide x by it. You can then proceed by dividing by the | ||
| 1104 | . odd factor of y. | ||
| 1105 | |||
| 1106 | Here is a table of some odd values of y, and corresponding choices | ||
| 1107 | for z which are "good". | ||
| 1108 | |||
| 1109 | y z r a (hex) max x (hex) | ||
| 1110 | |||
| 1111 | 3 2**32 1 55555555 100000001 | ||
| 1112 | 5 2**32 1 33333333 100000003 | ||
| 1113 | 7 2**24-1 0 249249 (infinite) | ||
| 1114 | 9 2**24-1 0 1c71c7 (infinite) | ||
| 1115 | 11 2**20-1 0 1745d (infinite) | ||
| 1116 | 13 2**24-1 0 13b13b (infinite) | ||
| 1117 | 15 2**32 1 11111111 10000000d | ||
| 1118 | 17 2**32 1 f0f0f0f 10000000f | ||
| 1119 | |||
| 1120 | If r is 1, then b = a+r-1 = a. This simplifies the computation | ||
| 1121 | of (ax+b), since you can compute (x+1)(a) instead. If r is 0, | ||
| 1122 | then b = 0 is ok to use which simplifies (ax+b). | ||
| 1123 | |||
| 1124 | The bit patterns for 55555555, 33333333, and 11111111 are obviously | ||
| 1125 | very regular. The bit patterns for the other values of a above are: | ||
| 1126 | |||
| 1127 | y (hex) (binary) | ||
| 1128 | |||
| 1129 | 7 249249 001001001001001001001001 << regular >> | ||
| 1130 | 9 1c71c7 000111000111000111000111 << regular >> | ||
| 1131 | 11 1745d 000000010111010001011101 << irregular >> | ||
| 1132 | 13 13b13b 000100111011000100111011 << irregular >> | ||
| 1133 | |||
| 1134 | The bit patterns for (a) corresponding to (y) of 11 and 13 may be | ||
| 1135 | too irregular to warrant using this method. | ||
| 1136 | |||
| 1137 | When z is a power of 2 minus 1, then the division by z is slightly | ||
| 1138 | more complicated, involving an iterative solution. | ||
| 1139 | |||
| 1140 | The code presented here solves division by 1 through 17, except for | ||
| 1141 | 11 and 13. There are algorithms for both signed and unsigned | ||
| 1142 | quantities given. | ||
| 1143 | |||
| 1144 | TIMINGS (cycles) | ||
| 1145 | |||
| 1146 | divisor positive negative unsigned | ||
| 1147 | |||
| 1148 | . 1 2 2 2 | ||
| 1149 | . 2 4 4 2 | ||
| 1150 | . 3 19 21 19 | ||
| 1151 | . 4 4 4 2 | ||
| 1152 | . 5 18 22 19 | ||
| 1153 | . 6 19 22 19 | ||
| 1154 | . 8 4 4 2 | ||
| 1155 | . 10 18 19 17 | ||
| 1156 | . 12 18 20 18 | ||
| 1157 | . 15 16 18 16 | ||
| 1158 | . 16 4 4 2 | ||
| 1159 | . 17 16 18 16 | ||
| 1160 | |||
| 1161 | Now, the algorithm for 7, 9, and 14 is an iterative one. That is, | ||
| 1162 | a loop body is executed until the tentative quotient is 0. The | ||
| 1163 | number of times the loop body is executed varies depending on the | ||
| 1164 | dividend, but is never more than two times. If the dividend is | ||
| 1165 | less than the divisor, then the loop body is not executed at all. | ||
| 1166 | Each iteration adds 4 cycles to the timings. | ||
| 1167 | |||
| 1168 | divisor positive negative unsigned | ||
| 1169 | |||
| 1170 | . 7 19+4n 20+4n 20+4n n = number of iterations | ||
| 1171 | . 9 21+4n 22+4n 21+4n | ||
| 1172 | . 14 21+4n 22+4n 20+4n | ||
| 1173 | |||
| 1174 | To give an idea of how the number of iterations varies, here is a | ||
| 1175 | table of dividend versus number of iterations when dividing by 7. | ||
| 1176 | |||
| 1177 | smallest largest required | ||
| 1178 | dividend dividend iterations | ||
| 1179 | |||
| 1180 | . 0 6 0 | ||
| 1181 | . 7 0x6ffffff 1 | ||
| 1182 | 0x1000006 0xffffffff 2 | ||
| 1183 | |||
| 1184 | There is some overlap in the range of numbers requiring 1 and 2 | ||
| 1185 | iterations. */ | ||
| 1186 | |||
| 1187 | RDEFINE(t2,r1) | ||
| 1188 | RDEFINE(x2,arg0) /* r26 */ | ||
| 1189 | RDEFINE(t1,arg1) /* r25 */ | ||
| 1190 | RDEFINE(x1,ret1) /* r29 */ | ||
| 1191 | |||
| 1192 | SUBSPA_MILLI_DIV | ||
| 1193 | ATTR_MILLI | ||
| 1194 | |||
| 1195 | .proc | ||
| 1196 | .callinfo millicode | ||
| 1197 | .entry | ||
| 1198 | /* NONE of these routines require a stack frame | ||
| 1199 | ALL of these routines are unwindable from millicode */ | ||
| 1200 | |||
| 1201 | GSYM($$divide_by_constant) | ||
| 1202 | .export $$divide_by_constant,millicode | ||
| 1203 | /* Provides a "nice" label for the code covered by the unwind descriptor | ||
| 1204 | for things like gprof. */ | ||
| 1205 | |||
| 1206 | /* DIVISION BY 2 (shift by 1) */ | ||
| 1207 | GSYM($$divI_2) | ||
| 1208 | .export $$divI_2,millicode | ||
| 1209 | comclr,>= arg0,0,0 | ||
| 1210 | addi 1,arg0,arg0 | ||
| 1211 | MILLIRET | ||
| 1212 | extrs arg0,30,31,ret1 | ||
| 1213 | |||
| 1214 | |||
| 1215 | /* DIVISION BY 4 (shift by 2) */ | ||
| 1216 | GSYM($$divI_4) | ||
| 1217 | .export $$divI_4,millicode | ||
| 1218 | comclr,>= arg0,0,0 | ||
| 1219 | addi 3,arg0,arg0 | ||
| 1220 | MILLIRET | ||
| 1221 | extrs arg0,29,30,ret1 | ||
| 1222 | |||
| 1223 | |||
| 1224 | /* DIVISION BY 8 (shift by 3) */ | ||
| 1225 | GSYM($$divI_8) | ||
| 1226 | .export $$divI_8,millicode | ||
| 1227 | comclr,>= arg0,0,0 | ||
| 1228 | addi 7,arg0,arg0 | ||
| 1229 | MILLIRET | ||
| 1230 | extrs arg0,28,29,ret1 | ||
| 1231 | |||
| 1232 | /* DIVISION BY 16 (shift by 4) */ | ||
| 1233 | GSYM($$divI_16) | ||
| 1234 | .export $$divI_16,millicode | ||
| 1235 | comclr,>= arg0,0,0 | ||
| 1236 | addi 15,arg0,arg0 | ||
| 1237 | MILLIRET | ||
| 1238 | extrs arg0,27,28,ret1 | ||
| 1239 | |||
| 1240 | /**************************************************************************** | ||
| 1241 | * | ||
| 1242 | * DIVISION BY DIVISORS OF FFFFFFFF, and powers of 2 times these | ||
| 1243 | * | ||
| 1244 | * includes 3,5,15,17 and also 6,10,12 | ||
| 1245 | * | ||
| 1246 | ****************************************************************************/ | ||
| 1247 | |||
| 1248 | /* DIVISION BY 3 (use z = 2**32; a = 55555555) */ | ||
| 1249 | |||
| 1250 | GSYM($$divI_3) | ||
| 1251 | .export $$divI_3,millicode | ||
| 1252 | comb,<,N x2,0,LREF(neg3) | ||
| 1253 | |||
| 1254 | addi 1,x2,x2 /* this cannot overflow */ | ||
| 1255 | extru x2,1,2,x1 /* multiply by 5 to get started */ | ||
| 1256 | sh2add x2,x2,x2 | ||
| 1257 | b LREF(pos) | ||
| 1258 | addc x1,0,x1 | ||
| 1259 | |||
| 1260 | LSYM(neg3) | ||
| 1261 | subi 1,x2,x2 /* this cannot overflow */ | ||
| 1262 | extru x2,1,2,x1 /* multiply by 5 to get started */ | ||
| 1263 | sh2add x2,x2,x2 | ||
| 1264 | b LREF(neg) | ||
| 1265 | addc x1,0,x1 | ||
| 1266 | |||
| 1267 | GSYM($$divU_3) | ||
| 1268 | .export $$divU_3,millicode | ||
| 1269 | addi 1,x2,x2 /* this CAN overflow */ | ||
| 1270 | addc 0,0,x1 | ||
| 1271 | shd x1,x2,30,t1 /* multiply by 5 to get started */ | ||
| 1272 | sh2add x2,x2,x2 | ||
| 1273 | b LREF(pos) | ||
| 1274 | addc x1,t1,x1 | ||
| 1275 | |||
| 1276 | /* DIVISION BY 5 (use z = 2**32; a = 33333333) */ | ||
| 1277 | |||
| 1278 | GSYM($$divI_5) | ||
| 1279 | .export $$divI_5,millicode | ||
| 1280 | comb,<,N x2,0,LREF(neg5) | ||
| 1281 | |||
| 1282 | addi 3,x2,t1 /* this cannot overflow */ | ||
| 1283 | sh1add x2,t1,x2 /* multiply by 3 to get started */ | ||
| 1284 | b LREF(pos) | ||
| 1285 | addc 0,0,x1 | ||
| 1286 | |||
| 1287 | LSYM(neg5) | ||
| 1288 | sub 0,x2,x2 /* negate x2 */ | ||
| 1289 | addi 1,x2,x2 /* this cannot overflow */ | ||
| 1290 | shd 0,x2,31,x1 /* get top bit (can be 1) */ | ||
| 1291 | sh1add x2,x2,x2 /* multiply by 3 to get started */ | ||
| 1292 | b LREF(neg) | ||
| 1293 | addc x1,0,x1 | ||
| 1294 | |||
| 1295 | GSYM($$divU_5) | ||
| 1296 | .export $$divU_5,millicode | ||
| 1297 | addi 1,x2,x2 /* this CAN overflow */ | ||
| 1298 | addc 0,0,x1 | ||
| 1299 | shd x1,x2,31,t1 /* multiply by 3 to get started */ | ||
| 1300 | sh1add x2,x2,x2 | ||
| 1301 | b LREF(pos) | ||
| 1302 | addc t1,x1,x1 | ||
| 1303 | |||
| 1304 | /* DIVISION BY 6 (shift to divide by 2 then divide by 3) */ | ||
| 1305 | GSYM($$divI_6) | ||
| 1306 | .export $$divI_6,millicode | ||
| 1307 | comb,<,N x2,0,LREF(neg6) | ||
| 1308 | extru x2,30,31,x2 /* divide by 2 */ | ||
| 1309 | addi 5,x2,t1 /* compute 5*(x2+1) = 5*x2+5 */ | ||
| 1310 | sh2add x2,t1,x2 /* multiply by 5 to get started */ | ||
| 1311 | b LREF(pos) | ||
| 1312 | addc 0,0,x1 | ||
| 1313 | |||
| 1314 | LSYM(neg6) | ||
| 1315 | subi 2,x2,x2 /* negate, divide by 2, and add 1 */ | ||
| 1316 | /* negation and adding 1 are done */ | ||
| 1317 | /* at the same time by the SUBI */ | ||
| 1318 | extru x2,30,31,x2 | ||
| 1319 | shd 0,x2,30,x1 | ||
| 1320 | sh2add x2,x2,x2 /* multiply by 5 to get started */ | ||
| 1321 | b LREF(neg) | ||
| 1322 | addc x1,0,x1 | ||
| 1323 | |||
| 1324 | GSYM($$divU_6) | ||
| 1325 | .export $$divU_6,millicode | ||
| 1326 | extru x2,30,31,x2 /* divide by 2 */ | ||
| 1327 | addi 1,x2,x2 /* cannot carry */ | ||
| 1328 | shd 0,x2,30,x1 /* multiply by 5 to get started */ | ||
| 1329 | sh2add x2,x2,x2 | ||
| 1330 | b LREF(pos) | ||
| 1331 | addc x1,0,x1 | ||
| 1332 | |||
| 1333 | /* DIVISION BY 10 (shift to divide by 2 then divide by 5) */ | ||
| 1334 | GSYM($$divU_10) | ||
| 1335 | .export $$divU_10,millicode | ||
| 1336 | extru x2,30,31,x2 /* divide by 2 */ | ||
| 1337 | addi 3,x2,t1 /* compute 3*(x2+1) = (3*x2)+3 */ | ||
| 1338 | sh1add x2,t1,x2 /* multiply by 3 to get started */ | ||
| 1339 | addc 0,0,x1 | ||
| 1340 | LSYM(pos) | ||
| 1341 | shd x1,x2,28,t1 /* multiply by 0x11 */ | ||
| 1342 | shd x2,0,28,t2 | ||
| 1343 | add x2,t2,x2 | ||
| 1344 | addc x1,t1,x1 | ||
| 1345 | LSYM(pos_for_17) | ||
| 1346 | shd x1,x2,24,t1 /* multiply by 0x101 */ | ||
| 1347 | shd x2,0,24,t2 | ||
| 1348 | add x2,t2,x2 | ||
| 1349 | addc x1,t1,x1 | ||
| 1350 | |||
| 1351 | shd x1,x2,16,t1 /* multiply by 0x10001 */ | ||
| 1352 | shd x2,0,16,t2 | ||
| 1353 | add x2,t2,x2 | ||
| 1354 | MILLIRET | ||
| 1355 | addc x1,t1,x1 | ||
| 1356 | |||
| 1357 | GSYM($$divI_10) | ||
| 1358 | .export $$divI_10,millicode | ||
| 1359 | comb,< x2,0,LREF(neg10) | ||
| 1360 | copy 0,x1 | ||
| 1361 | extru x2,30,31,x2 /* divide by 2 */ | ||
| 1362 | addib,TR 1,x2,LREF(pos) /* add 1 (cannot overflow) */ | ||
| 1363 | sh1add x2,x2,x2 /* multiply by 3 to get started */ | ||
| 1364 | |||
| 1365 | LSYM(neg10) | ||
| 1366 | subi 2,x2,x2 /* negate, divide by 2, and add 1 */ | ||
| 1367 | /* negation and adding 1 are done */ | ||
| 1368 | /* at the same time by the SUBI */ | ||
| 1369 | extru x2,30,31,x2 | ||
| 1370 | sh1add x2,x2,x2 /* multiply by 3 to get started */ | ||
| 1371 | LSYM(neg) | ||
| 1372 | shd x1,x2,28,t1 /* multiply by 0x11 */ | ||
| 1373 | shd x2,0,28,t2 | ||
| 1374 | add x2,t2,x2 | ||
| 1375 | addc x1,t1,x1 | ||
| 1376 | LSYM(neg_for_17) | ||
| 1377 | shd x1,x2,24,t1 /* multiply by 0x101 */ | ||
| 1378 | shd x2,0,24,t2 | ||
| 1379 | add x2,t2,x2 | ||
| 1380 | addc x1,t1,x1 | ||
| 1381 | |||
| 1382 | shd x1,x2,16,t1 /* multiply by 0x10001 */ | ||
| 1383 | shd x2,0,16,t2 | ||
| 1384 | add x2,t2,x2 | ||
| 1385 | addc x1,t1,x1 | ||
| 1386 | MILLIRET | ||
| 1387 | sub 0,x1,x1 | ||
| 1388 | |||
| 1389 | /* DIVISION BY 12 (shift to divide by 4 then divide by 3) */ | ||
| 1390 | GSYM($$divI_12) | ||
| 1391 | .export $$divI_12,millicode | ||
| 1392 | comb,< x2,0,LREF(neg12) | ||
| 1393 | copy 0,x1 | ||
| 1394 | extru x2,29,30,x2 /* divide by 4 */ | ||
| 1395 | addib,tr 1,x2,LREF(pos) /* compute 5*(x2+1) = 5*x2+5 */ | ||
| 1396 | sh2add x2,x2,x2 /* multiply by 5 to get started */ | ||
| 1397 | |||
| 1398 | LSYM(neg12) | ||
| 1399 | subi 4,x2,x2 /* negate, divide by 4, and add 1 */ | ||
| 1400 | /* negation and adding 1 are done */ | ||
| 1401 | /* at the same time by the SUBI */ | ||
| 1402 | extru x2,29,30,x2 | ||
| 1403 | b LREF(neg) | ||
| 1404 | sh2add x2,x2,x2 /* multiply by 5 to get started */ | ||
| 1405 | |||
| 1406 | GSYM($$divU_12) | ||
| 1407 | .export $$divU_12,millicode | ||
| 1408 | extru x2,29,30,x2 /* divide by 4 */ | ||
| 1409 | addi 5,x2,t1 /* cannot carry */ | ||
| 1410 | sh2add x2,t1,x2 /* multiply by 5 to get started */ | ||
| 1411 | b LREF(pos) | ||
| 1412 | addc 0,0,x1 | ||
| 1413 | |||
| 1414 | /* DIVISION BY 15 (use z = 2**32; a = 11111111) */ | ||
| 1415 | GSYM($$divI_15) | ||
| 1416 | .export $$divI_15,millicode | ||
| 1417 | comb,< x2,0,LREF(neg15) | ||
| 1418 | copy 0,x1 | ||
| 1419 | addib,tr 1,x2,LREF(pos)+4 | ||
| 1420 | shd x1,x2,28,t1 | ||
| 1421 | |||
| 1422 | LSYM(neg15) | ||
| 1423 | b LREF(neg) | ||
| 1424 | subi 1,x2,x2 | ||
| 1425 | |||
| 1426 | GSYM($$divU_15) | ||
| 1427 | .export $$divU_15,millicode | ||
| 1428 | addi 1,x2,x2 /* this CAN overflow */ | ||
| 1429 | b LREF(pos) | ||
| 1430 | addc 0,0,x1 | ||
| 1431 | |||
| 1432 | /* DIVISION BY 17 (use z = 2**32; a = f0f0f0f) */ | ||
| 1433 | GSYM($$divI_17) | ||
| 1434 | .export $$divI_17,millicode | ||
| 1435 | comb,<,n x2,0,LREF(neg17) | ||
| 1436 | addi 1,x2,x2 /* this cannot overflow */ | ||
| 1437 | shd 0,x2,28,t1 /* multiply by 0xf to get started */ | ||
| 1438 | shd x2,0,28,t2 | ||
| 1439 | sub t2,x2,x2 | ||
| 1440 | b LREF(pos_for_17) | ||
| 1441 | subb t1,0,x1 | ||
| 1442 | |||
| 1443 | LSYM(neg17) | ||
| 1444 | subi 1,x2,x2 /* this cannot overflow */ | ||
| 1445 | shd 0,x2,28,t1 /* multiply by 0xf to get started */ | ||
| 1446 | shd x2,0,28,t2 | ||
| 1447 | sub t2,x2,x2 | ||
| 1448 | b LREF(neg_for_17) | ||
| 1449 | subb t1,0,x1 | ||
| 1450 | |||
| 1451 | GSYM($$divU_17) | ||
| 1452 | .export $$divU_17,millicode | ||
| 1453 | addi 1,x2,x2 /* this CAN overflow */ | ||
| 1454 | addc 0,0,x1 | ||
| 1455 | shd x1,x2,28,t1 /* multiply by 0xf to get started */ | ||
| 1456 | LSYM(u17) | ||
| 1457 | shd x2,0,28,t2 | ||
| 1458 | sub t2,x2,x2 | ||
| 1459 | b LREF(pos_for_17) | ||
| 1460 | subb t1,x1,x1 | ||
| 1461 | |||
| 1462 | |||
| 1463 | /* DIVISION BY DIVISORS OF FFFFFF, and powers of 2 times these | ||
| 1464 | includes 7,9 and also 14 | ||
| 1465 | |||
| 1466 | |||
| 1467 | z = 2**24-1 | ||
| 1468 | r = z mod x = 0 | ||
| 1469 | |||
| 1470 | so choose b = 0 | ||
| 1471 | |||
| 1472 | Also, in order to divide by z = 2**24-1, we approximate by dividing | ||
| 1473 | by (z+1) = 2**24 (which is easy), and then correcting. | ||
| 1474 | |||
| 1475 | (ax) = (z+1)q' + r | ||
| 1476 | . = zq' + (q'+r) | ||
| 1477 | |||
| 1478 | So to compute (ax)/z, compute q' = (ax)/(z+1) and r = (ax) mod (z+1) | ||
| 1479 | Then the true remainder of (ax)/z is (q'+r). Repeat the process | ||
| 1480 | with this new remainder, adding the tentative quotients together, | ||
| 1481 | until a tentative quotient is 0 (and then we are done). There is | ||
| 1482 | one last correction to be done. It is possible that (q'+r) = z. | ||
| 1483 | If so, then (q'+r)/(z+1) = 0 and it looks like we are done. But, | ||
| 1484 | in fact, we need to add 1 more to the quotient. Now, it turns | ||
| 1485 | out that this happens if and only if the original value x is | ||
| 1486 | an exact multiple of y. So, to avoid a three instruction test at | ||
| 1487 | the end, instead use 1 instruction to add 1 to x at the beginning. */ | ||
| 1488 | |||
| 1489 | /* DIVISION BY 7 (use z = 2**24-1; a = 249249) */ | ||
| 1490 | GSYM($$divI_7) | ||
| 1491 | .export $$divI_7,millicode | ||
| 1492 | comb,<,n x2,0,LREF(neg7) | ||
| 1493 | LSYM(7) | ||
| 1494 | addi 1,x2,x2 /* cannot overflow */ | ||
| 1495 | shd 0,x2,29,x1 | ||
| 1496 | sh3add x2,x2,x2 | ||
| 1497 | addc x1,0,x1 | ||
| 1498 | LSYM(pos7) | ||
| 1499 | shd x1,x2,26,t1 | ||
| 1500 | shd x2,0,26,t2 | ||
| 1501 | add x2,t2,x2 | ||
| 1502 | addc x1,t1,x1 | ||
| 1503 | |||
| 1504 | shd x1,x2,20,t1 | ||
| 1505 | shd x2,0,20,t2 | ||
| 1506 | add x2,t2,x2 | ||
| 1507 | addc x1,t1,t1 | ||
| 1508 | |||
| 1509 | /* computed <t1,x2>. Now divide it by (2**24 - 1) */ | ||
| 1510 | |||
| 1511 | copy 0,x1 | ||
| 1512 | shd,= t1,x2,24,t1 /* tentative quotient */ | ||
| 1513 | LSYM(1) | ||
| 1514 | addb,tr t1,x1,LREF(2) /* add to previous quotient */ | ||
| 1515 | extru x2,31,24,x2 /* new remainder (unadjusted) */ | ||
| 1516 | |||
| 1517 | MILLIRETN | ||
| 1518 | |||
| 1519 | LSYM(2) | ||
| 1520 | addb,tr t1,x2,LREF(1) /* adjust remainder */ | ||
| 1521 | extru,= x2,7,8,t1 /* new quotient */ | ||
| 1522 | |||
| 1523 | LSYM(neg7) | ||
| 1524 | subi 1,x2,x2 /* negate x2 and add 1 */ | ||
| 1525 | LSYM(8) | ||
| 1526 | shd 0,x2,29,x1 | ||
| 1527 | sh3add x2,x2,x2 | ||
| 1528 | addc x1,0,x1 | ||
| 1529 | |||
| 1530 | LSYM(neg7_shift) | ||
| 1531 | shd x1,x2,26,t1 | ||
| 1532 | shd x2,0,26,t2 | ||
| 1533 | add x2,t2,x2 | ||
| 1534 | addc x1,t1,x1 | ||
| 1535 | |||
| 1536 | shd x1,x2,20,t1 | ||
| 1537 | shd x2,0,20,t2 | ||
| 1538 | add x2,t2,x2 | ||
| 1539 | addc x1,t1,t1 | ||
| 1540 | |||
| 1541 | /* computed <t1,x2>. Now divide it by (2**24 - 1) */ | ||
| 1542 | |||
| 1543 | copy 0,x1 | ||
| 1544 | shd,= t1,x2,24,t1 /* tentative quotient */ | ||
| 1545 | LSYM(3) | ||
| 1546 | addb,tr t1,x1,LREF(4) /* add to previous quotient */ | ||
| 1547 | extru x2,31,24,x2 /* new remainder (unadjusted) */ | ||
| 1548 | |||
| 1549 | MILLIRET | ||
| 1550 | sub 0,x1,x1 /* negate result */ | ||
| 1551 | |||
| 1552 | LSYM(4) | ||
| 1553 | addb,tr t1,x2,LREF(3) /* adjust remainder */ | ||
| 1554 | extru,= x2,7,8,t1 /* new quotient */ | ||
| 1555 | |||
| 1556 | GSYM($$divU_7) | ||
| 1557 | .export $$divU_7,millicode | ||
| 1558 | addi 1,x2,x2 /* can carry */ | ||
| 1559 | addc 0,0,x1 | ||
| 1560 | shd x1,x2,29,t1 | ||
| 1561 | sh3add x2,x2,x2 | ||
| 1562 | b LREF(pos7) | ||
| 1563 | addc t1,x1,x1 | ||
| 1564 | |||
| 1565 | /* DIVISION BY 9 (use z = 2**24-1; a = 1c71c7) */ | ||
| 1566 | GSYM($$divI_9) | ||
| 1567 | .export $$divI_9,millicode | ||
| 1568 | comb,<,n x2,0,LREF(neg9) | ||
| 1569 | addi 1,x2,x2 /* cannot overflow */ | ||
| 1570 | shd 0,x2,29,t1 | ||
| 1571 | shd x2,0,29,t2 | ||
| 1572 | sub t2,x2,x2 | ||
| 1573 | b LREF(pos7) | ||
| 1574 | subb t1,0,x1 | ||
| 1575 | |||
| 1576 | LSYM(neg9) | ||
| 1577 | subi 1,x2,x2 /* negate and add 1 */ | ||
| 1578 | shd 0,x2,29,t1 | ||
| 1579 | shd x2,0,29,t2 | ||
| 1580 | sub t2,x2,x2 | ||
| 1581 | b LREF(neg7_shift) | ||
| 1582 | subb t1,0,x1 | ||
| 1583 | |||
| 1584 | GSYM($$divU_9) | ||
| 1585 | .export $$divU_9,millicode | ||
| 1586 | addi 1,x2,x2 /* can carry */ | ||
| 1587 | addc 0,0,x1 | ||
| 1588 | shd x1,x2,29,t1 | ||
| 1589 | shd x2,0,29,t2 | ||
| 1590 | sub t2,x2,x2 | ||
| 1591 | b LREF(pos7) | ||
| 1592 | subb t1,x1,x1 | ||
| 1593 | |||
| 1594 | /* DIVISION BY 14 (shift to divide by 2 then divide by 7) */ | ||
| 1595 | GSYM($$divI_14) | ||
| 1596 | .export $$divI_14,millicode | ||
| 1597 | comb,<,n x2,0,LREF(neg14) | ||
| 1598 | GSYM($$divU_14) | ||
| 1599 | .export $$divU_14,millicode | ||
| 1600 | b LREF(7) /* go to 7 case */ | ||
| 1601 | extru x2,30,31,x2 /* divide by 2 */ | ||
| 1602 | |||
| 1603 | LSYM(neg14) | ||
| 1604 | subi 2,x2,x2 /* negate (and add 2) */ | ||
| 1605 | b LREF(8) | ||
| 1606 | extru x2,30,31,x2 /* divide by 2 */ | ||
| 1607 | .exit | ||
| 1608 | .procend | ||
| 1609 | .end | ||
| 1610 | #endif | ||
| 1611 | |||
| 1612 | #ifdef L_mulI | ||
| 1613 | /* VERSION "@(#)$$mulI $ Revision: 12.4 $ $ Date: 94/03/17 17:18:51 $" */ | ||
| 1614 | /****************************************************************************** | ||
| 1615 | This routine is used on PA2.0 processors when gcc -mno-fpregs is used | ||
| 1616 | |||
| 1617 | ROUTINE: $$mulI | ||
| 1618 | |||
| 1619 | |||
| 1620 | DESCRIPTION: | ||
| 1621 | |||
| 1622 | $$mulI multiplies two single word integers, giving a single | ||
| 1623 | word result. | ||
| 1624 | |||
| 1625 | |||
| 1626 | INPUT REGISTERS: | ||
| 1627 | |||
| 1628 | arg0 = Operand 1 | ||
| 1629 | arg1 = Operand 2 | ||
| 1630 | r31 == return pc | ||
| 1631 | sr0 == return space when called externally | ||
| 1632 | |||
| 1633 | |||
| 1634 | OUTPUT REGISTERS: | ||
| 1635 | |||
| 1636 | arg0 = undefined | ||
| 1637 | arg1 = undefined | ||
| 1638 | ret1 = result | ||
| 1639 | |||
| 1640 | OTHER REGISTERS AFFECTED: | ||
| 1641 | |||
| 1642 | r1 = undefined | ||
| 1643 | |||
| 1644 | SIDE EFFECTS: | ||
| 1645 | |||
| 1646 | Causes a trap under the following conditions: NONE | ||
| 1647 | Changes memory at the following places: NONE | ||
| 1648 | |||
| 1649 | PERMISSIBLE CONTEXT: | ||
| 1650 | |||
| 1651 | Unwindable | ||
| 1652 | Does not create a stack frame | ||
| 1653 | Is usable for internal or external microcode | ||
| 1654 | |||
| 1655 | DISCUSSION: | ||
| 1656 | |||
| 1657 | Calls other millicode routines via mrp: NONE | ||
| 1658 | Calls other millicode routines: NONE | ||
| 1659 | |||
| 1660 | ***************************************************************************/ | ||
| 1661 | |||
| 1662 | |||
| 1663 | #define a0 %arg0 | ||
| 1664 | #define a1 %arg1 | ||
| 1665 | #define t0 %r1 | ||
| 1666 | #define r %ret1 | ||
| 1667 | |||
| 1668 | #define a0__128a0 zdep a0,24,25,a0 | ||
| 1669 | #define a0__256a0 zdep a0,23,24,a0 | ||
| 1670 | #define a1_ne_0_b_l0 comb,<> a1,0,LREF(l0) | ||
| 1671 | #define a1_ne_0_b_l1 comb,<> a1,0,LREF(l1) | ||
| 1672 | #define a1_ne_0_b_l2 comb,<> a1,0,LREF(l2) | ||
| 1673 | #define b_n_ret_t0 b,n LREF(ret_t0) | ||
| 1674 | #define b_e_shift b LREF(e_shift) | ||
| 1675 | #define b_e_t0ma0 b LREF(e_t0ma0) | ||
| 1676 | #define b_e_t0 b LREF(e_t0) | ||
| 1677 | #define b_e_t0a0 b LREF(e_t0a0) | ||
| 1678 | #define b_e_t02a0 b LREF(e_t02a0) | ||
| 1679 | #define b_e_t04a0 b LREF(e_t04a0) | ||
| 1680 | #define b_e_2t0 b LREF(e_2t0) | ||
| 1681 | #define b_e_2t0a0 b LREF(e_2t0a0) | ||
| 1682 | #define b_e_2t04a0 b LREF(e2t04a0) | ||
| 1683 | #define b_e_3t0 b LREF(e_3t0) | ||
| 1684 | #define b_e_4t0 b LREF(e_4t0) | ||
| 1685 | #define b_e_4t0a0 b LREF(e_4t0a0) | ||
| 1686 | #define b_e_4t08a0 b LREF(e4t08a0) | ||
| 1687 | #define b_e_5t0 b LREF(e_5t0) | ||
| 1688 | #define b_e_8t0 b LREF(e_8t0) | ||
| 1689 | #define b_e_8t0a0 b LREF(e_8t0a0) | ||
| 1690 | #define r__r_a0 add r,a0,r | ||
| 1691 | #define r__r_2a0 sh1add a0,r,r | ||
| 1692 | #define r__r_4a0 sh2add a0,r,r | ||
| 1693 | #define r__r_8a0 sh3add a0,r,r | ||
| 1694 | #define r__r_t0 add r,t0,r | ||
| 1695 | #define r__r_2t0 sh1add t0,r,r | ||
| 1696 | #define r__r_4t0 sh2add t0,r,r | ||
| 1697 | #define r__r_8t0 sh3add t0,r,r | ||
| 1698 | #define t0__3a0 sh1add a0,a0,t0 | ||
| 1699 | #define t0__4a0 sh2add a0,0,t0 | ||
| 1700 | #define t0__5a0 sh2add a0,a0,t0 | ||
| 1701 | #define t0__8a0 sh3add a0,0,t0 | ||
| 1702 | #define t0__9a0 sh3add a0,a0,t0 | ||
| 1703 | #define t0__16a0 zdep a0,27,28,t0 | ||
| 1704 | #define t0__32a0 zdep a0,26,27,t0 | ||
| 1705 | #define t0__64a0 zdep a0,25,26,t0 | ||
| 1706 | #define t0__128a0 zdep a0,24,25,t0 | ||
| 1707 | #define t0__t0ma0 sub t0,a0,t0 | ||
| 1708 | #define t0__t0_a0 add t0,a0,t0 | ||
| 1709 | #define t0__t0_2a0 sh1add a0,t0,t0 | ||
| 1710 | #define t0__t0_4a0 sh2add a0,t0,t0 | ||
| 1711 | #define t0__t0_8a0 sh3add a0,t0,t0 | ||
| 1712 | #define t0__2t0_a0 sh1add t0,a0,t0 | ||
| 1713 | #define t0__3t0 sh1add t0,t0,t0 | ||
| 1714 | #define t0__4t0 sh2add t0,0,t0 | ||
| 1715 | #define t0__4t0_a0 sh2add t0,a0,t0 | ||
| 1716 | #define t0__5t0 sh2add t0,t0,t0 | ||
| 1717 | #define t0__8t0 sh3add t0,0,t0 | ||
| 1718 | #define t0__8t0_a0 sh3add t0,a0,t0 | ||
| 1719 | #define t0__9t0 sh3add t0,t0,t0 | ||
| 1720 | #define t0__16t0 zdep t0,27,28,t0 | ||
| 1721 | #define t0__32t0 zdep t0,26,27,t0 | ||
| 1722 | #define t0__256a0 zdep a0,23,24,t0 | ||
| 1723 | |||
| 1724 | |||
| 1725 | SUBSPA_MILLI | ||
| 1726 | ATTR_MILLI | ||
| 1727 | .align 16 | ||
| 1728 | .proc | ||
| 1729 | .callinfo millicode | ||
| 1730 | .export $$mulI,millicode | ||
| 1731 | GSYM($$mulI) | ||
| 1732 | combt,<<= a1,a0,LREF(l4) /* swap args if unsigned a1>a0 */ | ||
| 1733 | copy 0,r /* zero out the result */ | ||
| 1734 | xor a0,a1,a0 /* swap a0 & a1 using the */ | ||
| 1735 | xor a0,a1,a1 /* old xor trick */ | ||
| 1736 | xor a0,a1,a0 | ||
| 1737 | LSYM(l4) | ||
| 1738 | combt,<= 0,a0,LREF(l3) /* if a0>=0 then proceed like unsigned */ | ||
| 1739 | zdep a1,30,8,t0 /* t0 = (a1&0xff)<<1 ********* */ | ||
| 1740 | sub,> 0,a1,t0 /* otherwise negate both and */ | ||
| 1741 | combt,<=,n a0,t0,LREF(l2) /* swap back if |a0|<|a1| */ | ||
| 1742 | sub 0,a0,a1 | ||
| 1743 | movb,tr,n t0,a0,LREF(l2) /* 10th inst. */ | ||
| 1744 | |||
| 1745 | LSYM(l0) r__r_t0 /* add in this partial product */ | ||
| 1746 | LSYM(l1) a0__256a0 /* a0 <<= 8 ****************** */ | ||
| 1747 | LSYM(l2) zdep a1,30,8,t0 /* t0 = (a1&0xff)<<1 ********* */ | ||
| 1748 | LSYM(l3) blr t0,0 /* case on these 8 bits ****** */ | ||
| 1749 | extru a1,23,24,a1 /* a1 >>= 8 ****************** */ | ||
| 1750 | |||
| 1751 | /*16 insts before this. */ | ||
| 1752 | /* a0 <<= 8 ************************** */ | ||
| 1753 | LSYM(x0) a1_ne_0_b_l2 ! a0__256a0 ! MILLIRETN ! nop | ||
| 1754 | LSYM(x1) a1_ne_0_b_l1 ! r__r_a0 ! MILLIRETN ! nop | ||
| 1755 | LSYM(x2) a1_ne_0_b_l1 ! r__r_2a0 ! MILLIRETN ! nop | ||
| 1756 | LSYM(x3) a1_ne_0_b_l0 ! t0__3a0 ! MILLIRET ! r__r_t0 | ||
| 1757 | LSYM(x4) a1_ne_0_b_l1 ! r__r_4a0 ! MILLIRETN ! nop | ||
| 1758 | LSYM(x5) a1_ne_0_b_l0 ! t0__5a0 ! MILLIRET ! r__r_t0 | ||
| 1759 | LSYM(x6) t0__3a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN | ||
| 1760 | LSYM(x7) t0__3a0 ! a1_ne_0_b_l0 ! r__r_4a0 ! b_n_ret_t0 | ||
| 1761 | LSYM(x8) a1_ne_0_b_l1 ! r__r_8a0 ! MILLIRETN ! nop | ||
| 1762 | LSYM(x9) a1_ne_0_b_l0 ! t0__9a0 ! MILLIRET ! r__r_t0 | ||
| 1763 | LSYM(x10) t0__5a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN | ||
| 1764 | LSYM(x11) t0__3a0 ! a1_ne_0_b_l0 ! r__r_8a0 ! b_n_ret_t0 | ||
| 1765 | LSYM(x12) t0__3a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN | ||
| 1766 | LSYM(x13) t0__5a0 ! a1_ne_0_b_l0 ! r__r_8a0 ! b_n_ret_t0 | ||
| 1767 | LSYM(x14) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 1768 | LSYM(x15) t0__5a0 ! a1_ne_0_b_l0 ! t0__3t0 ! b_n_ret_t0 | ||
| 1769 | LSYM(x16) t0__16a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
| 1770 | LSYM(x17) t0__9a0 ! a1_ne_0_b_l0 ! t0__t0_8a0 ! b_n_ret_t0 | ||
| 1771 | LSYM(x18) t0__9a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN | ||
| 1772 | LSYM(x19) t0__9a0 ! a1_ne_0_b_l0 ! t0__2t0_a0 ! b_n_ret_t0 | ||
| 1773 | LSYM(x20) t0__5a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN | ||
| 1774 | LSYM(x21) t0__5a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0 | ||
| 1775 | LSYM(x22) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 1776 | LSYM(x23) t0__5a0 ! t0__2t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 1777 | LSYM(x24) t0__3a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN | ||
| 1778 | LSYM(x25) t0__5a0 ! a1_ne_0_b_l0 ! t0__5t0 ! b_n_ret_t0 | ||
| 1779 | LSYM(x26) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 1780 | LSYM(x27) t0__3a0 ! a1_ne_0_b_l0 ! t0__9t0 ! b_n_ret_t0 | ||
| 1781 | LSYM(x28) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 1782 | LSYM(x29) t0__3a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
| 1783 | LSYM(x30) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_2t0 | ||
| 1784 | LSYM(x31) t0__32a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
| 1785 | LSYM(x32) t0__32a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
| 1786 | LSYM(x33) t0__8a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0 | ||
| 1787 | LSYM(x34) t0__16a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 1788 | LSYM(x35) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__t0_8a0 | ||
| 1789 | LSYM(x36) t0__9a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN | ||
| 1790 | LSYM(x37) t0__9a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0 | ||
| 1791 | LSYM(x38) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 1792 | LSYM(x39) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 1793 | LSYM(x40) t0__5a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN | ||
| 1794 | LSYM(x41) t0__5a0 ! a1_ne_0_b_l0 ! t0__8t0_a0 ! b_n_ret_t0 | ||
| 1795 | LSYM(x42) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 1796 | LSYM(x43) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 1797 | LSYM(x44) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 1798 | LSYM(x45) t0__9a0 ! a1_ne_0_b_l0 ! t0__5t0 ! b_n_ret_t0 | ||
| 1799 | LSYM(x46) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_a0 | ||
| 1800 | LSYM(x47) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_2a0 | ||
| 1801 | LSYM(x48) t0__3a0 ! a1_ne_0_b_l0 ! t0__16t0 ! b_n_ret_t0 | ||
| 1802 | LSYM(x49) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_4a0 | ||
| 1803 | LSYM(x50) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_2t0 | ||
| 1804 | LSYM(x51) t0__9a0 ! t0__t0_8a0 ! b_e_t0 ! t0__3t0 | ||
| 1805 | LSYM(x52) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 1806 | LSYM(x53) t0__3a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
| 1807 | LSYM(x54) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_2t0 | ||
| 1808 | LSYM(x55) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__2t0_a0 | ||
| 1809 | LSYM(x56) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
| 1810 | LSYM(x57) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__3t0 | ||
| 1811 | LSYM(x58) t0__3a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 1812 | LSYM(x59) t0__9a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__3t0 | ||
| 1813 | LSYM(x60) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_4t0 | ||
| 1814 | LSYM(x61) t0__5a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0 | ||
| 1815 | LSYM(x62) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0 | ||
| 1816 | LSYM(x63) t0__64a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
| 1817 | LSYM(x64) t0__64a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
| 1818 | LSYM(x65) t0__8a0 ! a1_ne_0_b_l0 ! t0__8t0_a0 ! b_n_ret_t0 | ||
| 1819 | LSYM(x66) t0__32a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 1820 | LSYM(x67) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 1821 | LSYM(x68) t0__8a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 1822 | LSYM(x69) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
| 1823 | LSYM(x70) t0__64a0 ! t0__t0_4a0 ! b_e_t0 ! t0__t0_2a0 | ||
| 1824 | LSYM(x71) t0__9a0 ! t0__8t0 ! b_e_t0 ! t0__t0ma0 | ||
| 1825 | LSYM(x72) t0__9a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN | ||
| 1826 | LSYM(x73) t0__9a0 ! t0__8t0_a0 ! b_e_shift ! r__r_t0 | ||
| 1827 | LSYM(x74) t0__9a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 1828 | LSYM(x75) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 1829 | LSYM(x76) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 1830 | LSYM(x77) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
| 1831 | LSYM(x78) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 1832 | LSYM(x79) t0__16a0 ! t0__5t0 ! b_e_t0 ! t0__t0ma0 | ||
| 1833 | LSYM(x80) t0__16a0 ! t0__5t0 ! b_e_shift ! r__r_t0 | ||
| 1834 | LSYM(x81) t0__9a0 ! t0__9t0 ! b_e_shift ! r__r_t0 | ||
| 1835 | LSYM(x82) t0__5a0 ! t0__8t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 1836 | LSYM(x83) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 1837 | LSYM(x84) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 1838 | LSYM(x85) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__5t0 | ||
| 1839 | LSYM(x86) t0__5a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 1840 | LSYM(x87) t0__9a0 ! t0__9t0 ! b_e_t02a0 ! t0__t0_4a0 | ||
| 1841 | LSYM(x88) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
| 1842 | LSYM(x89) t0__5a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
| 1843 | LSYM(x90) t0__9a0 ! t0__5t0 ! b_e_shift ! r__r_2t0 | ||
| 1844 | LSYM(x91) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__2t0_a0 | ||
| 1845 | LSYM(x92) t0__5a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__2t0_a0 | ||
| 1846 | LSYM(x93) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__3t0 | ||
| 1847 | LSYM(x94) t0__9a0 ! t0__5t0 ! b_e_2t0 ! t0__t0_2a0 | ||
| 1848 | LSYM(x95) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__5t0 | ||
| 1849 | LSYM(x96) t0__8a0 ! t0__3t0 ! b_e_shift ! r__r_4t0 | ||
| 1850 | LSYM(x97) t0__8a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0 | ||
| 1851 | LSYM(x98) t0__32a0 ! t0__3t0 ! b_e_t0 ! t0__t0_2a0 | ||
| 1852 | LSYM(x99) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__3t0 | ||
| 1853 | LSYM(x100) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_4t0 | ||
| 1854 | LSYM(x101) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0 | ||
| 1855 | LSYM(x102) t0__32a0 ! t0__t0_2a0 ! b_e_t0 ! t0__3t0 | ||
| 1856 | LSYM(x103) t0__5a0 ! t0__5t0 ! b_e_t02a0 ! t0__4t0_a0 | ||
| 1857 | LSYM(x104) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_8t0 | ||
| 1858 | LSYM(x105) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0 | ||
| 1859 | LSYM(x106) t0__3a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 1860 | LSYM(x107) t0__9a0 ! t0__t0_4a0 ! b_e_t02a0 ! t0__8t0_a0 | ||
| 1861 | LSYM(x108) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_4t0 | ||
| 1862 | LSYM(x109) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0 | ||
| 1863 | LSYM(x110) t0__9a0 ! t0__3t0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 1864 | LSYM(x111) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__3t0 | ||
| 1865 | LSYM(x112) t0__3a0 ! t0__2t0_a0 ! b_e_t0 ! t0__16t0 | ||
| 1866 | LSYM(x113) t0__9a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__3t0 | ||
| 1867 | LSYM(x114) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__3t0 | ||
| 1868 | LSYM(x115) t0__9a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
| 1869 | LSYM(x116) t0__3a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__4t0_a0 | ||
| 1870 | LSYM(x117) t0__3a0 ! t0__4t0_a0 ! b_e_t0 ! t0__9t0 | ||
| 1871 | LSYM(x118) t0__3a0 ! t0__4t0_a0 ! b_e_t0a0 ! t0__9t0 | ||
| 1872 | LSYM(x119) t0__3a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__9t0 | ||
| 1873 | LSYM(x120) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_8t0 | ||
| 1874 | LSYM(x121) t0__5a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0 | ||
| 1875 | LSYM(x122) t0__5a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 1876 | LSYM(x123) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0 | ||
| 1877 | LSYM(x124) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_4t0 | ||
| 1878 | LSYM(x125) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__5t0 | ||
| 1879 | LSYM(x126) t0__64a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0 | ||
| 1880 | LSYM(x127) t0__128a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
| 1881 | LSYM(x128) t0__128a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
| 1882 | LSYM(x129) t0__128a0 ! a1_ne_0_b_l0 ! t0__t0_a0 ! b_n_ret_t0 | ||
| 1883 | LSYM(x130) t0__64a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 1884 | LSYM(x131) t0__8a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 1885 | LSYM(x132) t0__8a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 1886 | LSYM(x133) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
| 1887 | LSYM(x134) t0__8a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 1888 | LSYM(x135) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__3t0 | ||
| 1889 | LSYM(x136) t0__8a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
| 1890 | LSYM(x137) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
| 1891 | LSYM(x138) t0__8a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 1892 | LSYM(x139) t0__8a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__4t0_a0 | ||
| 1893 | LSYM(x140) t0__3a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__5t0 | ||
| 1894 | LSYM(x141) t0__8a0 ! t0__2t0_a0 ! b_e_4t0a0 ! t0__2t0_a0 | ||
| 1895 | LSYM(x142) t0__9a0 ! t0__8t0 ! b_e_2t0 ! t0__t0ma0 | ||
| 1896 | LSYM(x143) t0__16a0 ! t0__9t0 ! b_e_t0 ! t0__t0ma0 | ||
| 1897 | LSYM(x144) t0__9a0 ! t0__8t0 ! b_e_shift ! r__r_2t0 | ||
| 1898 | LSYM(x145) t0__9a0 ! t0__8t0 ! b_e_t0 ! t0__2t0_a0 | ||
| 1899 | LSYM(x146) t0__9a0 ! t0__8t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 1900 | LSYM(x147) t0__9a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 1901 | LSYM(x148) t0__9a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 1902 | LSYM(x149) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
| 1903 | LSYM(x150) t0__9a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 1904 | LSYM(x151) t0__9a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__2t0_a0 | ||
| 1905 | LSYM(x152) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
| 1906 | LSYM(x153) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
| 1907 | LSYM(x154) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 1908 | LSYM(x155) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__5t0 | ||
| 1909 | LSYM(x156) t0__9a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__2t0_a0 | ||
| 1910 | LSYM(x157) t0__32a0 ! t0__t0ma0 ! b_e_t02a0 ! t0__5t0 | ||
| 1911 | LSYM(x158) t0__16a0 ! t0__5t0 ! b_e_2t0 ! t0__t0ma0 | ||
| 1912 | LSYM(x159) t0__32a0 ! t0__5t0 ! b_e_t0 ! t0__t0ma0 | ||
| 1913 | LSYM(x160) t0__5a0 ! t0__4t0 ! b_e_shift ! r__r_8t0 | ||
| 1914 | LSYM(x161) t0__8a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0 | ||
| 1915 | LSYM(x162) t0__9a0 ! t0__9t0 ! b_e_shift ! r__r_2t0 | ||
| 1916 | LSYM(x163) t0__9a0 ! t0__9t0 ! b_e_t0 ! t0__2t0_a0 | ||
| 1917 | LSYM(x164) t0__5a0 ! t0__8t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 1918 | LSYM(x165) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0 | ||
| 1919 | LSYM(x166) t0__5a0 ! t0__8t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 1920 | LSYM(x167) t0__5a0 ! t0__8t0_a0 ! b_e_2t0a0 ! t0__2t0_a0 | ||
| 1921 | LSYM(x168) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_8t0 | ||
| 1922 | LSYM(x169) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
| 1923 | LSYM(x170) t0__32a0 ! t0__t0_2a0 ! b_e_t0 ! t0__5t0 | ||
| 1924 | LSYM(x171) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__9t0 | ||
| 1925 | LSYM(x172) t0__5a0 ! t0__4t0_a0 ! b_e_4t0 ! t0__2t0_a0 | ||
| 1926 | LSYM(x173) t0__9a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__9t0 | ||
| 1927 | LSYM(x174) t0__32a0 ! t0__t0_2a0 ! b_e_t04a0 ! t0__5t0 | ||
| 1928 | LSYM(x175) t0__8a0 ! t0__2t0_a0 ! b_e_5t0 ! t0__2t0_a0 | ||
| 1929 | LSYM(x176) t0__5a0 ! t0__4t0_a0 ! b_e_8t0 ! t0__t0_a0 | ||
| 1930 | LSYM(x177) t0__5a0 ! t0__4t0_a0 ! b_e_8t0a0 ! t0__t0_a0 | ||
| 1931 | LSYM(x178) t0__5a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__8t0_a0 | ||
| 1932 | LSYM(x179) t0__5a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__8t0_a0 | ||
| 1933 | LSYM(x180) t0__9a0 ! t0__5t0 ! b_e_shift ! r__r_4t0 | ||
| 1934 | LSYM(x181) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0 | ||
| 1935 | LSYM(x182) t0__9a0 ! t0__5t0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 1936 | LSYM(x183) t0__9a0 ! t0__5t0 ! b_e_2t0a0 ! t0__2t0_a0 | ||
| 1937 | LSYM(x184) t0__5a0 ! t0__9t0 ! b_e_4t0 ! t0__t0_a0 | ||
| 1938 | LSYM(x185) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0 | ||
| 1939 | LSYM(x186) t0__32a0 ! t0__t0ma0 ! b_e_2t0 ! t0__3t0 | ||
| 1940 | LSYM(x187) t0__9a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__5t0 | ||
| 1941 | LSYM(x188) t0__9a0 ! t0__5t0 ! b_e_4t0 ! t0__t0_2a0 | ||
| 1942 | LSYM(x189) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__9t0 | ||
| 1943 | LSYM(x190) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__5t0 | ||
| 1944 | LSYM(x191) t0__64a0 ! t0__3t0 ! b_e_t0 ! t0__t0ma0 | ||
| 1945 | LSYM(x192) t0__8a0 ! t0__3t0 ! b_e_shift ! r__r_8t0 | ||
| 1946 | LSYM(x193) t0__8a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0 | ||
| 1947 | LSYM(x194) t0__8a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 1948 | LSYM(x195) t0__8a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0 | ||
| 1949 | LSYM(x196) t0__8a0 ! t0__3t0 ! b_e_4t0 ! t0__2t0_a0 | ||
| 1950 | LSYM(x197) t0__8a0 ! t0__3t0 ! b_e_4t0a0 ! t0__2t0_a0 | ||
| 1951 | LSYM(x198) t0__64a0 ! t0__t0_2a0 ! b_e_t0 ! t0__3t0 | ||
| 1952 | LSYM(x199) t0__8a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
| 1953 | LSYM(x200) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_8t0 | ||
| 1954 | LSYM(x201) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__8t0_a0 | ||
| 1955 | LSYM(x202) t0__5a0 ! t0__5t0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 1956 | LSYM(x203) t0__5a0 ! t0__5t0 ! b_e_2t0a0 ! t0__4t0_a0 | ||
| 1957 | LSYM(x204) t0__8a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__3t0 | ||
| 1958 | LSYM(x205) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__5t0 | ||
| 1959 | LSYM(x206) t0__64a0 ! t0__t0_4a0 ! b_e_t02a0 ! t0__3t0 | ||
| 1960 | LSYM(x207) t0__8a0 ! t0__2t0_a0 ! b_e_3t0 ! t0__4t0_a0 | ||
| 1961 | LSYM(x208) t0__5a0 ! t0__5t0 ! b_e_8t0 ! t0__t0_a0 | ||
| 1962 | LSYM(x209) t0__5a0 ! t0__5t0 ! b_e_8t0a0 ! t0__t0_a0 | ||
| 1963 | LSYM(x210) t0__5a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__5t0 | ||
| 1964 | LSYM(x211) t0__5a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__5t0 | ||
| 1965 | LSYM(x212) t0__3a0 ! t0__4t0_a0 ! b_e_4t0 ! t0__4t0_a0 | ||
| 1966 | LSYM(x213) t0__3a0 ! t0__4t0_a0 ! b_e_4t0a0 ! t0__4t0_a0 | ||
| 1967 | LSYM(x214) t0__9a0 ! t0__t0_4a0 ! b_e_2t04a0 ! t0__8t0_a0 | ||
| 1968 | LSYM(x215) t0__5a0 ! t0__4t0_a0 ! b_e_5t0 ! t0__2t0_a0 | ||
| 1969 | LSYM(x216) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_8t0 | ||
| 1970 | LSYM(x217) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0 | ||
| 1971 | LSYM(x218) t0__9a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 1972 | LSYM(x219) t0__9a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0 | ||
| 1973 | LSYM(x220) t0__3a0 ! t0__9t0 ! b_e_4t0 ! t0__2t0_a0 | ||
| 1974 | LSYM(x221) t0__3a0 ! t0__9t0 ! b_e_4t0a0 ! t0__2t0_a0 | ||
| 1975 | LSYM(x222) t0__9a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__3t0 | ||
| 1976 | LSYM(x223) t0__9a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
| 1977 | LSYM(x224) t0__9a0 ! t0__3t0 ! b_e_8t0 ! t0__t0_a0 | ||
| 1978 | LSYM(x225) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__5t0 | ||
| 1979 | LSYM(x226) t0__3a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__32t0 | ||
| 1980 | LSYM(x227) t0__9a0 ! t0__5t0 ! b_e_t02a0 ! t0__5t0 | ||
| 1981 | LSYM(x228) t0__9a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__3t0 | ||
| 1982 | LSYM(x229) t0__9a0 ! t0__2t0_a0 ! b_e_4t0a0 ! t0__3t0 | ||
| 1983 | LSYM(x230) t0__9a0 ! t0__5t0 ! b_e_5t0 ! t0__t0_a0 | ||
| 1984 | LSYM(x231) t0__9a0 ! t0__2t0_a0 ! b_e_3t0 ! t0__4t0_a0 | ||
| 1985 | LSYM(x232) t0__3a0 ! t0__2t0_a0 ! b_e_8t0 ! t0__4t0_a0 | ||
| 1986 | LSYM(x233) t0__3a0 ! t0__2t0_a0 ! b_e_8t0a0 ! t0__4t0_a0 | ||
| 1987 | LSYM(x234) t0__3a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__9t0 | ||
| 1988 | LSYM(x235) t0__3a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__9t0 | ||
| 1989 | LSYM(x236) t0__9a0 ! t0__2t0_a0 ! b_e_4t08a0 ! t0__3t0 | ||
| 1990 | LSYM(x237) t0__16a0 ! t0__5t0 ! b_e_3t0 ! t0__t0ma0 | ||
| 1991 | LSYM(x238) t0__3a0 ! t0__4t0_a0 ! b_e_2t04a0 ! t0__9t0 | ||
| 1992 | LSYM(x239) t0__16a0 ! t0__5t0 ! b_e_t0ma0 ! t0__3t0 | ||
| 1993 | LSYM(x240) t0__9a0 ! t0__t0_a0 ! b_e_8t0 ! t0__3t0 | ||
| 1994 | LSYM(x241) t0__9a0 ! t0__t0_a0 ! b_e_8t0a0 ! t0__3t0 | ||
| 1995 | LSYM(x242) t0__5a0 ! t0__3t0 ! b_e_2t0 ! t0__8t0_a0 | ||
| 1996 | LSYM(x243) t0__9a0 ! t0__9t0 ! b_e_t0 ! t0__3t0 | ||
| 1997 | LSYM(x244) t0__5a0 ! t0__3t0 ! b_e_4t0 ! t0__4t0_a0 | ||
| 1998 | LSYM(x245) t0__8a0 ! t0__3t0 ! b_e_5t0 ! t0__2t0_a0 | ||
| 1999 | LSYM(x246) t0__5a0 ! t0__8t0_a0 ! b_e_2t0 ! t0__3t0 | ||
| 2000 | LSYM(x247) t0__5a0 ! t0__8t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
| 2001 | LSYM(x248) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_8t0 | ||
| 2002 | LSYM(x249) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__8t0_a0 | ||
| 2003 | LSYM(x250) t0__5a0 ! t0__5t0 ! b_e_2t0 ! t0__5t0 | ||
| 2004 | LSYM(x251) t0__5a0 ! t0__5t0 ! b_e_2t0a0 ! t0__5t0 | ||
| 2005 | LSYM(x252) t0__64a0 ! t0__t0ma0 ! b_e_shift ! r__r_4t0 | ||
| 2006 | LSYM(x253) t0__64a0 ! t0__t0ma0 ! b_e_t0 ! t0__4t0_a0 | ||
| 2007 | LSYM(x254) t0__128a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0 | ||
| 2008 | LSYM(x255) t0__256a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
| 2009 | /*1040 insts before this. */ | ||
| 2010 | LSYM(ret_t0) MILLIRET | ||
| 2011 | LSYM(e_t0) r__r_t0 | ||
| 2012 | LSYM(e_shift) a1_ne_0_b_l2 | ||
| 2013 | a0__256a0 /* a0 <<= 8 *********** */ | ||
| 2014 | MILLIRETN | ||
| 2015 | LSYM(e_t0ma0) a1_ne_0_b_l0 | ||
| 2016 | t0__t0ma0 | ||
| 2017 | MILLIRET | ||
| 2018 | r__r_t0 | ||
| 2019 | LSYM(e_t0a0) a1_ne_0_b_l0 | ||
| 2020 | t0__t0_a0 | ||
| 2021 | MILLIRET | ||
| 2022 | r__r_t0 | ||
| 2023 | LSYM(e_t02a0) a1_ne_0_b_l0 | ||
| 2024 | t0__t0_2a0 | ||
| 2025 | MILLIRET | ||
| 2026 | r__r_t0 | ||
| 2027 | LSYM(e_t04a0) a1_ne_0_b_l0 | ||
| 2028 | t0__t0_4a0 | ||
| 2029 | MILLIRET | ||
| 2030 | r__r_t0 | ||
| 2031 | LSYM(e_2t0) a1_ne_0_b_l1 | ||
| 2032 | r__r_2t0 | ||
| 2033 | MILLIRETN | ||
| 2034 | LSYM(e_2t0a0) a1_ne_0_b_l0 | ||
| 2035 | t0__2t0_a0 | ||
| 2036 | MILLIRET | ||
| 2037 | r__r_t0 | ||
| 2038 | LSYM(e2t04a0) t0__t0_2a0 | ||
| 2039 | a1_ne_0_b_l1 | ||
| 2040 | r__r_2t0 | ||
| 2041 | MILLIRETN | ||
| 2042 | LSYM(e_3t0) a1_ne_0_b_l0 | ||
| 2043 | t0__3t0 | ||
| 2044 | MILLIRET | ||
| 2045 | r__r_t0 | ||
| 2046 | LSYM(e_4t0) a1_ne_0_b_l1 | ||
| 2047 | r__r_4t0 | ||
| 2048 | MILLIRETN | ||
| 2049 | LSYM(e_4t0a0) a1_ne_0_b_l0 | ||
| 2050 | t0__4t0_a0 | ||
| 2051 | MILLIRET | ||
| 2052 | r__r_t0 | ||
| 2053 | LSYM(e4t08a0) t0__t0_2a0 | ||
| 2054 | a1_ne_0_b_l1 | ||
| 2055 | r__r_4t0 | ||
| 2056 | MILLIRETN | ||
| 2057 | LSYM(e_5t0) a1_ne_0_b_l0 | ||
| 2058 | t0__5t0 | ||
| 2059 | MILLIRET | ||
| 2060 | r__r_t0 | ||
| 2061 | LSYM(e_8t0) a1_ne_0_b_l1 | ||
| 2062 | r__r_8t0 | ||
| 2063 | MILLIRETN | ||
| 2064 | LSYM(e_8t0a0) a1_ne_0_b_l0 | ||
| 2065 | t0__8t0_a0 | ||
| 2066 | MILLIRET | ||
| 2067 | r__r_t0 | ||
| 2068 | |||
| 2069 | .procend | ||
| 2070 | .end | ||
| 2071 | #endif | ||
diff --git a/arch/parisc/lib/milli/milli.h b/arch/parisc/lib/milli/milli.h new file mode 100644 index 000000000000..19ac79f336de --- /dev/null +++ b/arch/parisc/lib/milli/milli.h | |||
| @@ -0,0 +1,165 @@ | |||
| 1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
| 2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
| 3 | and Alan Modra <alan@linuxcare.com.au>. | ||
| 4 | |||
| 5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
| 6 | |||
| 7 | This file is part of GCC and is released under the terms of | ||
| 8 | of the GNU General Public License as published by the Free Software | ||
| 9 | Foundation; either version 2, or (at your option) any later version. | ||
| 10 | See the file COPYING in the top-level GCC source directory for a copy | ||
| 11 | of the license. */ | ||
| 12 | |||
| 13 | #ifndef _PA_MILLI_H_ | ||
| 14 | #define _PA_MILLI_H_ | ||
| 15 | |||
| 16 | #define L_dyncall | ||
| 17 | #define L_divI | ||
| 18 | #define L_divU | ||
| 19 | #define L_remI | ||
| 20 | #define L_remU | ||
| 21 | #define L_div_const | ||
| 22 | #define L_mulI | ||
| 23 | |||
| 24 | #ifdef CONFIG_64BIT | ||
| 25 | .level 2.0w | ||
| 26 | #endif | ||
| 27 | |||
| 28 | /* Hardware General Registers. */ | ||
| 29 | r0: .reg %r0 | ||
| 30 | r1: .reg %r1 | ||
| 31 | r2: .reg %r2 | ||
| 32 | r3: .reg %r3 | ||
| 33 | r4: .reg %r4 | ||
| 34 | r5: .reg %r5 | ||
| 35 | r6: .reg %r6 | ||
| 36 | r7: .reg %r7 | ||
| 37 | r8: .reg %r8 | ||
| 38 | r9: .reg %r9 | ||
| 39 | r10: .reg %r10 | ||
| 40 | r11: .reg %r11 | ||
| 41 | r12: .reg %r12 | ||
| 42 | r13: .reg %r13 | ||
| 43 | r14: .reg %r14 | ||
| 44 | r15: .reg %r15 | ||
| 45 | r16: .reg %r16 | ||
| 46 | r17: .reg %r17 | ||
| 47 | r18: .reg %r18 | ||
| 48 | r19: .reg %r19 | ||
| 49 | r20: .reg %r20 | ||
| 50 | r21: .reg %r21 | ||
| 51 | r22: .reg %r22 | ||
| 52 | r23: .reg %r23 | ||
| 53 | r24: .reg %r24 | ||
| 54 | r25: .reg %r25 | ||
| 55 | r26: .reg %r26 | ||
| 56 | r27: .reg %r27 | ||
| 57 | r28: .reg %r28 | ||
| 58 | r29: .reg %r29 | ||
| 59 | r30: .reg %r30 | ||
| 60 | r31: .reg %r31 | ||
| 61 | |||
| 62 | /* Hardware Space Registers. */ | ||
| 63 | sr0: .reg %sr0 | ||
| 64 | sr1: .reg %sr1 | ||
| 65 | sr2: .reg %sr2 | ||
| 66 | sr3: .reg %sr3 | ||
| 67 | sr4: .reg %sr4 | ||
| 68 | sr5: .reg %sr5 | ||
| 69 | sr6: .reg %sr6 | ||
| 70 | sr7: .reg %sr7 | ||
| 71 | |||
| 72 | /* Hardware Floating Point Registers. */ | ||
| 73 | fr0: .reg %fr0 | ||
| 74 | fr1: .reg %fr1 | ||
| 75 | fr2: .reg %fr2 | ||
| 76 | fr3: .reg %fr3 | ||
| 77 | fr4: .reg %fr4 | ||
| 78 | fr5: .reg %fr5 | ||
| 79 | fr6: .reg %fr6 | ||
| 80 | fr7: .reg %fr7 | ||
| 81 | fr8: .reg %fr8 | ||
| 82 | fr9: .reg %fr9 | ||
| 83 | fr10: .reg %fr10 | ||
| 84 | fr11: .reg %fr11 | ||
| 85 | fr12: .reg %fr12 | ||
| 86 | fr13: .reg %fr13 | ||
| 87 | fr14: .reg %fr14 | ||
| 88 | fr15: .reg %fr15 | ||
| 89 | |||
| 90 | /* Hardware Control Registers. */ | ||
| 91 | cr11: .reg %cr11 | ||
| 92 | sar: .reg %cr11 /* Shift Amount Register */ | ||
| 93 | |||
| 94 | /* Software Architecture General Registers. */ | ||
| 95 | rp: .reg r2 /* return pointer */ | ||
| 96 | #ifdef CONFIG_64BIT | ||
| 97 | mrp: .reg r2 /* millicode return pointer */ | ||
| 98 | #else | ||
| 99 | mrp: .reg r31 /* millicode return pointer */ | ||
| 100 | #endif | ||
| 101 | ret0: .reg r28 /* return value */ | ||
| 102 | ret1: .reg r29 /* return value (high part of double) */ | ||
| 103 | sp: .reg r30 /* stack pointer */ | ||
| 104 | dp: .reg r27 /* data pointer */ | ||
| 105 | arg0: .reg r26 /* argument */ | ||
| 106 | arg1: .reg r25 /* argument or high part of double argument */ | ||
| 107 | arg2: .reg r24 /* argument */ | ||
| 108 | arg3: .reg r23 /* argument or high part of double argument */ | ||
| 109 | |||
| 110 | /* Software Architecture Space Registers. */ | ||
| 111 | /* sr0 ; return link from BLE */ | ||
| 112 | sret: .reg sr1 /* return value */ | ||
| 113 | sarg: .reg sr1 /* argument */ | ||
| 114 | /* sr4 ; PC SPACE tracker */ | ||
| 115 | /* sr5 ; process private data */ | ||
| 116 | |||
| 117 | /* Frame Offsets (millicode convention!) Used when calling other | ||
| 118 | millicode routines. Stack unwinding is dependent upon these | ||
| 119 | definitions. */ | ||
| 120 | r31_slot: .equ -20 /* "current RP" slot */ | ||
| 121 | sr0_slot: .equ -16 /* "static link" slot */ | ||
| 122 | #if defined(CONFIG_64BIT) | ||
| 123 | mrp_slot: .equ -16 /* "current RP" slot */ | ||
| 124 | psp_slot: .equ -8 /* "previous SP" slot */ | ||
| 125 | #else | ||
| 126 | mrp_slot: .equ -20 /* "current RP" slot (replacing "r31_slot") */ | ||
| 127 | #endif | ||
| 128 | |||
| 129 | |||
| 130 | #define DEFINE(name,value)name: .EQU value | ||
| 131 | #define RDEFINE(name,value)name: .REG value | ||
| 132 | #ifdef milliext | ||
| 133 | #define MILLI_BE(lbl) BE lbl(sr7,r0) | ||
| 134 | #define MILLI_BEN(lbl) BE,n lbl(sr7,r0) | ||
| 135 | #define MILLI_BLE(lbl) BLE lbl(sr7,r0) | ||
| 136 | #define MILLI_BLEN(lbl) BLE,n lbl(sr7,r0) | ||
| 137 | #define MILLIRETN BE,n 0(sr0,mrp) | ||
| 138 | #define MILLIRET BE 0(sr0,mrp) | ||
| 139 | #define MILLI_RETN BE,n 0(sr0,mrp) | ||
| 140 | #define MILLI_RET BE 0(sr0,mrp) | ||
| 141 | #else | ||
| 142 | #define MILLI_BE(lbl) B lbl | ||
| 143 | #define MILLI_BEN(lbl) B,n lbl | ||
| 144 | #define MILLI_BLE(lbl) BL lbl,mrp | ||
| 145 | #define MILLI_BLEN(lbl) BL,n lbl,mrp | ||
| 146 | #define MILLIRETN BV,n 0(mrp) | ||
| 147 | #define MILLIRET BV 0(mrp) | ||
| 148 | #define MILLI_RETN BV,n 0(mrp) | ||
| 149 | #define MILLI_RET BV 0(mrp) | ||
| 150 | #endif | ||
| 151 | |||
| 152 | #define CAT(a,b) a##b | ||
| 153 | |||
| 154 | #define SUBSPA_MILLI .section .text | ||
| 155 | #define SUBSPA_MILLI_DIV .section .text.div,"ax",@progbits! .align 16 | ||
| 156 | #define SUBSPA_MILLI_MUL .section .text.mul,"ax",@progbits! .align 16 | ||
| 157 | #define ATTR_MILLI | ||
| 158 | #define SUBSPA_DATA .section .data | ||
| 159 | #define ATTR_DATA | ||
| 160 | #define GLOBAL $global$ | ||
| 161 | #define GSYM(sym) !sym: | ||
| 162 | #define LSYM(sym) !CAT(.L,sym:) | ||
| 163 | #define LREF(sym) CAT(.L,sym) | ||
| 164 | |||
| 165 | #endif /*_PA_MILLI_H_*/ | ||
diff --git a/arch/parisc/lib/milli/mulI.S b/arch/parisc/lib/milli/mulI.S new file mode 100644 index 000000000000..4c7e0c36d15e --- /dev/null +++ b/arch/parisc/lib/milli/mulI.S | |||
| @@ -0,0 +1,474 @@ | |||
| 1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
| 2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
| 3 | and Alan Modra <alan@linuxcare.com.au>. | ||
| 4 | |||
| 5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
| 6 | |||
| 7 | This file is part of GCC and is released under the terms of | ||
| 8 | of the GNU General Public License as published by the Free Software | ||
| 9 | Foundation; either version 2, or (at your option) any later version. | ||
| 10 | See the file COPYING in the top-level GCC source directory for a copy | ||
| 11 | of the license. */ | ||
| 12 | |||
| 13 | #include "milli.h" | ||
| 14 | |||
| 15 | #ifdef L_mulI | ||
| 16 | /* VERSION "@(#)$$mulI $ Revision: 12.4 $ $ Date: 94/03/17 17:18:51 $" */ | ||
| 17 | /****************************************************************************** | ||
| 18 | This routine is used on PA2.0 processors when gcc -mno-fpregs is used | ||
| 19 | |||
| 20 | ROUTINE: $$mulI | ||
| 21 | |||
| 22 | |||
| 23 | DESCRIPTION: | ||
| 24 | |||
| 25 | $$mulI multiplies two single word integers, giving a single | ||
| 26 | word result. | ||
| 27 | |||
| 28 | |||
| 29 | INPUT REGISTERS: | ||
| 30 | |||
| 31 | arg0 = Operand 1 | ||
| 32 | arg1 = Operand 2 | ||
| 33 | r31 == return pc | ||
| 34 | sr0 == return space when called externally | ||
| 35 | |||
| 36 | |||
| 37 | OUTPUT REGISTERS: | ||
| 38 | |||
| 39 | arg0 = undefined | ||
| 40 | arg1 = undefined | ||
| 41 | ret1 = result | ||
| 42 | |||
| 43 | OTHER REGISTERS AFFECTED: | ||
| 44 | |||
| 45 | r1 = undefined | ||
| 46 | |||
| 47 | SIDE EFFECTS: | ||
| 48 | |||
| 49 | Causes a trap under the following conditions: NONE | ||
| 50 | Changes memory at the following places: NONE | ||
| 51 | |||
| 52 | PERMISSIBLE CONTEXT: | ||
| 53 | |||
| 54 | Unwindable | ||
| 55 | Does not create a stack frame | ||
| 56 | Is usable for internal or external microcode | ||
| 57 | |||
| 58 | DISCUSSION: | ||
| 59 | |||
| 60 | Calls other millicode routines via mrp: NONE | ||
| 61 | Calls other millicode routines: NONE | ||
| 62 | |||
| 63 | ***************************************************************************/ | ||
| 64 | |||
| 65 | |||
| 66 | #define a0 %arg0 | ||
| 67 | #define a1 %arg1 | ||
| 68 | #define t0 %r1 | ||
| 69 | #define r %ret1 | ||
| 70 | |||
| 71 | #define a0__128a0 zdep a0,24,25,a0 | ||
| 72 | #define a0__256a0 zdep a0,23,24,a0 | ||
| 73 | #define a1_ne_0_b_l0 comb,<> a1,0,LREF(l0) | ||
| 74 | #define a1_ne_0_b_l1 comb,<> a1,0,LREF(l1) | ||
| 75 | #define a1_ne_0_b_l2 comb,<> a1,0,LREF(l2) | ||
| 76 | #define b_n_ret_t0 b,n LREF(ret_t0) | ||
| 77 | #define b_e_shift b LREF(e_shift) | ||
| 78 | #define b_e_t0ma0 b LREF(e_t0ma0) | ||
| 79 | #define b_e_t0 b LREF(e_t0) | ||
| 80 | #define b_e_t0a0 b LREF(e_t0a0) | ||
| 81 | #define b_e_t02a0 b LREF(e_t02a0) | ||
| 82 | #define b_e_t04a0 b LREF(e_t04a0) | ||
| 83 | #define b_e_2t0 b LREF(e_2t0) | ||
| 84 | #define b_e_2t0a0 b LREF(e_2t0a0) | ||
| 85 | #define b_e_2t04a0 b LREF(e2t04a0) | ||
| 86 | #define b_e_3t0 b LREF(e_3t0) | ||
| 87 | #define b_e_4t0 b LREF(e_4t0) | ||
| 88 | #define b_e_4t0a0 b LREF(e_4t0a0) | ||
| 89 | #define b_e_4t08a0 b LREF(e4t08a0) | ||
| 90 | #define b_e_5t0 b LREF(e_5t0) | ||
| 91 | #define b_e_8t0 b LREF(e_8t0) | ||
| 92 | #define b_e_8t0a0 b LREF(e_8t0a0) | ||
| 93 | #define r__r_a0 add r,a0,r | ||
| 94 | #define r__r_2a0 sh1add a0,r,r | ||
| 95 | #define r__r_4a0 sh2add a0,r,r | ||
| 96 | #define r__r_8a0 sh3add a0,r,r | ||
| 97 | #define r__r_t0 add r,t0,r | ||
| 98 | #define r__r_2t0 sh1add t0,r,r | ||
| 99 | #define r__r_4t0 sh2add t0,r,r | ||
| 100 | #define r__r_8t0 sh3add t0,r,r | ||
| 101 | #define t0__3a0 sh1add a0,a0,t0 | ||
| 102 | #define t0__4a0 sh2add a0,0,t0 | ||
| 103 | #define t0__5a0 sh2add a0,a0,t0 | ||
| 104 | #define t0__8a0 sh3add a0,0,t0 | ||
| 105 | #define t0__9a0 sh3add a0,a0,t0 | ||
| 106 | #define t0__16a0 zdep a0,27,28,t0 | ||
| 107 | #define t0__32a0 zdep a0,26,27,t0 | ||
| 108 | #define t0__64a0 zdep a0,25,26,t0 | ||
| 109 | #define t0__128a0 zdep a0,24,25,t0 | ||
| 110 | #define t0__t0ma0 sub t0,a0,t0 | ||
| 111 | #define t0__t0_a0 add t0,a0,t0 | ||
| 112 | #define t0__t0_2a0 sh1add a0,t0,t0 | ||
| 113 | #define t0__t0_4a0 sh2add a0,t0,t0 | ||
| 114 | #define t0__t0_8a0 sh3add a0,t0,t0 | ||
| 115 | #define t0__2t0_a0 sh1add t0,a0,t0 | ||
| 116 | #define t0__3t0 sh1add t0,t0,t0 | ||
| 117 | #define t0__4t0 sh2add t0,0,t0 | ||
| 118 | #define t0__4t0_a0 sh2add t0,a0,t0 | ||
| 119 | #define t0__5t0 sh2add t0,t0,t0 | ||
| 120 | #define t0__8t0 sh3add t0,0,t0 | ||
| 121 | #define t0__8t0_a0 sh3add t0,a0,t0 | ||
| 122 | #define t0__9t0 sh3add t0,t0,t0 | ||
| 123 | #define t0__16t0 zdep t0,27,28,t0 | ||
| 124 | #define t0__32t0 zdep t0,26,27,t0 | ||
| 125 | #define t0__256a0 zdep a0,23,24,t0 | ||
| 126 | |||
| 127 | |||
| 128 | SUBSPA_MILLI | ||
| 129 | ATTR_MILLI | ||
| 130 | .align 16 | ||
| 131 | .proc | ||
| 132 | .callinfo millicode | ||
| 133 | .export $$mulI,millicode | ||
| 134 | GSYM($$mulI) | ||
| 135 | combt,<<= a1,a0,LREF(l4) /* swap args if unsigned a1>a0 */ | ||
| 136 | copy 0,r /* zero out the result */ | ||
| 137 | xor a0,a1,a0 /* swap a0 & a1 using the */ | ||
| 138 | xor a0,a1,a1 /* old xor trick */ | ||
| 139 | xor a0,a1,a0 | ||
| 140 | LSYM(l4) | ||
| 141 | combt,<= 0,a0,LREF(l3) /* if a0>=0 then proceed like unsigned */ | ||
| 142 | zdep a1,30,8,t0 /* t0 = (a1&0xff)<<1 ********* */ | ||
| 143 | sub,> 0,a1,t0 /* otherwise negate both and */ | ||
| 144 | combt,<=,n a0,t0,LREF(l2) /* swap back if |a0|<|a1| */ | ||
| 145 | sub 0,a0,a1 | ||
| 146 | movb,tr,n t0,a0,LREF(l2) /* 10th inst. */ | ||
| 147 | |||
| 148 | LSYM(l0) r__r_t0 /* add in this partial product */ | ||
| 149 | LSYM(l1) a0__256a0 /* a0 <<= 8 ****************** */ | ||
| 150 | LSYM(l2) zdep a1,30,8,t0 /* t0 = (a1&0xff)<<1 ********* */ | ||
| 151 | LSYM(l3) blr t0,0 /* case on these 8 bits ****** */ | ||
| 152 | extru a1,23,24,a1 /* a1 >>= 8 ****************** */ | ||
| 153 | |||
| 154 | /*16 insts before this. */ | ||
| 155 | /* a0 <<= 8 ************************** */ | ||
| 156 | LSYM(x0) a1_ne_0_b_l2 ! a0__256a0 ! MILLIRETN ! nop | ||
| 157 | LSYM(x1) a1_ne_0_b_l1 ! r__r_a0 ! MILLIRETN ! nop | ||
| 158 | LSYM(x2) a1_ne_0_b_l1 ! r__r_2a0 ! MILLIRETN ! nop | ||
| 159 | LSYM(x3) a1_ne_0_b_l0 ! t0__3a0 ! MILLIRET ! r__r_t0 | ||
| 160 | LSYM(x4) a1_ne_0_b_l1 ! r__r_4a0 ! MILLIRETN ! nop | ||
| 161 | LSYM(x5) a1_ne_0_b_l0 ! t0__5a0 ! MILLIRET ! r__r_t0 | ||
| 162 | LSYM(x6) t0__3a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN | ||
| 163 | LSYM(x7) t0__3a0 ! a1_ne_0_b_l0 ! r__r_4a0 ! b_n_ret_t0 | ||
| 164 | LSYM(x8) a1_ne_0_b_l1 ! r__r_8a0 ! MILLIRETN ! nop | ||
| 165 | LSYM(x9) a1_ne_0_b_l0 ! t0__9a0 ! MILLIRET ! r__r_t0 | ||
| 166 | LSYM(x10) t0__5a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN | ||
| 167 | LSYM(x11) t0__3a0 ! a1_ne_0_b_l0 ! r__r_8a0 ! b_n_ret_t0 | ||
| 168 | LSYM(x12) t0__3a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN | ||
| 169 | LSYM(x13) t0__5a0 ! a1_ne_0_b_l0 ! r__r_8a0 ! b_n_ret_t0 | ||
| 170 | LSYM(x14) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 171 | LSYM(x15) t0__5a0 ! a1_ne_0_b_l0 ! t0__3t0 ! b_n_ret_t0 | ||
| 172 | LSYM(x16) t0__16a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
| 173 | LSYM(x17) t0__9a0 ! a1_ne_0_b_l0 ! t0__t0_8a0 ! b_n_ret_t0 | ||
| 174 | LSYM(x18) t0__9a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN | ||
| 175 | LSYM(x19) t0__9a0 ! a1_ne_0_b_l0 ! t0__2t0_a0 ! b_n_ret_t0 | ||
| 176 | LSYM(x20) t0__5a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN | ||
| 177 | LSYM(x21) t0__5a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0 | ||
| 178 | LSYM(x22) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 179 | LSYM(x23) t0__5a0 ! t0__2t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 180 | LSYM(x24) t0__3a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN | ||
| 181 | LSYM(x25) t0__5a0 ! a1_ne_0_b_l0 ! t0__5t0 ! b_n_ret_t0 | ||
| 182 | LSYM(x26) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 183 | LSYM(x27) t0__3a0 ! a1_ne_0_b_l0 ! t0__9t0 ! b_n_ret_t0 | ||
| 184 | LSYM(x28) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 185 | LSYM(x29) t0__3a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
| 186 | LSYM(x30) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_2t0 | ||
| 187 | LSYM(x31) t0__32a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
| 188 | LSYM(x32) t0__32a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
| 189 | LSYM(x33) t0__8a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0 | ||
| 190 | LSYM(x34) t0__16a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 191 | LSYM(x35) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__t0_8a0 | ||
| 192 | LSYM(x36) t0__9a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN | ||
| 193 | LSYM(x37) t0__9a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0 | ||
| 194 | LSYM(x38) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 195 | LSYM(x39) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 196 | LSYM(x40) t0__5a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN | ||
| 197 | LSYM(x41) t0__5a0 ! a1_ne_0_b_l0 ! t0__8t0_a0 ! b_n_ret_t0 | ||
| 198 | LSYM(x42) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 199 | LSYM(x43) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 200 | LSYM(x44) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 201 | LSYM(x45) t0__9a0 ! a1_ne_0_b_l0 ! t0__5t0 ! b_n_ret_t0 | ||
| 202 | LSYM(x46) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_a0 | ||
| 203 | LSYM(x47) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_2a0 | ||
| 204 | LSYM(x48) t0__3a0 ! a1_ne_0_b_l0 ! t0__16t0 ! b_n_ret_t0 | ||
| 205 | LSYM(x49) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_4a0 | ||
| 206 | LSYM(x50) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_2t0 | ||
| 207 | LSYM(x51) t0__9a0 ! t0__t0_8a0 ! b_e_t0 ! t0__3t0 | ||
| 208 | LSYM(x52) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 209 | LSYM(x53) t0__3a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
| 210 | LSYM(x54) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_2t0 | ||
| 211 | LSYM(x55) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__2t0_a0 | ||
| 212 | LSYM(x56) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
| 213 | LSYM(x57) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__3t0 | ||
| 214 | LSYM(x58) t0__3a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 215 | LSYM(x59) t0__9a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__3t0 | ||
| 216 | LSYM(x60) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_4t0 | ||
| 217 | LSYM(x61) t0__5a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0 | ||
| 218 | LSYM(x62) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0 | ||
| 219 | LSYM(x63) t0__64a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
| 220 | LSYM(x64) t0__64a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
| 221 | LSYM(x65) t0__8a0 ! a1_ne_0_b_l0 ! t0__8t0_a0 ! b_n_ret_t0 | ||
| 222 | LSYM(x66) t0__32a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 223 | LSYM(x67) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 224 | LSYM(x68) t0__8a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 225 | LSYM(x69) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
| 226 | LSYM(x70) t0__64a0 ! t0__t0_4a0 ! b_e_t0 ! t0__t0_2a0 | ||
| 227 | LSYM(x71) t0__9a0 ! t0__8t0 ! b_e_t0 ! t0__t0ma0 | ||
| 228 | LSYM(x72) t0__9a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN | ||
| 229 | LSYM(x73) t0__9a0 ! t0__8t0_a0 ! b_e_shift ! r__r_t0 | ||
| 230 | LSYM(x74) t0__9a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 231 | LSYM(x75) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 232 | LSYM(x76) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 233 | LSYM(x77) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
| 234 | LSYM(x78) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 235 | LSYM(x79) t0__16a0 ! t0__5t0 ! b_e_t0 ! t0__t0ma0 | ||
| 236 | LSYM(x80) t0__16a0 ! t0__5t0 ! b_e_shift ! r__r_t0 | ||
| 237 | LSYM(x81) t0__9a0 ! t0__9t0 ! b_e_shift ! r__r_t0 | ||
| 238 | LSYM(x82) t0__5a0 ! t0__8t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 239 | LSYM(x83) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 240 | LSYM(x84) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 241 | LSYM(x85) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__5t0 | ||
| 242 | LSYM(x86) t0__5a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 243 | LSYM(x87) t0__9a0 ! t0__9t0 ! b_e_t02a0 ! t0__t0_4a0 | ||
| 244 | LSYM(x88) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
| 245 | LSYM(x89) t0__5a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
| 246 | LSYM(x90) t0__9a0 ! t0__5t0 ! b_e_shift ! r__r_2t0 | ||
| 247 | LSYM(x91) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__2t0_a0 | ||
| 248 | LSYM(x92) t0__5a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__2t0_a0 | ||
| 249 | LSYM(x93) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__3t0 | ||
| 250 | LSYM(x94) t0__9a0 ! t0__5t0 ! b_e_2t0 ! t0__t0_2a0 | ||
| 251 | LSYM(x95) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__5t0 | ||
| 252 | LSYM(x96) t0__8a0 ! t0__3t0 ! b_e_shift ! r__r_4t0 | ||
| 253 | LSYM(x97) t0__8a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0 | ||
| 254 | LSYM(x98) t0__32a0 ! t0__3t0 ! b_e_t0 ! t0__t0_2a0 | ||
| 255 | LSYM(x99) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__3t0 | ||
| 256 | LSYM(x100) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_4t0 | ||
| 257 | LSYM(x101) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0 | ||
| 258 | LSYM(x102) t0__32a0 ! t0__t0_2a0 ! b_e_t0 ! t0__3t0 | ||
| 259 | LSYM(x103) t0__5a0 ! t0__5t0 ! b_e_t02a0 ! t0__4t0_a0 | ||
| 260 | LSYM(x104) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_8t0 | ||
| 261 | LSYM(x105) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0 | ||
| 262 | LSYM(x106) t0__3a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 263 | LSYM(x107) t0__9a0 ! t0__t0_4a0 ! b_e_t02a0 ! t0__8t0_a0 | ||
| 264 | LSYM(x108) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_4t0 | ||
| 265 | LSYM(x109) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0 | ||
| 266 | LSYM(x110) t0__9a0 ! t0__3t0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 267 | LSYM(x111) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__3t0 | ||
| 268 | LSYM(x112) t0__3a0 ! t0__2t0_a0 ! b_e_t0 ! t0__16t0 | ||
| 269 | LSYM(x113) t0__9a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__3t0 | ||
| 270 | LSYM(x114) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__3t0 | ||
| 271 | LSYM(x115) t0__9a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
| 272 | LSYM(x116) t0__3a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__4t0_a0 | ||
| 273 | LSYM(x117) t0__3a0 ! t0__4t0_a0 ! b_e_t0 ! t0__9t0 | ||
| 274 | LSYM(x118) t0__3a0 ! t0__4t0_a0 ! b_e_t0a0 ! t0__9t0 | ||
| 275 | LSYM(x119) t0__3a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__9t0 | ||
| 276 | LSYM(x120) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_8t0 | ||
| 277 | LSYM(x121) t0__5a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0 | ||
| 278 | LSYM(x122) t0__5a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 279 | LSYM(x123) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0 | ||
| 280 | LSYM(x124) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_4t0 | ||
| 281 | LSYM(x125) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__5t0 | ||
| 282 | LSYM(x126) t0__64a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0 | ||
| 283 | LSYM(x127) t0__128a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
| 284 | LSYM(x128) t0__128a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
| 285 | LSYM(x129) t0__128a0 ! a1_ne_0_b_l0 ! t0__t0_a0 ! b_n_ret_t0 | ||
| 286 | LSYM(x130) t0__64a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 287 | LSYM(x131) t0__8a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 288 | LSYM(x132) t0__8a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 289 | LSYM(x133) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
| 290 | LSYM(x134) t0__8a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 291 | LSYM(x135) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__3t0 | ||
| 292 | LSYM(x136) t0__8a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
| 293 | LSYM(x137) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
| 294 | LSYM(x138) t0__8a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 295 | LSYM(x139) t0__8a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__4t0_a0 | ||
| 296 | LSYM(x140) t0__3a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__5t0 | ||
| 297 | LSYM(x141) t0__8a0 ! t0__2t0_a0 ! b_e_4t0a0 ! t0__2t0_a0 | ||
| 298 | LSYM(x142) t0__9a0 ! t0__8t0 ! b_e_2t0 ! t0__t0ma0 | ||
| 299 | LSYM(x143) t0__16a0 ! t0__9t0 ! b_e_t0 ! t0__t0ma0 | ||
| 300 | LSYM(x144) t0__9a0 ! t0__8t0 ! b_e_shift ! r__r_2t0 | ||
| 301 | LSYM(x145) t0__9a0 ! t0__8t0 ! b_e_t0 ! t0__2t0_a0 | ||
| 302 | LSYM(x146) t0__9a0 ! t0__8t0_a0 ! b_e_shift ! r__r_2t0 | ||
| 303 | LSYM(x147) t0__9a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
| 304 | LSYM(x148) t0__9a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 305 | LSYM(x149) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
| 306 | LSYM(x150) t0__9a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 307 | LSYM(x151) t0__9a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__2t0_a0 | ||
| 308 | LSYM(x152) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
| 309 | LSYM(x153) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
| 310 | LSYM(x154) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 311 | LSYM(x155) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__5t0 | ||
| 312 | LSYM(x156) t0__9a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__2t0_a0 | ||
| 313 | LSYM(x157) t0__32a0 ! t0__t0ma0 ! b_e_t02a0 ! t0__5t0 | ||
| 314 | LSYM(x158) t0__16a0 ! t0__5t0 ! b_e_2t0 ! t0__t0ma0 | ||
| 315 | LSYM(x159) t0__32a0 ! t0__5t0 ! b_e_t0 ! t0__t0ma0 | ||
| 316 | LSYM(x160) t0__5a0 ! t0__4t0 ! b_e_shift ! r__r_8t0 | ||
| 317 | LSYM(x161) t0__8a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0 | ||
| 318 | LSYM(x162) t0__9a0 ! t0__9t0 ! b_e_shift ! r__r_2t0 | ||
| 319 | LSYM(x163) t0__9a0 ! t0__9t0 ! b_e_t0 ! t0__2t0_a0 | ||
| 320 | LSYM(x164) t0__5a0 ! t0__8t0_a0 ! b_e_shift ! r__r_4t0 | ||
| 321 | LSYM(x165) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0 | ||
| 322 | LSYM(x166) t0__5a0 ! t0__8t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 323 | LSYM(x167) t0__5a0 ! t0__8t0_a0 ! b_e_2t0a0 ! t0__2t0_a0 | ||
| 324 | LSYM(x168) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_8t0 | ||
| 325 | LSYM(x169) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
| 326 | LSYM(x170) t0__32a0 ! t0__t0_2a0 ! b_e_t0 ! t0__5t0 | ||
| 327 | LSYM(x171) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__9t0 | ||
| 328 | LSYM(x172) t0__5a0 ! t0__4t0_a0 ! b_e_4t0 ! t0__2t0_a0 | ||
| 329 | LSYM(x173) t0__9a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__9t0 | ||
| 330 | LSYM(x174) t0__32a0 ! t0__t0_2a0 ! b_e_t04a0 ! t0__5t0 | ||
| 331 | LSYM(x175) t0__8a0 ! t0__2t0_a0 ! b_e_5t0 ! t0__2t0_a0 | ||
| 332 | LSYM(x176) t0__5a0 ! t0__4t0_a0 ! b_e_8t0 ! t0__t0_a0 | ||
| 333 | LSYM(x177) t0__5a0 ! t0__4t0_a0 ! b_e_8t0a0 ! t0__t0_a0 | ||
| 334 | LSYM(x178) t0__5a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__8t0_a0 | ||
| 335 | LSYM(x179) t0__5a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__8t0_a0 | ||
| 336 | LSYM(x180) t0__9a0 ! t0__5t0 ! b_e_shift ! r__r_4t0 | ||
| 337 | LSYM(x181) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0 | ||
| 338 | LSYM(x182) t0__9a0 ! t0__5t0 ! b_e_2t0 ! t0__2t0_a0 | ||
| 339 | LSYM(x183) t0__9a0 ! t0__5t0 ! b_e_2t0a0 ! t0__2t0_a0 | ||
| 340 | LSYM(x184) t0__5a0 ! t0__9t0 ! b_e_4t0 ! t0__t0_a0 | ||
| 341 | LSYM(x185) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0 | ||
| 342 | LSYM(x186) t0__32a0 ! t0__t0ma0 ! b_e_2t0 ! t0__3t0 | ||
| 343 | LSYM(x187) t0__9a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__5t0 | ||
| 344 | LSYM(x188) t0__9a0 ! t0__5t0 ! b_e_4t0 ! t0__t0_2a0 | ||
| 345 | LSYM(x189) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__9t0 | ||
| 346 | LSYM(x190) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__5t0 | ||
| 347 | LSYM(x191) t0__64a0 ! t0__3t0 ! b_e_t0 ! t0__t0ma0 | ||
| 348 | LSYM(x192) t0__8a0 ! t0__3t0 ! b_e_shift ! r__r_8t0 | ||
| 349 | LSYM(x193) t0__8a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0 | ||
| 350 | LSYM(x194) t0__8a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 351 | LSYM(x195) t0__8a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0 | ||
| 352 | LSYM(x196) t0__8a0 ! t0__3t0 ! b_e_4t0 ! t0__2t0_a0 | ||
| 353 | LSYM(x197) t0__8a0 ! t0__3t0 ! b_e_4t0a0 ! t0__2t0_a0 | ||
| 354 | LSYM(x198) t0__64a0 ! t0__t0_2a0 ! b_e_t0 ! t0__3t0 | ||
| 355 | LSYM(x199) t0__8a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
| 356 | LSYM(x200) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_8t0 | ||
| 357 | LSYM(x201) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__8t0_a0 | ||
| 358 | LSYM(x202) t0__5a0 ! t0__5t0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 359 | LSYM(x203) t0__5a0 ! t0__5t0 ! b_e_2t0a0 ! t0__4t0_a0 | ||
| 360 | LSYM(x204) t0__8a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__3t0 | ||
| 361 | LSYM(x205) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__5t0 | ||
| 362 | LSYM(x206) t0__64a0 ! t0__t0_4a0 ! b_e_t02a0 ! t0__3t0 | ||
| 363 | LSYM(x207) t0__8a0 ! t0__2t0_a0 ! b_e_3t0 ! t0__4t0_a0 | ||
| 364 | LSYM(x208) t0__5a0 ! t0__5t0 ! b_e_8t0 ! t0__t0_a0 | ||
| 365 | LSYM(x209) t0__5a0 ! t0__5t0 ! b_e_8t0a0 ! t0__t0_a0 | ||
| 366 | LSYM(x210) t0__5a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__5t0 | ||
| 367 | LSYM(x211) t0__5a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__5t0 | ||
| 368 | LSYM(x212) t0__3a0 ! t0__4t0_a0 ! b_e_4t0 ! t0__4t0_a0 | ||
| 369 | LSYM(x213) t0__3a0 ! t0__4t0_a0 ! b_e_4t0a0 ! t0__4t0_a0 | ||
| 370 | LSYM(x214) t0__9a0 ! t0__t0_4a0 ! b_e_2t04a0 ! t0__8t0_a0 | ||
| 371 | LSYM(x215) t0__5a0 ! t0__4t0_a0 ! b_e_5t0 ! t0__2t0_a0 | ||
| 372 | LSYM(x216) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_8t0 | ||
| 373 | LSYM(x217) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0 | ||
| 374 | LSYM(x218) t0__9a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0 | ||
| 375 | LSYM(x219) t0__9a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0 | ||
| 376 | LSYM(x220) t0__3a0 ! t0__9t0 ! b_e_4t0 ! t0__2t0_a0 | ||
| 377 | LSYM(x221) t0__3a0 ! t0__9t0 ! b_e_4t0a0 ! t0__2t0_a0 | ||
| 378 | LSYM(x222) t0__9a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__3t0 | ||
| 379 | LSYM(x223) t0__9a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
| 380 | LSYM(x224) t0__9a0 ! t0__3t0 ! b_e_8t0 ! t0__t0_a0 | ||
| 381 | LSYM(x225) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__5t0 | ||
| 382 | LSYM(x226) t0__3a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__32t0 | ||
| 383 | LSYM(x227) t0__9a0 ! t0__5t0 ! b_e_t02a0 ! t0__5t0 | ||
| 384 | LSYM(x228) t0__9a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__3t0 | ||
| 385 | LSYM(x229) t0__9a0 ! t0__2t0_a0 ! b_e_4t0a0 ! t0__3t0 | ||
| 386 | LSYM(x230) t0__9a0 ! t0__5t0 ! b_e_5t0 ! t0__t0_a0 | ||
| 387 | LSYM(x231) t0__9a0 ! t0__2t0_a0 ! b_e_3t0 ! t0__4t0_a0 | ||
| 388 | LSYM(x232) t0__3a0 ! t0__2t0_a0 ! b_e_8t0 ! t0__4t0_a0 | ||
| 389 | LSYM(x233) t0__3a0 ! t0__2t0_a0 ! b_e_8t0a0 ! t0__4t0_a0 | ||
| 390 | LSYM(x234) t0__3a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__9t0 | ||
| 391 | LSYM(x235) t0__3a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__9t0 | ||
| 392 | LSYM(x236) t0__9a0 ! t0__2t0_a0 ! b_e_4t08a0 ! t0__3t0 | ||
| 393 | LSYM(x237) t0__16a0 ! t0__5t0 ! b_e_3t0 ! t0__t0ma0 | ||
| 394 | LSYM(x238) t0__3a0 ! t0__4t0_a0 ! b_e_2t04a0 ! t0__9t0 | ||
| 395 | LSYM(x239) t0__16a0 ! t0__5t0 ! b_e_t0ma0 ! t0__3t0 | ||
| 396 | LSYM(x240) t0__9a0 ! t0__t0_a0 ! b_e_8t0 ! t0__3t0 | ||
| 397 | LSYM(x241) t0__9a0 ! t0__t0_a0 ! b_e_8t0a0 ! t0__3t0 | ||
| 398 | LSYM(x242) t0__5a0 ! t0__3t0 ! b_e_2t0 ! t0__8t0_a0 | ||
| 399 | LSYM(x243) t0__9a0 ! t0__9t0 ! b_e_t0 ! t0__3t0 | ||
| 400 | LSYM(x244) t0__5a0 ! t0__3t0 ! b_e_4t0 ! t0__4t0_a0 | ||
| 401 | LSYM(x245) t0__8a0 ! t0__3t0 ! b_e_5t0 ! t0__2t0_a0 | ||
| 402 | LSYM(x246) t0__5a0 ! t0__8t0_a0 ! b_e_2t0 ! t0__3t0 | ||
| 403 | LSYM(x247) t0__5a0 ! t0__8t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
| 404 | LSYM(x248) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_8t0 | ||
| 405 | LSYM(x249) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__8t0_a0 | ||
| 406 | LSYM(x250) t0__5a0 ! t0__5t0 ! b_e_2t0 ! t0__5t0 | ||
| 407 | LSYM(x251) t0__5a0 ! t0__5t0 ! b_e_2t0a0 ! t0__5t0 | ||
| 408 | LSYM(x252) t0__64a0 ! t0__t0ma0 ! b_e_shift ! r__r_4t0 | ||
| 409 | LSYM(x253) t0__64a0 ! t0__t0ma0 ! b_e_t0 ! t0__4t0_a0 | ||
| 410 | LSYM(x254) t0__128a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0 | ||
| 411 | LSYM(x255) t0__256a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
| 412 | /*1040 insts before this. */ | ||
| 413 | LSYM(ret_t0) MILLIRET | ||
| 414 | LSYM(e_t0) r__r_t0 | ||
| 415 | LSYM(e_shift) a1_ne_0_b_l2 | ||
| 416 | a0__256a0 /* a0 <<= 8 *********** */ | ||
| 417 | MILLIRETN | ||
| 418 | LSYM(e_t0ma0) a1_ne_0_b_l0 | ||
| 419 | t0__t0ma0 | ||
| 420 | MILLIRET | ||
| 421 | r__r_t0 | ||
| 422 | LSYM(e_t0a0) a1_ne_0_b_l0 | ||
| 423 | t0__t0_a0 | ||
| 424 | MILLIRET | ||
| 425 | r__r_t0 | ||
| 426 | LSYM(e_t02a0) a1_ne_0_b_l0 | ||
| 427 | t0__t0_2a0 | ||
| 428 | MILLIRET | ||
| 429 | r__r_t0 | ||
| 430 | LSYM(e_t04a0) a1_ne_0_b_l0 | ||
| 431 | t0__t0_4a0 | ||
| 432 | MILLIRET | ||
| 433 | r__r_t0 | ||
| 434 | LSYM(e_2t0) a1_ne_0_b_l1 | ||
| 435 | r__r_2t0 | ||
| 436 | MILLIRETN | ||
| 437 | LSYM(e_2t0a0) a1_ne_0_b_l0 | ||
| 438 | t0__2t0_a0 | ||
| 439 | MILLIRET | ||
| 440 | r__r_t0 | ||
| 441 | LSYM(e2t04a0) t0__t0_2a0 | ||
| 442 | a1_ne_0_b_l1 | ||
| 443 | r__r_2t0 | ||
| 444 | MILLIRETN | ||
| 445 | LSYM(e_3t0) a1_ne_0_b_l0 | ||
| 446 | t0__3t0 | ||
| 447 | MILLIRET | ||
| 448 | r__r_t0 | ||
| 449 | LSYM(e_4t0) a1_ne_0_b_l1 | ||
| 450 | r__r_4t0 | ||
| 451 | MILLIRETN | ||
| 452 | LSYM(e_4t0a0) a1_ne_0_b_l0 | ||
| 453 | t0__4t0_a0 | ||
| 454 | MILLIRET | ||
| 455 | r__r_t0 | ||
| 456 | LSYM(e4t08a0) t0__t0_2a0 | ||
| 457 | a1_ne_0_b_l1 | ||
| 458 | r__r_4t0 | ||
| 459 | MILLIRETN | ||
| 460 | LSYM(e_5t0) a1_ne_0_b_l0 | ||
| 461 | t0__5t0 | ||
| 462 | MILLIRET | ||
| 463 | r__r_t0 | ||
| 464 | LSYM(e_8t0) a1_ne_0_b_l1 | ||
| 465 | r__r_8t0 | ||
| 466 | MILLIRETN | ||
| 467 | LSYM(e_8t0a0) a1_ne_0_b_l0 | ||
| 468 | t0__8t0_a0 | ||
| 469 | MILLIRET | ||
| 470 | r__r_t0 | ||
| 471 | |||
| 472 | .procend | ||
| 473 | .end | ||
| 474 | #endif | ||
diff --git a/arch/parisc/lib/milli/remI.S b/arch/parisc/lib/milli/remI.S new file mode 100644 index 000000000000..63bc094471e2 --- /dev/null +++ b/arch/parisc/lib/milli/remI.S | |||
| @@ -0,0 +1,185 @@ | |||
| 1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
| 2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
| 3 | and Alan Modra <alan@linuxcare.com.au>. | ||
| 4 | |||
| 5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
| 6 | |||
| 7 | This file is part of GCC and is released under the terms of | ||
| 8 | of the GNU General Public License as published by the Free Software | ||
| 9 | Foundation; either version 2, or (at your option) any later version. | ||
| 10 | See the file COPYING in the top-level GCC source directory for a copy | ||
| 11 | of the license. */ | ||
| 12 | |||
| 13 | #include "milli.h" | ||
| 14 | |||
| 15 | #ifdef L_remI | ||
| 16 | /* ROUTINE: $$remI | ||
| 17 | |||
| 18 | DESCRIPTION: | ||
| 19 | . $$remI returns the remainder of the division of two signed 32-bit | ||
| 20 | . integers. The sign of the remainder is the same as the sign of | ||
| 21 | . the dividend. | ||
| 22 | |||
| 23 | |||
| 24 | INPUT REGISTERS: | ||
| 25 | . arg0 == dividend | ||
| 26 | . arg1 == divisor | ||
| 27 | . mrp == return pc | ||
| 28 | . sr0 == return space when called externally | ||
| 29 | |||
| 30 | OUTPUT REGISTERS: | ||
| 31 | . arg0 = destroyed | ||
| 32 | . arg1 = destroyed | ||
| 33 | . ret1 = remainder | ||
| 34 | |||
| 35 | OTHER REGISTERS AFFECTED: | ||
| 36 | . r1 = undefined | ||
| 37 | |||
| 38 | SIDE EFFECTS: | ||
| 39 | . Causes a trap under the following conditions: DIVIDE BY ZERO | ||
| 40 | . Changes memory at the following places: NONE | ||
| 41 | |||
| 42 | PERMISSIBLE CONTEXT: | ||
| 43 | . Unwindable | ||
| 44 | . Does not create a stack frame | ||
| 45 | . Is usable for internal or external microcode | ||
| 46 | |||
| 47 | DISCUSSION: | ||
| 48 | . Calls other millicode routines via mrp: NONE | ||
| 49 | . Calls other millicode routines: NONE */ | ||
| 50 | |||
| 51 | RDEFINE(tmp,r1) | ||
| 52 | RDEFINE(retreg,ret1) | ||
| 53 | |||
| 54 | SUBSPA_MILLI | ||
| 55 | ATTR_MILLI | ||
| 56 | .proc | ||
| 57 | .callinfo millicode | ||
| 58 | .entry | ||
| 59 | GSYM($$remI) | ||
| 60 | GSYM($$remoI) | ||
| 61 | .export $$remI,MILLICODE | ||
| 62 | .export $$remoI,MILLICODE | ||
| 63 | ldo -1(arg1),tmp /* is there at most one bit set ? */ | ||
| 64 | and,<> arg1,tmp,r0 /* if not, don't use power of 2 */ | ||
| 65 | addi,> 0,arg1,r0 /* if denominator > 0, use power */ | ||
| 66 | /* of 2 */ | ||
| 67 | b,n LREF(neg_denom) | ||
| 68 | LSYM(pow2) | ||
| 69 | comb,>,n 0,arg0,LREF(neg_num) /* is numerator < 0 ? */ | ||
| 70 | and arg0,tmp,retreg /* get the result */ | ||
| 71 | MILLIRETN | ||
| 72 | LSYM(neg_num) | ||
| 73 | subi 0,arg0,arg0 /* negate numerator */ | ||
| 74 | and arg0,tmp,retreg /* get the result */ | ||
| 75 | subi 0,retreg,retreg /* negate result */ | ||
| 76 | MILLIRETN | ||
| 77 | LSYM(neg_denom) | ||
| 78 | addi,< 0,arg1,r0 /* if arg1 >= 0, it's not power */ | ||
| 79 | /* of 2 */ | ||
| 80 | b,n LREF(regular_seq) | ||
| 81 | sub r0,arg1,tmp /* make denominator positive */ | ||
| 82 | comb,=,n arg1,tmp,LREF(regular_seq) /* test against 0x80000000 and 0 */ | ||
| 83 | ldo -1(tmp),retreg /* is there at most one bit set ? */ | ||
| 84 | and,= tmp,retreg,r0 /* if not, go to regular_seq */ | ||
| 85 | b,n LREF(regular_seq) | ||
| 86 | comb,>,n 0,arg0,LREF(neg_num_2) /* if arg0 < 0, negate it */ | ||
| 87 | and arg0,retreg,retreg | ||
| 88 | MILLIRETN | ||
| 89 | LSYM(neg_num_2) | ||
| 90 | subi 0,arg0,tmp /* test against 0x80000000 */ | ||
| 91 | and tmp,retreg,retreg | ||
| 92 | subi 0,retreg,retreg | ||
| 93 | MILLIRETN | ||
| 94 | LSYM(regular_seq) | ||
| 95 | addit,= 0,arg1,0 /* trap if div by zero */ | ||
| 96 | add,>= 0,arg0,retreg /* move dividend, if retreg < 0, */ | ||
| 97 | sub 0,retreg,retreg /* make it positive */ | ||
| 98 | sub 0,arg1, tmp /* clear carry, */ | ||
| 99 | /* negate the divisor */ | ||
| 100 | ds 0, tmp,0 /* set V-bit to the comple- */ | ||
| 101 | /* ment of the divisor sign */ | ||
| 102 | or 0,0, tmp /* clear tmp */ | ||
| 103 | add retreg,retreg,retreg /* shift msb bit into carry */ | ||
| 104 | ds tmp,arg1, tmp /* 1st divide step, if no carry */ | ||
| 105 | /* out, msb of quotient = 0 */ | ||
| 106 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 107 | LSYM(t1) | ||
| 108 | ds tmp,arg1, tmp /* 2nd divide step */ | ||
| 109 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 110 | ds tmp,arg1, tmp /* 3rd divide step */ | ||
| 111 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 112 | ds tmp,arg1, tmp /* 4th divide step */ | ||
| 113 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 114 | ds tmp,arg1, tmp /* 5th divide step */ | ||
| 115 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 116 | ds tmp,arg1, tmp /* 6th divide step */ | ||
| 117 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 118 | ds tmp,arg1, tmp /* 7th divide step */ | ||
| 119 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 120 | ds tmp,arg1, tmp /* 8th divide step */ | ||
| 121 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 122 | ds tmp,arg1, tmp /* 9th divide step */ | ||
| 123 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 124 | ds tmp,arg1, tmp /* 10th divide step */ | ||
| 125 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 126 | ds tmp,arg1, tmp /* 11th divide step */ | ||
| 127 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 128 | ds tmp,arg1, tmp /* 12th divide step */ | ||
| 129 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 130 | ds tmp,arg1, tmp /* 13th divide step */ | ||
| 131 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 132 | ds tmp,arg1, tmp /* 14th divide step */ | ||
| 133 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 134 | ds tmp,arg1, tmp /* 15th divide step */ | ||
| 135 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 136 | ds tmp,arg1, tmp /* 16th divide step */ | ||
| 137 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 138 | ds tmp,arg1, tmp /* 17th divide step */ | ||
| 139 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 140 | ds tmp,arg1, tmp /* 18th divide step */ | ||
| 141 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 142 | ds tmp,arg1, tmp /* 19th divide step */ | ||
| 143 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 144 | ds tmp,arg1, tmp /* 20th divide step */ | ||
| 145 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 146 | ds tmp,arg1, tmp /* 21st divide step */ | ||
| 147 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 148 | ds tmp,arg1, tmp /* 22nd divide step */ | ||
| 149 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 150 | ds tmp,arg1, tmp /* 23rd divide step */ | ||
| 151 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 152 | ds tmp,arg1, tmp /* 24th divide step */ | ||
| 153 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 154 | ds tmp,arg1, tmp /* 25th divide step */ | ||
| 155 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 156 | ds tmp,arg1, tmp /* 26th divide step */ | ||
| 157 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 158 | ds tmp,arg1, tmp /* 27th divide step */ | ||
| 159 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 160 | ds tmp,arg1, tmp /* 28th divide step */ | ||
| 161 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 162 | ds tmp,arg1, tmp /* 29th divide step */ | ||
| 163 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 164 | ds tmp,arg1, tmp /* 30th divide step */ | ||
| 165 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 166 | ds tmp,arg1, tmp /* 31st divide step */ | ||
| 167 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
| 168 | ds tmp,arg1, tmp /* 32nd divide step, */ | ||
| 169 | addc retreg,retreg,retreg /* shift last bit into retreg */ | ||
| 170 | movb,>=,n tmp,retreg,LREF(finish) /* branch if pos. tmp */ | ||
| 171 | add,< arg1,0,0 /* if arg1 > 0, add arg1 */ | ||
| 172 | add,tr tmp,arg1,retreg /* for correcting remainder tmp */ | ||
| 173 | sub tmp,arg1,retreg /* else add absolute value arg1 */ | ||
| 174 | LSYM(finish) | ||
| 175 | add,>= arg0,0,0 /* set sign of remainder */ | ||
| 176 | sub 0,retreg,retreg /* to sign of dividend */ | ||
| 177 | MILLIRET | ||
| 178 | nop | ||
| 179 | .exit | ||
| 180 | .procend | ||
| 181 | #ifdef milliext | ||
| 182 | .origin 0x00000200 | ||
| 183 | #endif | ||
| 184 | .end | ||
| 185 | #endif | ||
diff --git a/arch/parisc/lib/milli/remU.S b/arch/parisc/lib/milli/remU.S new file mode 100644 index 000000000000..c0a2d6e247c3 --- /dev/null +++ b/arch/parisc/lib/milli/remU.S | |||
| @@ -0,0 +1,148 @@ | |||
| 1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
| 2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
| 3 | and Alan Modra <alan@linuxcare.com.au>. | ||
| 4 | |||
| 5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
| 6 | |||
| 7 | This file is part of GCC and is released under the terms of | ||
| 8 | of the GNU General Public License as published by the Free Software | ||
| 9 | Foundation; either version 2, or (at your option) any later version. | ||
| 10 | See the file COPYING in the top-level GCC source directory for a copy | ||
| 11 | of the license. */ | ||
| 12 | |||
| 13 | #include "milli.h" | ||
| 14 | |||
| 15 | #ifdef L_remU | ||
| 16 | /* ROUTINE: $$remU | ||
| 17 | . Single precision divide for remainder with unsigned binary integers. | ||
| 18 | . | ||
| 19 | . The remainder must be dividend-(dividend/divisor)*divisor. | ||
| 20 | . Divide by zero is trapped. | ||
| 21 | |||
| 22 | INPUT REGISTERS: | ||
| 23 | . arg0 == dividend | ||
| 24 | . arg1 == divisor | ||
| 25 | . mrp == return pc | ||
| 26 | . sr0 == return space when called externally | ||
| 27 | |||
| 28 | OUTPUT REGISTERS: | ||
| 29 | . arg0 = undefined | ||
| 30 | . arg1 = undefined | ||
| 31 | . ret1 = remainder | ||
| 32 | |||
| 33 | OTHER REGISTERS AFFECTED: | ||
| 34 | . r1 = undefined | ||
| 35 | |||
| 36 | SIDE EFFECTS: | ||
| 37 | . Causes a trap under the following conditions: DIVIDE BY ZERO | ||
| 38 | . Changes memory at the following places: NONE | ||
| 39 | |||
| 40 | PERMISSIBLE CONTEXT: | ||
| 41 | . Unwindable. | ||
| 42 | . Does not create a stack frame. | ||
| 43 | . Suitable for internal or external millicode. | ||
| 44 | . Assumes the special millicode register conventions. | ||
| 45 | |||
| 46 | DISCUSSION: | ||
| 47 | . Calls other millicode routines using mrp: NONE | ||
| 48 | . Calls other millicode routines: NONE */ | ||
| 49 | |||
| 50 | |||
| 51 | RDEFINE(temp,r1) | ||
| 52 | RDEFINE(rmndr,ret1) /* r29 */ | ||
| 53 | SUBSPA_MILLI | ||
| 54 | ATTR_MILLI | ||
| 55 | .export $$remU,millicode | ||
| 56 | .proc | ||
| 57 | .callinfo millicode | ||
| 58 | .entry | ||
| 59 | GSYM($$remU) | ||
| 60 | ldo -1(arg1),temp /* is there at most one bit set ? */ | ||
| 61 | and,= arg1,temp,r0 /* if not, don't use power of 2 */ | ||
| 62 | b LREF(regular_seq) | ||
| 63 | addit,= 0,arg1,r0 /* trap on div by zero */ | ||
| 64 | and arg0,temp,rmndr /* get the result for power of 2 */ | ||
| 65 | MILLIRETN | ||
| 66 | LSYM(regular_seq) | ||
| 67 | comib,>=,n 0,arg1,LREF(special_case) | ||
| 68 | subi 0,arg1,rmndr /* clear carry, negate the divisor */ | ||
| 69 | ds r0,rmndr,r0 /* set V-bit to 1 */ | ||
| 70 | add arg0,arg0,temp /* shift msb bit into carry */ | ||
| 71 | ds r0,arg1,rmndr /* 1st divide step, if no carry */ | ||
| 72 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 73 | ds rmndr,arg1,rmndr /* 2nd divide step */ | ||
| 74 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 75 | ds rmndr,arg1,rmndr /* 3rd divide step */ | ||
| 76 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 77 | ds rmndr,arg1,rmndr /* 4th divide step */ | ||
| 78 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 79 | ds rmndr,arg1,rmndr /* 5th divide step */ | ||
| 80 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 81 | ds rmndr,arg1,rmndr /* 6th divide step */ | ||
| 82 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 83 | ds rmndr,arg1,rmndr /* 7th divide step */ | ||
| 84 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 85 | ds rmndr,arg1,rmndr /* 8th divide step */ | ||
| 86 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 87 | ds rmndr,arg1,rmndr /* 9th divide step */ | ||
| 88 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 89 | ds rmndr,arg1,rmndr /* 10th divide step */ | ||
| 90 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 91 | ds rmndr,arg1,rmndr /* 11th divide step */ | ||
| 92 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 93 | ds rmndr,arg1,rmndr /* 12th divide step */ | ||
| 94 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 95 | ds rmndr,arg1,rmndr /* 13th divide step */ | ||
| 96 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 97 | ds rmndr,arg1,rmndr /* 14th divide step */ | ||
| 98 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 99 | ds rmndr,arg1,rmndr /* 15th divide step */ | ||
| 100 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 101 | ds rmndr,arg1,rmndr /* 16th divide step */ | ||
| 102 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 103 | ds rmndr,arg1,rmndr /* 17th divide step */ | ||
| 104 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 105 | ds rmndr,arg1,rmndr /* 18th divide step */ | ||
| 106 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 107 | ds rmndr,arg1,rmndr /* 19th divide step */ | ||
| 108 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 109 | ds rmndr,arg1,rmndr /* 20th divide step */ | ||
| 110 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 111 | ds rmndr,arg1,rmndr /* 21st divide step */ | ||
| 112 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 113 | ds rmndr,arg1,rmndr /* 22nd divide step */ | ||
| 114 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 115 | ds rmndr,arg1,rmndr /* 23rd divide step */ | ||
| 116 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 117 | ds rmndr,arg1,rmndr /* 24th divide step */ | ||
| 118 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 119 | ds rmndr,arg1,rmndr /* 25th divide step */ | ||
| 120 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 121 | ds rmndr,arg1,rmndr /* 26th divide step */ | ||
| 122 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 123 | ds rmndr,arg1,rmndr /* 27th divide step */ | ||
| 124 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 125 | ds rmndr,arg1,rmndr /* 28th divide step */ | ||
| 126 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 127 | ds rmndr,arg1,rmndr /* 29th divide step */ | ||
| 128 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 129 | ds rmndr,arg1,rmndr /* 30th divide step */ | ||
| 130 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 131 | ds rmndr,arg1,rmndr /* 31st divide step */ | ||
| 132 | addc temp,temp,temp /* shift temp with/into carry */ | ||
| 133 | ds rmndr,arg1,rmndr /* 32nd divide step, */ | ||
| 134 | comiclr,<= 0,rmndr,r0 | ||
| 135 | add rmndr,arg1,rmndr /* correction */ | ||
| 136 | MILLIRETN | ||
| 137 | nop | ||
| 138 | |||
| 139 | /* Putting >= on the last DS and deleting COMICLR does not work! */ | ||
| 140 | LSYM(special_case) | ||
| 141 | sub,>>= arg0,arg1,rmndr | ||
| 142 | copy arg0,rmndr | ||
| 143 | MILLIRETN | ||
| 144 | nop | ||
| 145 | .exit | ||
| 146 | .procend | ||
| 147 | .end | ||
| 148 | #endif | ||
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c index e724b362c49a..aa875fa43488 100644 --- a/arch/parisc/mm/init.c +++ b/arch/parisc/mm/init.c | |||
| @@ -607,7 +607,7 @@ void show_mem(void) | |||
| 607 | 607 | ||
| 608 | printk("Zone list for zone %d on node %d: ", j, i); | 608 | printk("Zone list for zone %d on node %d: ", j, i); |
| 609 | for (k = 0; zl->zones[k] != NULL; k++) | 609 | for (k = 0; zl->zones[k] != NULL; k++) |
| 610 | printk("[%ld/%s] ", zone_to_nid(zl->zones[k]), zl->zones[k]->name); | 610 | printk("[%d/%s] ", zone_to_nid(zl->zones[k]), zl->zones[k]->name); |
| 611 | printk("\n"); | 611 | printk("\n"); |
| 612 | } | 612 | } |
| 613 | } | 613 | } |
diff --git a/arch/ppc/boot/Makefile b/arch/ppc/boot/Makefile index 487dc66dcc74..500497e3c72d 100644 --- a/arch/ppc/boot/Makefile +++ b/arch/ppc/boot/Makefile | |||
| @@ -13,6 +13,8 @@ | |||
| 13 | # modified by Cort (cort@cs.nmt.edu) | 13 | # modified by Cort (cort@cs.nmt.edu) |
| 14 | # | 14 | # |
| 15 | 15 | ||
| 16 | # KBUILD_CFLAGS used when building rest of boot (takes effect recursively) | ||
| 17 | KBUILD_CFLAGS += -fno-builtin -D__BOOTER__ -Iarch/$(ARCH)/boot/include | ||
| 16 | HOSTCFLAGS += -Iarch/$(ARCH)/boot/include | 18 | HOSTCFLAGS += -Iarch/$(ARCH)/boot/include |
| 17 | 19 | ||
| 18 | BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd | 20 | BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd |
diff --git a/arch/xtensa/boot/Makefile b/arch/xtensa/boot/Makefile index 9c5185f605b6..40aa55b485be 100644 --- a/arch/xtensa/boot/Makefile +++ b/arch/xtensa/boot/Makefile | |||
| @@ -8,7 +8,8 @@ | |||
| 8 | # | 8 | # |
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | EXTRA_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include | 11 | # KBUILD_CFLAGS used when building rest of boot (takes effect recursively) |
| 12 | KBUILD_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include | ||
| 12 | HOSTFLAGS += -Iarch/$(ARCH)/boot/include | 13 | HOSTFLAGS += -Iarch/$(ARCH)/boot/include |
| 13 | 14 | ||
| 14 | BIG_ENDIAN := $(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#") | 15 | BIG_ENDIAN := $(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#") |
diff --git a/drivers/parisc/lba_pci.c b/drivers/parisc/lba_pci.c index 5b86ee5c1eeb..5eace9e66e14 100644 --- a/drivers/parisc/lba_pci.c +++ b/drivers/parisc/lba_pci.c | |||
| @@ -557,44 +557,6 @@ lba_bios_init(void) | |||
| 557 | #ifdef CONFIG_64BIT | 557 | #ifdef CONFIG_64BIT |
| 558 | 558 | ||
| 559 | /* | 559 | /* |
| 560 | ** Determine if a device is already configured. | ||
| 561 | ** If so, reserve it resources. | ||
| 562 | ** | ||
| 563 | ** Read PCI cfg command register and see if I/O or MMIO is enabled. | ||
| 564 | ** PAT has to enable the devices it's using. | ||
| 565 | ** | ||
| 566 | ** Note: resources are fixed up before we try to claim them. | ||
| 567 | */ | ||
| 568 | static void | ||
| 569 | lba_claim_dev_resources(struct pci_dev *dev) | ||
| 570 | { | ||
| 571 | u16 cmd; | ||
| 572 | int i, srch_flags; | ||
| 573 | |||
| 574 | (void) pci_read_config_word(dev, PCI_COMMAND, &cmd); | ||
| 575 | |||
| 576 | srch_flags = (cmd & PCI_COMMAND_IO) ? IORESOURCE_IO : 0; | ||
| 577 | if (cmd & PCI_COMMAND_MEMORY) | ||
| 578 | srch_flags |= IORESOURCE_MEM; | ||
| 579 | |||
| 580 | if (!srch_flags) | ||
| 581 | return; | ||
| 582 | |||
| 583 | for (i = 0; i <= PCI_ROM_RESOURCE; i++) { | ||
| 584 | if (dev->resource[i].flags & srch_flags) { | ||
| 585 | pci_claim_resource(dev, i); | ||
| 586 | DBG(" claimed %s %d [%lx,%lx]/%lx\n", | ||
| 587 | pci_name(dev), i, | ||
| 588 | dev->resource[i].start, | ||
| 589 | dev->resource[i].end, | ||
| 590 | dev->resource[i].flags | ||
| 591 | ); | ||
| 592 | } | ||
| 593 | } | ||
| 594 | } | ||
| 595 | |||
| 596 | |||
| 597 | /* | ||
| 598 | * truncate_pat_collision: Deal with overlaps or outright collisions | 560 | * truncate_pat_collision: Deal with overlaps or outright collisions |
| 599 | * between PAT PDC reported ranges. | 561 | * between PAT PDC reported ranges. |
| 600 | * | 562 | * |
| @@ -653,7 +615,6 @@ truncate_pat_collision(struct resource *root, struct resource *new) | |||
| 653 | } | 615 | } |
| 654 | 616 | ||
| 655 | #else | 617 | #else |
| 656 | #define lba_claim_dev_resources(dev) do { } while (0) | ||
| 657 | #define truncate_pat_collision(r,n) (0) | 618 | #define truncate_pat_collision(r,n) (0) |
| 658 | #endif | 619 | #endif |
| 659 | 620 | ||
| @@ -684,8 +645,12 @@ lba_fixup_bus(struct pci_bus *bus) | |||
| 684 | ** pci_alloc_primary_bus() mangles this. | 645 | ** pci_alloc_primary_bus() mangles this. |
| 685 | */ | 646 | */ |
| 686 | if (bus->self) { | 647 | if (bus->self) { |
| 648 | int i; | ||
| 687 | /* PCI-PCI Bridge */ | 649 | /* PCI-PCI Bridge */ |
| 688 | pci_read_bridge_bases(bus); | 650 | pci_read_bridge_bases(bus); |
| 651 | for (i = PCI_BRIDGE_RESOURCES; i < PCI_NUM_RESOURCES; i++) { | ||
| 652 | pci_claim_resource(bus->self, i); | ||
| 653 | } | ||
| 689 | } else { | 654 | } else { |
| 690 | /* Host-PCI Bridge */ | 655 | /* Host-PCI Bridge */ |
| 691 | int err, i; | 656 | int err, i; |
| @@ -803,6 +768,9 @@ lba_fixup_bus(struct pci_bus *bus) | |||
| 803 | DBG("lba_fixup_bus() WTF? 0x%lx [%lx/%lx] XXX", | 768 | DBG("lba_fixup_bus() WTF? 0x%lx [%lx/%lx] XXX", |
| 804 | res->flags, res->start, res->end); | 769 | res->flags, res->start, res->end); |
| 805 | } | 770 | } |
| 771 | if ((i != PCI_ROM_RESOURCE) || | ||
| 772 | (res->flags & IORESOURCE_ROM_ENABLE)) | ||
| 773 | pci_claim_resource(dev, i); | ||
| 806 | } | 774 | } |
| 807 | 775 | ||
| 808 | #ifdef FBB_SUPPORT | 776 | #ifdef FBB_SUPPORT |
| @@ -814,11 +782,6 @@ lba_fixup_bus(struct pci_bus *bus) | |||
| 814 | bus->bridge_ctl &= ~(status & PCI_STATUS_FAST_BACK); | 782 | bus->bridge_ctl &= ~(status & PCI_STATUS_FAST_BACK); |
| 815 | #endif | 783 | #endif |
| 816 | 784 | ||
| 817 | if (is_pdc_pat()) { | ||
| 818 | /* Claim resources for PDC's devices */ | ||
| 819 | lba_claim_dev_resources(dev); | ||
| 820 | } | ||
| 821 | |||
| 822 | /* | 785 | /* |
| 823 | ** P2PB's have no IRQs. ignore them. | 786 | ** P2PB's have no IRQs. ignore them. |
| 824 | */ | 787 | */ |
diff --git a/drivers/parisc/pdc_stable.c b/drivers/parisc/pdc_stable.c index fc4bde259dc7..ebb09e98d215 100644 --- a/drivers/parisc/pdc_stable.c +++ b/drivers/parisc/pdc_stable.c | |||
| @@ -282,6 +282,7 @@ pdcspath_hwpath_write(struct pdcspath_entry *entry, const char *buf, size_t coun | |||
| 282 | unsigned short i; | 282 | unsigned short i; |
| 283 | char in[count+1], *temp; | 283 | char in[count+1], *temp; |
| 284 | struct device *dev; | 284 | struct device *dev; |
| 285 | int ret; | ||
| 285 | 286 | ||
| 286 | if (!entry || !buf || !count) | 287 | if (!entry || !buf || !count) |
| 287 | return -EINVAL; | 288 | return -EINVAL; |
| @@ -333,7 +334,9 @@ pdcspath_hwpath_write(struct pdcspath_entry *entry, const char *buf, size_t coun | |||
| 333 | 334 | ||
| 334 | /* Update the symlink to the real device */ | 335 | /* Update the symlink to the real device */ |
| 335 | sysfs_remove_link(&entry->kobj, "device"); | 336 | sysfs_remove_link(&entry->kobj, "device"); |
| 336 | sysfs_create_link(&entry->kobj, &entry->dev->kobj, "device"); | 337 | ret = sysfs_create_link(&entry->kobj, &entry->dev->kobj, "device"); |
| 338 | WARN_ON(ret); | ||
| 339 | |||
| 337 | write_unlock(&entry->rw_lock); | 340 | write_unlock(&entry->rw_lock); |
| 338 | 341 | ||
| 339 | printk(KERN_INFO PDCS_PREFIX ": changed \"%s\" path to \"%s\"\n", | 342 | printk(KERN_INFO PDCS_PREFIX ": changed \"%s\" path to \"%s\"\n", |
| @@ -1003,8 +1006,10 @@ pdcs_register_pathentries(void) | |||
| 1003 | entry->ready = 2; | 1006 | entry->ready = 2; |
| 1004 | 1007 | ||
| 1005 | /* Add a nice symlink to the real device */ | 1008 | /* Add a nice symlink to the real device */ |
| 1006 | if (entry->dev) | 1009 | if (entry->dev) { |
| 1007 | sysfs_create_link(&entry->kobj, &entry->dev->kobj, "device"); | 1010 | err = sysfs_create_link(&entry->kobj, &entry->dev->kobj, "device"); |
| 1011 | WARN_ON(err); | ||
| 1012 | } | ||
| 1008 | 1013 | ||
| 1009 | write_unlock(&entry->rw_lock); | 1014 | write_unlock(&entry->rw_lock); |
| 1010 | } | 1015 | } |
diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c index d044c48323e6..e5c323936eae 100644 --- a/drivers/parisc/sba_iommu.c +++ b/drivers/parisc/sba_iommu.c | |||
| @@ -1909,8 +1909,8 @@ sba_driver_callback(struct parisc_device *dev) | |||
| 1909 | global_ioc_cnt *= 2; | 1909 | global_ioc_cnt *= 2; |
| 1910 | } | 1910 | } |
| 1911 | 1911 | ||
| 1912 | printk(KERN_INFO "%s found %s at 0x%lx\n", | 1912 | printk(KERN_INFO "%s found %s at 0x%llx\n", |
| 1913 | MODULE_NAME, version, dev->hpa.start); | 1913 | MODULE_NAME, version, (unsigned long long)dev->hpa.start); |
| 1914 | 1914 | ||
| 1915 | sba_dev = kzalloc(sizeof(struct sba_device), GFP_KERNEL); | 1915 | sba_dev = kzalloc(sizeof(struct sba_device), GFP_KERNEL); |
| 1916 | if (!sba_dev) { | 1916 | if (!sba_dev) { |
diff --git a/drivers/parisc/superio.c b/drivers/parisc/superio.c index 38cdf9fa36a7..1e8d2d17f04c 100644 --- a/drivers/parisc/superio.c +++ b/drivers/parisc/superio.c | |||
| @@ -155,6 +155,7 @@ superio_init(struct pci_dev *pcidev) | |||
| 155 | struct superio_device *sio = &sio_dev; | 155 | struct superio_device *sio = &sio_dev; |
| 156 | struct pci_dev *pdev = sio->lio_pdev; | 156 | struct pci_dev *pdev = sio->lio_pdev; |
| 157 | u16 word; | 157 | u16 word; |
| 158 | int ret; | ||
| 158 | 159 | ||
| 159 | if (sio->suckyio_irq_enabled) | 160 | if (sio->suckyio_irq_enabled) |
| 160 | return; | 161 | return; |
| @@ -200,7 +201,8 @@ superio_init(struct pci_dev *pcidev) | |||
| 200 | pci_write_config_word (pdev, PCI_COMMAND, word); | 201 | pci_write_config_word (pdev, PCI_COMMAND, word); |
| 201 | 202 | ||
| 202 | pci_set_master (pdev); | 203 | pci_set_master (pdev); |
| 203 | pci_enable_device(pdev); | 204 | ret = pci_enable_device(pdev); |
| 205 | BUG_ON(ret < 0); /* not too much we can do about this... */ | ||
| 204 | 206 | ||
| 205 | /* | 207 | /* |
| 206 | * Next project is programming the onboard interrupt controllers. | 208 | * Next project is programming the onboard interrupt controllers. |
diff --git a/drivers/sbus/char/vfc_dev.c b/drivers/sbus/char/vfc_dev.c index e7a1642b2aa4..d4f8fcded51d 100644 --- a/drivers/sbus/char/vfc_dev.c +++ b/drivers/sbus/char/vfc_dev.c | |||
| @@ -134,7 +134,7 @@ int init_vfc_hw(struct vfc_dev *dev) | |||
| 134 | int init_vfc_devstruct(struct vfc_dev *dev, int instance) | 134 | int init_vfc_devstruct(struct vfc_dev *dev, int instance) |
| 135 | { | 135 | { |
| 136 | dev->instance=instance; | 136 | dev->instance=instance; |
| 137 | init_MUTEX(&dev->device_lock_sem); | 137 | mutex_init(&dev->device_lock_mtx); |
| 138 | dev->control_reg=0; | 138 | dev->control_reg=0; |
| 139 | dev->busy=0; | 139 | dev->busy=0; |
| 140 | return 0; | 140 | return 0; |
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 87665d7df6f2..ed438bc7e98d 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig | |||
| @@ -624,7 +624,7 @@ choice | |||
| 624 | 624 | ||
| 625 | config SERIAL_BFIN_DMA | 625 | config SERIAL_BFIN_DMA |
| 626 | bool "DMA mode" | 626 | bool "DMA mode" |
| 627 | depends on DMA_UNCACHED_1M && !KGDB_UART | 627 | depends on !DMA_UNCACHED_NONE && !KGDB_UART |
| 628 | help | 628 | help |
| 629 | This driver works under DMA mode. If this option is selected, the | 629 | This driver works under DMA mode. If this option is selected, the |
| 630 | blackfin simple dma driver is also enabled. | 630 | blackfin simple dma driver is also enabled. |
diff --git a/fs/buffer.c b/fs/buffer.c index 76403b1764c5..7249e014819e 100644 --- a/fs/buffer.c +++ b/fs/buffer.c | |||
| @@ -2563,7 +2563,7 @@ int nobh_write_end(struct file *file, struct address_space *mapping, | |||
| 2563 | struct page *page, void *fsdata) | 2563 | struct page *page, void *fsdata) |
| 2564 | { | 2564 | { |
| 2565 | struct inode *inode = page->mapping->host; | 2565 | struct inode *inode = page->mapping->host; |
| 2566 | struct buffer_head *head = NULL; | 2566 | struct buffer_head *head = fsdata; |
| 2567 | struct buffer_head *bh; | 2567 | struct buffer_head *bh; |
| 2568 | 2568 | ||
| 2569 | if (!PageMappedToDisk(page)) { | 2569 | if (!PageMappedToDisk(page)) { |
| @@ -2584,7 +2584,6 @@ int nobh_write_end(struct file *file, struct address_space *mapping, | |||
| 2584 | unlock_page(page); | 2584 | unlock_page(page); |
| 2585 | page_cache_release(page); | 2585 | page_cache_release(page); |
| 2586 | 2586 | ||
| 2587 | head = fsdata; | ||
| 2588 | while (head) { | 2587 | while (head) { |
| 2589 | bh = head; | 2588 | bh = head; |
| 2590 | head = head->b_this_page; | 2589 | head = head->b_this_page; |
diff --git a/fs/dcache.c b/fs/dcache.c index 5489b2d98a00..2bb3f7ac683b 100644 --- a/fs/dcache.c +++ b/fs/dcache.c | |||
| @@ -38,7 +38,7 @@ int sysctl_vfs_cache_pressure __read_mostly = 100; | |||
| 38 | EXPORT_SYMBOL_GPL(sysctl_vfs_cache_pressure); | 38 | EXPORT_SYMBOL_GPL(sysctl_vfs_cache_pressure); |
| 39 | 39 | ||
| 40 | __cacheline_aligned_in_smp DEFINE_SPINLOCK(dcache_lock); | 40 | __cacheline_aligned_in_smp DEFINE_SPINLOCK(dcache_lock); |
| 41 | static __cacheline_aligned_in_smp DEFINE_SEQLOCK(rename_lock); | 41 | __cacheline_aligned_in_smp DEFINE_SEQLOCK(rename_lock); |
| 42 | 42 | ||
| 43 | EXPORT_SYMBOL(dcache_lock); | 43 | EXPORT_SYMBOL(dcache_lock); |
| 44 | 44 | ||
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c index 11be8a325e26..6a713b33992f 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c | |||
| @@ -413,7 +413,7 @@ struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry, | |||
| 413 | d_move(old_dentry, dentry); | 413 | d_move(old_dentry, dentry); |
| 414 | fsnotify_move(old_dir->d_inode, new_dir->d_inode, old_name, | 414 | fsnotify_move(old_dir->d_inode, new_dir->d_inode, old_name, |
| 415 | old_dentry->d_name.name, S_ISDIR(old_dentry->d_inode->i_mode), | 415 | old_dentry->d_name.name, S_ISDIR(old_dentry->d_inode->i_mode), |
| 416 | NULL, old_dentry->d_inode); | 416 | NULL, old_dentry); |
| 417 | fsnotify_oldname_free(old_name); | 417 | fsnotify_oldname_free(old_name); |
| 418 | unlock_rename(new_dir, old_dir); | 418 | unlock_rename(new_dir, old_dir); |
| 419 | dput(dentry); | 419 | dput(dentry); |
diff --git a/fs/inotify.c b/fs/inotify.c index 7457501b9565..2c5b92152876 100644 --- a/fs/inotify.c +++ b/fs/inotify.c | |||
| @@ -667,6 +667,49 @@ out: | |||
| 667 | EXPORT_SYMBOL_GPL(inotify_add_watch); | 667 | EXPORT_SYMBOL_GPL(inotify_add_watch); |
| 668 | 668 | ||
| 669 | /** | 669 | /** |
| 670 | * inotify_clone_watch - put the watch next to existing one | ||
| 671 | * @old: already installed watch | ||
| 672 | * @new: new watch | ||
| 673 | * | ||
| 674 | * Caller must hold the inotify_mutex of inode we are dealing with; | ||
| 675 | * it is expected to remove the old watch before unlocking the inode. | ||
| 676 | */ | ||
| 677 | s32 inotify_clone_watch(struct inotify_watch *old, struct inotify_watch *new) | ||
| 678 | { | ||
| 679 | struct inotify_handle *ih = old->ih; | ||
| 680 | int ret = 0; | ||
| 681 | |||
| 682 | new->mask = old->mask; | ||
| 683 | new->ih = ih; | ||
| 684 | |||
| 685 | mutex_lock(&ih->mutex); | ||
| 686 | |||
| 687 | /* Initialize a new watch */ | ||
| 688 | ret = inotify_handle_get_wd(ih, new); | ||
| 689 | if (unlikely(ret)) | ||
| 690 | goto out; | ||
| 691 | ret = new->wd; | ||
| 692 | |||
| 693 | get_inotify_handle(ih); | ||
| 694 | |||
| 695 | new->inode = igrab(old->inode); | ||
| 696 | |||
| 697 | list_add(&new->h_list, &ih->watches); | ||
| 698 | list_add(&new->i_list, &old->inode->inotify_watches); | ||
| 699 | out: | ||
| 700 | mutex_unlock(&ih->mutex); | ||
| 701 | return ret; | ||
| 702 | } | ||
| 703 | |||
| 704 | void inotify_evict_watch(struct inotify_watch *watch) | ||
| 705 | { | ||
| 706 | get_inotify_watch(watch); | ||
| 707 | mutex_lock(&watch->ih->mutex); | ||
| 708 | inotify_remove_watch_locked(watch->ih, watch); | ||
| 709 | mutex_unlock(&watch->ih->mutex); | ||
| 710 | } | ||
| 711 | |||
| 712 | /** | ||
| 670 | * inotify_rm_wd - remove a watch from an inotify instance | 713 | * inotify_rm_wd - remove a watch from an inotify instance |
| 671 | * @ih: inotify handle | 714 | * @ih: inotify handle |
| 672 | * @wd: watch descriptor to remove | 715 | * @wd: watch descriptor to remove |
diff --git a/fs/namei.c b/fs/namei.c index 1e5c71669164..3b993db26cee 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
| @@ -1174,7 +1174,7 @@ static int fastcall do_path_lookup(int dfd, const char *name, | |||
| 1174 | out: | 1174 | out: |
| 1175 | if (unlikely(!retval && !audit_dummy_context() && nd->dentry && | 1175 | if (unlikely(!retval && !audit_dummy_context() && nd->dentry && |
| 1176 | nd->dentry->d_inode)) | 1176 | nd->dentry->d_inode)) |
| 1177 | audit_inode(name, nd->dentry->d_inode); | 1177 | audit_inode(name, nd->dentry); |
| 1178 | out_fail: | 1178 | out_fail: |
| 1179 | return retval; | 1179 | return retval; |
| 1180 | 1180 | ||
| @@ -1214,7 +1214,7 @@ int vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt, | |||
| 1214 | retval = path_walk(name, nd); | 1214 | retval = path_walk(name, nd); |
| 1215 | if (unlikely(!retval && !audit_dummy_context() && nd->dentry && | 1215 | if (unlikely(!retval && !audit_dummy_context() && nd->dentry && |
| 1216 | nd->dentry->d_inode)) | 1216 | nd->dentry->d_inode)) |
| 1217 | audit_inode(name, nd->dentry->d_inode); | 1217 | audit_inode(name, nd->dentry); |
| 1218 | 1218 | ||
| 1219 | return retval; | 1219 | return retval; |
| 1220 | 1220 | ||
| @@ -1469,7 +1469,7 @@ static int may_delete(struct inode *dir,struct dentry *victim,int isdir) | |||
| 1469 | return -ENOENT; | 1469 | return -ENOENT; |
| 1470 | 1470 | ||
| 1471 | BUG_ON(victim->d_parent->d_inode != dir); | 1471 | BUG_ON(victim->d_parent->d_inode != dir); |
| 1472 | audit_inode_child(victim->d_name.name, victim->d_inode, dir); | 1472 | audit_inode_child(victim->d_name.name, victim, dir); |
| 1473 | 1473 | ||
| 1474 | error = permission(dir,MAY_WRITE | MAY_EXEC, NULL); | 1474 | error = permission(dir,MAY_WRITE | MAY_EXEC, NULL); |
| 1475 | if (error) | 1475 | if (error) |
| @@ -1783,7 +1783,7 @@ do_last: | |||
| 1783 | * It already exists. | 1783 | * It already exists. |
| 1784 | */ | 1784 | */ |
| 1785 | mutex_unlock(&dir->d_inode->i_mutex); | 1785 | mutex_unlock(&dir->d_inode->i_mutex); |
| 1786 | audit_inode(pathname, path.dentry->d_inode); | 1786 | audit_inode(pathname, path.dentry); |
| 1787 | 1787 | ||
| 1788 | error = -EEXIST; | 1788 | error = -EEXIST; |
| 1789 | if (flag & O_EXCL) | 1789 | if (flag & O_EXCL) |
| @@ -2562,7 +2562,7 @@ int vfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
| 2562 | if (!error) { | 2562 | if (!error) { |
| 2563 | const char *new_name = old_dentry->d_name.name; | 2563 | const char *new_name = old_dentry->d_name.name; |
| 2564 | fsnotify_move(old_dir, new_dir, old_name, new_name, is_dir, | 2564 | fsnotify_move(old_dir, new_dir, old_name, new_name, is_dir, |
| 2565 | new_dentry->d_inode, old_dentry->d_inode); | 2565 | new_dentry->d_inode, old_dentry); |
| 2566 | } | 2566 | } |
| 2567 | fsnotify_oldname_free(old_name); | 2567 | fsnotify_oldname_free(old_name); |
| 2568 | 2568 | ||
diff --git a/fs/namespace.c b/fs/namespace.c index 860752998fb3..06083885b21e 100644 --- a/fs/namespace.c +++ b/fs/namespace.c | |||
| @@ -246,7 +246,7 @@ static struct vfsmount *clone_mnt(struct vfsmount *old, struct dentry *root, | |||
| 246 | list_add(&mnt->mnt_slave, &old->mnt_slave_list); | 246 | list_add(&mnt->mnt_slave, &old->mnt_slave_list); |
| 247 | mnt->mnt_master = old; | 247 | mnt->mnt_master = old; |
| 248 | CLEAR_MNT_SHARED(mnt); | 248 | CLEAR_MNT_SHARED(mnt); |
| 249 | } else { | 249 | } else if (!(flag & CL_PRIVATE)) { |
| 250 | if ((flag & CL_PROPAGATION) || IS_MNT_SHARED(old)) | 250 | if ((flag & CL_PROPAGATION) || IS_MNT_SHARED(old)) |
| 251 | list_add(&mnt->mnt_share, &old->mnt_share); | 251 | list_add(&mnt->mnt_share, &old->mnt_share); |
| 252 | if (IS_MNT_SLAVE(old)) | 252 | if (IS_MNT_SLAVE(old)) |
| @@ -746,6 +746,26 @@ Enomem: | |||
| 746 | return NULL; | 746 | return NULL; |
| 747 | } | 747 | } |
| 748 | 748 | ||
| 749 | struct vfsmount *collect_mounts(struct vfsmount *mnt, struct dentry *dentry) | ||
| 750 | { | ||
| 751 | struct vfsmount *tree; | ||
| 752 | down_read(&namespace_sem); | ||
| 753 | tree = copy_tree(mnt, dentry, CL_COPY_ALL | CL_PRIVATE); | ||
| 754 | up_read(&namespace_sem); | ||
| 755 | return tree; | ||
| 756 | } | ||
| 757 | |||
| 758 | void drop_collected_mounts(struct vfsmount *mnt) | ||
| 759 | { | ||
| 760 | LIST_HEAD(umount_list); | ||
| 761 | down_read(&namespace_sem); | ||
| 762 | spin_lock(&vfsmount_lock); | ||
| 763 | umount_tree(mnt, 0, &umount_list); | ||
| 764 | spin_unlock(&vfsmount_lock); | ||
| 765 | up_read(&namespace_sem); | ||
| 766 | release_mounts(&umount_list); | ||
| 767 | } | ||
| 768 | |||
| 749 | /* | 769 | /* |
| 750 | * @source_mnt : mount tree to be attached | 770 | * @source_mnt : mount tree to be attached |
| 751 | * @nd : place the mount tree @source_mnt is attached | 771 | * @nd : place the mount tree @source_mnt is attached |
diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c index 97669ed05500..4f80d88e9fee 100644 --- a/fs/nfs/proc.c +++ b/fs/nfs/proc.c | |||
| @@ -211,6 +211,7 @@ nfs_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr, | |||
| 211 | nfs_fattr_init(&fattr); | 211 | nfs_fattr_init(&fattr); |
| 212 | dprintk("NFS call create %s\n", dentry->d_name.name); | 212 | dprintk("NFS call create %s\n", dentry->d_name.name); |
| 213 | status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0); | 213 | status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0); |
| 214 | nfs_mark_for_revalidate(dir); | ||
| 214 | if (status == 0) | 215 | if (status == 0) |
| 215 | status = nfs_instantiate(dentry, &fhandle, &fattr); | 216 | status = nfs_instantiate(dentry, &fhandle, &fattr); |
| 216 | dprintk("NFS reply create: %d\n", status); | 217 | dprintk("NFS reply create: %d\n", status); |
diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c index ce558c2e4d53..233ad38161f9 100644 --- a/fs/nfs/unlink.c +++ b/fs/nfs/unlink.c | |||
| @@ -171,7 +171,7 @@ static int nfs_call_unlink(struct dentry *dentry, struct nfs_unlinkdata *data) | |||
| 171 | if (parent == NULL) | 171 | if (parent == NULL) |
| 172 | goto out_free; | 172 | goto out_free; |
| 173 | dir = parent->d_inode; | 173 | dir = parent->d_inode; |
| 174 | if (nfs_copy_dname(dentry, data) == 0) | 174 | if (nfs_copy_dname(dentry, data) != 0) |
| 175 | goto out_dput; | 175 | goto out_dput; |
| 176 | /* Non-exclusive lock protects against concurrent lookup() calls */ | 176 | /* Non-exclusive lock protects against concurrent lookup() calls */ |
| 177 | spin_lock(&dir->i_lock); | 177 | spin_lock(&dir->i_lock); |
| @@ -569,7 +569,7 @@ asmlinkage long sys_fchmod(unsigned int fd, mode_t mode) | |||
| 569 | dentry = file->f_path.dentry; | 569 | dentry = file->f_path.dentry; |
| 570 | inode = dentry->d_inode; | 570 | inode = dentry->d_inode; |
| 571 | 571 | ||
| 572 | audit_inode(NULL, inode); | 572 | audit_inode(NULL, dentry); |
| 573 | 573 | ||
| 574 | err = -EROFS; | 574 | err = -EROFS; |
| 575 | if (IS_RDONLY(inode)) | 575 | if (IS_RDONLY(inode)) |
| @@ -727,7 +727,7 @@ asmlinkage long sys_fchown(unsigned int fd, uid_t user, gid_t group) | |||
| 727 | goto out; | 727 | goto out; |
| 728 | 728 | ||
| 729 | dentry = file->f_path.dentry; | 729 | dentry = file->f_path.dentry; |
| 730 | audit_inode(NULL, dentry->d_inode); | 730 | audit_inode(NULL, dentry); |
| 731 | error = chown_common(dentry, user, group); | 731 | error = chown_common(dentry, user, group); |
| 732 | fput(file); | 732 | fput(file); |
| 733 | out: | 733 | out: |
diff --git a/fs/pnode.h b/fs/pnode.h index d45bd8ec36bf..f249be2fee7a 100644 --- a/fs/pnode.h +++ b/fs/pnode.h | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #define CL_COPY_ALL 0x04 | 22 | #define CL_COPY_ALL 0x04 |
| 23 | #define CL_MAKE_SHARED 0x08 | 23 | #define CL_MAKE_SHARED 0x08 |
| 24 | #define CL_PROPAGATION 0x10 | 24 | #define CL_PROPAGATION 0x10 |
| 25 | #define CL_PRIVATE 0x20 | ||
| 25 | 26 | ||
| 26 | static inline void set_mnt_shared(struct vfsmount *mnt) | 27 | static inline void set_mnt_shared(struct vfsmount *mnt) |
| 27 | { | 28 | { |
diff --git a/fs/xattr.c b/fs/xattr.c index a44fd92caca3..6645b7313b33 100644 --- a/fs/xattr.c +++ b/fs/xattr.c | |||
| @@ -267,7 +267,7 @@ sys_fsetxattr(int fd, char __user *name, void __user *value, | |||
| 267 | if (!f) | 267 | if (!f) |
| 268 | return error; | 268 | return error; |
| 269 | dentry = f->f_path.dentry; | 269 | dentry = f->f_path.dentry; |
| 270 | audit_inode(NULL, dentry->d_inode); | 270 | audit_inode(NULL, dentry); |
| 271 | error = setxattr(dentry, name, value, size, flags); | 271 | error = setxattr(dentry, name, value, size, flags); |
| 272 | fput(f); | 272 | fput(f); |
| 273 | return error; | 273 | return error; |
| @@ -349,7 +349,7 @@ sys_fgetxattr(int fd, char __user *name, void __user *value, size_t size) | |||
| 349 | f = fget(fd); | 349 | f = fget(fd); |
| 350 | if (!f) | 350 | if (!f) |
| 351 | return error; | 351 | return error; |
| 352 | audit_inode(NULL, f->f_path.dentry->d_inode); | 352 | audit_inode(NULL, f->f_path.dentry); |
| 353 | error = getxattr(f->f_path.dentry, name, value, size); | 353 | error = getxattr(f->f_path.dentry, name, value, size); |
| 354 | fput(f); | 354 | fput(f); |
| 355 | return error; | 355 | return error; |
| @@ -422,7 +422,7 @@ sys_flistxattr(int fd, char __user *list, size_t size) | |||
| 422 | f = fget(fd); | 422 | f = fget(fd); |
| 423 | if (!f) | 423 | if (!f) |
| 424 | return error; | 424 | return error; |
| 425 | audit_inode(NULL, f->f_path.dentry->d_inode); | 425 | audit_inode(NULL, f->f_path.dentry); |
| 426 | error = listxattr(f->f_path.dentry, list, size); | 426 | error = listxattr(f->f_path.dentry, list, size); |
| 427 | fput(f); | 427 | fput(f); |
| 428 | return error; | 428 | return error; |
| @@ -485,7 +485,7 @@ sys_fremovexattr(int fd, char __user *name) | |||
| 485 | if (!f) | 485 | if (!f) |
| 486 | return error; | 486 | return error; |
| 487 | dentry = f->f_path.dentry; | 487 | dentry = f->f_path.dentry; |
| 488 | audit_inode(NULL, dentry->d_inode); | 488 | audit_inode(NULL, dentry); |
| 489 | error = removexattr(dentry, name); | 489 | error = removexattr(dentry, name); |
| 490 | fput(f); | 490 | fput(f); |
| 491 | return error; | 491 | return error; |
diff --git a/include/asm-blackfin/bf5xx_timers.h b/include/asm-blackfin/bf5xx_timers.h deleted file mode 100644 index 86c770321b61..000000000000 --- a/include/asm-blackfin/bf5xx_timers.h +++ /dev/null | |||
| @@ -1,209 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * include/asm/bf5xx_timers.h | ||
| 3 | * | ||
| 4 | * This file contains the major Data structures and constants | ||
| 5 | * used for General Purpose Timer Implementation in BF5xx | ||
| 6 | * | ||
| 7 | * Copyright (C) 2005 John DeHority | ||
| 8 | * Copyright (C) 2006 Hella Aglaia GmbH (awe@aglaia-gmbh.de) | ||
| 9 | * | ||
| 10 | */ | ||
| 11 | |||
| 12 | #ifndef _BLACKFIN_TIMERS_H_ | ||
| 13 | #define _BLACKFIN_TIMERS_H_ | ||
| 14 | |||
| 15 | #undef MAX_BLACKFIN_GPTIMERS | ||
| 16 | /* | ||
| 17 | * BF537: 8 timers: | ||
| 18 | */ | ||
| 19 | #if defined(CONFIG_BF537) | ||
| 20 | # define MAX_BLACKFIN_GPTIMERS 8 | ||
| 21 | # define TIMER0_GROUP_REG TIMER_ENABLE | ||
| 22 | #endif | ||
| 23 | /* | ||
| 24 | * BF561: 12 timers: | ||
| 25 | */ | ||
| 26 | #if defined(CONFIG_BF561) | ||
| 27 | # define MAX_BLACKFIN_GPTIMERS 12 | ||
| 28 | # define TIMER0_GROUP_REG TMRS8_ENABLE | ||
| 29 | # define TIMER8_GROUP_REG TMRS4_ENABLE | ||
| 30 | #endif | ||
| 31 | /* | ||
| 32 | * All others: 3 timers: | ||
| 33 | */ | ||
| 34 | #if !defined(MAX_BLACKFIN_GPTIMERS) | ||
| 35 | # define MAX_BLACKFIN_GPTIMERS 3 | ||
| 36 | # define TIMER0_GROUP_REG TIMER_ENABLE | ||
| 37 | #endif | ||
| 38 | |||
| 39 | #define BLACKFIN_GPTIMER_IDMASK ((1UL << MAX_BLACKFIN_GPTIMERS) - 1) | ||
| 40 | #define BFIN_TIMER_OCTET(x) ((x) >> 3) | ||
| 41 | |||
| 42 | /* used in masks for timer_enable() and timer_disable() */ | ||
| 43 | #define TIMER0bit 0x0001 /* 0001b */ | ||
| 44 | #define TIMER1bit 0x0002 /* 0010b */ | ||
| 45 | #define TIMER2bit 0x0004 /* 0100b */ | ||
| 46 | |||
| 47 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 48 | # define TIMER3bit 0x0008 | ||
| 49 | # define TIMER4bit 0x0010 | ||
| 50 | # define TIMER5bit 0x0020 | ||
| 51 | # define TIMER6bit 0x0040 | ||
| 52 | # define TIMER7bit 0x0080 | ||
| 53 | #endif | ||
| 54 | |||
| 55 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 56 | # define TIMER8bit 0x0100 | ||
| 57 | # define TIMER9bit 0x0200 | ||
| 58 | # define TIMER10bit 0x0400 | ||
| 59 | # define TIMER11bit 0x0800 | ||
| 60 | #endif | ||
| 61 | |||
| 62 | #define TIMER0_id 0 | ||
| 63 | #define TIMER1_id 1 | ||
| 64 | #define TIMER2_id 2 | ||
| 65 | |||
| 66 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 67 | # define TIMER3_id 3 | ||
| 68 | # define TIMER4_id 4 | ||
| 69 | # define TIMER5_id 5 | ||
| 70 | # define TIMER6_id 6 | ||
| 71 | # define TIMER7_id 7 | ||
| 72 | #endif | ||
| 73 | |||
| 74 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 75 | # define TIMER8_id 8 | ||
| 76 | # define TIMER9_id 9 | ||
| 77 | # define TIMER10_id 10 | ||
| 78 | # define TIMER11_id 11 | ||
| 79 | #endif | ||
| 80 | |||
| 81 | /* associated timers for ppi framesync: */ | ||
| 82 | |||
| 83 | #if defined(CONFIG_BF561) | ||
| 84 | # define FS0_1_TIMER_ID TIMER8_id | ||
| 85 | # define FS0_2_TIMER_ID TIMER9_id | ||
| 86 | # define FS1_1_TIMER_ID TIMER10_id | ||
| 87 | # define FS1_2_TIMER_ID TIMER11_id | ||
| 88 | # define FS0_1_TIMER_BIT TIMER8bit | ||
| 89 | # define FS0_2_TIMER_BIT TIMER9bit | ||
| 90 | # define FS1_1_TIMER_BIT TIMER10bit | ||
| 91 | # define FS1_2_TIMER_BIT TIMER11bit | ||
| 92 | # undef FS1_TIMER_ID | ||
| 93 | # undef FS2_TIMER_ID | ||
| 94 | # undef FS1_TIMER_BIT | ||
| 95 | # undef FS2_TIMER_BIT | ||
| 96 | #else | ||
| 97 | # define FS1_TIMER_ID TIMER0_id | ||
| 98 | # define FS2_TIMER_ID TIMER1_id | ||
| 99 | # define FS1_TIMER_BIT TIMER0bit | ||
| 100 | # define FS2_TIMER_BIT TIMER1bit | ||
| 101 | #endif | ||
| 102 | |||
| 103 | /* | ||
| 104 | ** Timer Configuration Register Bits | ||
| 105 | */ | ||
| 106 | #define TIMER_ERR 0xC000 | ||
| 107 | #define TIMER_ERR_OVFL 0x4000 | ||
| 108 | #define TIMER_ERR_PROG_PER 0x8000 | ||
| 109 | #define TIMER_ERR_PROG_PW 0xC000 | ||
| 110 | #define TIMER_EMU_RUN 0x0200 | ||
| 111 | #define TIMER_TOGGLE_HI 0x0100 | ||
| 112 | #define TIMER_CLK_SEL 0x0080 | ||
| 113 | #define TIMER_OUT_DIS 0x0040 | ||
| 114 | #define TIMER_TIN_SEL 0x0020 | ||
| 115 | #define TIMER_IRQ_ENA 0x0010 | ||
| 116 | #define TIMER_PERIOD_CNT 0x0008 | ||
| 117 | #define TIMER_PULSE_HI 0x0004 | ||
| 118 | #define TIMER_MODE 0x0003 | ||
| 119 | #define TIMER_MODE_PWM 0x0001 | ||
| 120 | #define TIMER_MODE_WDTH 0x0002 | ||
| 121 | #define TIMER_MODE_EXT_CLK 0x0003 | ||
| 122 | |||
| 123 | /* | ||
| 124 | ** Timer Status Register Bits | ||
| 125 | */ | ||
| 126 | #define TIMER_STATUS_TIMIL0 0x0001 | ||
| 127 | #define TIMER_STATUS_TIMIL1 0x0002 | ||
| 128 | #define TIMER_STATUS_TIMIL2 0x0004 | ||
| 129 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 130 | # define TIMER_STATUS_TIMIL3 0x00000008 | ||
| 131 | # define TIMER_STATUS_TIMIL4 0x00010000 | ||
| 132 | # define TIMER_STATUS_TIMIL5 0x00020000 | ||
| 133 | # define TIMER_STATUS_TIMIL6 0x00040000 | ||
| 134 | # define TIMER_STATUS_TIMIL7 0x00080000 | ||
| 135 | # if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 136 | # define TIMER_STATUS_TIMIL8 0x0001 | ||
| 137 | # define TIMER_STATUS_TIMIL9 0x0002 | ||
| 138 | # define TIMER_STATUS_TIMIL10 0x0004 | ||
| 139 | # define TIMER_STATUS_TIMIL11 0x0008 | ||
| 140 | # endif | ||
| 141 | # define TIMER_STATUS_INTR 0x000F000F | ||
| 142 | #else | ||
| 143 | # define TIMER_STATUS_INTR 0x0007 /* any timer interrupt */ | ||
| 144 | #endif | ||
| 145 | |||
| 146 | #define TIMER_STATUS_TOVF0 0x0010 /* timer 0 overflow error */ | ||
| 147 | #define TIMER_STATUS_TOVF1 0x0020 | ||
| 148 | #define TIMER_STATUS_TOVF2 0x0040 | ||
| 149 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 150 | # define TIMER_STATUS_TOVF3 0x00000080 | ||
| 151 | # define TIMER_STATUS_TOVF4 0x00100000 | ||
| 152 | # define TIMER_STATUS_TOVF5 0x00200000 | ||
| 153 | # define TIMER_STATUS_TOVF6 0x00400000 | ||
| 154 | # define TIMER_STATUS_TOVF7 0x00800000 | ||
| 155 | # if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 156 | # define TIMER_STATUS_TOVF8 0x0010 | ||
| 157 | # define TIMER_STATUS_TOVF9 0x0020 | ||
| 158 | # define TIMER_STATUS_TOVF10 0x0040 | ||
| 159 | # define TIMER_STATUS_TOVF11 0x0080 | ||
| 160 | # endif | ||
| 161 | # define TIMER_STATUS_OFLOW 0x00F000F0 | ||
| 162 | #else | ||
| 163 | # define TIMER_STATUS_OFLOW 0x0070 /* any timer overflow */ | ||
| 164 | #endif | ||
| 165 | |||
| 166 | /* | ||
| 167 | ** Timer Slave Enable Status : write 1 to clear | ||
| 168 | */ | ||
| 169 | #define TIMER_STATUS_TRUN0 0x1000 | ||
| 170 | #define TIMER_STATUS_TRUN1 0x2000 | ||
| 171 | #define TIMER_STATUS_TRUN2 0x4000 | ||
| 172 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 173 | # define TIMER_STATUS_TRUN3 0x00008000 | ||
| 174 | # define TIMER_STATUS_TRUN4 0x10000000 | ||
| 175 | # define TIMER_STATUS_TRUN5 0x20000000 | ||
| 176 | # define TIMER_STATUS_TRUN6 0x40000000 | ||
| 177 | # define TIMER_STATUS_TRUN7 0x80000000 | ||
| 178 | # define TIMER_STATUS_TRUN 0xF000F000 | ||
| 179 | # if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 180 | # define TIMER_STATUS_TRUN8 0x1000 | ||
| 181 | # define TIMER_STATUS_TRUN9 0x2000 | ||
| 182 | # define TIMER_STATUS_TRUN10 0x4000 | ||
| 183 | # define TIMER_STATUS_TRUN11 0x8000 | ||
| 184 | # endif | ||
| 185 | #else | ||
| 186 | # define TIMER_STATUS_TRUN 0x7000 | ||
| 187 | #endif | ||
| 188 | |||
| 189 | /******************************************************************************* | ||
| 190 | * GP_TIMER API's | ||
| 191 | *******************************************************************************/ | ||
| 192 | |||
| 193 | void set_gptimer_pwidth (int timer_id, int width); | ||
| 194 | int get_gptimer_pwidth (int timer_id); | ||
| 195 | void set_gptimer_period (int timer_id, int period); | ||
| 196 | int get_gptimer_period (int timer_id); | ||
| 197 | int get_gptimer_count (int timer_id); | ||
| 198 | short get_gptimer_intr (int timer_id); | ||
| 199 | void set_gptimer_config (int timer_id, short config); | ||
| 200 | short get_gptimer_config (int timer_id); | ||
| 201 | void set_gptimer_pulse_hi (int timer_id); | ||
| 202 | void clear_gptimer_pulse_hi(int timer_id); | ||
| 203 | void enable_gptimers (short mask); | ||
| 204 | void disable_gptimers (short mask); | ||
| 205 | short get_enabled_timers (void); | ||
| 206 | int get_gptimer_status (int octet); | ||
| 207 | void set_gptimer_status (int octet, int value); | ||
| 208 | |||
| 209 | #endif | ||
diff --git a/include/asm-blackfin/bfin-global.h b/include/asm-blackfin/bfin-global.h index a970781a0f98..14cb8d35924e 100644 --- a/include/asm-blackfin/bfin-global.h +++ b/include/asm-blackfin/bfin-global.h | |||
| @@ -47,6 +47,8 @@ | |||
| 47 | 47 | ||
| 48 | extern unsigned long get_cclk(void); | 48 | extern unsigned long get_cclk(void); |
| 49 | extern unsigned long get_sclk(void); | 49 | extern unsigned long get_sclk(void); |
| 50 | extern unsigned long sclk_to_usecs(unsigned long sclk); | ||
| 51 | extern unsigned long usecs_to_sclk(unsigned long usecs); | ||
| 50 | 52 | ||
| 51 | extern void dump_thread(struct pt_regs *regs, struct user *dump); | 53 | extern void dump_thread(struct pt_regs *regs, struct user *dump); |
| 52 | extern void dump_bfin_regs(struct pt_regs *fp, void *retaddr); | 54 | extern void dump_bfin_regs(struct pt_regs *fp, void *retaddr); |
| @@ -105,7 +107,7 @@ extern void led_disp_num(int); | |||
| 105 | extern void led_toggle_num(int); | 107 | extern void led_toggle_num(int); |
| 106 | extern void init_leds(void); | 108 | extern void init_leds(void); |
| 107 | 109 | ||
| 108 | extern char *bfin_board_name __attribute__ ((weak)); | 110 | extern const char bfin_board_name[]; |
| 109 | extern unsigned long wall_jiffies; | 111 | extern unsigned long wall_jiffies; |
| 110 | extern unsigned long ipdt_table[]; | 112 | extern unsigned long ipdt_table[]; |
| 111 | extern unsigned long dpdt_table[]; | 113 | extern unsigned long dpdt_table[]; |
diff --git a/include/asm-blackfin/dma.h b/include/asm-blackfin/dma.h index b42a531e7a1b..b469505af364 100644 --- a/include/asm-blackfin/dma.h +++ b/include/asm-blackfin/dma.h | |||
| @@ -109,9 +109,7 @@ struct dma_register { | |||
| 109 | 109 | ||
| 110 | unsigned long curr_desc_ptr; /* DMA Current Descriptor Pointer | 110 | unsigned long curr_desc_ptr; /* DMA Current Descriptor Pointer |
| 111 | register */ | 111 | register */ |
| 112 | unsigned short curr_addr_ptr_lo; /* DMA Current Address Pointer | 112 | unsigned long curr_addr_ptr; /* DMA Current Address Pointer |
| 113 | register */ | ||
| 114 | unsigned short curr_addr_ptr_hi; /* DMA Current Address Pointer | ||
| 115 | register */ | 113 | register */ |
| 116 | unsigned short irq_status; /* DMA irq status register */ | 114 | unsigned short irq_status; /* DMA irq status register */ |
| 117 | unsigned short dummy6; | 115 | unsigned short dummy6; |
| @@ -166,6 +164,9 @@ void set_dma_curr_addr(unsigned int channel, unsigned long addr); | |||
| 166 | unsigned short get_dma_curr_irqstat(unsigned int channel); | 164 | unsigned short get_dma_curr_irqstat(unsigned int channel); |
| 167 | unsigned short get_dma_curr_xcount(unsigned int channel); | 165 | unsigned short get_dma_curr_xcount(unsigned int channel); |
| 168 | unsigned short get_dma_curr_ycount(unsigned int channel); | 166 | unsigned short get_dma_curr_ycount(unsigned int channel); |
| 167 | unsigned long get_dma_next_desc_ptr(unsigned int channel); | ||
| 168 | unsigned long get_dma_curr_desc_ptr(unsigned int channel); | ||
| 169 | unsigned long get_dma_curr_addr(unsigned int channel); | ||
| 169 | 170 | ||
| 170 | /* set large DMA mode descriptor */ | 171 | /* set large DMA mode descriptor */ |
| 171 | void set_dma_sg(unsigned int channel, struct dmasg *sg, int nr_sg); | 172 | void set_dma_sg(unsigned int channel, struct dmasg *sg, int nr_sg); |
diff --git a/include/asm-blackfin/gpio.h b/include/asm-blackfin/gpio.h index dd203cd93796..33ce98ef7e0f 100644 --- a/include/asm-blackfin/gpio.h +++ b/include/asm-blackfin/gpio.h | |||
| @@ -29,6 +29,7 @@ | |||
| 29 | 29 | ||
| 30 | /* | 30 | /* |
| 31 | * Number BF537/6/4 BF561 BF533/2/1 | 31 | * Number BF537/6/4 BF561 BF533/2/1 |
| 32 | * BF527/5/2 | ||
| 32 | * | 33 | * |
| 33 | * GPIO_0 PF0 PF0 PF0 | 34 | * GPIO_0 PF0 PF0 PF0 |
| 34 | * GPIO_1 PF1 PF1 PF1 | 35 | * GPIO_1 PF1 PF1 PF1 |
| @@ -164,7 +165,7 @@ | |||
| 164 | 165 | ||
| 165 | #endif | 166 | #endif |
| 166 | 167 | ||
| 167 | #ifdef BF537_FAMILY | 168 | #if defined(BF527_FAMILY) || defined(BF537_FAMILY) |
| 168 | #define MAX_BLACKFIN_GPIOS 48 | 169 | #define MAX_BLACKFIN_GPIOS 48 |
| 169 | 170 | ||
| 170 | #define GPIO_PF0 0 | 171 | #define GPIO_PF0 0 |
diff --git a/include/asm-blackfin/gptimers.h b/include/asm-blackfin/gptimers.h new file mode 100644 index 000000000000..c97ab03e43a6 --- /dev/null +++ b/include/asm-blackfin/gptimers.h | |||
| @@ -0,0 +1,210 @@ | |||
| 1 | /* | ||
| 2 | * include/asm/bf5xx_timers.h | ||
| 3 | * | ||
| 4 | * This file contains the major Data structures and constants | ||
| 5 | * used for General Purpose Timer Implementation in BF5xx | ||
| 6 | * | ||
| 7 | * Copyright (C) 2005 John DeHority | ||
| 8 | * Copyright (C) 2006 Hella Aglaia GmbH (awe@aglaia-gmbh.de) | ||
| 9 | * | ||
| 10 | */ | ||
| 11 | |||
| 12 | #ifndef _BLACKFIN_TIMERS_H_ | ||
| 13 | #define _BLACKFIN_TIMERS_H_ | ||
| 14 | |||
| 15 | #include <linux/types.h> | ||
| 16 | #include <asm/blackfin.h> | ||
| 17 | |||
| 18 | /* | ||
| 19 | * BF537/BF527: 8 timers: | ||
| 20 | */ | ||
| 21 | #if defined(BF527_FAMILY) || defined(BF537_FAMILY) | ||
| 22 | # define MAX_BLACKFIN_GPTIMERS 8 | ||
| 23 | # define TIMER0_GROUP_REG TIMER_ENABLE | ||
| 24 | #endif | ||
| 25 | /* | ||
| 26 | * BF561: 12 timers: | ||
| 27 | */ | ||
| 28 | #if defined(CONFIG_BF561) | ||
| 29 | # define MAX_BLACKFIN_GPTIMERS 12 | ||
| 30 | # define TIMER0_GROUP_REG TMRS8_ENABLE | ||
| 31 | # define TIMER8_GROUP_REG TMRS4_ENABLE | ||
| 32 | #endif | ||
| 33 | /* | ||
| 34 | * All others: 3 timers: | ||
| 35 | */ | ||
| 36 | #if !defined(MAX_BLACKFIN_GPTIMERS) | ||
| 37 | # define MAX_BLACKFIN_GPTIMERS 3 | ||
| 38 | # define TIMER0_GROUP_REG TIMER_ENABLE | ||
| 39 | #endif | ||
| 40 | |||
| 41 | #define BLACKFIN_GPTIMER_IDMASK ((1UL << MAX_BLACKFIN_GPTIMERS) - 1) | ||
| 42 | #define BFIN_TIMER_OCTET(x) ((x) >> 3) | ||
| 43 | |||
| 44 | /* used in masks for timer_enable() and timer_disable() */ | ||
| 45 | #define TIMER0bit 0x0001 /* 0001b */ | ||
| 46 | #define TIMER1bit 0x0002 /* 0010b */ | ||
| 47 | #define TIMER2bit 0x0004 /* 0100b */ | ||
| 48 | |||
| 49 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 50 | # define TIMER3bit 0x0008 | ||
| 51 | # define TIMER4bit 0x0010 | ||
| 52 | # define TIMER5bit 0x0020 | ||
| 53 | # define TIMER6bit 0x0040 | ||
| 54 | # define TIMER7bit 0x0080 | ||
| 55 | #endif | ||
| 56 | |||
| 57 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 58 | # define TIMER8bit 0x0100 | ||
| 59 | # define TIMER9bit 0x0200 | ||
| 60 | # define TIMER10bit 0x0400 | ||
| 61 | # define TIMER11bit 0x0800 | ||
| 62 | #endif | ||
| 63 | |||
| 64 | #define TIMER0_id 0 | ||
| 65 | #define TIMER1_id 1 | ||
| 66 | #define TIMER2_id 2 | ||
| 67 | |||
| 68 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 69 | # define TIMER3_id 3 | ||
| 70 | # define TIMER4_id 4 | ||
| 71 | # define TIMER5_id 5 | ||
| 72 | # define TIMER6_id 6 | ||
| 73 | # define TIMER7_id 7 | ||
| 74 | #endif | ||
| 75 | |||
| 76 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 77 | # define TIMER8_id 8 | ||
| 78 | # define TIMER9_id 9 | ||
| 79 | # define TIMER10_id 10 | ||
| 80 | # define TIMER11_id 11 | ||
| 81 | #endif | ||
| 82 | |||
| 83 | /* associated timers for ppi framesync: */ | ||
| 84 | |||
| 85 | #if defined(CONFIG_BF561) | ||
| 86 | # define FS0_1_TIMER_ID TIMER8_id | ||
| 87 | # define FS0_2_TIMER_ID TIMER9_id | ||
| 88 | # define FS1_1_TIMER_ID TIMER10_id | ||
| 89 | # define FS1_2_TIMER_ID TIMER11_id | ||
| 90 | # define FS0_1_TIMER_BIT TIMER8bit | ||
| 91 | # define FS0_2_TIMER_BIT TIMER9bit | ||
| 92 | # define FS1_1_TIMER_BIT TIMER10bit | ||
| 93 | # define FS1_2_TIMER_BIT TIMER11bit | ||
| 94 | # undef FS1_TIMER_ID | ||
| 95 | # undef FS2_TIMER_ID | ||
| 96 | # undef FS1_TIMER_BIT | ||
| 97 | # undef FS2_TIMER_BIT | ||
| 98 | #else | ||
| 99 | # define FS1_TIMER_ID TIMER0_id | ||
| 100 | # define FS2_TIMER_ID TIMER1_id | ||
| 101 | # define FS1_TIMER_BIT TIMER0bit | ||
| 102 | # define FS2_TIMER_BIT TIMER1bit | ||
| 103 | #endif | ||
| 104 | |||
| 105 | /* | ||
| 106 | * Timer Configuration Register Bits | ||
| 107 | */ | ||
| 108 | #define TIMER_ERR 0xC000 | ||
| 109 | #define TIMER_ERR_OVFL 0x4000 | ||
| 110 | #define TIMER_ERR_PROG_PER 0x8000 | ||
| 111 | #define TIMER_ERR_PROG_PW 0xC000 | ||
| 112 | #define TIMER_EMU_RUN 0x0200 | ||
| 113 | #define TIMER_TOGGLE_HI 0x0100 | ||
| 114 | #define TIMER_CLK_SEL 0x0080 | ||
| 115 | #define TIMER_OUT_DIS 0x0040 | ||
| 116 | #define TIMER_TIN_SEL 0x0020 | ||
| 117 | #define TIMER_IRQ_ENA 0x0010 | ||
| 118 | #define TIMER_PERIOD_CNT 0x0008 | ||
| 119 | #define TIMER_PULSE_HI 0x0004 | ||
| 120 | #define TIMER_MODE 0x0003 | ||
| 121 | #define TIMER_MODE_PWM 0x0001 | ||
| 122 | #define TIMER_MODE_WDTH 0x0002 | ||
| 123 | #define TIMER_MODE_EXT_CLK 0x0003 | ||
| 124 | |||
| 125 | /* | ||
| 126 | * Timer Status Register Bits | ||
| 127 | */ | ||
| 128 | #define TIMER_STATUS_TIMIL0 0x0001 | ||
| 129 | #define TIMER_STATUS_TIMIL1 0x0002 | ||
| 130 | #define TIMER_STATUS_TIMIL2 0x0004 | ||
| 131 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 132 | # define TIMER_STATUS_TIMIL3 0x00000008 | ||
| 133 | # define TIMER_STATUS_TIMIL4 0x00010000 | ||
| 134 | # define TIMER_STATUS_TIMIL5 0x00020000 | ||
| 135 | # define TIMER_STATUS_TIMIL6 0x00040000 | ||
| 136 | # define TIMER_STATUS_TIMIL7 0x00080000 | ||
| 137 | # if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 138 | # define TIMER_STATUS_TIMIL8 0x0001 | ||
| 139 | # define TIMER_STATUS_TIMIL9 0x0002 | ||
| 140 | # define TIMER_STATUS_TIMIL10 0x0004 | ||
| 141 | # define TIMER_STATUS_TIMIL11 0x0008 | ||
| 142 | # endif | ||
| 143 | # define TIMER_STATUS_INTR 0x000F000F | ||
| 144 | #else | ||
| 145 | # define TIMER_STATUS_INTR 0x0007 /* any timer interrupt */ | ||
| 146 | #endif | ||
| 147 | |||
| 148 | #define TIMER_STATUS_TOVF0 0x0010 /* timer 0 overflow error */ | ||
| 149 | #define TIMER_STATUS_TOVF1 0x0020 | ||
| 150 | #define TIMER_STATUS_TOVF2 0x0040 | ||
| 151 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 152 | # define TIMER_STATUS_TOVF3 0x00000080 | ||
| 153 | # define TIMER_STATUS_TOVF4 0x00100000 | ||
| 154 | # define TIMER_STATUS_TOVF5 0x00200000 | ||
| 155 | # define TIMER_STATUS_TOVF6 0x00400000 | ||
| 156 | # define TIMER_STATUS_TOVF7 0x00800000 | ||
| 157 | # if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 158 | # define TIMER_STATUS_TOVF8 0x0010 | ||
| 159 | # define TIMER_STATUS_TOVF9 0x0020 | ||
| 160 | # define TIMER_STATUS_TOVF10 0x0040 | ||
| 161 | # define TIMER_STATUS_TOVF11 0x0080 | ||
| 162 | # endif | ||
| 163 | # define TIMER_STATUS_OFLOW 0x00F000F0 | ||
| 164 | #else | ||
| 165 | # define TIMER_STATUS_OFLOW 0x0070 /* any timer overflow */ | ||
| 166 | #endif | ||
| 167 | |||
| 168 | /* | ||
| 169 | * Timer Slave Enable Status : write 1 to clear | ||
| 170 | */ | ||
| 171 | #define TIMER_STATUS_TRUN0 0x1000 | ||
| 172 | #define TIMER_STATUS_TRUN1 0x2000 | ||
| 173 | #define TIMER_STATUS_TRUN2 0x4000 | ||
| 174 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 175 | # define TIMER_STATUS_TRUN3 0x00008000 | ||
| 176 | # define TIMER_STATUS_TRUN4 0x10000000 | ||
| 177 | # define TIMER_STATUS_TRUN5 0x20000000 | ||
| 178 | # define TIMER_STATUS_TRUN6 0x40000000 | ||
| 179 | # define TIMER_STATUS_TRUN7 0x80000000 | ||
| 180 | # define TIMER_STATUS_TRUN 0xF000F000 | ||
| 181 | # if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 182 | # define TIMER_STATUS_TRUN8 0x1000 | ||
| 183 | # define TIMER_STATUS_TRUN9 0x2000 | ||
| 184 | # define TIMER_STATUS_TRUN10 0x4000 | ||
| 185 | # define TIMER_STATUS_TRUN11 0x8000 | ||
| 186 | # endif | ||
| 187 | #else | ||
| 188 | # define TIMER_STATUS_TRUN 0x7000 | ||
| 189 | #endif | ||
| 190 | |||
| 191 | /* The actual gptimer API */ | ||
| 192 | |||
| 193 | void set_gptimer_pwidth (int timer_id, uint32_t width); | ||
| 194 | uint32_t get_gptimer_pwidth (int timer_id); | ||
| 195 | void set_gptimer_period (int timer_id, uint32_t period); | ||
| 196 | uint32_t get_gptimer_period (int timer_id); | ||
| 197 | uint32_t get_gptimer_count (int timer_id); | ||
| 198 | uint16_t get_gptimer_intr (int timer_id); | ||
| 199 | void clear_gptimer_intr (int timer_id); | ||
| 200 | void set_gptimer_config (int timer_id, uint16_t config); | ||
| 201 | uint16_t get_gptimer_config (int timer_id); | ||
| 202 | void set_gptimer_pulse_hi (int timer_id); | ||
| 203 | void clear_gptimer_pulse_hi(int timer_id); | ||
| 204 | void enable_gptimers (uint16_t mask); | ||
| 205 | void disable_gptimers (uint16_t mask); | ||
| 206 | uint16_t get_enabled_gptimers (void); | ||
| 207 | uint32_t get_gptimer_status (int group); | ||
| 208 | void set_gptimer_status (int group, uint32_t value); | ||
| 209 | |||
| 210 | #endif | ||
diff --git a/include/asm-blackfin/mach-bf527/anomaly.h b/include/asm-blackfin/mach-bf527/anomaly.h index 991db986cd4b..a89120445be6 100644 --- a/include/asm-blackfin/mach-bf527/anomaly.h +++ b/include/asm-blackfin/mach-bf527/anomaly.h | |||
| @@ -38,4 +38,12 @@ | |||
| 38 | 38 | ||
| 39 | /* Anomalies that don't exist on this proc */ | 39 | /* Anomalies that don't exist on this proc */ |
| 40 | #define ANOMALY_05000323 (0) | 40 | #define ANOMALY_05000323 (0) |
| 41 | #define ANOMALY_05000244 (0) | ||
| 42 | #define ANOMALY_05000198 (0) | ||
| 43 | #define ANOMALY_05000125 (0) | ||
| 44 | #define ANOMALY_05000158 (0) | ||
| 45 | #define ANOMALY_05000273 (0) | ||
| 46 | #define ANOMALY_05000263 (0) | ||
| 47 | #define ANOMALY_05000311 (0) | ||
| 48 | #define ANOMALY_05000230 (0) | ||
| 41 | #endif | 49 | #endif |
diff --git a/include/asm-blackfin/mach-bf527/bf527.h b/include/asm-blackfin/mach-bf527/bf527.h new file mode 100644 index 000000000000..056eb4b9cd25 --- /dev/null +++ b/include/asm-blackfin/mach-bf527/bf527.h | |||
| @@ -0,0 +1,127 @@ | |||
| 1 | /* | ||
| 2 | * File: include/asm-blackfin/mach-bf527/bf527.h | ||
| 3 | * Based on: include/asm-blackfin/mach-bf537/bf537.h | ||
| 4 | * Author: Michael Hennerich (michael.hennerich@analog.com) | ||
| 5 | * | ||
| 6 | * Created: | ||
| 7 | * Description: SYSTEM MMR REGISTER AND MEMORY MAP FOR ADSP-BF527 | ||
| 8 | * | ||
| 9 | * Modified: | ||
| 10 | * Copyright 2004-2007 Analog Devices Inc. | ||
| 11 | * | ||
| 12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
| 13 | * | ||
| 14 | * This program is free software; you can redistribute it and/or modify | ||
| 15 | * it under the terms of the GNU General Public License as published by | ||
| 16 | * the Free Software Foundation; either version 2 of the License, or | ||
| 17 | * (at your option) any later version. | ||
| 18 | * | ||
| 19 | * This program is distributed in the hope that it will be useful, | ||
| 20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 22 | * GNU General Public License for more details. | ||
| 23 | * | ||
| 24 | * You should have received a copy of the GNU General Public License | ||
| 25 | * along with this program; if not, see the file COPYING, or write | ||
| 26 | * to the Free Software Foundation, Inc., | ||
| 27 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 28 | */ | ||
| 29 | |||
| 30 | #ifndef __MACH_BF527_H__ | ||
| 31 | #define __MACH_BF527_H__ | ||
| 32 | |||
| 33 | #define SUPPORTED_REVID 2 | ||
| 34 | |||
| 35 | #define OFFSET_(x) ((x) & 0x0000FFFF) | ||
| 36 | |||
| 37 | /*some misc defines*/ | ||
| 38 | #define IMASK_IVG15 0x8000 | ||
| 39 | #define IMASK_IVG14 0x4000 | ||
| 40 | #define IMASK_IVG13 0x2000 | ||
| 41 | #define IMASK_IVG12 0x1000 | ||
| 42 | |||
| 43 | #define IMASK_IVG11 0x0800 | ||
| 44 | #define IMASK_IVG10 0x0400 | ||
| 45 | #define IMASK_IVG9 0x0200 | ||
| 46 | #define IMASK_IVG8 0x0100 | ||
| 47 | |||
| 48 | #define IMASK_IVG7 0x0080 | ||
| 49 | #define IMASK_IVGTMR 0x0040 | ||
| 50 | #define IMASK_IVGHW 0x0020 | ||
| 51 | |||
| 52 | /***************************/ | ||
| 53 | |||
| 54 | #define BFIN_DSUBBANKS 4 | ||
| 55 | #define BFIN_DWAYS 2 | ||
| 56 | #define BFIN_DLINES 64 | ||
| 57 | #define BFIN_ISUBBANKS 4 | ||
| 58 | #define BFIN_IWAYS 4 | ||
| 59 | #define BFIN_ILINES 32 | ||
| 60 | |||
| 61 | #define WAY0_L 0x1 | ||
| 62 | #define WAY1_L 0x2 | ||
| 63 | #define WAY01_L 0x3 | ||
| 64 | #define WAY2_L 0x4 | ||
| 65 | #define WAY02_L 0x5 | ||
| 66 | #define WAY12_L 0x6 | ||
| 67 | #define WAY012_L 0x7 | ||
| 68 | |||
| 69 | #define WAY3_L 0x8 | ||
| 70 | #define WAY03_L 0x9 | ||
| 71 | #define WAY13_L 0xA | ||
| 72 | #define WAY013_L 0xB | ||
| 73 | |||
| 74 | #define WAY32_L 0xC | ||
| 75 | #define WAY320_L 0xD | ||
| 76 | #define WAY321_L 0xE | ||
| 77 | #define WAYALL_L 0xF | ||
| 78 | |||
| 79 | #define DMC_ENABLE (2<<2) /*yes, 2, not 1 */ | ||
| 80 | |||
| 81 | /********************************* EBIU Settings ************************************/ | ||
| 82 | #define AMBCTL0VAL ((CONFIG_BANK_1 << 16) | CONFIG_BANK_0) | ||
| 83 | #define AMBCTL1VAL ((CONFIG_BANK_3 << 16) | CONFIG_BANK_2) | ||
| 84 | |||
| 85 | #ifdef CONFIG_C_AMBEN_ALL | ||
| 86 | #define V_AMBEN AMBEN_ALL | ||
| 87 | #endif | ||
| 88 | #ifdef CONFIG_C_AMBEN | ||
| 89 | #define V_AMBEN 0x0 | ||
| 90 | #endif | ||
| 91 | #ifdef CONFIG_C_AMBEN_B0 | ||
| 92 | #define V_AMBEN AMBEN_B0 | ||
| 93 | #endif | ||
| 94 | #ifdef CONFIG_C_AMBEN_B0_B1 | ||
| 95 | #define V_AMBEN AMBEN_B0_B1 | ||
| 96 | #endif | ||
| 97 | #ifdef CONFIG_C_AMBEN_B0_B1_B2 | ||
| 98 | #define V_AMBEN AMBEN_B0_B1_B2 | ||
| 99 | #endif | ||
| 100 | #ifdef CONFIG_C_AMCKEN | ||
| 101 | #define V_AMCKEN AMCKEN | ||
| 102 | #else | ||
| 103 | #define V_AMCKEN 0x0 | ||
| 104 | #endif | ||
| 105 | #ifdef CONFIG_C_CDPRIO | ||
| 106 | #define V_CDPRIO 0x100 | ||
| 107 | #else | ||
| 108 | #define V_CDPRIO 0x0 | ||
| 109 | #endif | ||
| 110 | |||
| 111 | #define AMGCTLVAL (V_AMBEN | V_AMCKEN | V_CDPRIO) | ||
| 112 | |||
| 113 | #ifdef CONFIG_BF527 | ||
| 114 | #define CPU "BF527" | ||
| 115 | #endif | ||
| 116 | #ifdef CONFIG_BF525 | ||
| 117 | #define CPU "BF525" | ||
| 118 | #endif | ||
| 119 | #ifdef CONFIG_BF522 | ||
| 120 | #define CPU "BF522" | ||
| 121 | #endif | ||
| 122 | #ifndef CPU | ||
| 123 | #define CPU "UNKNOWN" | ||
| 124 | #define CPUID 0x0 | ||
| 125 | #endif | ||
| 126 | |||
| 127 | #endif /* __MACH_BF527_H__ */ | ||
diff --git a/include/asm-blackfin/mach-bf527/bfin_serial_5xx.h b/include/asm-blackfin/mach-bf527/bfin_serial_5xx.h new file mode 100644 index 000000000000..0b867e6a76c4 --- /dev/null +++ b/include/asm-blackfin/mach-bf527/bfin_serial_5xx.h | |||
| @@ -0,0 +1,152 @@ | |||
| 1 | #include <linux/serial.h> | ||
| 2 | #include <asm/dma.h> | ||
| 3 | #include <asm/portmux.h> | ||
| 4 | |||
| 5 | #define NR_PORTS 2 | ||
| 6 | |||
| 7 | #define OFFSET_THR 0x00 /* Transmit Holding register */ | ||
| 8 | #define OFFSET_RBR 0x00 /* Receive Buffer register */ | ||
| 9 | #define OFFSET_DLL 0x00 /* Divisor Latch (Low-Byte) */ | ||
| 10 | #define OFFSET_IER 0x04 /* Interrupt Enable Register */ | ||
| 11 | #define OFFSET_DLH 0x04 /* Divisor Latch (High-Byte) */ | ||
| 12 | #define OFFSET_IIR 0x08 /* Interrupt Identification Register */ | ||
| 13 | #define OFFSET_LCR 0x0C /* Line Control Register */ | ||
| 14 | #define OFFSET_MCR 0x10 /* Modem Control Register */ | ||
| 15 | #define OFFSET_LSR 0x14 /* Line Status Register */ | ||
| 16 | #define OFFSET_MSR 0x18 /* Modem Status Register */ | ||
| 17 | #define OFFSET_SCR 0x1C /* SCR Scratch Register */ | ||
| 18 | #define OFFSET_GCTL 0x24 /* Global Control Register */ | ||
| 19 | |||
| 20 | #define UART_GET_CHAR(uart) bfin_read16(((uart)->port.membase + OFFSET_RBR)) | ||
| 21 | #define UART_GET_DLL(uart) bfin_read16(((uart)->port.membase + OFFSET_DLL)) | ||
| 22 | #define UART_GET_IER(uart) bfin_read16(((uart)->port.membase + OFFSET_IER)) | ||
| 23 | #define UART_GET_DLH(uart) bfin_read16(((uart)->port.membase + OFFSET_DLH)) | ||
| 24 | #define UART_GET_IIR(uart) bfin_read16(((uart)->port.membase + OFFSET_IIR)) | ||
| 25 | #define UART_GET_LCR(uart) bfin_read16(((uart)->port.membase + OFFSET_LCR)) | ||
| 26 | #define UART_GET_LSR(uart) bfin_read16(((uart)->port.membase + OFFSET_LSR)) | ||
| 27 | #define UART_GET_GCTL(uart) bfin_read16(((uart)->port.membase + OFFSET_GCTL)) | ||
| 28 | |||
| 29 | #define UART_PUT_CHAR(uart, v) bfin_write16(((uart)->port.membase + OFFSET_THR), v) | ||
| 30 | #define UART_PUT_DLL(uart, v) bfin_write16(((uart)->port.membase + OFFSET_DLL), v) | ||
| 31 | #define UART_PUT_IER(uart, v) bfin_write16(((uart)->port.membase + OFFSET_IER), v) | ||
| 32 | #define UART_PUT_DLH(uart, v) bfin_write16(((uart)->port.membase + OFFSET_DLH), v) | ||
| 33 | #define UART_PUT_LCR(uart, v) bfin_write16(((uart)->port.membase + OFFSET_LCR), v) | ||
| 34 | #define UART_PUT_GCTL(uart, v) bfin_write16(((uart)->port.membase + OFFSET_GCTL), v) | ||
| 35 | |||
| 36 | #if defined(CONFIG_BFIN_UART0_CTSRTS) || defined(CONFIG_BFIN_UART1_CTSRTS) | ||
| 37 | # define CONFIG_SERIAL_BFIN_CTSRTS | ||
| 38 | |||
| 39 | # ifndef CONFIG_UART0_CTS_PIN | ||
| 40 | # define CONFIG_UART0_CTS_PIN -1 | ||
| 41 | # endif | ||
| 42 | |||
| 43 | # ifndef CONFIG_UART0_RTS_PIN | ||
| 44 | # define CONFIG_UART0_RTS_PIN -1 | ||
| 45 | # endif | ||
| 46 | |||
| 47 | # ifndef CONFIG_UART1_CTS_PIN | ||
| 48 | # define CONFIG_UART1_CTS_PIN -1 | ||
| 49 | # endif | ||
| 50 | |||
| 51 | # ifndef CONFIG_UART1_RTS_PIN | ||
| 52 | # define CONFIG_UART1_RTS_PIN -1 | ||
| 53 | # endif | ||
| 54 | #endif | ||
| 55 | /* | ||
| 56 | * The pin configuration is different from schematic | ||
| 57 | */ | ||
| 58 | struct bfin_serial_port { | ||
| 59 | struct uart_port port; | ||
| 60 | unsigned int old_status; | ||
| 61 | #ifdef CONFIG_SERIAL_BFIN_DMA | ||
| 62 | int tx_done; | ||
| 63 | int tx_count; | ||
| 64 | struct circ_buf rx_dma_buf; | ||
| 65 | struct timer_list rx_dma_timer; | ||
| 66 | int rx_dma_nrows; | ||
| 67 | unsigned int tx_dma_channel; | ||
| 68 | unsigned int rx_dma_channel; | ||
| 69 | struct work_struct tx_dma_workqueue; | ||
| 70 | #else | ||
| 71 | struct work_struct cts_workqueue; | ||
| 72 | #endif | ||
| 73 | #ifdef CONFIG_SERIAL_BFIN_CTSRTS | ||
| 74 | int cts_pin; | ||
| 75 | int rts_pin; | ||
| 76 | #endif | ||
| 77 | }; | ||
| 78 | |||
| 79 | struct bfin_serial_port bfin_serial_ports[NR_PORTS]; | ||
| 80 | struct bfin_serial_res { | ||
| 81 | unsigned long uart_base_addr; | ||
| 82 | int uart_irq; | ||
| 83 | #ifdef CONFIG_SERIAL_BFIN_DMA | ||
| 84 | unsigned int uart_tx_dma_channel; | ||
| 85 | unsigned int uart_rx_dma_channel; | ||
| 86 | #endif | ||
| 87 | #ifdef CONFIG_SERIAL_BFIN_CTSRTS | ||
| 88 | int uart_cts_pin; | ||
| 89 | int uart_rts_pin; | ||
| 90 | #endif | ||
| 91 | }; | ||
| 92 | |||
| 93 | struct bfin_serial_res bfin_serial_resource[] = { | ||
| 94 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
| 95 | { | ||
| 96 | 0xFFC00400, | ||
| 97 | IRQ_UART0_RX, | ||
| 98 | #ifdef CONFIG_SERIAL_BFIN_DMA | ||
| 99 | CH_UART0_TX, | ||
| 100 | CH_UART0_RX, | ||
| 101 | #endif | ||
| 102 | #ifdef CONFIG_BFIN_UART0_CTSRTS | ||
| 103 | CONFIG_UART0_CTS_PIN, | ||
| 104 | CONFIG_UART0_RTS_PIN, | ||
| 105 | #endif | ||
| 106 | }, | ||
| 107 | #endif | ||
| 108 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
| 109 | { | ||
| 110 | 0xFFC02000, | ||
| 111 | IRQ_UART1_RX, | ||
| 112 | #ifdef CONFIG_SERIAL_BFIN_DMA | ||
| 113 | CH_UART1_TX, | ||
| 114 | CH_UART1_RX, | ||
| 115 | #endif | ||
| 116 | #ifdef CONFIG_BFIN_UART1_CTSRTS | ||
| 117 | CONFIG_UART1_CTS_PIN, | ||
| 118 | CONFIG_UART1_RTS_PIN, | ||
| 119 | #endif | ||
| 120 | }, | ||
| 121 | #endif | ||
| 122 | }; | ||
| 123 | |||
| 124 | int nr_ports = ARRAY_SIZE(bfin_serial_resource); | ||
| 125 | |||
| 126 | #define DRIVER_NAME "bfin-uart" | ||
| 127 | |||
| 128 | static void bfin_serial_hw_init(struct bfin_serial_port *uart) | ||
| 129 | { | ||
| 130 | |||
| 131 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
| 132 | peripheral_request(P_UART0_TX, DRIVER_NAME); | ||
| 133 | peripheral_request(P_UART0_RX, DRIVER_NAME); | ||
| 134 | #endif | ||
| 135 | |||
| 136 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
| 137 | peripheral_request(P_UART1_TX, DRIVER_NAME); | ||
| 138 | peripheral_request(P_UART1_RX, DRIVER_NAME); | ||
| 139 | #endif | ||
| 140 | |||
| 141 | #ifdef CONFIG_SERIAL_BFIN_CTSRTS | ||
| 142 | if (uart->cts_pin >= 0) { | ||
| 143 | gpio_request(uart->cts_pin, DRIVER_NAME); | ||
| 144 | gpio_direction_input(uart->cts_pin); | ||
| 145 | } | ||
| 146 | |||
| 147 | if (uart->rts_pin >= 0) { | ||
| 148 | gpio_request(uart->rts_pin, DRIVER_NAME); | ||
| 149 | gpio_direction_output(uart->rts_pin); | ||
| 150 | } | ||
| 151 | #endif | ||
| 152 | } | ||
diff --git a/include/asm-blackfin/mach-bf527/blackfin.h b/include/asm-blackfin/mach-bf527/blackfin.h new file mode 100644 index 000000000000..1bd07e30781c --- /dev/null +++ b/include/asm-blackfin/mach-bf527/blackfin.h | |||
| @@ -0,0 +1,78 @@ | |||
| 1 | /* | ||
| 2 | * File: include/asm-blackfin/mach-bf527/blackfin.h | ||
| 3 | * Based on: | ||
| 4 | * Author: | ||
| 5 | * | ||
| 6 | * Created: | ||
| 7 | * Description: | ||
| 8 | * | ||
| 9 | * Rev: | ||
| 10 | * | ||
| 11 | * Modified: | ||
| 12 | * | ||
| 13 | * | ||
| 14 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
| 15 | * | ||
| 16 | * This program is free software; you can redistribute it and/or modify | ||
| 17 | * it under the terms of the GNU General Public License as published by | ||
| 18 | * the Free Software Foundation; either version 2, or (at your option) | ||
| 19 | * any later version. | ||
| 20 | * | ||
| 21 | * This program is distributed in the hope that it will be useful, | ||
| 22 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 23 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 24 | * GNU General Public License for more details. | ||
| 25 | * | ||
| 26 | * You should have received a copy of the GNU General Public License | ||
| 27 | * along with this program; see the file COPYING. | ||
| 28 | * If not, write to the Free Software Foundation, | ||
| 29 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
| 30 | */ | ||
| 31 | |||
| 32 | #ifndef _MACH_BLACKFIN_H_ | ||
| 33 | #define _MACH_BLACKFIN_H_ | ||
| 34 | |||
| 35 | #define BF527_FAMILY | ||
| 36 | |||
| 37 | #include "bf527.h" | ||
| 38 | #include "mem_map.h" | ||
| 39 | #include "defBF522.h" | ||
| 40 | #include "anomaly.h" | ||
| 41 | |||
| 42 | #if defined(CONFIG_BF527) | ||
| 43 | #include "defBF527.h" | ||
| 44 | #endif | ||
| 45 | |||
| 46 | #if defined(CONFIG_BF525) | ||
| 47 | #include "defBF525.h" | ||
| 48 | #endif | ||
| 49 | |||
| 50 | #if !defined(__ASSEMBLY__) | ||
| 51 | #include "cdefBF522.h" | ||
| 52 | |||
| 53 | #if defined(CONFIG_BF527) | ||
| 54 | #include "cdefBF527.h" | ||
| 55 | #endif | ||
| 56 | |||
| 57 | #if defined(CONFIG_BF525) | ||
| 58 | #include "cdefBF525.h" | ||
| 59 | #endif | ||
| 60 | #endif | ||
| 61 | |||
| 62 | /* UART_IIR Register */ | ||
| 63 | #define STATUS(x) ((x << 1) & 0x06) | ||
| 64 | #define STATUS_P1 0x02 | ||
| 65 | #define STATUS_P0 0x01 | ||
| 66 | |||
| 67 | /* DPMC*/ | ||
| 68 | #define bfin_read_STOPCK_OFF() bfin_read_STOPCK() | ||
| 69 | #define bfin_write_STOPCK_OFF(val) bfin_write_STOPCK(val) | ||
| 70 | #define STOPCK_OFF STOPCK | ||
| 71 | |||
| 72 | /* PLL_DIV Masks */ | ||
| 73 | #define CCLK_DIV1 CSEL_DIV1 /* CCLK = VCO / 1 */ | ||
| 74 | #define CCLK_DIV2 CSEL_DIV2 /* CCLK = VCO / 2 */ | ||
| 75 | #define CCLK_DIV4 CSEL_DIV4 /* CCLK = VCO / 4 */ | ||
| 76 | #define CCLK_DIV8 CSEL_DIV8 /* CCLK = VCO / 8 */ | ||
| 77 | |||
| 78 | #endif | ||
diff --git a/include/asm-blackfin/mach-bf527/cdefBF52x_base.h b/include/asm-blackfin/mach-bf527/cdefBF52x_base.h index 5f801a0ef797..3f4de5d9d4cb 100644 --- a/include/asm-blackfin/mach-bf527/cdefBF52x_base.h +++ b/include/asm-blackfin/mach-bf527/cdefBF52x_base.h | |||
| @@ -45,8 +45,8 @@ | |||
| 45 | #define bfin_write_PLL_STAT(val) bfin_write16(PLL_STAT, val) | 45 | #define bfin_write_PLL_STAT(val) bfin_write16(PLL_STAT, val) |
| 46 | #define bfin_read_PLL_LOCKCNT() bfin_read16(PLL_LOCKCNT) | 46 | #define bfin_read_PLL_LOCKCNT() bfin_read16(PLL_LOCKCNT) |
| 47 | #define bfin_write_PLL_LOCKCNT(val) bfin_write16(PLL_LOCKCNT, val) | 47 | #define bfin_write_PLL_LOCKCNT(val) bfin_write16(PLL_LOCKCNT, val) |
| 48 | #define bfin_read_CHIPID() bfin_read16(CHIPID) | 48 | #define bfin_read_CHIPID() bfin_read32(CHIPID) |
| 49 | #define bfin_write_CHIPID(val) bfin_write16(CHIPID, val) | 49 | #define bfin_write_CHIPID(val) bfin_write32(CHIPID, val) |
| 50 | 50 | ||
| 51 | 51 | ||
| 52 | /* System Interrupt Controller (0xFFC00100 - 0xFFC001FF) */ | 52 | /* System Interrupt Controller (0xFFC00100 - 0xFFC001FF) */ |
| @@ -59,9 +59,8 @@ | |||
| 59 | #define bfin_write_SIC_RVECT(val) bfin_write32(SIC_RVECT, val) | 59 | #define bfin_write_SIC_RVECT(val) bfin_write32(SIC_RVECT, val) |
| 60 | #define bfin_read_SIC_IMASK0() bfin_read32(SIC_IMASK0) | 60 | #define bfin_read_SIC_IMASK0() bfin_read32(SIC_IMASK0) |
| 61 | #define bfin_write_SIC_IMASK0(val) bfin_write32(SIC_IMASK0, val) | 61 | #define bfin_write_SIC_IMASK0(val) bfin_write32(SIC_IMASK0, val) |
| 62 | /* legacy register name (below) provided for backwards code compatibility */ | 62 | #define bfin_read_SIC_IMASK(x) bfin_read32(SIC_IMASK0 + (x << 6)) |
| 63 | #define bfin_read_SIC_IMASK() bfin_read32(SIC_IMASK) | 63 | #define bfin_write_SIC_IMASK(x, val) bfin_write32((SIC_IMASK0 + (x << 6)), val) |
| 64 | #define bfin_write_SIC_IMASK(val) bfin_write32(SIC_IMASK, val) | ||
| 65 | 64 | ||
| 66 | #define bfin_read_SIC_IAR0() bfin_read32(SIC_IAR0) | 65 | #define bfin_read_SIC_IAR0() bfin_read32(SIC_IAR0) |
| 67 | #define bfin_write_SIC_IAR0(val) bfin_write32(SIC_IAR0, val) | 66 | #define bfin_write_SIC_IAR0(val) bfin_write32(SIC_IAR0, val) |
| @@ -74,15 +73,13 @@ | |||
| 74 | 73 | ||
| 75 | #define bfin_read_SIC_ISR0() bfin_read32(SIC_ISR0) | 74 | #define bfin_read_SIC_ISR0() bfin_read32(SIC_ISR0) |
| 76 | #define bfin_write_SIC_ISR0(val) bfin_write32(SIC_ISR0, val) | 75 | #define bfin_write_SIC_ISR0(val) bfin_write32(SIC_ISR0, val) |
| 77 | /* legacy register name (below) provided for backwards code compatibility */ | 76 | #define bfin_read_SIC_ISR(x) bfin_read32(SIC_ISR0 + (x << 6)) |
| 78 | #define bfin_read_SIC_ISR() bfin_read32(SIC_ISR) | 77 | #define bfin_write_SIC_ISR(x, val) bfin_write32((SIC_ISR0 + (x << 6)), val) |
| 79 | #define bfin_write_SIC_ISR(val) bfin_write32(SIC_ISR, val) | ||
| 80 | 78 | ||
| 81 | #define bfin_read_SIC_IWR0() bfin_read32(SIC_IWR0) | 79 | #define bfin_read_SIC_IWR0() bfin_read32(SIC_IWR0) |
| 82 | #define bfin_write_SIC_IWR0(val) bfin_write32(SIC_IWR0, val) | 80 | #define bfin_write_SIC_IWR0(val) bfin_write32(SIC_IWR0, val) |
| 83 | /* legacy register name (below) provided for backwards code compatibility */ | 81 | #define bfin_read_SIC_IWR(x) bfin_read32(SIC_IWR0 + (x << 6)) |
| 84 | #define bfin_read_SIC_IWR() bfin_read32(SIC_IWR) | 82 | #define bfin_write_SIC_IWR(x, val) bfin_write32((SIC_IWR0 + (x << 6)), val) |
| 85 | #define bfin_write_SIC_IWR(val) bfin_write32(SIC_IWR, val) | ||
| 86 | 83 | ||
| 87 | /* SIC Additions to ADSP-BF52x (0xFFC0014C - 0xFFC00162) */ | 84 | /* SIC Additions to ADSP-BF52x (0xFFC0014C - 0xFFC00162) */ |
| 88 | 85 | ||
diff --git a/include/asm-blackfin/mach-bf527/defBF527.h b/include/asm-blackfin/mach-bf527/defBF527.h index 2be3293f9e26..82134f578f32 100644 --- a/include/asm-blackfin/mach-bf527/defBF527.h +++ b/include/asm-blackfin/mach-bf527/defBF527.h | |||
| @@ -32,12 +32,12 @@ | |||
| 32 | #define _DEF_BF527_H | 32 | #define _DEF_BF527_H |
| 33 | 33 | ||
| 34 | /* Include all Core registers and bit definitions */ | 34 | /* Include all Core registers and bit definitions */ |
| 35 | #include <def_LPBlackfin.h> | 35 | #include <asm/mach-common/def_LPBlackfin.h> |
| 36 | 36 | ||
| 37 | /* SYSTEM & MMR ADDRESS DEFINITIONS FOR ADSP-BF527 */ | 37 | /* SYSTEM & MMR ADDRESS DEFINITIONS FOR ADSP-BF527 */ |
| 38 | 38 | ||
| 39 | /* Include defBF52x_base.h for the set of #defines that are common to all ADSP-BF52x processors */ | 39 | /* Include defBF52x_base.h for the set of #defines that are common to all ADSP-BF52x processors */ |
| 40 | #include <defBF52x_base.h> | 40 | #include "defBF52x_base.h" |
| 41 | 41 | ||
| 42 | /* The following are the #defines needed by ADSP-BF527 that are not in the common header */ | 42 | /* The following are the #defines needed by ADSP-BF527 that are not in the common header */ |
| 43 | /* 10/100 Ethernet Controller (0xFFC03000 - 0xFFC031FF) */ | 43 | /* 10/100 Ethernet Controller (0xFFC03000 - 0xFFC031FF) */ |
diff --git a/include/asm-blackfin/mach-bf527/defBF52x_base.h b/include/asm-blackfin/mach-bf527/defBF52x_base.h index b1ff67db01f8..d6c24c54699d 100644 --- a/include/asm-blackfin/mach-bf527/defBF52x_base.h +++ b/include/asm-blackfin/mach-bf527/defBF52x_base.h | |||
| @@ -52,13 +52,13 @@ | |||
| 52 | #define SYSCR 0xFFC00104 /* System Configuration Register */ | 52 | #define SYSCR 0xFFC00104 /* System Configuration Register */ |
| 53 | #define SIC_RVECT 0xFFC00108 /* Interrupt Reset Vector Address Register */ | 53 | #define SIC_RVECT 0xFFC00108 /* Interrupt Reset Vector Address Register */ |
| 54 | 54 | ||
| 55 | #define SIC_IMASK 0xFFC0010C /* Interrupt Mask Register */ | 55 | #define SIC_IMASK0 0xFFC0010C /* Interrupt Mask Register */ |
| 56 | #define SIC_IAR0 0xFFC00110 /* Interrupt Assignment Register 0 */ | 56 | #define SIC_IAR0 0xFFC00110 /* Interrupt Assignment Register 0 */ |
| 57 | #define SIC_IAR1 0xFFC00114 /* Interrupt Assignment Register 1 */ | 57 | #define SIC_IAR1 0xFFC00114 /* Interrupt Assignment Register 1 */ |
| 58 | #define SIC_IAR2 0xFFC00118 /* Interrupt Assignment Register 2 */ | 58 | #define SIC_IAR2 0xFFC00118 /* Interrupt Assignment Register 2 */ |
| 59 | #define SIC_IAR3 0xFFC0011C /* Interrupt Assignment Register 3 */ | 59 | #define SIC_IAR3 0xFFC0011C /* Interrupt Assignment Register 3 */ |
| 60 | #define SIC_ISR 0xFFC00120 /* Interrupt Status Register */ | 60 | #define SIC_ISR0 0xFFC00120 /* Interrupt Status Register */ |
| 61 | #define SIC_IWR 0xFFC00124 /* Interrupt Wakeup Register */ | 61 | #define SIC_IWR0 0xFFC00124 /* Interrupt Wakeup Register */ |
| 62 | 62 | ||
| 63 | /* SIC Additions to ADSP-BF52x (0xFFC0014C - 0xFFC00162) */ | 63 | /* SIC Additions to ADSP-BF52x (0xFFC0014C - 0xFFC00162) */ |
| 64 | #define SIC_IMASK1 0xFFC0014C /* Interrupt Mask register of SIC2 */ | 64 | #define SIC_IMASK1 0xFFC0014C /* Interrupt Mask register of SIC2 */ |
| @@ -691,6 +691,8 @@ | |||
| 691 | 691 | ||
| 692 | /* ************* SYSTEM INTERRUPT CONTROLLER MASKS *************************************/ | 692 | /* ************* SYSTEM INTERRUPT CONTROLLER MASKS *************************************/ |
| 693 | /* Peripheral Masks For SIC_ISR, SIC_IWR, SIC_IMASK */ | 693 | /* Peripheral Masks For SIC_ISR, SIC_IWR, SIC_IMASK */ |
| 694 | |||
| 695 | #if 0 | ||
| 694 | #define IRQ_PLL_WAKEUP 0x00000001 /* PLL Wakeup Interrupt */ | 696 | #define IRQ_PLL_WAKEUP 0x00000001 /* PLL Wakeup Interrupt */ |
| 695 | 697 | ||
| 696 | #define IRQ_ERROR1 0x00000002 /* Error Interrupt (DMA, DMARx Block, DMARx Overflow) */ | 698 | #define IRQ_ERROR1 0x00000002 /* Error Interrupt (DMA, DMARx Block, DMARx Overflow) */ |
| @@ -732,6 +734,7 @@ | |||
| 732 | #define IRQ_DMA15 0x40000000 /* DMA Channels 15 (MDMA0 Destination) TX Interrupt */ | 734 | #define IRQ_DMA15 0x40000000 /* DMA Channels 15 (MDMA0 Destination) TX Interrupt */ |
| 733 | #define IRQ_WDOG 0x80000000 /* Software Watchdog Timer Interrupt */ | 735 | #define IRQ_WDOG 0x80000000 /* Software Watchdog Timer Interrupt */ |
| 734 | #define IRQ_PFB_PORTG 0x10000000 /* PF Port G (PF31:16) Interrupt B */ | 736 | #define IRQ_PFB_PORTG 0x10000000 /* PF Port G (PF31:16) Interrupt B */ |
| 737 | #endif | ||
| 735 | 738 | ||
| 736 | /* SIC_IAR0 Macros */ | 739 | /* SIC_IAR0 Macros */ |
| 737 | #define P0_IVG(x) (((x)&0xF)-7) /* Peripheral #0 assigned IVG #x */ | 740 | #define P0_IVG(x) (((x)&0xF)-7) /* Peripheral #0 assigned IVG #x */ |
diff --git a/include/asm-blackfin/mach-bf527/dma.h b/include/asm-blackfin/mach-bf527/dma.h new file mode 100644 index 000000000000..a41627ae9134 --- /dev/null +++ b/include/asm-blackfin/mach-bf527/dma.h | |||
| @@ -0,0 +1,60 @@ | |||
| 1 | /* | ||
| 2 | * file: include/asm-blackfin/mach-bf527/dma.h | ||
| 3 | * based on: include/asm-blackfin/mach-bf537/dma.h | ||
| 4 | * author: Michael Hennerich (michael.hennerich@analog.com) | ||
| 5 | * | ||
| 6 | * created: | ||
| 7 | * description: | ||
| 8 | * system DMA map | ||
| 9 | * rev: | ||
| 10 | * | ||
| 11 | * modified: | ||
| 12 | * | ||
| 13 | * | ||
| 14 | * bugs: enter bugs at http://blackfin.uclinux.org/ | ||
| 15 | * | ||
| 16 | * this program is free software; you can redistribute it and/or modify | ||
| 17 | * it under the terms of the gnu general public license as published by | ||
| 18 | * the free software foundation; either version 2, or (at your option) | ||
| 19 | * any later version. | ||
| 20 | * | ||
| 21 | * this program is distributed in the hope that it will be useful, | ||
| 22 | * but without any warranty; without even the implied warranty of | ||
| 23 | * merchantability or fitness for a particular purpose. see the | ||
| 24 | * gnu general public license for more details. | ||
| 25 | * | ||
| 26 | * you should have received a copy of the gnu general public license | ||
| 27 | * along with this program; see the file copying. | ||
| 28 | * if not, write to the free software foundation, | ||
| 29 | * 59 temple place - suite 330, boston, ma 02111-1307, usa. | ||
| 30 | */ | ||
| 31 | |||
| 32 | #ifndef _MACH_DMA_H_ | ||
| 33 | #define _MACH_DMA_H_ | ||
| 34 | |||
| 35 | #define MAX_BLACKFIN_DMA_CHANNEL 16 | ||
| 36 | |||
| 37 | #define CH_PPI 0 /* PPI receive/transmit or NFC */ | ||
| 38 | #define CH_NFC 0 /* PPI receive/transmit or NFC */ | ||
| 39 | #define CH_EMAC_RX 1 /* Ethernet MAC receive or HOSTDP */ | ||
| 40 | #define CH_EMAC_HOSTDP 1 /* Ethernet MAC receive or HOSTDP */ | ||
| 41 | #define CH_EMAC_TX 2 /* Ethernet MAC transmit or NFC */ | ||
| 42 | #define CH_SPORT0_RX 3 /* SPORT0 receive */ | ||
| 43 | #define CH_SPORT0_TX 4 /* SPORT0 transmit */ | ||
| 44 | #define CH_SPORT1_RX 5 /* SPORT1 receive */ | ||
| 45 | #define CH_SPORT1_TX 6 /* SPORT1 transmit */ | ||
| 46 | #define CH_SPI 7 /* SPI transmit/receive */ | ||
| 47 | #define CH_UART0_RX 8 /* UART0 receive */ | ||
| 48 | #define CH_UART0_TX 9 /* UART0 transmit */ | ||
| 49 | #define CH_UART1_RX 10 /* UART1 receive */ | ||
| 50 | #define CH_UART1_TX 11 /* UART1 transmit */ | ||
| 51 | |||
| 52 | #define CH_MEM_STREAM0_DEST 12 /* TX */ | ||
| 53 | #define CH_MEM_STREAM0_SRC 13 /* RX */ | ||
| 54 | #define CH_MEM_STREAM1_DEST 14 /* TX */ | ||
| 55 | #define CH_MEM_STREAM1_SRC 15 /* RX */ | ||
| 56 | |||
| 57 | extern int channel2irq(unsigned int channel); | ||
| 58 | extern struct dma_register *base_addr[]; | ||
| 59 | |||
| 60 | #endif | ||
diff --git a/include/asm-blackfin/mach-bf527/irq.h b/include/asm-blackfin/mach-bf527/irq.h new file mode 100644 index 000000000000..304f5bcfebe4 --- /dev/null +++ b/include/asm-blackfin/mach-bf527/irq.h | |||
| @@ -0,0 +1,263 @@ | |||
| 1 | /* | ||
| 2 | * file: include/asm-blackfin/mach-bf527/irq.h | ||
| 3 | * based on: include/asm-blackfin/mach-bf537/irq.h | ||
| 4 | * author: Michael Hennerich (michael.hennerich@analog.com) | ||
| 5 | * | ||
| 6 | * created: | ||
| 7 | * description: | ||
| 8 | * system mmr register map | ||
| 9 | * rev: | ||
| 10 | * | ||
| 11 | * modified: | ||
| 12 | * | ||
| 13 | * | ||
| 14 | * bugs: enter bugs at http://blackfin.uclinux.org/ | ||
| 15 | * | ||
| 16 | * this program is free software; you can redistribute it and/or modify | ||
| 17 | * it under the terms of the gnu general public license as published by | ||
| 18 | * the free software foundation; either version 2, or (at your option) | ||
| 19 | * any later version. | ||
| 20 | * | ||
| 21 | * this program is distributed in the hope that it will be useful, | ||
| 22 | * but without any warranty; without even the implied warranty of | ||
| 23 | * merchantability or fitness for a particular purpose. see the | ||
| 24 | * gnu general public license for more details. | ||
| 25 | * | ||
| 26 | * you should have received a copy of the gnu general public license | ||
| 27 | * along with this program; see the file copying. | ||
| 28 | * if not, write to the free software foundation, | ||
| 29 | * 59 temple place - suite 330, boston, ma 02111-1307, usa. | ||
| 30 | */ | ||
| 31 | |||
| 32 | #ifndef _BF527_IRQ_H_ | ||
| 33 | #define _BF527_IRQ_H_ | ||
| 34 | |||
| 35 | /* | ||
| 36 | * Interrupt source definitions | ||
| 37 | Event Source Core Event Name | ||
| 38 | Core Emulation ** | ||
| 39 | Events (highest priority) EMU 0 | ||
| 40 | Reset RST 1 | ||
| 41 | NMI NMI 2 | ||
| 42 | Exception EVX 3 | ||
| 43 | Reserved -- 4 | ||
| 44 | Hardware Error IVHW 5 | ||
| 45 | Core Timer IVTMR 6 * | ||
| 46 | |||
| 47 | ..... | ||
| 48 | |||
| 49 | Software Interrupt 1 IVG14 31 | ||
| 50 | Software Interrupt 2 -- | ||
| 51 | (lowest priority) IVG15 32 * | ||
| 52 | */ | ||
| 53 | |||
| 54 | #define NR_PERI_INTS (2 * 32) | ||
| 55 | |||
| 56 | /* The ABSTRACT IRQ definitions */ | ||
| 57 | /** the first seven of the following are fixed, the rest you change if you need to **/ | ||
| 58 | #define IRQ_EMU 0 /* Emulation */ | ||
| 59 | #define IRQ_RST 1 /* reset */ | ||
| 60 | #define IRQ_NMI 2 /* Non Maskable */ | ||
| 61 | #define IRQ_EVX 3 /* Exception */ | ||
| 62 | #define IRQ_UNUSED 4 /* - unused interrupt */ | ||
| 63 | #define IRQ_HWERR 5 /* Hardware Error */ | ||
| 64 | #define IRQ_CORETMR 6 /* Core timer */ | ||
| 65 | |||
| 66 | #define BFIN_IRQ(x) ((x) + 7) | ||
| 67 | |||
| 68 | #define IRQ_PLL_WAKEUP BFIN_IRQ(0) /* PLL Wakeup Interrupt */ | ||
| 69 | #define IRQ_DMA0_ERROR BFIN_IRQ(1) /* DMA Error 0 (generic) */ | ||
| 70 | #define IRQ_DMAR0_BLK BFIN_IRQ(2) /* DMAR0 Block Interrupt */ | ||
| 71 | #define IRQ_DMAR1_BLK BFIN_IRQ(3) /* DMAR1 Block Interrupt */ | ||
| 72 | #define IRQ_DMAR0_OVR BFIN_IRQ(4) /* DMAR0 Overflow Error */ | ||
| 73 | #define IRQ_DMAR1_OVR BFIN_IRQ(5) /* DMAR1 Overflow Error */ | ||
| 74 | #define IRQ_PPI_ERROR BFIN_IRQ(6) /* PPI Error */ | ||
| 75 | #define IRQ_MAC_ERROR BFIN_IRQ(7) /* MAC Status */ | ||
| 76 | #define IRQ_SPORT0_ERROR BFIN_IRQ(8) /* SPORT0 Status */ | ||
| 77 | #define IRQ_SPORT1_ERROR BFIN_IRQ(9) /* SPORT1 Status */ | ||
| 78 | #define IRQ_UART0_ERROR BFIN_IRQ(12) /* UART0 Status */ | ||
| 79 | #define IRQ_UART1_ERROR BFIN_IRQ(13) /* UART1 Status */ | ||
| 80 | #define IRQ_RTC BFIN_IRQ(14) /* RTC */ | ||
| 81 | #define IRQ_PPI BFIN_IRQ(15) /* DMA Channel 0 (PPI/NAND) */ | ||
| 82 | #define IRQ_SPORT0_RX BFIN_IRQ(16) /* DMA 3 Channel (SPORT0 RX) */ | ||
| 83 | #define IRQ_SPORT0_TX BFIN_IRQ(17) /* DMA 4 Channel (SPORT0 TX) */ | ||
| 84 | #define IRQ_SPORT1_RX BFIN_IRQ(18) /* DMA 5 Channel (SPORT1 RX) */ | ||
| 85 | #define IRQ_SPORT1_TX BFIN_IRQ(19) /* DMA 6 Channel (SPORT1 TX) */ | ||
| 86 | #define IRQ_TWI BFIN_IRQ(20) /* TWI */ | ||
| 87 | #define IRQ_SPI BFIN_IRQ(21) /* DMA 7 Channel (SPI) */ | ||
| 88 | #define IRQ_UART0_RX BFIN_IRQ(22) /* DMA8 Channel (UART0 RX) */ | ||
| 89 | #define IRQ_UART0_TX BFIN_IRQ(23) /* DMA9 Channel (UART0 TX) */ | ||
| 90 | #define IRQ_UART1_RX BFIN_IRQ(24) /* DMA10 Channel (UART1 RX) */ | ||
| 91 | #define IRQ_UART1_TX BFIN_IRQ(25) /* DMA11 Channel (UART1 TX) */ | ||
| 92 | #define IRQ_OPTSEC BFIN_IRQ(26) /* OTPSEC Interrupt */ | ||
| 93 | #define IRQ_CNT BFIN_IRQ(27) /* GP Counter */ | ||
| 94 | #define IRQ_MAC_RX BFIN_IRQ(28) /* DMA1 Channel (MAC RX/HDMA) */ | ||
| 95 | #define IRQ_PORTH_INTA BFIN_IRQ(29) /* Port H Interrupt A */ | ||
| 96 | #define IRQ_MAC_TX BFIN_IRQ(30) /* DMA2 Channel (MAC TX/NAND) */ | ||
| 97 | #define IRQ_NFC BFIN_IRQ(30) /* DMA2 Channel (MAC TX/NAND) */ | ||
| 98 | #define IRQ_PORTH_INTB BFIN_IRQ(31) /* Port H Interrupt B */ | ||
| 99 | #define IRQ_TMR0 BFIN_IRQ(32) /* Timer 0 */ | ||
| 100 | #define IRQ_TMR1 BFIN_IRQ(33) /* Timer 1 */ | ||
| 101 | #define IRQ_TMR2 BFIN_IRQ(34) /* Timer 2 */ | ||
| 102 | #define IRQ_TMR3 BFIN_IRQ(35) /* Timer 3 */ | ||
| 103 | #define IRQ_TMR4 BFIN_IRQ(36) /* Timer 4 */ | ||
| 104 | #define IRQ_TMR5 BFIN_IRQ(37) /* Timer 5 */ | ||
| 105 | #define IRQ_TMR6 BFIN_IRQ(38) /* Timer 6 */ | ||
| 106 | #define IRQ_TMR7 BFIN_IRQ(39) /* Timer 7 */ | ||
| 107 | #define IRQ_PORTG_INTA BFIN_IRQ(40) /* Port G Interrupt A */ | ||
| 108 | #define IRQ_PORTG_INTB BFIN_IRQ(41) /* Port G Interrupt B */ | ||
| 109 | #define IRQ_MEM_DMA0 BFIN_IRQ(42) /* MDMA Stream 0 */ | ||
| 110 | #define IRQ_MEM_DMA1 BFIN_IRQ(43) /* MDMA Stream 1 */ | ||
| 111 | #define IRQ_WATCH BFIN_IRQ(44) /* Software Watchdog Timer */ | ||
| 112 | #define IRQ_PORTF_INTA BFIN_IRQ(45) /* Port F Interrupt A */ | ||
| 113 | #define IRQ_PORTF_INTB BFIN_IRQ(46) /* Port F Interrupt B */ | ||
| 114 | #define IRQ_SPI_ERROR BFIN_IRQ(47) /* SPI Status */ | ||
| 115 | #define IRQ_NFC_ERROR BFIN_IRQ(48) /* NAND Error */ | ||
| 116 | #define IRQ_HDMA_ERROR BFIN_IRQ(49) /* HDMA Error */ | ||
| 117 | #define IRQ_HDMA BFIN_IRQ(50) /* HDMA (TFI) */ | ||
| 118 | #define IRQ_USB_EINT BFIN_IRQ(51) /* USB_EINT Interrupt */ | ||
| 119 | #define IRQ_USB_INT0 BFIN_IRQ(52) /* USB_INT0 Interrupt */ | ||
| 120 | #define IRQ_USB_INT1 BFIN_IRQ(53) /* USB_INT1 Interrupt */ | ||
| 121 | #define IRQ_USB_INT2 BFIN_IRQ(54) /* USB_INT2 Interrupt */ | ||
| 122 | #define IRQ_USB_DMA BFIN_IRQ(55) /* USB_DMAINT Interrupt */ | ||
| 123 | |||
| 124 | #define SYS_IRQS BFIN_IRQ(63) /* 70 */ | ||
| 125 | |||
| 126 | #define IRQ_PF0 71 | ||
| 127 | #define IRQ_PF1 72 | ||
| 128 | #define IRQ_PF2 73 | ||
| 129 | #define IRQ_PF3 74 | ||
| 130 | #define IRQ_PF4 75 | ||
| 131 | #define IRQ_PF5 76 | ||
| 132 | #define IRQ_PF6 77 | ||
| 133 | #define IRQ_PF7 78 | ||
| 134 | #define IRQ_PF8 79 | ||
| 135 | #define IRQ_PF9 80 | ||
| 136 | #define IRQ_PF10 81 | ||
| 137 | #define IRQ_PF11 82 | ||
| 138 | #define IRQ_PF12 83 | ||
| 139 | #define IRQ_PF13 84 | ||
| 140 | #define IRQ_PF14 85 | ||
| 141 | #define IRQ_PF15 86 | ||
| 142 | |||
| 143 | #define IRQ_PG0 87 | ||
| 144 | #define IRQ_PG1 88 | ||
| 145 | #define IRQ_PG2 89 | ||
| 146 | #define IRQ_PG3 90 | ||
| 147 | #define IRQ_PG4 91 | ||
| 148 | #define IRQ_PG5 92 | ||
| 149 | #define IRQ_PG6 93 | ||
| 150 | #define IRQ_PG7 94 | ||
| 151 | #define IRQ_PG8 95 | ||
| 152 | #define IRQ_PG9 96 | ||
| 153 | #define IRQ_PG10 97 | ||
| 154 | #define IRQ_PG11 98 | ||
| 155 | #define IRQ_PG12 99 | ||
| 156 | #define IRQ_PG13 100 | ||
| 157 | #define IRQ_PG14 101 | ||
| 158 | #define IRQ_PG15 102 | ||
| 159 | |||
| 160 | #define IRQ_PH0 103 | ||
| 161 | #define IRQ_PH1 104 | ||
| 162 | #define IRQ_PH2 105 | ||
| 163 | #define IRQ_PH3 106 | ||
| 164 | #define IRQ_PH4 107 | ||
| 165 | #define IRQ_PH5 108 | ||
| 166 | #define IRQ_PH6 109 | ||
| 167 | #define IRQ_PH7 110 | ||
| 168 | #define IRQ_PH8 111 | ||
| 169 | #define IRQ_PH9 112 | ||
| 170 | #define IRQ_PH10 113 | ||
| 171 | #define IRQ_PH11 114 | ||
| 172 | #define IRQ_PH12 115 | ||
| 173 | #define IRQ_PH13 116 | ||
| 174 | #define IRQ_PH14 117 | ||
| 175 | #define IRQ_PH15 118 | ||
| 176 | |||
| 177 | #define GPIO_IRQ_BASE IRQ_PF0 | ||
| 178 | |||
| 179 | #ifdef CONFIG_IRQCHIP_DEMUX_GPIO | ||
| 180 | #define NR_IRQS (IRQ_PH15+1) | ||
| 181 | #else | ||
| 182 | #define NR_IRQS (SYS_IRQS+1) | ||
| 183 | #endif | ||
| 184 | |||
| 185 | #define IVG7 7 | ||
| 186 | #define IVG8 8 | ||
| 187 | #define IVG9 9 | ||
| 188 | #define IVG10 10 | ||
| 189 | #define IVG11 11 | ||
| 190 | #define IVG12 12 | ||
| 191 | #define IVG13 13 | ||
| 192 | #define IVG14 14 | ||
| 193 | #define IVG15 15 | ||
| 194 | |||
| 195 | /* IAR0 BIT FIELDS */ | ||
| 196 | #define IRQ_PLL_WAKEUP_POS 0 | ||
| 197 | #define IRQ_DMA0_ERROR_POS 4 | ||
| 198 | #define IRQ_DMAR0_BLK_POS 8 | ||
| 199 | #define IRQ_DMAR1_BLK_POS 12 | ||
| 200 | #define IRQ_DMAR0_OVR_POS 16 | ||
| 201 | #define IRQ_DMAR1_OVR_POS 20 | ||
| 202 | #define IRQ_PPI_ERROR_POS 24 | ||
| 203 | #define IRQ_MAC_ERROR_POS 28 | ||
| 204 | |||
| 205 | /* IAR1 BIT FIELDS */ | ||
| 206 | #define IRQ_SPORT0_ERROR_POS 0 | ||
| 207 | #define IRQ_SPORT1_ERROR_POS 4 | ||
| 208 | #define IRQ_UART0_ERROR_POS 16 | ||
| 209 | #define IRQ_UART1_ERROR_POS 20 | ||
| 210 | #define IRQ_RTC_POS 24 | ||
| 211 | #define IRQ_PPI_POS 28 | ||
| 212 | |||
| 213 | /* IAR2 BIT FIELDS */ | ||
| 214 | #define IRQ_SPORT0_RX_POS 0 | ||
| 215 | #define IRQ_SPORT0_TX_POS 4 | ||
| 216 | #define IRQ_SPORT1_RX_POS 8 | ||
| 217 | #define IRQ_SPORT1_TX_POS 12 | ||
| 218 | #define IRQ_TWI_POS 16 | ||
| 219 | #define IRQ_SPI_POS 20 | ||
| 220 | #define IRQ_UART0_RX_POS 24 | ||
| 221 | #define IRQ_UART0_TX_POS 28 | ||
| 222 | |||
| 223 | /* IAR3 BIT FIELDS */ | ||
| 224 | #define IRQ_UART1_RX_POS 0 | ||
| 225 | #define IRQ_UART1_TX_POS 4 | ||
| 226 | #define IRQ_OPTSEC_POS 8 | ||
| 227 | #define IRQ_CNT_POS 12 | ||
| 228 | #define IRQ_MAC_RX_POS 16 | ||
| 229 | #define IRQ_PORTH_INTA_POS 20 | ||
| 230 | #define IRQ_MAC_TX_POS 24 | ||
| 231 | #define IRQ_PORTH_INTB_POS 28 | ||
| 232 | |||
| 233 | /* IAR4 BIT FIELDS */ | ||
| 234 | #define IRQ_TMR0_POS 0 | ||
| 235 | #define IRQ_TMR1_POS 4 | ||
| 236 | #define IRQ_TMR2_POS 8 | ||
| 237 | #define IRQ_TMR3_POS 12 | ||
| 238 | #define IRQ_TMR4_POS 16 | ||
| 239 | #define IRQ_TMR5_POS 20 | ||
| 240 | #define IRQ_TMR6_POS 24 | ||
| 241 | #define IRQ_TMR7_POS 28 | ||
| 242 | |||
| 243 | /* IAR5 BIT FIELDS */ | ||
| 244 | #define IRQ_PORTG_INTA_POS 0 | ||
| 245 | #define IRQ_PORTG_INTB_POS 4 | ||
| 246 | #define IRQ_MEM_DMA0_POS 8 | ||
| 247 | #define IRQ_MEM_DMA1_POS 12 | ||
| 248 | #define IRQ_WATCH_POS 16 | ||
| 249 | #define IRQ_PORTF_INTA_POS 20 | ||
| 250 | #define IRQ_PORTF_INTB_POS 24 | ||
| 251 | #define IRQ_SPI_ERROR_POS 28 | ||
| 252 | |||
| 253 | /* IAR6 BIT FIELDS */ | ||
| 254 | #define IRQ_NFC_ERROR_POS 0 | ||
| 255 | #define IRQ_HDMA_ERROR_POS 4 | ||
| 256 | #define IRQ_HDMA_POS 8 | ||
| 257 | #define IRQ_USB_EINT_POS 12 | ||
| 258 | #define IRQ_USB_INT0_POS 16 | ||
| 259 | #define IRQ_USB_INT1_POS 20 | ||
| 260 | #define IRQ_USB_INT2_POS 24 | ||
| 261 | #define IRQ_USB_DMA_POS 28 | ||
| 262 | |||
| 263 | #endif /* _BF527_IRQ_H_ */ | ||
diff --git a/include/asm-blackfin/mach-bf527/mem_init.h b/include/asm-blackfin/mach-bf527/mem_init.h new file mode 100644 index 000000000000..008ca66719e2 --- /dev/null +++ b/include/asm-blackfin/mach-bf527/mem_init.h | |||
| @@ -0,0 +1,337 @@ | |||
| 1 | /* | ||
| 2 | * File: include/asm-blackfin/mach-bf527/mem_init.h | ||
| 3 | * Based on: | ||
| 4 | * Author: | ||
| 5 | * | ||
| 6 | * Created: | ||
| 7 | * Description: | ||
| 8 | * | ||
| 9 | * Rev: | ||
| 10 | * | ||
| 11 | * Modified: | ||
| 12 | * Copyright 2004-2007 Analog Devices Inc. | ||
| 13 | * | ||
| 14 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
| 15 | * | ||
| 16 | * This program is free software; you can redistribute it and/or modify | ||
| 17 | * it under the terms of the GNU General Public License as published by | ||
| 18 | * the Free Software Foundation; either version 2, or (at your option) | ||
| 19 | * any later version. | ||
| 20 | * | ||
| 21 | * This program is distributed in the hope that it will be useful, | ||
| 22 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 23 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 24 | * GNU General Public License for more details. | ||
| 25 | * | ||
| 26 | * You should have received a copy of the GNU General Public License | ||
| 27 | * along with this program; see the file COPYING. | ||
| 28 | * If not, write to the Free Software Foundation, | ||
| 29 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
| 30 | */ | ||
| 31 | |||
| 32 | #if (CONFIG_MEM_MT48LC16M16A2TG_75 || CONFIG_MEM_MT48LC64M4A2FB_7E || CONFIG_MEM_MT48LC16M8A2TG_75 || CONFIG_MEM_GENERIC_BOARD || CONFIG_MEM_MT48LC32M8A2_75 || CONFIG_MEM_MT48LC32M16A2TG_75) | ||
| 33 | #if (CONFIG_SCLK_HZ > 119402985) | ||
| 34 | #define SDRAM_tRP TRP_2 | ||
| 35 | #define SDRAM_tRP_num 2 | ||
| 36 | #define SDRAM_tRAS TRAS_7 | ||
| 37 | #define SDRAM_tRAS_num 7 | ||
| 38 | #define SDRAM_tRCD TRCD_2 | ||
| 39 | #define SDRAM_tWR TWR_2 | ||
| 40 | #endif | ||
| 41 | #if (CONFIG_SCLK_HZ > 104477612) && (CONFIG_SCLK_HZ <= 119402985) | ||
| 42 | #define SDRAM_tRP TRP_2 | ||
| 43 | #define SDRAM_tRP_num 2 | ||
| 44 | #define SDRAM_tRAS TRAS_6 | ||
| 45 | #define SDRAM_tRAS_num 6 | ||
| 46 | #define SDRAM_tRCD TRCD_2 | ||
| 47 | #define SDRAM_tWR TWR_2 | ||
| 48 | #endif | ||
| 49 | #if (CONFIG_SCLK_HZ > 89552239) && (CONFIG_SCLK_HZ <= 104477612) | ||
| 50 | #define SDRAM_tRP TRP_2 | ||
| 51 | #define SDRAM_tRP_num 2 | ||
| 52 | #define SDRAM_tRAS TRAS_5 | ||
| 53 | #define SDRAM_tRAS_num 5 | ||
| 54 | #define SDRAM_tRCD TRCD_2 | ||
| 55 | #define SDRAM_tWR TWR_2 | ||
| 56 | #endif | ||
| 57 | #if (CONFIG_SCLK_HZ > 74626866) && (CONFIG_SCLK_HZ <= 89552239) | ||
| 58 | #define SDRAM_tRP TRP_2 | ||
| 59 | #define SDRAM_tRP_num 2 | ||
| 60 | #define SDRAM_tRAS TRAS_4 | ||
| 61 | #define SDRAM_tRAS_num 4 | ||
| 62 | #define SDRAM_tRCD TRCD_2 | ||
| 63 | #define SDRAM_tWR TWR_2 | ||
| 64 | #endif | ||
| 65 | #if (CONFIG_SCLK_HZ > 66666667) && (CONFIG_SCLK_HZ <= 74626866) | ||
| 66 | #define SDRAM_tRP TRP_2 | ||
| 67 | #define SDRAM_tRP_num 2 | ||
| 68 | #define SDRAM_tRAS TRAS_3 | ||
| 69 | #define SDRAM_tRAS_num 3 | ||
| 70 | #define SDRAM_tRCD TRCD_2 | ||
| 71 | #define SDRAM_tWR TWR_2 | ||
| 72 | #endif | ||
| 73 | #if (CONFIG_SCLK_HZ > 59701493) && (CONFIG_SCLK_HZ <= 66666667) | ||
| 74 | #define SDRAM_tRP TRP_1 | ||
| 75 | #define SDRAM_tRP_num 1 | ||
| 76 | #define SDRAM_tRAS TRAS_4 | ||
| 77 | #define SDRAM_tRAS_num 3 | ||
| 78 | #define SDRAM_tRCD TRCD_1 | ||
| 79 | #define SDRAM_tWR TWR_2 | ||
| 80 | #endif | ||
| 81 | #if (CONFIG_SCLK_HZ > 44776119) && (CONFIG_SCLK_HZ <= 59701493) | ||
| 82 | #define SDRAM_tRP TRP_1 | ||
| 83 | #define SDRAM_tRP_num 1 | ||
| 84 | #define SDRAM_tRAS TRAS_3 | ||
| 85 | #define SDRAM_tRAS_num 3 | ||
| 86 | #define SDRAM_tRCD TRCD_1 | ||
| 87 | #define SDRAM_tWR TWR_2 | ||
| 88 | #endif | ||
| 89 | #if (CONFIG_SCLK_HZ > 29850746) && (CONFIG_SCLK_HZ <= 44776119) | ||
| 90 | #define SDRAM_tRP TRP_1 | ||
| 91 | #define SDRAM_tRP_num 1 | ||
| 92 | #define SDRAM_tRAS TRAS_2 | ||
| 93 | #define SDRAM_tRAS_num 2 | ||
| 94 | #define SDRAM_tRCD TRCD_1 | ||
| 95 | #define SDRAM_tWR TWR_2 | ||
| 96 | #endif | ||
| 97 | #if (CONFIG_SCLK_HZ <= 29850746) | ||
| 98 | #define SDRAM_tRP TRP_1 | ||
| 99 | #define SDRAM_tRP_num 1 | ||
| 100 | #define SDRAM_tRAS TRAS_1 | ||
| 101 | #define SDRAM_tRAS_num 1 | ||
| 102 | #define SDRAM_tRCD TRCD_1 | ||
| 103 | #define SDRAM_tWR TWR_2 | ||
| 104 | #endif | ||
| 105 | #endif | ||
| 106 | |||
| 107 | #if (CONFIG_MEM_MT48LC16M16A2TG_75) | ||
| 108 | /*SDRAM INFORMATION: */ | ||
| 109 | #define SDRAM_Tref 64 /* Refresh period in milliseconds */ | ||
| 110 | #define SDRAM_NRA 8192 /* Number of row addresses in SDRAM */ | ||
| 111 | #define SDRAM_CL CL_3 | ||
| 112 | #endif | ||
| 113 | |||
| 114 | #if (CONFIG_MEM_MT48LC16M8A2TG_75) | ||
| 115 | /*SDRAM INFORMATION: */ | ||
| 116 | #define SDRAM_Tref 64 /* Refresh period in milliseconds */ | ||
| 117 | #define SDRAM_NRA 4096 /* Number of row addresses in SDRAM */ | ||
| 118 | #define SDRAM_CL CL_3 | ||
| 119 | #endif | ||
| 120 | |||
| 121 | #if (CONFIG_MEM_MT48LC32M8A2_75) | ||
| 122 | /*SDRAM INFORMATION: */ | ||
| 123 | #define SDRAM_Tref 64 /* Refresh period in milliseconds */ | ||
| 124 | #define SDRAM_NRA 8192 /* Number of row addresses in SDRAM */ | ||
| 125 | #define SDRAM_CL CL_3 | ||
| 126 | #endif | ||
| 127 | |||
| 128 | #if (CONFIG_MEM_MT48LC64M4A2FB_7E) | ||
| 129 | /*SDRAM INFORMATION: */ | ||
| 130 | #define SDRAM_Tref 64 /* Refresh period in milliseconds */ | ||
| 131 | #define SDRAM_NRA 8192 /* Number of row addresses in SDRAM */ | ||
| 132 | #define SDRAM_CL CL_3 | ||
| 133 | #endif | ||
| 134 | |||
| 135 | #if (CONFIG_MEM_GENERIC_BOARD) | ||
| 136 | /*SDRAM INFORMATION: Modify this for your board */ | ||
| 137 | #define SDRAM_Tref 64 /* Refresh period in milliseconds */ | ||
| 138 | #define SDRAM_NRA 8192 /* Number of row addresses in SDRAM */ | ||
| 139 | #define SDRAM_CL CL_3 | ||
| 140 | #endif | ||
| 141 | |||
| 142 | #if (CONFIG_MEM_MT48LC32M16A2TG_75) | ||
| 143 | /*SDRAM INFORMATION: */ | ||
| 144 | #define SDRAM_Tref 64 /* Refresh period in milliseconds */ | ||
| 145 | #define SDRAM_NRA 8192 /* Number of row addresses in SDRAM */ | ||
| 146 | #define SDRAM_CL CL_3 | ||
| 147 | #endif | ||
| 148 | |||
| 149 | #if (CONFIG_MEM_SIZE == 128) | ||
| 150 | #define SDRAM_SIZE EBSZ_128 | ||
| 151 | #endif | ||
| 152 | #if (CONFIG_MEM_SIZE == 64) | ||
| 153 | #define SDRAM_SIZE EBSZ_64 | ||
| 154 | #endif | ||
| 155 | #if (CONFIG_MEM_SIZE == 32) | ||
| 156 | #define SDRAM_SIZE EBSZ_32 | ||
| 157 | #endif | ||
| 158 | #if (CONFIG_MEM_SIZE == 16) | ||
| 159 | #define SDRAM_SIZE EBSZ_16 | ||
| 160 | #endif | ||
| 161 | #if (CONFIG_MEM_ADD_WIDTH == 11) | ||
| 162 | #define SDRAM_WIDTH EBCAW_11 | ||
| 163 | #endif | ||
| 164 | #if (CONFIG_MEM_ADD_WIDTH == 10) | ||
| 165 | #define SDRAM_WIDTH EBCAW_10 | ||
| 166 | #endif | ||
| 167 | #if (CONFIG_MEM_ADD_WIDTH == 9) | ||
| 168 | #define SDRAM_WIDTH EBCAW_9 | ||
| 169 | #endif | ||
| 170 | #if (CONFIG_MEM_ADD_WIDTH == 8) | ||
| 171 | #define SDRAM_WIDTH EBCAW_8 | ||
| 172 | #endif | ||
| 173 | |||
| 174 | #define mem_SDBCTL (SDRAM_WIDTH | SDRAM_SIZE | EBE) | ||
| 175 | |||
| 176 | /* Equation from section 17 (p17-46) of BF533 HRM */ | ||
| 177 | #define mem_SDRRC (((CONFIG_SCLK_HZ / 1000) * SDRAM_Tref) / SDRAM_NRA) - (SDRAM_tRAS_num + SDRAM_tRP_num) | ||
| 178 | |||
| 179 | /* Enable SCLK Out */ | ||
| 180 | #define mem_SDGCTL (SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR | PSS) | ||
| 181 | |||
| 182 | #if defined CONFIG_CLKIN_HALF | ||
| 183 | #define CLKIN_HALF 1 | ||
| 184 | #else | ||
| 185 | #define CLKIN_HALF 0 | ||
| 186 | #endif | ||
| 187 | |||
| 188 | #if defined CONFIG_PLL_BYPASS | ||
| 189 | #define PLL_BYPASS 1 | ||
| 190 | #else | ||
| 191 | #define PLL_BYPASS 0 | ||
| 192 | #endif | ||
| 193 | |||
| 194 | /***************************************Currently Not Being Used *********************************/ | ||
| 195 | #define flash_EBIU_AMBCTL_WAT ((CONFIG_FLASH_SPEED_BWAT * 4) / (4000000000 / CONFIG_SCLK_HZ)) + 1 | ||
| 196 | #define flash_EBIU_AMBCTL_RAT ((CONFIG_FLASH_SPEED_BRAT * 4) / (4000000000 / CONFIG_SCLK_HZ)) + 1 | ||
| 197 | #define flash_EBIU_AMBCTL_HT ((CONFIG_FLASH_SPEED_BHT * 4) / (4000000000 / CONFIG_SCLK_HZ)) | ||
| 198 | #define flash_EBIU_AMBCTL_ST ((CONFIG_FLASH_SPEED_BST * 4) / (4000000000 / CONFIG_SCLK_HZ)) + 1 | ||
| 199 | #define flash_EBIU_AMBCTL_TT ((CONFIG_FLASH_SPEED_BTT * 4) / (4000000000 / CONFIG_SCLK_HZ)) + 1 | ||
| 200 | |||
| 201 | #if (flash_EBIU_AMBCTL_TT > 3) | ||
| 202 | #define flash_EBIU_AMBCTL0_TT B0TT_4 | ||
| 203 | #endif | ||
| 204 | #if (flash_EBIU_AMBCTL_TT == 3) | ||
| 205 | #define flash_EBIU_AMBCTL0_TT B0TT_3 | ||
| 206 | #endif | ||
| 207 | #if (flash_EBIU_AMBCTL_TT == 2) | ||
| 208 | #define flash_EBIU_AMBCTL0_TT B0TT_2 | ||
| 209 | #endif | ||
| 210 | #if (flash_EBIU_AMBCTL_TT < 2) | ||
| 211 | #define flash_EBIU_AMBCTL0_TT B0TT_1 | ||
| 212 | #endif | ||
| 213 | |||
| 214 | #if (flash_EBIU_AMBCTL_ST > 3) | ||
| 215 | #define flash_EBIU_AMBCTL0_ST B0ST_4 | ||
| 216 | #endif | ||
| 217 | #if (flash_EBIU_AMBCTL_ST == 3) | ||
| 218 | #define flash_EBIU_AMBCTL0_ST B0ST_3 | ||
| 219 | #endif | ||
| 220 | #if (flash_EBIU_AMBCTL_ST == 2) | ||
| 221 | #define flash_EBIU_AMBCTL0_ST B0ST_2 | ||
| 222 | #endif | ||
| 223 | #if (flash_EBIU_AMBCTL_ST < 2) | ||
| 224 | #define flash_EBIU_AMBCTL0_ST B0ST_1 | ||
| 225 | #endif | ||
| 226 | |||
| 227 | #if (flash_EBIU_AMBCTL_HT > 2) | ||
| 228 | #define flash_EBIU_AMBCTL0_HT B0HT_3 | ||
| 229 | #endif | ||
| 230 | #if (flash_EBIU_AMBCTL_HT == 2) | ||
| 231 | #define flash_EBIU_AMBCTL0_HT B0HT_2 | ||
| 232 | #endif | ||
| 233 | #if (flash_EBIU_AMBCTL_HT == 1) | ||
| 234 | #define flash_EBIU_AMBCTL0_HT B0HT_1 | ||
| 235 | #endif | ||
| 236 | #if (flash_EBIU_AMBCTL_HT == 0 && CONFIG_FLASH_SPEED_BHT == 0) | ||
| 237 | #define flash_EBIU_AMBCTL0_HT B0HT_0 | ||
| 238 | #endif | ||
| 239 | #if (flash_EBIU_AMBCTL_HT == 0 && CONFIG_FLASH_SPEED_BHT != 0) | ||
| 240 | #define flash_EBIU_AMBCTL0_HT B0HT_1 | ||
| 241 | #endif | ||
| 242 | |||
| 243 | #if (flash_EBIU_AMBCTL_WAT > 14) | ||
| 244 | #define flash_EBIU_AMBCTL0_WAT B0WAT_15 | ||
| 245 | #endif | ||
| 246 | #if (flash_EBIU_AMBCTL_WAT == 14) | ||
| 247 | #define flash_EBIU_AMBCTL0_WAT B0WAT_14 | ||
| 248 | #endif | ||
| 249 | #if (flash_EBIU_AMBCTL_WAT == 13) | ||
| 250 | #define flash_EBIU_AMBCTL0_WAT B0WAT_13 | ||
| 251 | #endif | ||
| 252 | #if (flash_EBIU_AMBCTL_WAT == 12) | ||
| 253 | #define flash_EBIU_AMBCTL0_WAT B0WAT_12 | ||
| 254 | #endif | ||
| 255 | #if (flash_EBIU_AMBCTL_WAT == 11) | ||
| 256 | #define flash_EBIU_AMBCTL0_WAT B0WAT_11 | ||
| 257 | #endif | ||
| 258 | #if (flash_EBIU_AMBCTL_WAT == 10) | ||
| 259 | #define flash_EBIU_AMBCTL0_WAT B0WAT_10 | ||
| 260 | #endif | ||
| 261 | #if (flash_EBIU_AMBCTL_WAT == 9) | ||
| 262 | #define flash_EBIU_AMBCTL0_WAT B0WAT_9 | ||
| 263 | #endif | ||
| 264 | #if (flash_EBIU_AMBCTL_WAT == 8) | ||
| 265 | #define flash_EBIU_AMBCTL0_WAT B0WAT_8 | ||
| 266 | #endif | ||
| 267 | #if (flash_EBIU_AMBCTL_WAT == 7) | ||
| 268 | #define flash_EBIU_AMBCTL0_WAT B0WAT_7 | ||
| 269 | #endif | ||
| 270 | #if (flash_EBIU_AMBCTL_WAT == 6) | ||
| 271 | #define flash_EBIU_AMBCTL0_WAT B0WAT_6 | ||
| 272 | #endif | ||
| 273 | #if (flash_EBIU_AMBCTL_WAT == 5) | ||
| 274 | #define flash_EBIU_AMBCTL0_WAT B0WAT_5 | ||
| 275 | #endif | ||
| 276 | #if (flash_EBIU_AMBCTL_WAT == 4) | ||
| 277 | #define flash_EBIU_AMBCTL0_WAT B0WAT_4 | ||
| 278 | #endif | ||
| 279 | #if (flash_EBIU_AMBCTL_WAT == 3) | ||
| 280 | #define flash_EBIU_AMBCTL0_WAT B0WAT_3 | ||
| 281 | #endif | ||
| 282 | #if (flash_EBIU_AMBCTL_WAT == 2) | ||
| 283 | #define flash_EBIU_AMBCTL0_WAT B0WAT_2 | ||
| 284 | #endif | ||
| 285 | #if (flash_EBIU_AMBCTL_WAT == 1) | ||
| 286 | #define flash_EBIU_AMBCTL0_WAT B0WAT_1 | ||
| 287 | #endif | ||
| 288 | |||
| 289 | #if (flash_EBIU_AMBCTL_RAT > 14) | ||
| 290 | #define flash_EBIU_AMBCTL0_RAT B0RAT_15 | ||
| 291 | #endif | ||
| 292 | #if (flash_EBIU_AMBCTL_RAT == 14) | ||
| 293 | #define flash_EBIU_AMBCTL0_RAT B0RAT_14 | ||
| 294 | #endif | ||
| 295 | #if (flash_EBIU_AMBCTL_RAT == 13) | ||
| 296 | #define flash_EBIU_AMBCTL0_RAT B0RAT_13 | ||
| 297 | #endif | ||
| 298 | #if (flash_EBIU_AMBCTL_RAT == 12) | ||
| 299 | #define flash_EBIU_AMBCTL0_RAT B0RAT_12 | ||
| 300 | #endif | ||
| 301 | #if (flash_EBIU_AMBCTL_RAT == 11) | ||
| 302 | #define flash_EBIU_AMBCTL0_RAT B0RAT_11 | ||
| 303 | #endif | ||
| 304 | #if (flash_EBIU_AMBCTL_RAT == 10) | ||
| 305 | #define flash_EBIU_AMBCTL0_RAT B0RAT_10 | ||
| 306 | #endif | ||
| 307 | #if (flash_EBIU_AMBCTL_RAT == 9) | ||
| 308 | #define flash_EBIU_AMBCTL0_RAT B0RAT_9 | ||
| 309 | #endif | ||
| 310 | #if (flash_EBIU_AMBCTL_RAT == 8) | ||
| 311 | #define flash_EBIU_AMBCTL0_RAT B0RAT_8 | ||
| 312 | #endif | ||
| 313 | #if (flash_EBIU_AMBCTL_RAT == 7) | ||
| 314 | #define flash_EBIU_AMBCTL0_RAT B0RAT_7 | ||
| 315 | #endif | ||
| 316 | #if (flash_EBIU_AMBCTL_RAT == 6) | ||
| 317 | #define flash_EBIU_AMBCTL0_RAT B0RAT_6 | ||
| 318 | #endif | ||
| 319 | #if (flash_EBIU_AMBCTL_RAT == 5) | ||
| 320 | #define flash_EBIU_AMBCTL0_RAT B0RAT_5 | ||
| 321 | #endif | ||
| 322 | #if (flash_EBIU_AMBCTL_RAT == 4) | ||
| 323 | #define flash_EBIU_AMBCTL0_RAT B0RAT_4 | ||
| 324 | #endif | ||
| 325 | #if (flash_EBIU_AMBCTL_RAT == 3) | ||
| 326 | #define flash_EBIU_AMBCTL0_RAT B0RAT_3 | ||
| 327 | #endif | ||
| 328 | #if (flash_EBIU_AMBCTL_RAT == 2) | ||
| 329 | #define flash_EBIU_AMBCTL0_RAT B0RAT_2 | ||
| 330 | #endif | ||
| 331 | #if (flash_EBIU_AMBCTL_RAT == 1) | ||
| 332 | #define flash_EBIU_AMBCTL0_RAT B0RAT_1 | ||
| 333 | #endif | ||
| 334 | |||
| 335 | #define flash_EBIU_AMBCTL0 \ | ||
| 336 | (flash_EBIU_AMBCTL0_WAT | flash_EBIU_AMBCTL0_RAT | flash_EBIU_AMBCTL0_HT | \ | ||
| 337 | flash_EBIU_AMBCTL0_ST | flash_EBIU_AMBCTL0_TT | CONFIG_FLASH_SPEED_RDYEN) | ||
diff --git a/include/asm-blackfin/mach-bf527/mem_map.h b/include/asm-blackfin/mach-bf527/mem_map.h new file mode 100644 index 000000000000..c5aa20102b24 --- /dev/null +++ b/include/asm-blackfin/mach-bf527/mem_map.h | |||
| @@ -0,0 +1,98 @@ | |||
| 1 | /* | ||
| 2 | * file: include/asm-blackfin/mach-bf527/mem_map.h | ||
| 3 | * based on: include/asm-blackfin/mach-bf537/mem_map.h | ||
| 4 | * author: Michael Hennerich (michael.hennerich@analog.com) | ||
| 5 | * | ||
| 6 | * created: | ||
| 7 | * description: | ||
| 8 | * Memory MAP Common header file for blackfin BF527/5/2 of processors. | ||
| 9 | * rev: | ||
| 10 | * | ||
| 11 | * modified: | ||
| 12 | * | ||
| 13 | * bugs: enter bugs at http://blackfin.uclinux.org/ | ||
| 14 | * | ||
| 15 | * this program is free software; you can redistribute it and/or modify | ||
| 16 | * it under the terms of the gnu general public license as published by | ||
| 17 | * the free software foundation; either version 2, or (at your option) | ||
| 18 | * any later version. | ||
| 19 | * | ||
| 20 | * this program is distributed in the hope that it will be useful, | ||
| 21 | * but without any warranty; without even the implied warranty of | ||
| 22 | * merchantability or fitness for a particular purpose. see the | ||
| 23 | * gnu general public license for more details. | ||
| 24 | * | ||
| 25 | * you should have received a copy of the gnu general public license | ||
| 26 | * along with this program; see the file copying. | ||
| 27 | * if not, write to the free software foundation, | ||
| 28 | * 59 temple place - suite 330, boston, ma 02111-1307, usa. | ||
| 29 | */ | ||
| 30 | |||
| 31 | #ifndef _MEM_MAP_527_H_ | ||
| 32 | #define _MEM_MAP_527_H_ | ||
| 33 | |||
| 34 | #define COREMMR_BASE 0xFFE00000 /* Core MMRs */ | ||
| 35 | #define SYSMMR_BASE 0xFFC00000 /* System MMRs */ | ||
| 36 | |||
| 37 | /* Async Memory Banks */ | ||
| 38 | #define ASYNC_BANK3_BASE 0x20300000 /* Async Bank 3 */ | ||
| 39 | #define ASYNC_BANK3_SIZE 0x00100000 /* 1M */ | ||
| 40 | #define ASYNC_BANK2_BASE 0x20200000 /* Async Bank 2 */ | ||
| 41 | #define ASYNC_BANK2_SIZE 0x00100000 /* 1M */ | ||
| 42 | #define ASYNC_BANK1_BASE 0x20100000 /* Async Bank 1 */ | ||
| 43 | #define ASYNC_BANK1_SIZE 0x00100000 /* 1M */ | ||
| 44 | #define ASYNC_BANK0_BASE 0x20000000 /* Async Bank 0 */ | ||
| 45 | #define ASYNC_BANK0_SIZE 0x00100000 /* 1M */ | ||
| 46 | |||
| 47 | /* Boot ROM Memory */ | ||
| 48 | |||
| 49 | #define BOOT_ROM_START 0xEF000000 | ||
| 50 | |||
| 51 | /* Level 1 Memory */ | ||
| 52 | |||
| 53 | /* Memory Map for ADSP-BF527 ADSP-BF525 ADSP-BF522 processors */ | ||
| 54 | |||
| 55 | #ifdef CONFIG_BFIN_ICACHE | ||
| 56 | #define BFIN_ICACHESIZE (16*1024) | ||
| 57 | #else | ||
| 58 | #define BFIN_ICACHESIZE (0*1024) | ||
| 59 | #endif | ||
| 60 | |||
| 61 | #define L1_CODE_START 0xFFA00000 | ||
| 62 | #define L1_DATA_A_START 0xFF800000 | ||
| 63 | #define L1_DATA_B_START 0xFF900000 | ||
| 64 | |||
| 65 | #define L1_CODE_LENGTH 0xC000 | ||
| 66 | |||
| 67 | #ifdef CONFIG_BFIN_DCACHE | ||
| 68 | |||
| 69 | #ifdef CONFIG_BFIN_DCACHE_BANKA | ||
| 70 | #define DMEM_CNTR (ACACHE_BSRAM | ENDCPLB | PORT_PREF0) | ||
| 71 | #define L1_DATA_A_LENGTH (0x8000 - 0x4000) | ||
| 72 | #define L1_DATA_B_LENGTH 0x8000 | ||
| 73 | #define BFIN_DCACHESIZE (16*1024) | ||
| 74 | #define BFIN_DSUPBANKS 1 | ||
| 75 | #else | ||
| 76 | #define DMEM_CNTR (ACACHE_BCACHE | ENDCPLB | PORT_PREF0) | ||
| 77 | #define L1_DATA_A_LENGTH (0x8000 - 0x4000) | ||
| 78 | #define L1_DATA_B_LENGTH (0x8000 - 0x4000) | ||
| 79 | #define BFIN_DCACHESIZE (32*1024) | ||
| 80 | #define BFIN_DSUPBANKS 2 | ||
| 81 | #endif | ||
| 82 | |||
| 83 | #else | ||
| 84 | #define DMEM_CNTR (ASRAM_BSRAM | ENDCPLB | PORT_PREF0) | ||
| 85 | #define L1_DATA_A_LENGTH 0x8000 | ||
| 86 | #define L1_DATA_B_LENGTH 0x8000 | ||
| 87 | #define BFIN_DCACHESIZE (0*1024) | ||
| 88 | #define BFIN_DSUPBANKS 0 | ||
| 89 | #endif /*CONFIG_BFIN_DCACHE */ | ||
| 90 | |||
| 91 | /* Scratch Pad Memory */ | ||
| 92 | |||
| 93 | #if defined(CONFIG_BF527) || defined(CONFIG_BF536) || defined(CONFIG_BF534) | ||
| 94 | #define L1_SCRATCH_START 0xFFB00000 | ||
| 95 | #define L1_SCRATCH_LENGTH 0x1000 | ||
| 96 | #endif | ||
| 97 | |||
| 98 | #endif /* _MEM_MAP_527_H_ */ | ||
diff --git a/include/asm-blackfin/mach-bf527/portmux.h b/include/asm-blackfin/mach-bf527/portmux.h new file mode 100644 index 000000000000..dcf001adc63c --- /dev/null +++ b/include/asm-blackfin/mach-bf527/portmux.h | |||
| @@ -0,0 +1,205 @@ | |||
| 1 | #ifndef _MACH_PORTMUX_H_ | ||
| 2 | #define _MACH_PORTMUX_H_ | ||
| 3 | |||
| 4 | #define P_PPI0_D0 (P_DEFINED | P_IDENT(GPIO_PF0) | P_FUNCT(0)) | ||
| 5 | #define P_PPI0_D1 (P_DEFINED | P_IDENT(GPIO_PF1) | P_FUNCT(0)) | ||
| 6 | #define P_PPI0_D2 (P_DEFINED | P_IDENT(GPIO_PF2) | P_FUNCT(0)) | ||
| 7 | #define P_PPI0_D3 (P_DEFINED | P_IDENT(GPIO_PF3) | P_FUNCT(0)) | ||
| 8 | #define P_PPI0_D4 (P_DEFINED | P_IDENT(GPIO_PF4) | P_FUNCT(0)) | ||
| 9 | #define P_PPI0_D5 (P_DEFINED | P_IDENT(GPIO_PF5) | P_FUNCT(0)) | ||
| 10 | #define P_PPI0_D6 (P_DEFINED | P_IDENT(GPIO_PF6) | P_FUNCT(0)) | ||
| 11 | #define P_PPI0_D7 (P_DEFINED | P_IDENT(GPIO_PF7) | P_FUNCT(0)) | ||
| 12 | #define P_PPI0_D8 (P_DEFINED | P_IDENT(GPIO_PF8) | P_FUNCT(0)) | ||
| 13 | #define P_PPI0_D9 (P_DEFINED | P_IDENT(GPIO_PF9) | P_FUNCT(0)) | ||
| 14 | #define P_PPI0_D10 (P_DEFINED | P_IDENT(GPIO_PF10) | P_FUNCT(0)) | ||
| 15 | #define P_PPI0_D11 (P_DEFINED | P_IDENT(GPIO_PF11) | P_FUNCT(0)) | ||
| 16 | #define P_PPI0_D12 (P_DEFINED | P_IDENT(GPIO_PF12) | P_FUNCT(0)) | ||
| 17 | #define P_PPI0_D13 (P_DEFINED | P_IDENT(GPIO_PF13) | P_FUNCT(0)) | ||
| 18 | #define P_PPI0_D14 (P_DEFINED | P_IDENT(GPIO_PF14) | P_FUNCT(0)) | ||
| 19 | #define P_PPI0_D15 (P_DEFINED | P_IDENT(GPIO_PF15) | P_FUNCT(0)) | ||
| 20 | |||
| 21 | #if defined(CONFIG_BF527_SPORT0_PORTF) | ||
| 22 | #define P_SPORT0_DRPRI (P_DEFINED | P_IDENT(GPIO_PF0) | P_FUNCT(1)) | ||
| 23 | #define P_SPORT0_RFS (P_DEFINED | P_IDENT(GPIO_PF1) | P_FUNCT(1)) | ||
| 24 | #define P_SPORT0_RSCLK (P_DEFINED | P_IDENT(GPIO_PF2) | P_FUNCT(1)) | ||
| 25 | #define P_SPORT0_DTPRI (P_DEFINED | P_IDENT(GPIO_PF3) | P_FUNCT(1)) | ||
| 26 | #define P_SPORT0_TFS (P_DEFINED | P_IDENT(GPIO_PF4) | P_FUNCT(1)) | ||
| 27 | #define P_SPORT0_TSCLK (P_DEFINED | P_IDENT(GPIO_PF5) | P_FUNCT(1)) | ||
| 28 | #define P_SPORT0_DTSEC (P_DEFINED | P_IDENT(GPIO_PF6) | P_FUNCT(1)) | ||
| 29 | #define P_SPORT0_DRSEC (P_DEFINED | P_IDENT(GPIO_PF7) | P_FUNCT(1)) | ||
| 30 | #elif defined(CONFIG_BF527_SPORT0_PORTG) | ||
| 31 | #define P_SPORT0_DTPRI (P_DEFINED | P_IDENT(GPIO_PG6) | P_FUNCT(0)) | ||
| 32 | #define P_SPORT0_DRSEC (P_DEFINED | P_IDENT(GPIO_PG3) | P_FUNCT(1)) | ||
| 33 | #define P_SPORT0_DTSEC (P_DEFINED | P_IDENT(GPIO_PG4) | P_FUNCT(1)) | ||
| 34 | #define P_SPORT0_DRPRI (P_DEFINED | P_IDENT(GPIO_PG7) | P_FUNCT(1)) | ||
| 35 | #define P_SPORT0_RFS (P_DEFINED | P_IDENT(GPIO_PG8) | P_FUNCT(1)) | ||
| 36 | #define P_SPORT0_RSCLK (P_DEFINED | P_IDENT(GPIO_PG9) | P_FUNCT(1)) | ||
| 37 | #if defined(CONFIG_BF527_SPORT0_TSCLK_PG10) | ||
| 38 | #define P_SPORT0_TSCLK (P_DEFINED | P_IDENT(GPIO_PG10) | P_FUNCT(1)) | ||
| 39 | #elif defined(CONFIG_BF527_SPORT0_TSCLK_PG14) | ||
| 40 | #define P_SPORT0_TSCLK (P_DEFINED | P_IDENT(GPIO_PG14) | P_FUNCT(0)) | ||
| 41 | #endif | ||
| 42 | #define P_SPORT0_TFS (P_DEFINED | P_IDENT(GPIO_PG15) | P_FUNCT(0)) | ||
| 43 | #endif | ||
| 44 | |||
| 45 | #define P_SPORT1_DRPRI (P_DEFINED | P_IDENT(GPIO_PF8) | P_FUNCT(1)) | ||
| 46 | #define P_SPORT1_RSCLK (P_DEFINED | P_IDENT(GPIO_PF9) | P_FUNCT(1)) | ||
| 47 | #define P_SPORT1_RFS (P_DEFINED | P_IDENT(GPIO_PF10) | P_FUNCT(1)) | ||
| 48 | #define P_SPORT1_TFS (P_DEFINED | P_IDENT(GPIO_PF11) | P_FUNCT(1)) | ||
| 49 | #define P_SPORT1_DTPRI (P_DEFINED | P_IDENT(GPIO_PF12) | P_FUNCT(1)) | ||
| 50 | #define P_SPORT1_TSCLK (P_DEFINED | P_IDENT(GPIO_PF13) | P_FUNCT(1)) | ||
| 51 | #define P_SPORT1_DTSEC (P_DEFINED | P_IDENT(GPIO_PF14) | P_FUNCT(1)) | ||
| 52 | #define P_SPORT1_DRSEC (P_DEFINED | P_IDENT(GPIO_PF15) | P_FUNCT(1)) | ||
| 53 | |||
| 54 | #define P_SPI0_SSEL6 (P_DEFINED | P_IDENT(GPIO_PF9) | P_FUNCT(2)) | ||
| 55 | #define P_SPI0_SSEL7 (P_DEFINED | P_IDENT(GPIO_PF10) | P_FUNCT(2)) | ||
| 56 | |||
| 57 | #define P_SPI0_SSEL2 (P_DEFINED | P_IDENT(GPIO_PF12) | P_FUNCT(2)) | ||
| 58 | #define P_SPI0_SSEL3 (P_DEFINED | P_IDENT(GPIO_PF13) | P_FUNCT(2)) | ||
| 59 | |||
| 60 | #if defined(CONFIG_BF527_UART1_PORTF) | ||
| 61 | #define P_UART1_TX (P_DEFINED | P_IDENT(GPIO_PF14) | P_FUNCT(2)) | ||
| 62 | #define P_UART1_RX (P_DEFINED | P_IDENT(GPIO_PF15) | P_FUNCT(2)) | ||
| 63 | #elif defined(CONFIG_BF527_UART1_PORTG) | ||
| 64 | #define P_UART1_TX (P_DEFINED | P_IDENT(GPIO_PG12) | P_FUNCT(1)) | ||
| 65 | #define P_UART1_RX (P_DEFINED | P_IDENT(GPIO_PG13) | P_FUNCT(1)) | ||
| 66 | #endif | ||
| 67 | |||
| 68 | #define P_HWAIT (P_DONTCARE) | ||
| 69 | |||
| 70 | #define P_SPI0_SS (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(0)) | ||
| 71 | #define P_SPI0_SSEL1 (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(2)) | ||
| 72 | #define P_SPI0_SCK (P_DEFINED | P_IDENT(GPIO_PG2) | P_FUNCT(2)) | ||
| 73 | #define P_SPI0_MISO (P_DEFINED | P_IDENT(GPIO_PG3) | P_FUNCT(2)) | ||
| 74 | #define P_SPI0_MOSI (P_DEFINED | P_IDENT(GPIO_PG4) | P_FUNCT(2)) | ||
| 75 | #define P_TMR1 (P_DEFINED | P_IDENT(GPIO_PG5) | P_FUNCT(0)) | ||
| 76 | #define P_PPI0_FS2 (P_DEFINED | P_IDENT(GPIO_PG5) | P_FUNCT(0)) | ||
| 77 | #define P_TMR3 (P_DEFINED | P_IDENT(GPIO_PG7) | P_FUNCT(0)) | ||
| 78 | #define P_TMR4 (P_DEFINED | P_IDENT(GPIO_PG8) | P_FUNCT(0)) | ||
| 79 | #define P_TMR5 (P_DEFINED | P_IDENT(GPIO_PG9) | P_FUNCT(0)) | ||
| 80 | #define P_TMR6 (P_DEFINED | P_IDENT(GPIO_PG10) | P_FUNCT(0)) | ||
| 81 | /* #define P_TMR7 (P_DEFINED | P_IDENT(GPIO_PG11) | P_FUNCT(0)) */ | ||
| 82 | #define P_DMAR1 (P_DEFINED | P_IDENT(GPIO_PG12) | P_FUNCT(0)) | ||
| 83 | #define P_DMAR0 (P_DEFINED | P_IDENT(GPIO_PG13) | P_FUNCT(0)) | ||
| 84 | #define P_TMR2 (P_DEFINED | P_IDENT(GPIO_PG6) | P_FUNCT(1)) | ||
| 85 | #define P_TMR7 (P_DEFINED | P_IDENT(GPIO_PG11) | P_FUNCT(1)) | ||
| 86 | #define P_MDC (P_DEFINED | P_IDENT(GPIO_PG14) | P_FUNCT(1)) | ||
| 87 | #define P_RMII0_MDINT (P_DEFINED | P_IDENT(GPIO_PG15) | P_FUNCT(1)) | ||
| 88 | #define P_MII0_PHYINT (P_DEFINED | P_IDENT(GPIO_PG15) | P_FUNCT(1)) | ||
| 89 | |||
| 90 | #define P_PPI0_FS3 (P_DEFINED | P_IDENT(GPIO_PG6) | P_FUNCT(2)) | ||
| 91 | #define P_UART0_TX (P_DEFINED | P_IDENT(GPIO_PG7) | P_FUNCT(2)) | ||
| 92 | #define P_UART0_RX (P_DEFINED | P_IDENT(GPIO_PG8) | P_FUNCT(2)) | ||
| 93 | |||
| 94 | #define P_HOST_WR (P_DEFINED | P_IDENT(GPIO_PG11) | P_FUNCT(2)) | ||
| 95 | #define P_HOST_ACK (P_DEFINED | P_IDENT(GPIO_PG12) | P_FUNCT(2)) | ||
| 96 | #define P_HOST_ADDR (P_DEFINED | P_IDENT(GPIO_PG13) | P_FUNCT(2)) | ||
| 97 | #define P_HOST_RD (P_DEFINED | P_IDENT(GPIO_PG14) | P_FUNCT(2)) | ||
| 98 | #define P_HOST_CE (P_DEFINED | P_IDENT(GPIO_PG15) | P_FUNCT(2)) | ||
| 99 | |||
| 100 | #if defined(CONFIG_BF527_NAND_D_PORTF) | ||
| 101 | #define P_NAND_D0 (P_DEFINED | P_IDENT(GPIO_PF0) | P_FUNCT(2)) | ||
| 102 | #define P_NAND_D1 (P_DEFINED | P_IDENT(GPIO_PF1) | P_FUNCT(2)) | ||
| 103 | #define P_NAND_D2 (P_DEFINED | P_IDENT(GPIO_PF2) | P_FUNCT(2)) | ||
| 104 | #define P_NAND_D3 (P_DEFINED | P_IDENT(GPIO_PF3) | P_FUNCT(2)) | ||
| 105 | #define P_NAND_D4 (P_DEFINED | P_IDENT(GPIO_PF4) | P_FUNCT(2)) | ||
| 106 | #define P_NAND_D5 (P_DEFINED | P_IDENT(GPIO_PF5) | P_FUNCT(2)) | ||
| 107 | #define P_NAND_D6 (P_DEFINED | P_IDENT(GPIO_PF6) | P_FUNCT(2)) | ||
| 108 | #define P_NAND_D7 (P_DEFINED | P_IDENT(GPIO_PF7) | P_FUNCT(2)) | ||
| 109 | #elif defined(CONFIG_BF527_NAND_D_PORTH) | ||
| 110 | #define P_NAND_D0 (P_DEFINED | P_IDENT(GPIO_PH0) | P_FUNCT(0)) | ||
| 111 | #define P_NAND_D1 (P_DEFINED | P_IDENT(GPIO_PH1) | P_FUNCT(0)) | ||
| 112 | #define P_NAND_D2 (P_DEFINED | P_IDENT(GPIO_PH2) | P_FUNCT(0)) | ||
| 113 | #define P_NAND_D3 (P_DEFINED | P_IDENT(GPIO_PH3) | P_FUNCT(0)) | ||
| 114 | #define P_NAND_D4 (P_DEFINED | P_IDENT(GPIO_PH4) | P_FUNCT(0)) | ||
| 115 | #define P_NAND_D5 (P_DEFINED | P_IDENT(GPIO_PH5) | P_FUNCT(0)) | ||
| 116 | #define P_NAND_D6 (P_DEFINED | P_IDENT(GPIO_PH6) | P_FUNCT(0)) | ||
| 117 | #define P_NAND_D7 (P_DEFINED | P_IDENT(GPIO_PH7) | P_FUNCT(0)) | ||
| 118 | #endif | ||
| 119 | |||
| 120 | #define P_SPI0_SSEL4 (P_DEFINED | P_IDENT(GPIO_PH8) | P_FUNCT(0)) | ||
| 121 | #define P_SPI0_SSEL5 (P_DEFINED | P_IDENT(GPIO_PH9) | P_FUNCT(0)) | ||
| 122 | #define P_NAND_CE (P_DEFINED | P_IDENT(GPIO_PH10) | P_FUNCT(0)) | ||
| 123 | #define P_NAND_WE (P_DEFINED | P_IDENT(GPIO_PH11) | P_FUNCT(0)) | ||
| 124 | #define P_NAND_RE (P_DEFINED | P_IDENT(GPIO_PH12) | P_FUNCT(0)) | ||
| 125 | #define P_NAND_RB (P_DEFINED | P_IDENT(GPIO_PH13) | P_FUNCT(0)) | ||
| 126 | #define P_NAND_CLE (P_DEFINED | P_IDENT(GPIO_PH14) | P_FUNCT(0)) | ||
| 127 | #define P_NAND_ALE (P_DEFINED | P_IDENT(GPIO_PH15) | P_FUNCT(0)) | ||
| 128 | |||
| 129 | #define P_HOST_D0 (P_DEFINED | P_IDENT(GPIO_PH0) | P_FUNCT(2)) | ||
| 130 | #define P_HOST_D1 (P_DEFINED | P_IDENT(GPIO_PH1) | P_FUNCT(2)) | ||
| 131 | #define P_HOST_D2 (P_DEFINED | P_IDENT(GPIO_PH2) | P_FUNCT(2)) | ||
| 132 | #define P_HOST_D3 (P_DEFINED | P_IDENT(GPIO_PH3) | P_FUNCT(2)) | ||
| 133 | #define P_HOST_D4 (P_DEFINED | P_IDENT(GPIO_PH4) | P_FUNCT(2)) | ||
| 134 | #define P_HOST_D5 (P_DEFINED | P_IDENT(GPIO_PH5) | P_FUNCT(2)) | ||
| 135 | #define P_HOST_D6 (P_DEFINED | P_IDENT(GPIO_PH6) | P_FUNCT(2)) | ||
| 136 | #define P_HOST_D7 (P_DEFINED | P_IDENT(GPIO_PH7) | P_FUNCT(2)) | ||
| 137 | #define P_HOST_D8 (P_DEFINED | P_IDENT(GPIO_PH8) | P_FUNCT(2)) | ||
| 138 | #define P_HOST_D9 (P_DEFINED | P_IDENT(GPIO_PH9) | P_FUNCT(2)) | ||
| 139 | #define P_HOST_D10 (P_DEFINED | P_IDENT(GPIO_PH10) | P_FUNCT(2)) | ||
| 140 | #define P_HOST_D11 (P_DEFINED | P_IDENT(GPIO_PH11) | P_FUNCT(2)) | ||
| 141 | #define P_HOST_D12 (P_DEFINED | P_IDENT(GPIO_PH12) | P_FUNCT(2)) | ||
| 142 | #define P_HOST_D13 (P_DEFINED | P_IDENT(GPIO_PH13) | P_FUNCT(2)) | ||
| 143 | #define P_HOST_D14 (P_DEFINED | P_IDENT(GPIO_PH14) | P_FUNCT(2)) | ||
| 144 | #define P_HOST_D15 (P_DEFINED | P_IDENT(GPIO_PH15) | P_FUNCT(2)) | ||
| 145 | |||
| 146 | #define P_MII0_ETxD0 (P_DEFINED | P_IDENT(GPIO_PH5) | P_FUNCT(1)) | ||
| 147 | #define P_MII0_ETxD1 (P_DEFINED | P_IDENT(GPIO_PH7) | P_FUNCT(1)) | ||
| 148 | #define P_MII0_ETxD2 (P_DEFINED | P_IDENT(GPIO_PH9) | P_FUNCT(1)) | ||
| 149 | #define P_MII0_ETxD3 (P_DEFINED | P_IDENT(GPIO_PH11) | P_FUNCT(1)) | ||
| 150 | #define P_MII0_ETxEN (P_DEFINED | P_IDENT(GPIO_PH3) | P_FUNCT(1)) | ||
| 151 | #define P_MII0_TxCLK (P_DEFINED | P_IDENT(GPIO_PH4) | P_FUNCT(1)) | ||
| 152 | #define P_MII0_COL (P_DEFINED | P_IDENT(GPIO_PH15) | P_FUNCT(1)) | ||
| 153 | #define P_MII0_ERxD0 (P_DEFINED | P_IDENT(GPIO_PH6) | P_FUNCT(1)) | ||
| 154 | #define P_MII0_ERxD1 (P_DEFINED | P_IDENT(GPIO_PH8) | P_FUNCT(1)) | ||
| 155 | #define P_MII0_ERxD2 (P_DEFINED | P_IDENT(GPIO_PH10) | P_FUNCT(1)) | ||
| 156 | #define P_MII0_ERxD3 (P_DEFINED | P_IDENT(GPIO_PH12) | P_FUNCT(1)) | ||
| 157 | #define P_MII0_ERxDV (P_DEFINED | P_IDENT(GPIO_PH14) | P_FUNCT(1)) | ||
| 158 | #define P_MII0_ERxCLK (P_DEFINED | P_IDENT(GPIO_PH13) | P_FUNCT(1)) | ||
| 159 | #define P_MII0_ERxER (P_DEFINED | P_IDENT(GPIO_PH1) | P_FUNCT(1)) | ||
| 160 | #define P_MII0_CRS (P_DEFINED | P_IDENT(GPIO_PH0) | P_FUNCT(1)) | ||
| 161 | #define P_RMII0_REF_CLK (P_DEFINED | P_IDENT(GPIO_PH4) | P_FUNCT(1)) | ||
| 162 | #define P_RMII0_CRS_DV (P_DEFINED | P_IDENT(GPIO_PH0) | P_FUNCT(1)) | ||
| 163 | #define P_MDIO (P_DEFINED | P_IDENT(GPIO_PH2) | P_FUNCT(1)) | ||
| 164 | |||
| 165 | #define P_TWI0_SCL (P_DONTCARE) | ||
| 166 | #define P_TWI0_SDA (P_DONTCARE) | ||
| 167 | #define P_PPI0_FS1 (P_DONTCARE) | ||
| 168 | #define P_TMR0 (P_DONTCARE) | ||
| 169 | #define P_TMRCLK (P_DONTCARE) | ||
| 170 | #define P_PPI0_CLK (P_DONTCARE) | ||
| 171 | |||
| 172 | #define P_MII0 {\ | ||
| 173 | P_MII0_ETxD0, \ | ||
| 174 | P_MII0_ETxD1, \ | ||
| 175 | P_MII0_ETxD2, \ | ||
| 176 | P_MII0_ETxD3, \ | ||
| 177 | P_MII0_ETxEN, \ | ||
| 178 | P_MII0_TxCLK, \ | ||
| 179 | P_MII0_PHYINT, \ | ||
| 180 | P_MII0_COL, \ | ||
| 181 | P_MII0_ERxD0, \ | ||
| 182 | P_MII0_ERxD1, \ | ||
| 183 | P_MII0_ERxD2, \ | ||
| 184 | P_MII0_ERxD3, \ | ||
| 185 | P_MII0_ERxDV, \ | ||
| 186 | P_MII0_ERxCLK, \ | ||
| 187 | P_MII0_ERxER, \ | ||
| 188 | P_MII0_CRS, \ | ||
| 189 | P_MDC, \ | ||
| 190 | P_MDIO, 0} | ||
| 191 | |||
| 192 | #define P_RMII0 {\ | ||
| 193 | P_MII0_ETxD0, \ | ||
| 194 | P_MII0_ETxD1, \ | ||
| 195 | P_MII0_ETxEN, \ | ||
| 196 | P_MII0_ERxD0, \ | ||
| 197 | P_MII0_ERxD1, \ | ||
| 198 | P_MII0_ERxER, \ | ||
| 199 | P_RMII0_REF_CLK, \ | ||
| 200 | P_RMII0_MDINT, \ | ||
| 201 | P_RMII0_CRS_DV, \ | ||
| 202 | P_MDC, \ | ||
| 203 | P_MDIO, 0} | ||
| 204 | |||
| 205 | #endif /* _MACH_PORTMUX_H_ */ | ||
diff --git a/include/asm-blackfin/mach-bf548/defBF549.h b/include/asm-blackfin/mach-bf548/defBF549.h index 50b3fe55ef0c..4e46d657e50e 100644 --- a/include/asm-blackfin/mach-bf548/defBF549.h +++ b/include/asm-blackfin/mach-bf548/defBF549.h | |||
| @@ -1178,7 +1178,7 @@ | |||
| 1178 | 1178 | ||
| 1179 | /* Bit masks for HOST_STATUS */ | 1179 | /* Bit masks for HOST_STATUS */ |
| 1180 | 1180 | ||
| 1181 | #define READY 0x1 /* DMA Ready */ | 1181 | #define DMA_READY 0x1 /* DMA Ready */ |
| 1182 | #define FIFOFULL 0x2 /* FIFO Full */ | 1182 | #define FIFOFULL 0x2 /* FIFO Full */ |
| 1183 | #define FIFOEMPTY 0x4 /* FIFO Empty */ | 1183 | #define FIFOEMPTY 0x4 /* FIFO Empty */ |
| 1184 | #define DMA_COMPLETE 0x8 /* DMA Complete */ | 1184 | #define DMA_COMPLETE 0x8 /* DMA Complete */ |
diff --git a/include/asm-blackfin/mach-bf548/defBF54x_base.h b/include/asm-blackfin/mach-bf548/defBF54x_base.h index e2632db74baa..1d365c844ffe 100644 --- a/include/asm-blackfin/mach-bf548/defBF54x_base.h +++ b/include/asm-blackfin/mach-bf548/defBF54x_base.h | |||
| @@ -47,6 +47,10 @@ | |||
| 47 | /* Debug/MP/Emulation Registers (0xFFC00014 - 0xFFC00014) */ | 47 | /* Debug/MP/Emulation Registers (0xFFC00014 - 0xFFC00014) */ |
| 48 | 48 | ||
| 49 | #define CHIPID 0xffc00014 | 49 | #define CHIPID 0xffc00014 |
| 50 | /* CHIPID Masks */ | ||
| 51 | #define CHIPID_VERSION 0xF0000000 | ||
| 52 | #define CHIPID_FAMILY 0x0FFFF000 | ||
| 53 | #define CHIPID_MANUFACTURE 0x00000FFE | ||
| 50 | 54 | ||
| 51 | /* System Reset and Interrupt Controller (0xFFC00100 - 0xFFC00104) */ | 55 | /* System Reset and Interrupt Controller (0xFFC00100 - 0xFFC00104) */ |
| 52 | 56 | ||
| @@ -3299,7 +3303,7 @@ | |||
| 3299 | 3303 | ||
| 3300 | #define MFD 0xf000 /* Multi channel Frame Delay */ | 3304 | #define MFD 0xf000 /* Multi channel Frame Delay */ |
| 3301 | #define FSDR 0x80 /* Frame Sync to Data Relationship */ | 3305 | #define FSDR 0x80 /* Frame Sync to Data Relationship */ |
| 3302 | #define MCMEM 0x10 /* Multi channel Frame Mode Enable */ | 3306 | #define MCMEN 0x10 /* Multi channel Frame Mode Enable */ |
| 3303 | #define MCDRXPE 0x8 /* Multi channel DMA Receive Packing */ | 3307 | #define MCDRXPE 0x8 /* Multi channel DMA Receive Packing */ |
| 3304 | #define MCDTXPE 0x4 /* Multi channel DMA Transmit Packing */ | 3308 | #define MCDTXPE 0x4 /* Multi channel DMA Transmit Packing */ |
| 3305 | #define MCCRM 0x3 /* 2X Clock Recovery Mode */ | 3309 | #define MCCRM 0x3 /* 2X Clock Recovery Mode */ |
diff --git a/include/asm-blackfin/mach-bf548/dma.h b/include/asm-blackfin/mach-bf548/dma.h index 14cb10cc24ae..4d97d3aa97cd 100644 --- a/include/asm-blackfin/mach-bf548/dma.h +++ b/include/asm-blackfin/mach-bf548/dma.h | |||
| @@ -70,5 +70,5 @@ | |||
| 70 | #define MAX_BLACKFIN_DMA_CHANNEL 32 | 70 | #define MAX_BLACKFIN_DMA_CHANNEL 32 |
| 71 | 71 | ||
| 72 | extern int channel2irq(unsigned int channel); | 72 | extern int channel2irq(unsigned int channel); |
| 73 | extern struct dma_register *base_addr[]; | 73 | extern struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL]; |
| 74 | #endif | 74 | #endif |
diff --git a/include/asm-parisc/Kbuild b/include/asm-parisc/Kbuild index c68e1680da01..f88b252e419c 100644 --- a/include/asm-parisc/Kbuild +++ b/include/asm-parisc/Kbuild | |||
| @@ -1 +1,3 @@ | |||
| 1 | include include/asm-generic/Kbuild.asm | 1 | include include/asm-generic/Kbuild.asm |
| 2 | |||
| 3 | unifdef-y += pdc.h | ||
diff --git a/include/asm-parisc/io.h b/include/asm-parisc/io.h index 95f00e11c7b4..55ddb1842107 100644 --- a/include/asm-parisc/io.h +++ b/include/asm-parisc/io.h | |||
| @@ -138,7 +138,7 @@ extern void __iomem * __ioremap(unsigned long offset, unsigned long size, unsign | |||
| 138 | /* Most machines react poorly to I/O-space being cacheable... Instead let's | 138 | /* Most machines react poorly to I/O-space being cacheable... Instead let's |
| 139 | * define ioremap() in terms of ioremap_nocache(). | 139 | * define ioremap() in terms of ioremap_nocache(). |
| 140 | */ | 140 | */ |
| 141 | extern inline void __iomem * ioremap(unsigned long offset, unsigned long size) | 141 | static inline void __iomem * ioremap(unsigned long offset, unsigned long size) |
| 142 | { | 142 | { |
| 143 | return __ioremap(offset, size, _PAGE_NO_CACHE); | 143 | return __ioremap(offset, size, _PAGE_NO_CACHE); |
| 144 | } | 144 | } |
diff --git a/include/asm-parisc/page.h b/include/asm-parisc/page.h index f6bba4c13664..b59a1504fc7a 100644 --- a/include/asm-parisc/page.h +++ b/include/asm-parisc/page.h | |||
| @@ -3,6 +3,8 @@ | |||
| 3 | 3 | ||
| 4 | #ifdef __KERNEL__ | 4 | #ifdef __KERNEL__ |
| 5 | 5 | ||
| 6 | #include <linux/const.h> | ||
| 7 | |||
| 6 | #if defined(CONFIG_PARISC_PAGE_SIZE_4KB) | 8 | #if defined(CONFIG_PARISC_PAGE_SIZE_4KB) |
| 7 | # define PAGE_SHIFT 12 | 9 | # define PAGE_SHIFT 12 |
| 8 | #elif defined(CONFIG_PARISC_PAGE_SIZE_16KB) | 10 | #elif defined(CONFIG_PARISC_PAGE_SIZE_16KB) |
| @@ -12,7 +14,7 @@ | |||
| 12 | #else | 14 | #else |
| 13 | # error "unknown default kernel page size" | 15 | # error "unknown default kernel page size" |
| 14 | #endif | 16 | #endif |
| 15 | #define PAGE_SIZE (1UL << PAGE_SHIFT) | 17 | #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) |
| 16 | #define PAGE_MASK (~(PAGE_SIZE-1)) | 18 | #define PAGE_MASK (~(PAGE_SIZE-1)) |
| 17 | 19 | ||
| 18 | 20 | ||
diff --git a/include/asm-parisc/pci.h b/include/asm-parisc/pci.h index 61fbd57a8323..4ba868f44a5e 100644 --- a/include/asm-parisc/pci.h +++ b/include/asm-parisc/pci.h | |||
| @@ -207,7 +207,7 @@ extern struct pci_bios_ops *pci_bios; | |||
| 207 | extern void pcibios_register_hba(struct pci_hba_data *); | 207 | extern void pcibios_register_hba(struct pci_hba_data *); |
| 208 | extern void pcibios_set_master(struct pci_dev *); | 208 | extern void pcibios_set_master(struct pci_dev *); |
| 209 | #else | 209 | #else |
| 210 | extern inline void pcibios_register_hba(struct pci_hba_data *x) | 210 | static inline void pcibios_register_hba(struct pci_hba_data *x) |
| 211 | { | 211 | { |
| 212 | } | 212 | } |
| 213 | #endif | 213 | #endif |
diff --git a/include/asm-parisc/pdc.h b/include/asm-parisc/pdc.h index 876fd8116d4a..5e0c3ca5450b 100644 --- a/include/asm-parisc/pdc.h +++ b/include/asm-parisc/pdc.h | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | #ifndef _PARISC_PDC_H | 1 | #ifndef _PARISC_PDC_H |
| 2 | #define _PARISC_PDC_H | 2 | #define _PARISC_PDC_H |
| 3 | 3 | ||
| 4 | |||
| 5 | /* | 4 | /* |
| 6 | * PDC return values ... | 5 | * PDC return values ... |
| 7 | * All PDC calls return a subset of these errors. | 6 | * All PDC calls return a subset of these errors. |
| @@ -20,7 +19,6 @@ | |||
| 20 | #define PDC_BUS_POW_WARN -12 /* Call could not complete in allowed power budget */ | 19 | #define PDC_BUS_POW_WARN -12 /* Call could not complete in allowed power budget */ |
| 21 | #define PDC_NOT_NARROW -17 /* Narrow mode not supported */ | 20 | #define PDC_NOT_NARROW -17 /* Narrow mode not supported */ |
| 22 | 21 | ||
| 23 | |||
| 24 | /* | 22 | /* |
| 25 | * PDC entry points... | 23 | * PDC entry points... |
| 26 | */ | 24 | */ |
| @@ -50,6 +48,12 @@ | |||
| 50 | #define PDC_MODEL_DISPEC 5 /* disable specific option */ | 48 | #define PDC_MODEL_DISPEC 5 /* disable specific option */ |
| 51 | #define PDC_MODEL_CPU_ID 6 /* returns cpu-id (only newer machines!) */ | 49 | #define PDC_MODEL_CPU_ID 6 /* returns cpu-id (only newer machines!) */ |
| 52 | #define PDC_MODEL_CAPABILITIES 7 /* returns OS32/OS64-flags */ | 50 | #define PDC_MODEL_CAPABILITIES 7 /* returns OS32/OS64-flags */ |
| 51 | /* Values for PDC_MODEL_CAPABILITIES non-equivalent virtual aliasing support */ | ||
| 52 | #define PDC_MODEL_IOPDIR_FDC (1 << 2) | ||
| 53 | #define PDC_MODEL_NVA_MASK (3 << 4) | ||
| 54 | #define PDC_MODEL_NVA_SUPPORTED (0 << 4) | ||
| 55 | #define PDC_MODEL_NVA_SLOW (1 << 4) | ||
| 56 | #define PDC_MODEL_NVA_UNSUPPORTED (3 << 4) | ||
| 53 | #define PDC_MODEL_GET_BOOT__OP 8 /* returns boot test options */ | 57 | #define PDC_MODEL_GET_BOOT__OP 8 /* returns boot test options */ |
| 54 | #define PDC_MODEL_SET_BOOT__OP 9 /* set boot test options */ | 58 | #define PDC_MODEL_SET_BOOT__OP 9 /* set boot test options */ |
| 55 | 59 | ||
| @@ -91,7 +95,7 @@ | |||
| 91 | #define PDC_TOD 9 /* time-of-day clock (TOD) */ | 95 | #define PDC_TOD 9 /* time-of-day clock (TOD) */ |
| 92 | #define PDC_TOD_READ 0 /* read TOD */ | 96 | #define PDC_TOD_READ 0 /* read TOD */ |
| 93 | #define PDC_TOD_WRITE 1 /* write TOD */ | 97 | #define PDC_TOD_WRITE 1 /* write TOD */ |
| 94 | #define PDC_TOD_ITIMER 2 /* calibrate Interval Timer (CR16) */ | 98 | |
| 95 | 99 | ||
| 96 | #define PDC_STABLE 10 /* stable storage (sprockets) */ | 100 | #define PDC_STABLE 10 /* stable storage (sprockets) */ |
| 97 | #define PDC_STABLE_READ 0 | 101 | #define PDC_STABLE_READ 0 |
| @@ -143,15 +147,6 @@ | |||
| 143 | #define PDC_MEM_RET_PDT_FULL -11 | 147 | #define PDC_MEM_RET_PDT_FULL -11 |
| 144 | #define PDC_MEM_RET_INVALID_PHYSICAL_LOCATION ~0ULL | 148 | #define PDC_MEM_RET_INVALID_PHYSICAL_LOCATION ~0ULL |
| 145 | 149 | ||
| 146 | #ifndef __ASSEMBLY__ | ||
| 147 | typedef struct { | ||
| 148 | unsigned long long baseAddr; | ||
| 149 | unsigned int pages; | ||
| 150 | unsigned int reserved; | ||
| 151 | } MemAddrTable_t; | ||
| 152 | #endif | ||
| 153 | |||
| 154 | |||
| 155 | #define PDC_PSW 21 /* Get/Set default System Mask */ | 150 | #define PDC_PSW 21 /* Get/Set default System Mask */ |
| 156 | #define PDC_PSW_MASK 0 /* Return mask */ | 151 | #define PDC_PSW_MASK 0 /* Return mask */ |
| 157 | #define PDC_PSW_GET_DEFAULTS 1 /* Return defaults */ | 152 | #define PDC_PSW_GET_DEFAULTS 1 /* Return defaults */ |
| @@ -274,6 +269,43 @@ typedef struct { | |||
| 274 | #define PDC_LINK_PCI_ENTRY_POINTS 0 /* list (Arg1) = 0 */ | 269 | #define PDC_LINK_PCI_ENTRY_POINTS 0 /* list (Arg1) = 0 */ |
| 275 | #define PDC_LINK_USB_ENTRY_POINTS 1 /* list (Arg1) = 1 */ | 270 | #define PDC_LINK_USB_ENTRY_POINTS 1 /* list (Arg1) = 1 */ |
| 276 | 271 | ||
| 272 | /* cl_class | ||
| 273 | * page 3-33 of IO-Firmware ARS | ||
| 274 | * IODC ENTRY_INIT(Search first) RET[1] | ||
| 275 | */ | ||
| 276 | #define CL_NULL 0 /* invalid */ | ||
| 277 | #define CL_RANDOM 1 /* random access (as disk) */ | ||
| 278 | #define CL_SEQU 2 /* sequential access (as tape) */ | ||
| 279 | #define CL_DUPLEX 7 /* full-duplex point-to-point (RS-232, Net) */ | ||
| 280 | #define CL_KEYBD 8 /* half-duplex console (HIL Keyboard) */ | ||
| 281 | #define CL_DISPL 9 /* half-duplex console (display) */ | ||
| 282 | #define CL_FC 10 /* FiberChannel access media */ | ||
| 283 | |||
| 284 | /* IODC ENTRY_INIT() */ | ||
| 285 | #define ENTRY_INIT_SRCH_FRST 2 | ||
| 286 | #define ENTRY_INIT_SRCH_NEXT 3 | ||
| 287 | #define ENTRY_INIT_MOD_DEV 4 | ||
| 288 | #define ENTRY_INIT_DEV 5 | ||
| 289 | #define ENTRY_INIT_MOD 6 | ||
| 290 | #define ENTRY_INIT_MSG 9 | ||
| 291 | |||
| 292 | /* IODC ENTRY_IO() */ | ||
| 293 | #define ENTRY_IO_BOOTIN 0 | ||
| 294 | #define ENTRY_IO_BOOTOUT 1 | ||
| 295 | #define ENTRY_IO_CIN 2 | ||
| 296 | #define ENTRY_IO_COUT 3 | ||
| 297 | #define ENTRY_IO_CLOSE 4 | ||
| 298 | #define ENTRY_IO_GETMSG 9 | ||
| 299 | #define ENTRY_IO_BBLOCK_IN 16 | ||
| 300 | #define ENTRY_IO_BBLOCK_OUT 17 | ||
| 301 | |||
| 302 | /* IODC ENTRY_SPA() */ | ||
| 303 | |||
| 304 | /* IODC ENTRY_CONFIG() */ | ||
| 305 | |||
| 306 | /* IODC ENTRY_TEST() */ | ||
| 307 | |||
| 308 | /* IODC ENTRY_TLB() */ | ||
| 277 | 309 | ||
| 278 | /* constants for OS (NVM...) */ | 310 | /* constants for OS (NVM...) */ |
| 279 | #define OS_ID_NONE 0 /* Undefined OS ID */ | 311 | #define OS_ID_NONE 0 /* Undefined OS ID */ |
| @@ -295,7 +327,13 @@ typedef struct { | |||
| 295 | #define OSTAT_RUN 6 | 327 | #define OSTAT_RUN 6 |
| 296 | #define OSTAT_ON 7 | 328 | #define OSTAT_ON 7 |
| 297 | 329 | ||
| 298 | #ifndef __ASSEMBLY__ | 330 | /* Page Zero constant offsets used by the HPMC handler */ |
| 331 | #define BOOT_CONSOLE_HPA_OFFSET 0x3c0 | ||
| 332 | #define BOOT_CONSOLE_SPA_OFFSET 0x3c4 | ||
| 333 | #define BOOT_CONSOLE_PATH_OFFSET 0x3a8 | ||
| 334 | |||
| 335 | #if !defined(__ASSEMBLY__) | ||
| 336 | #ifdef __KERNEL__ | ||
| 299 | 337 | ||
| 300 | #include <linux/types.h> | 338 | #include <linux/types.h> |
| 301 | 339 | ||
| @@ -331,14 +369,6 @@ struct pdc_model { /* for PDC_MODEL */ | |||
| 331 | unsigned long curr_key; | 369 | unsigned long curr_key; |
| 332 | }; | 370 | }; |
| 333 | 371 | ||
| 334 | /* Values for PDC_MODEL_CAPABILITIES non-equivalent virtual aliasing support */ | ||
| 335 | |||
| 336 | #define PDC_MODEL_IOPDIR_FDC (1 << 2) /* see sba_iommu.c */ | ||
| 337 | #define PDC_MODEL_NVA_MASK (3 << 4) | ||
| 338 | #define PDC_MODEL_NVA_SUPPORTED (0 << 4) | ||
| 339 | #define PDC_MODEL_NVA_SLOW (1 << 4) | ||
| 340 | #define PDC_MODEL_NVA_UNSUPPORTED (3 << 4) | ||
| 341 | |||
| 342 | struct pdc_cache_cf { /* for PDC_CACHE (I/D-caches) */ | 372 | struct pdc_cache_cf { /* for PDC_CACHE (I/D-caches) */ |
| 343 | unsigned long | 373 | unsigned long |
| 344 | #ifdef CONFIG_64BIT | 374 | #ifdef CONFIG_64BIT |
| @@ -558,15 +588,97 @@ struct pdc_hpmc_pim_20 { /* PDC_PIM */ | |||
| 558 | __u64 fr[32]; | 588 | __u64 fr[32]; |
| 559 | }; | 589 | }; |
| 560 | 590 | ||
| 561 | #endif /* __ASSEMBLY__ */ | 591 | void pdc_console_init(void); /* in pdc_console.c */ |
| 592 | void pdc_console_restart(void); | ||
| 593 | |||
| 594 | void setup_pdc(void); /* in inventory.c */ | ||
| 595 | |||
| 596 | /* wrapper-functions from pdc.c */ | ||
| 597 | |||
| 598 | int pdc_add_valid(unsigned long address); | ||
| 599 | int pdc_chassis_info(struct pdc_chassis_info *chassis_info, void *led_info, unsigned long len); | ||
| 600 | int pdc_chassis_disp(unsigned long disp); | ||
| 601 | int pdc_chassis_warn(unsigned long *warn); | ||
| 602 | int pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info); | ||
| 603 | int pdc_iodc_read(unsigned long *actcnt, unsigned long hpa, unsigned int index, | ||
| 604 | void *iodc_data, unsigned int iodc_data_size); | ||
| 605 | int pdc_system_map_find_mods(struct pdc_system_map_mod_info *pdc_mod_info, | ||
| 606 | struct pdc_module_path *mod_path, long mod_index); | ||
| 607 | int pdc_system_map_find_addrs(struct pdc_system_map_addr_info *pdc_addr_info, | ||
| 608 | long mod_index, long addr_index); | ||
| 609 | int pdc_model_info(struct pdc_model *model); | ||
| 610 | int pdc_model_sysmodel(char *name); | ||
| 611 | int pdc_model_cpuid(unsigned long *cpu_id); | ||
| 612 | int pdc_model_versions(unsigned long *versions, int id); | ||
| 613 | int pdc_model_capabilities(unsigned long *capabilities); | ||
| 614 | int pdc_cache_info(struct pdc_cache_info *cache); | ||
| 615 | int pdc_spaceid_bits(unsigned long *space_bits); | ||
| 616 | #ifndef CONFIG_PA20 | ||
| 617 | int pdc_btlb_info(struct pdc_btlb_info *btlb); | ||
| 618 | int pdc_mem_map_hpa(struct pdc_memory_map *r_addr, struct pdc_module_path *mod_path); | ||
| 619 | #endif /* !CONFIG_PA20 */ | ||
| 620 | int pdc_lan_station_id(char *lan_addr, unsigned long net_hpa); | ||
| 621 | |||
| 622 | int pdc_stable_read(unsigned long staddr, void *memaddr, unsigned long count); | ||
| 623 | int pdc_stable_write(unsigned long staddr, void *memaddr, unsigned long count); | ||
| 624 | int pdc_stable_get_size(unsigned long *size); | ||
| 625 | int pdc_stable_verify_contents(void); | ||
| 626 | int pdc_stable_initialize(void); | ||
| 627 | |||
| 628 | int pdc_pci_irt_size(unsigned long *num_entries, unsigned long hpa); | ||
| 629 | int pdc_pci_irt(unsigned long num_entries, unsigned long hpa, void *tbl); | ||
| 630 | |||
| 631 | int pdc_get_initiator(struct hardware_path *, struct pdc_initiator *); | ||
| 632 | int pdc_tod_read(struct pdc_tod *tod); | ||
| 633 | int pdc_tod_set(unsigned long sec, unsigned long usec); | ||
| 634 | |||
| 635 | #ifdef CONFIG_64BIT | ||
| 636 | int pdc_mem_mem_table(struct pdc_memory_table_raddr *r_addr, | ||
| 637 | struct pdc_memory_table *tbl, unsigned long entries); | ||
| 638 | #endif | ||
| 639 | |||
| 640 | void set_firmware_width(void); | ||
| 641 | int pdc_do_firm_test_reset(unsigned long ftc_bitmap); | ||
| 642 | int pdc_do_reset(void); | ||
| 643 | int pdc_soft_power_info(unsigned long *power_reg); | ||
| 644 | int pdc_soft_power_button(int sw_control); | ||
| 645 | void pdc_io_reset(void); | ||
| 646 | void pdc_io_reset_devices(void); | ||
| 647 | int pdc_iodc_getc(void); | ||
| 648 | void pdc_iodc_putc(unsigned char c); | ||
| 649 | void pdc_iodc_outc(unsigned char c); | ||
| 650 | void pdc_printf(const char *fmt, ...); | ||
| 651 | |||
| 652 | void pdc_emergency_unlock(void); | ||
| 653 | int pdc_sti_call(unsigned long func, unsigned long flags, | ||
| 654 | unsigned long inptr, unsigned long outputr, | ||
| 655 | unsigned long glob_cfg); | ||
| 656 | |||
| 657 | static inline char * os_id_to_string(u16 os_id) { | ||
| 658 | switch(os_id) { | ||
| 659 | case OS_ID_NONE: return "No OS"; | ||
| 660 | case OS_ID_HPUX: return "HP-UX"; | ||
| 661 | case OS_ID_MPEXL: return "MPE-iX"; | ||
| 662 | case OS_ID_OSF: return "OSF"; | ||
| 663 | case OS_ID_HPRT: return "HP-RT"; | ||
| 664 | case OS_ID_NOVEL: return "Novell Netware"; | ||
| 665 | case OS_ID_LINUX: return "Linux"; | ||
| 666 | default: return "Unknown"; | ||
| 667 | } | ||
| 668 | } | ||
| 669 | |||
| 670 | #endif /* __KERNEL__ */ | ||
| 671 | |||
| 672 | #define PAGE0 ((struct zeropage *)__PAGE_OFFSET) | ||
| 673 | |||
| 674 | /* DEFINITION OF THE ZERO-PAGE (PAG0) */ | ||
| 675 | /* based on work by Jason Eckhardt (jason@equator.com) */ | ||
| 562 | 676 | ||
| 563 | /* flags of the device_path (see below) */ | 677 | /* flags of the device_path */ |
| 564 | #define PF_AUTOBOOT 0x80 | 678 | #define PF_AUTOBOOT 0x80 |
| 565 | #define PF_AUTOSEARCH 0x40 | 679 | #define PF_AUTOSEARCH 0x40 |
| 566 | #define PF_TIMER 0x0F | 680 | #define PF_TIMER 0x0F |
| 567 | 681 | ||
| 568 | #ifndef __ASSEMBLY__ | ||
| 569 | |||
| 570 | struct device_path { /* page 1-69 */ | 682 | struct device_path { /* page 1-69 */ |
| 571 | unsigned char flags; /* flags see above! */ | 683 | unsigned char flags; /* flags see above! */ |
| 572 | unsigned char bc[6]; /* bus converter routing info */ | 684 | unsigned char bc[6]; /* bus converter routing info */ |
| @@ -586,63 +698,6 @@ struct pz_device { | |||
| 586 | unsigned short cl_class;/* see below */ | 698 | unsigned short cl_class;/* see below */ |
| 587 | } __attribute__((aligned(8))) ; | 699 | } __attribute__((aligned(8))) ; |
| 588 | 700 | ||
| 589 | #endif /* __ASSEMBLY__ */ | ||
| 590 | |||
| 591 | /* cl_class | ||
| 592 | * page 3-33 of IO-Firmware ARS | ||
| 593 | * IODC ENTRY_INIT(Search first) RET[1] | ||
| 594 | */ | ||
| 595 | #define CL_NULL 0 /* invalid */ | ||
| 596 | #define CL_RANDOM 1 /* random access (as disk) */ | ||
| 597 | #define CL_SEQU 2 /* sequential access (as tape) */ | ||
| 598 | #define CL_DUPLEX 7 /* full-duplex point-to-point (RS-232, Net) */ | ||
| 599 | #define CL_KEYBD 8 /* half-duplex console (HIL Keyboard) */ | ||
| 600 | #define CL_DISPL 9 /* half-duplex console (display) */ | ||
| 601 | #define CL_FC 10 /* FiberChannel access media */ | ||
| 602 | |||
| 603 | #if 0 | ||
| 604 | /* FIXME: DEVCLASS_* duplicates CL_* (above). Delete DEVCLASS_*? */ | ||
| 605 | #define DEVCLASS_RANDOM 1 | ||
| 606 | #define DEVCLASS_SEQU 2 | ||
| 607 | #define DEVCLASS_DUPLEX 7 | ||
| 608 | #define DEVCLASS_KEYBD 8 | ||
| 609 | #define DEVCLASS_DISP 9 | ||
| 610 | #endif | ||
| 611 | |||
| 612 | /* IODC ENTRY_INIT() */ | ||
| 613 | #define ENTRY_INIT_SRCH_FRST 2 | ||
| 614 | #define ENTRY_INIT_SRCH_NEXT 3 | ||
| 615 | #define ENTRY_INIT_MOD_DEV 4 | ||
| 616 | #define ENTRY_INIT_DEV 5 | ||
| 617 | #define ENTRY_INIT_MOD 6 | ||
| 618 | #define ENTRY_INIT_MSG 9 | ||
| 619 | |||
| 620 | /* IODC ENTRY_IO() */ | ||
| 621 | #define ENTRY_IO_BOOTIN 0 | ||
| 622 | #define ENTRY_IO_BOOTOUT 1 | ||
| 623 | #define ENTRY_IO_CIN 2 | ||
| 624 | #define ENTRY_IO_COUT 3 | ||
| 625 | #define ENTRY_IO_CLOSE 4 | ||
| 626 | #define ENTRY_IO_GETMSG 9 | ||
| 627 | #define ENTRY_IO_BBLOCK_IN 16 | ||
| 628 | #define ENTRY_IO_BBLOCK_OUT 17 | ||
| 629 | |||
| 630 | /* IODC ENTRY_SPA() */ | ||
| 631 | |||
| 632 | /* IODC ENTRY_CONFIG() */ | ||
| 633 | |||
| 634 | /* IODC ENTRY_TEST() */ | ||
| 635 | |||
| 636 | /* IODC ENTRY_TLB() */ | ||
| 637 | |||
| 638 | |||
| 639 | /* DEFINITION OF THE ZERO-PAGE (PAG0) */ | ||
| 640 | /* based on work by Jason Eckhardt (jason@equator.com) */ | ||
| 641 | |||
| 642 | #ifndef __ASSEMBLY__ | ||
| 643 | |||
| 644 | #define PAGE0 ((struct zeropage *)__PAGE_OFFSET) | ||
| 645 | |||
| 646 | struct zeropage { | 701 | struct zeropage { |
| 647 | /* [0x000] initialize vectors (VEC) */ | 702 | /* [0x000] initialize vectors (VEC) */ |
| 648 | unsigned int vec_special; /* must be zero */ | 703 | unsigned int vec_special; /* must be zero */ |
| @@ -699,93 +754,6 @@ struct zeropage { | |||
| 699 | __u32 pad608[126]; | 754 | __u32 pad608[126]; |
| 700 | }; | 755 | }; |
| 701 | 756 | ||
| 702 | #endif /* __ASSEMBLY__ */ | 757 | #endif /* !defined(__ASSEMBLY__) */ |
| 703 | |||
| 704 | /* Page Zero constant offsets used by the HPMC handler */ | ||
| 705 | |||
| 706 | #define BOOT_CONSOLE_HPA_OFFSET 0x3c0 | ||
| 707 | #define BOOT_CONSOLE_SPA_OFFSET 0x3c4 | ||
| 708 | #define BOOT_CONSOLE_PATH_OFFSET 0x3a8 | ||
| 709 | |||
| 710 | #ifndef __ASSEMBLY__ | ||
| 711 | void pdc_console_init(void); /* in pdc_console.c */ | ||
| 712 | void pdc_console_restart(void); | ||
| 713 | |||
| 714 | void setup_pdc(void); /* in inventory.c */ | ||
| 715 | |||
| 716 | /* wrapper-functions from pdc.c */ | ||
| 717 | |||
| 718 | int pdc_add_valid(unsigned long address); | ||
| 719 | int pdc_chassis_info(struct pdc_chassis_info *chassis_info, void *led_info, unsigned long len); | ||
| 720 | int pdc_chassis_disp(unsigned long disp); | ||
| 721 | int pdc_chassis_warn(unsigned long *warn); | ||
| 722 | int pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info); | ||
| 723 | int pdc_iodc_read(unsigned long *actcnt, unsigned long hpa, unsigned int index, | ||
| 724 | void *iodc_data, unsigned int iodc_data_size); | ||
| 725 | int pdc_system_map_find_mods(struct pdc_system_map_mod_info *pdc_mod_info, | ||
| 726 | struct pdc_module_path *mod_path, long mod_index); | ||
| 727 | int pdc_system_map_find_addrs(struct pdc_system_map_addr_info *pdc_addr_info, | ||
| 728 | long mod_index, long addr_index); | ||
| 729 | int pdc_model_info(struct pdc_model *model); | ||
| 730 | int pdc_model_sysmodel(char *name); | ||
| 731 | int pdc_model_cpuid(unsigned long *cpu_id); | ||
| 732 | int pdc_model_versions(unsigned long *versions, int id); | ||
| 733 | int pdc_model_capabilities(unsigned long *capabilities); | ||
| 734 | int pdc_cache_info(struct pdc_cache_info *cache); | ||
| 735 | int pdc_spaceid_bits(unsigned long *space_bits); | ||
| 736 | #ifndef CONFIG_PA20 | ||
| 737 | int pdc_btlb_info(struct pdc_btlb_info *btlb); | ||
| 738 | int pdc_mem_map_hpa(struct pdc_memory_map *r_addr, struct pdc_module_path *mod_path); | ||
| 739 | #endif /* !CONFIG_PA20 */ | ||
| 740 | int pdc_lan_station_id(char *lan_addr, unsigned long net_hpa); | ||
| 741 | |||
| 742 | int pdc_stable_read(unsigned long staddr, void *memaddr, unsigned long count); | ||
| 743 | int pdc_stable_write(unsigned long staddr, void *memaddr, unsigned long count); | ||
| 744 | int pdc_stable_get_size(unsigned long *size); | ||
| 745 | int pdc_stable_verify_contents(void); | ||
| 746 | int pdc_stable_initialize(void); | ||
| 747 | |||
| 748 | int pdc_pci_irt_size(unsigned long *num_entries, unsigned long hpa); | ||
| 749 | int pdc_pci_irt(unsigned long num_entries, unsigned long hpa, void *tbl); | ||
| 750 | |||
| 751 | int pdc_get_initiator(struct hardware_path *, struct pdc_initiator *); | ||
| 752 | int pdc_tod_read(struct pdc_tod *tod); | ||
| 753 | int pdc_tod_set(unsigned long sec, unsigned long usec); | ||
| 754 | |||
| 755 | #ifdef CONFIG_64BIT | ||
| 756 | int pdc_mem_mem_table(struct pdc_memory_table_raddr *r_addr, | ||
| 757 | struct pdc_memory_table *tbl, unsigned long entries); | ||
| 758 | #endif | ||
| 759 | |||
| 760 | void set_firmware_width(void); | ||
| 761 | int pdc_do_firm_test_reset(unsigned long ftc_bitmap); | ||
| 762 | int pdc_do_reset(void); | ||
| 763 | int pdc_soft_power_info(unsigned long *power_reg); | ||
| 764 | int pdc_soft_power_button(int sw_control); | ||
| 765 | void pdc_io_reset(void); | ||
| 766 | void pdc_io_reset_devices(void); | ||
| 767 | int pdc_iodc_getc(void); | ||
| 768 | void pdc_iodc_putc(unsigned char c); | ||
| 769 | void pdc_iodc_outc(unsigned char c); | ||
| 770 | void pdc_printf(const char *fmt, ...); | ||
| 771 | |||
| 772 | void pdc_emergency_unlock(void); | ||
| 773 | int pdc_sti_call(unsigned long func, unsigned long flags, | ||
| 774 | unsigned long inptr, unsigned long outputr, | ||
| 775 | unsigned long glob_cfg); | ||
| 776 | |||
| 777 | static inline char * os_id_to_string(u16 os_id) { | ||
| 778 | switch(os_id) { | ||
| 779 | case OS_ID_NONE: return "No OS"; | ||
| 780 | case OS_ID_HPUX: return "HP-UX"; | ||
| 781 | case OS_ID_MPEXL: return "MPE-iX"; | ||
| 782 | case OS_ID_OSF: return "OSF"; | ||
| 783 | case OS_ID_HPRT: return "HP-RT"; | ||
| 784 | case OS_ID_NOVEL: return "Novell Netware"; | ||
| 785 | case OS_ID_LINUX: return "Linux"; | ||
| 786 | default: return "Unknown"; | ||
| 787 | } | ||
| 788 | } | ||
| 789 | #endif /* __ASSEMBLY__ */ | ||
| 790 | 758 | ||
| 791 | #endif /* _PARISC_PDC_H */ | 759 | #endif /* _PARISC_PDC_H */ |
diff --git a/include/asm-parisc/pgtable.h b/include/asm-parisc/pgtable.h index 9ab79c8e5a41..cd0fa4f73320 100644 --- a/include/asm-parisc/pgtable.h +++ b/include/asm-parisc/pgtable.h | |||
| @@ -49,14 +49,6 @@ | |||
| 49 | #define pgd_ERROR(e) \ | 49 | #define pgd_ERROR(e) \ |
| 50 | printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, (unsigned long)pgd_val(e)) | 50 | printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, (unsigned long)pgd_val(e)) |
| 51 | 51 | ||
| 52 | /* Note: If you change ISTACK_SIZE, you need to change the corresponding | ||
| 53 | * values in vmlinux.lds and vmlinux64.lds (init_istack section). Also, | ||
| 54 | * the "order" and size need to agree. | ||
| 55 | */ | ||
| 56 | |||
| 57 | #define ISTACK_SIZE 32768 /* Interrupt Stack Size */ | ||
| 58 | #define ISTACK_ORDER 3 | ||
| 59 | |||
| 60 | /* This is the size of the initially mapped kernel memory */ | 52 | /* This is the size of the initially mapped kernel memory */ |
| 61 | #ifdef CONFIG_64BIT | 53 | #ifdef CONFIG_64BIT |
| 62 | #define KERNEL_INITIAL_ORDER 24 /* 0 to 1<<24 = 16MB */ | 54 | #define KERNEL_INITIAL_ORDER 24 /* 0 to 1<<24 = 16MB */ |
| @@ -325,27 +317,27 @@ static inline void pgd_clear(pgd_t *pgd) { | |||
| 325 | * setup: the pgd is never bad, and a pmd always exists (as it's folded | 317 | * setup: the pgd is never bad, and a pmd always exists (as it's folded |
| 326 | * into the pgd entry) | 318 | * into the pgd entry) |
| 327 | */ | 319 | */ |
| 328 | extern inline int pgd_none(pgd_t pgd) { return 0; } | 320 | static inline int pgd_none(pgd_t pgd) { return 0; } |
| 329 | extern inline int pgd_bad(pgd_t pgd) { return 0; } | 321 | static inline int pgd_bad(pgd_t pgd) { return 0; } |
| 330 | extern inline int pgd_present(pgd_t pgd) { return 1; } | 322 | static inline int pgd_present(pgd_t pgd) { return 1; } |
| 331 | extern inline void pgd_clear(pgd_t * pgdp) { } | 323 | static inline void pgd_clear(pgd_t * pgdp) { } |
| 332 | #endif | 324 | #endif |
| 333 | 325 | ||
| 334 | /* | 326 | /* |
| 335 | * The following only work if pte_present() is true. | 327 | * The following only work if pte_present() is true. |
| 336 | * Undefined behaviour if not.. | 328 | * Undefined behaviour if not.. |
| 337 | */ | 329 | */ |
| 338 | extern inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; } | 330 | static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; } |
| 339 | extern inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; } | 331 | static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; } |
| 340 | extern inline int pte_write(pte_t pte) { return pte_val(pte) & _PAGE_WRITE; } | 332 | static inline int pte_write(pte_t pte) { return pte_val(pte) & _PAGE_WRITE; } |
| 341 | extern inline int pte_file(pte_t pte) { return pte_val(pte) & _PAGE_FILE; } | 333 | static inline int pte_file(pte_t pte) { return pte_val(pte) & _PAGE_FILE; } |
| 342 | 334 | ||
| 343 | extern inline pte_t pte_mkclean(pte_t pte) { pte_val(pte) &= ~_PAGE_DIRTY; return pte; } | 335 | static inline pte_t pte_mkclean(pte_t pte) { pte_val(pte) &= ~_PAGE_DIRTY; return pte; } |
| 344 | extern inline pte_t pte_mkold(pte_t pte) { pte_val(pte) &= ~_PAGE_ACCESSED; return pte; } | 336 | static inline pte_t pte_mkold(pte_t pte) { pte_val(pte) &= ~_PAGE_ACCESSED; return pte; } |
| 345 | extern inline pte_t pte_wrprotect(pte_t pte) { pte_val(pte) &= ~_PAGE_WRITE; return pte; } | 337 | static inline pte_t pte_wrprotect(pte_t pte) { pte_val(pte) &= ~_PAGE_WRITE; return pte; } |
| 346 | extern inline pte_t pte_mkdirty(pte_t pte) { pte_val(pte) |= _PAGE_DIRTY; return pte; } | 338 | static inline pte_t pte_mkdirty(pte_t pte) { pte_val(pte) |= _PAGE_DIRTY; return pte; } |
| 347 | extern inline pte_t pte_mkyoung(pte_t pte) { pte_val(pte) |= _PAGE_ACCESSED; return pte; } | 339 | static inline pte_t pte_mkyoung(pte_t pte) { pte_val(pte) |= _PAGE_ACCESSED; return pte; } |
| 348 | extern inline pte_t pte_mkwrite(pte_t pte) { pte_val(pte) |= _PAGE_WRITE; return pte; } | 340 | static inline pte_t pte_mkwrite(pte_t pte) { pte_val(pte) |= _PAGE_WRITE; return pte; } |
| 349 | 341 | ||
| 350 | /* | 342 | /* |
| 351 | * Conversion functions: convert a page and protection to a page entry, | 343 | * Conversion functions: convert a page and protection to a page entry, |
| @@ -369,7 +361,7 @@ static inline pte_t pfn_pte(unsigned long pfn, pgprot_t pgprot) | |||
| 369 | return pte; | 361 | return pte; |
| 370 | } | 362 | } |
| 371 | 363 | ||
| 372 | extern inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | 364 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) |
| 373 | { pte_val(pte) = (pte_val(pte) & _PAGE_CHG_MASK) | pgprot_val(newprot); return pte; } | 365 | { pte_val(pte) = (pte_val(pte) & _PAGE_CHG_MASK) | pgprot_val(newprot); return pte; } |
| 374 | 366 | ||
| 375 | /* Permanent address of a page. On parisc we don't have highmem. */ | 367 | /* Permanent address of a page. On parisc we don't have highmem. */ |
diff --git a/include/asm-parisc/prefetch.h b/include/asm-parisc/prefetch.h index 5d021726fa33..c5edc60c059f 100644 --- a/include/asm-parisc/prefetch.h +++ b/include/asm-parisc/prefetch.h | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | #ifdef CONFIG_PREFETCH | 19 | #ifdef CONFIG_PREFETCH |
| 20 | 20 | ||
| 21 | #define ARCH_HAS_PREFETCH | 21 | #define ARCH_HAS_PREFETCH |
| 22 | extern inline void prefetch(const void *addr) | 22 | static inline void prefetch(const void *addr) |
| 23 | { | 23 | { |
| 24 | __asm__("ldw 0(%0), %%r0" : : "r" (addr)); | 24 | __asm__("ldw 0(%0), %%r0" : : "r" (addr)); |
| 25 | } | 25 | } |
| @@ -27,7 +27,7 @@ extern inline void prefetch(const void *addr) | |||
| 27 | /* LDD is a PA2.0 addition. */ | 27 | /* LDD is a PA2.0 addition. */ |
| 28 | #ifdef CONFIG_PA20 | 28 | #ifdef CONFIG_PA20 |
| 29 | #define ARCH_HAS_PREFETCHW | 29 | #define ARCH_HAS_PREFETCHW |
| 30 | extern inline void prefetchw(const void *addr) | 30 | static inline void prefetchw(const void *addr) |
| 31 | { | 31 | { |
| 32 | __asm__("ldd 0(%0), %%r0" : : "r" (addr)); | 32 | __asm__("ldd 0(%0), %%r0" : : "r" (addr)); |
| 33 | } | 33 | } |
diff --git a/include/asm-parisc/rtc.h b/include/asm-parisc/rtc.h index f4ebff11dcbd..099d641a42c2 100644 --- a/include/asm-parisc/rtc.h +++ b/include/asm-parisc/rtc.h | |||
| @@ -50,10 +50,10 @@ static inline unsigned int get_rtc_time(struct rtc_time *wtime) | |||
| 50 | long int days, rem, y; | 50 | long int days, rem, y; |
| 51 | const unsigned short int *ip; | 51 | const unsigned short int *ip; |
| 52 | 52 | ||
| 53 | if(pdc_tod_read(&tod_data) < 0) | 53 | memset(wtime, 0, sizeof(*wtime)); |
| 54 | if (pdc_tod_read(&tod_data) < 0) | ||
| 54 | return RTC_24H | RTC_BATT_BAD; | 55 | return RTC_24H | RTC_BATT_BAD; |
| 55 | 56 | ||
| 56 | |||
| 57 | // most of the remainder of this function is: | 57 | // most of the remainder of this function is: |
| 58 | // Copyright (C) 1991, 1993, 1997, 1998 Free Software Foundation, Inc. | 58 | // Copyright (C) 1991, 1993, 1997, 1998 Free Software Foundation, Inc. |
| 59 | // This was originally a part of the GNU C Library. | 59 | // This was originally a part of the GNU C Library. |
diff --git a/include/asm-parisc/semaphore.h b/include/asm-parisc/semaphore.h index b771dcfcfdd1..a16271cdc748 100644 --- a/include/asm-parisc/semaphore.h +++ b/include/asm-parisc/semaphore.h | |||
| @@ -54,7 +54,7 @@ struct semaphore { | |||
| 54 | 54 | ||
| 55 | #define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1) | 55 | #define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1) |
| 56 | 56 | ||
| 57 | extern inline void sema_init (struct semaphore *sem, int val) | 57 | static inline void sema_init (struct semaphore *sem, int val) |
| 58 | { | 58 | { |
| 59 | *sem = (struct semaphore)__SEMAPHORE_INITIALIZER((*sem),val); | 59 | *sem = (struct semaphore)__SEMAPHORE_INITIALIZER((*sem),val); |
| 60 | } | 60 | } |
| @@ -82,7 +82,7 @@ asmlinkage void __up(struct semaphore * sem); | |||
| 82 | * interrupts while we're messing with the semaphore. Sorry. | 82 | * interrupts while we're messing with the semaphore. Sorry. |
| 83 | */ | 83 | */ |
| 84 | 84 | ||
| 85 | extern __inline__ void down(struct semaphore * sem) | 85 | static inline void down(struct semaphore * sem) |
| 86 | { | 86 | { |
| 87 | might_sleep(); | 87 | might_sleep(); |
| 88 | spin_lock_irq(&sem->sentry); | 88 | spin_lock_irq(&sem->sentry); |
| @@ -94,7 +94,7 @@ extern __inline__ void down(struct semaphore * sem) | |||
| 94 | spin_unlock_irq(&sem->sentry); | 94 | spin_unlock_irq(&sem->sentry); |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | extern __inline__ int down_interruptible(struct semaphore * sem) | 97 | static inline int down_interruptible(struct semaphore * sem) |
| 98 | { | 98 | { |
| 99 | int ret = 0; | 99 | int ret = 0; |
| 100 | might_sleep(); | 100 | might_sleep(); |
| @@ -112,7 +112,7 @@ extern __inline__ int down_interruptible(struct semaphore * sem) | |||
| 112 | * down_trylock returns 0 on success, 1 if we failed to get the lock. | 112 | * down_trylock returns 0 on success, 1 if we failed to get the lock. |
| 113 | * May not sleep, but must preserve irq state | 113 | * May not sleep, but must preserve irq state |
| 114 | */ | 114 | */ |
| 115 | extern __inline__ int down_trylock(struct semaphore * sem) | 115 | static inline int down_trylock(struct semaphore * sem) |
| 116 | { | 116 | { |
| 117 | unsigned long flags; | 117 | unsigned long flags; |
| 118 | int count; | 118 | int count; |
| @@ -129,7 +129,7 @@ extern __inline__ int down_trylock(struct semaphore * sem) | |||
| 129 | * Note! This is subtle. We jump to wake people up only if | 129 | * Note! This is subtle. We jump to wake people up only if |
| 130 | * the semaphore was negative (== somebody was waiting on it). | 130 | * the semaphore was negative (== somebody was waiting on it). |
| 131 | */ | 131 | */ |
| 132 | extern __inline__ void up(struct semaphore * sem) | 132 | static inline void up(struct semaphore * sem) |
| 133 | { | 133 | { |
| 134 | unsigned long flags; | 134 | unsigned long flags; |
| 135 | 135 | ||
diff --git a/include/asm-parisc/unistd.h b/include/asm-parisc/unistd.h index f74099bdca3c..081b4ae61866 100644 --- a/include/asm-parisc/unistd.h +++ b/include/asm-parisc/unistd.h | |||
| @@ -797,8 +797,9 @@ | |||
| 797 | #define __NR_signalfd (__NR_Linux + 302) | 797 | #define __NR_signalfd (__NR_Linux + 302) |
| 798 | #define __NR_timerfd (__NR_Linux + 303) | 798 | #define __NR_timerfd (__NR_Linux + 303) |
| 799 | #define __NR_eventfd (__NR_Linux + 304) | 799 | #define __NR_eventfd (__NR_Linux + 304) |
| 800 | #define __NR_fallocate (__NR_Linux + 305) | ||
| 800 | 801 | ||
| 801 | #define __NR_Linux_syscalls (__NR_eventfd + 1) | 802 | #define __NR_Linux_syscalls (__NR_fallocate + 1) |
| 802 | 803 | ||
| 803 | 804 | ||
| 804 | #define __IGNORE_select /* newselect */ | 805 | #define __IGNORE_select /* newselect */ |
diff --git a/include/linux/audit.h b/include/linux/audit.h index 9ae740936a65..c68781692838 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
| @@ -63,6 +63,8 @@ | |||
| 63 | #define AUDIT_ADD_RULE 1011 /* Add syscall filtering rule */ | 63 | #define AUDIT_ADD_RULE 1011 /* Add syscall filtering rule */ |
| 64 | #define AUDIT_DEL_RULE 1012 /* Delete syscall filtering rule */ | 64 | #define AUDIT_DEL_RULE 1012 /* Delete syscall filtering rule */ |
| 65 | #define AUDIT_LIST_RULES 1013 /* List syscall filtering rules */ | 65 | #define AUDIT_LIST_RULES 1013 /* List syscall filtering rules */ |
| 66 | #define AUDIT_TRIM 1014 /* Trim junk from watched tree */ | ||
| 67 | #define AUDIT_MAKE_EQUIV 1015 /* Append to watched tree */ | ||
| 66 | #define AUDIT_TTY_GET 1016 /* Get TTY auditing status */ | 68 | #define AUDIT_TTY_GET 1016 /* Get TTY auditing status */ |
| 67 | #define AUDIT_TTY_SET 1017 /* Set TTY auditing status */ | 69 | #define AUDIT_TTY_SET 1017 /* Set TTY auditing status */ |
| 68 | 70 | ||
| @@ -203,6 +205,7 @@ | |||
| 203 | #define AUDIT_SUCCESS 104 /* exit >= 0; value ignored */ | 205 | #define AUDIT_SUCCESS 104 /* exit >= 0; value ignored */ |
| 204 | #define AUDIT_WATCH 105 | 206 | #define AUDIT_WATCH 105 |
| 205 | #define AUDIT_PERM 106 | 207 | #define AUDIT_PERM 106 |
| 208 | #define AUDIT_DIR 107 | ||
| 206 | 209 | ||
| 207 | #define AUDIT_ARG0 200 | 210 | #define AUDIT_ARG0 200 |
| 208 | #define AUDIT_ARG1 (AUDIT_ARG0+1) | 211 | #define AUDIT_ARG1 (AUDIT_ARG0+1) |
| @@ -366,8 +369,8 @@ extern void audit_syscall_entry(int arch, | |||
| 366 | extern void audit_syscall_exit(int failed, long return_code); | 369 | extern void audit_syscall_exit(int failed, long return_code); |
| 367 | extern void __audit_getname(const char *name); | 370 | extern void __audit_getname(const char *name); |
| 368 | extern void audit_putname(const char *name); | 371 | extern void audit_putname(const char *name); |
| 369 | extern void __audit_inode(const char *name, const struct inode *inode); | 372 | extern void __audit_inode(const char *name, const struct dentry *dentry); |
| 370 | extern void __audit_inode_child(const char *dname, const struct inode *inode, | 373 | extern void __audit_inode_child(const char *dname, const struct dentry *dentry, |
| 371 | const struct inode *parent); | 374 | const struct inode *parent); |
| 372 | extern void __audit_ptrace(struct task_struct *t); | 375 | extern void __audit_ptrace(struct task_struct *t); |
| 373 | 376 | ||
| @@ -381,15 +384,15 @@ static inline void audit_getname(const char *name) | |||
| 381 | if (unlikely(!audit_dummy_context())) | 384 | if (unlikely(!audit_dummy_context())) |
| 382 | __audit_getname(name); | 385 | __audit_getname(name); |
| 383 | } | 386 | } |
| 384 | static inline void audit_inode(const char *name, const struct inode *inode) { | 387 | static inline void audit_inode(const char *name, const struct dentry *dentry) { |
| 385 | if (unlikely(!audit_dummy_context())) | 388 | if (unlikely(!audit_dummy_context())) |
| 386 | __audit_inode(name, inode); | 389 | __audit_inode(name, dentry); |
| 387 | } | 390 | } |
| 388 | static inline void audit_inode_child(const char *dname, | 391 | static inline void audit_inode_child(const char *dname, |
| 389 | const struct inode *inode, | 392 | const struct dentry *dentry, |
| 390 | const struct inode *parent) { | 393 | const struct inode *parent) { |
| 391 | if (unlikely(!audit_dummy_context())) | 394 | if (unlikely(!audit_dummy_context())) |
| 392 | __audit_inode_child(dname, inode, parent); | 395 | __audit_inode_child(dname, dentry, parent); |
| 393 | } | 396 | } |
| 394 | void audit_core_dumps(long signr); | 397 | void audit_core_dumps(long signr); |
| 395 | 398 | ||
| @@ -477,9 +480,9 @@ extern int audit_signals; | |||
| 477 | #define audit_dummy_context() 1 | 480 | #define audit_dummy_context() 1 |
| 478 | #define audit_getname(n) do { ; } while (0) | 481 | #define audit_getname(n) do { ; } while (0) |
| 479 | #define audit_putname(n) do { ; } while (0) | 482 | #define audit_putname(n) do { ; } while (0) |
| 480 | #define __audit_inode(n,i) do { ; } while (0) | 483 | #define __audit_inode(n,d) do { ; } while (0) |
| 481 | #define __audit_inode_child(d,i,p) do { ; } while (0) | 484 | #define __audit_inode_child(d,i,p) do { ; } while (0) |
| 482 | #define audit_inode(n,i) do { ; } while (0) | 485 | #define audit_inode(n,d) do { ; } while (0) |
| 483 | #define audit_inode_child(d,i,p) do { ; } while (0) | 486 | #define audit_inode_child(d,i,p) do { ; } while (0) |
| 484 | #define audit_core_dumps(i) do { ; } while (0) | 487 | #define audit_core_dumps(i) do { ; } while (0) |
| 485 | #define auditsc_get_stamp(c,t,s) do { BUG(); } while (0) | 488 | #define auditsc_get_stamp(c,t,s) do { BUG(); } while (0) |
diff --git a/include/linux/dcache.h b/include/linux/dcache.h index aab53df4fafa..c2c153f97e8f 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h | |||
| @@ -178,6 +178,7 @@ d_iput: no no no yes | |||
| 178 | #define DCACHE_INOTIFY_PARENT_WATCHED 0x0020 /* Parent inode is watched */ | 178 | #define DCACHE_INOTIFY_PARENT_WATCHED 0x0020 /* Parent inode is watched */ |
| 179 | 179 | ||
| 180 | extern spinlock_t dcache_lock; | 180 | extern spinlock_t dcache_lock; |
| 181 | extern seqlock_t rename_lock; | ||
| 181 | 182 | ||
| 182 | /** | 183 | /** |
| 183 | * d_drop - drop a dentry | 184 | * d_drop - drop a dentry |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 1bcce660cf03..50078bb30a1c 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -1470,6 +1470,8 @@ extern long do_mount(char *, char *, char *, unsigned long, void *); | |||
| 1470 | extern struct vfsmount *copy_tree(struct vfsmount *, struct dentry *, int); | 1470 | extern struct vfsmount *copy_tree(struct vfsmount *, struct dentry *, int); |
| 1471 | extern void mnt_set_mountpoint(struct vfsmount *, struct dentry *, | 1471 | extern void mnt_set_mountpoint(struct vfsmount *, struct dentry *, |
| 1472 | struct vfsmount *); | 1472 | struct vfsmount *); |
| 1473 | extern struct vfsmount *collect_mounts(struct vfsmount *, struct dentry *); | ||
| 1474 | extern void drop_collected_mounts(struct vfsmount *); | ||
| 1473 | 1475 | ||
| 1474 | extern int vfs_statfs(struct dentry *, struct kstatfs *); | 1476 | extern int vfs_statfs(struct dentry *, struct kstatfs *); |
| 1475 | 1477 | ||
diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h index dfc4e4f68da4..2bd31fa623b6 100644 --- a/include/linux/fsnotify.h +++ b/include/linux/fsnotify.h | |||
| @@ -41,8 +41,9 @@ static inline void fsnotify_d_move(struct dentry *entry) | |||
| 41 | */ | 41 | */ |
| 42 | static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir, | 42 | static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir, |
| 43 | const char *old_name, const char *new_name, | 43 | const char *old_name, const char *new_name, |
| 44 | int isdir, struct inode *target, struct inode *source) | 44 | int isdir, struct inode *target, struct dentry *moved) |
| 45 | { | 45 | { |
| 46 | struct inode *source = moved->d_inode; | ||
| 46 | u32 cookie = inotify_get_cookie(); | 47 | u32 cookie = inotify_get_cookie(); |
| 47 | 48 | ||
| 48 | if (old_dir == new_dir) | 49 | if (old_dir == new_dir) |
| @@ -67,7 +68,7 @@ static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir, | |||
| 67 | if (source) { | 68 | if (source) { |
| 68 | inotify_inode_queue_event(source, IN_MOVE_SELF, 0, NULL, NULL); | 69 | inotify_inode_queue_event(source, IN_MOVE_SELF, 0, NULL, NULL); |
| 69 | } | 70 | } |
| 70 | audit_inode_child(new_name, source, new_dir); | 71 | audit_inode_child(new_name, moved, new_dir); |
| 71 | } | 72 | } |
| 72 | 73 | ||
| 73 | /* | 74 | /* |
| @@ -98,7 +99,7 @@ static inline void fsnotify_create(struct inode *inode, struct dentry *dentry) | |||
| 98 | inode_dir_notify(inode, DN_CREATE); | 99 | inode_dir_notify(inode, DN_CREATE); |
| 99 | inotify_inode_queue_event(inode, IN_CREATE, 0, dentry->d_name.name, | 100 | inotify_inode_queue_event(inode, IN_CREATE, 0, dentry->d_name.name, |
| 100 | dentry->d_inode); | 101 | dentry->d_inode); |
| 101 | audit_inode_child(dentry->d_name.name, dentry->d_inode, inode); | 102 | audit_inode_child(dentry->d_name.name, dentry, inode); |
| 102 | } | 103 | } |
| 103 | 104 | ||
| 104 | /* | 105 | /* |
| @@ -109,7 +110,7 @@ static inline void fsnotify_mkdir(struct inode *inode, struct dentry *dentry) | |||
| 109 | inode_dir_notify(inode, DN_CREATE); | 110 | inode_dir_notify(inode, DN_CREATE); |
| 110 | inotify_inode_queue_event(inode, IN_CREATE | IN_ISDIR, 0, | 111 | inotify_inode_queue_event(inode, IN_CREATE | IN_ISDIR, 0, |
| 111 | dentry->d_name.name, dentry->d_inode); | 112 | dentry->d_name.name, dentry->d_inode); |
| 112 | audit_inode_child(dentry->d_name.name, dentry->d_inode, inode); | 113 | audit_inode_child(dentry->d_name.name, dentry, inode); |
| 113 | } | 114 | } |
| 114 | 115 | ||
| 115 | /* | 116 | /* |
diff --git a/include/linux/inotify.h b/include/linux/inotify.h index d4f48c6402e6..742b917e7d1b 100644 --- a/include/linux/inotify.h +++ b/include/linux/inotify.h | |||
| @@ -120,6 +120,8 @@ extern __s32 inotify_find_update_watch(struct inotify_handle *, struct inode *, | |||
| 120 | u32); | 120 | u32); |
| 121 | extern __s32 inotify_add_watch(struct inotify_handle *, struct inotify_watch *, | 121 | extern __s32 inotify_add_watch(struct inotify_handle *, struct inotify_watch *, |
| 122 | struct inode *, __u32); | 122 | struct inode *, __u32); |
| 123 | extern __s32 inotify_clone_watch(struct inotify_watch *, struct inotify_watch *); | ||
| 124 | extern void inotify_evict_watch(struct inotify_watch *); | ||
| 123 | extern int inotify_rm_watch(struct inotify_handle *, struct inotify_watch *); | 125 | extern int inotify_rm_watch(struct inotify_handle *, struct inotify_watch *); |
| 124 | extern int inotify_rm_wd(struct inotify_handle *, __u32); | 126 | extern int inotify_rm_wd(struct inotify_handle *, __u32); |
| 125 | extern void inotify_remove_watch_locked(struct inotify_handle *, | 127 | extern void inotify_remove_watch_locked(struct inotify_handle *, |
diff --git a/init/Kconfig b/init/Kconfig index 541382d539ad..b7dffa837926 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
| @@ -234,6 +234,10 @@ config AUDITSYSCALL | |||
| 234 | such as SELinux. To use audit's filesystem watch feature, please | 234 | such as SELinux. To use audit's filesystem watch feature, please |
| 235 | ensure that INOTIFY is configured. | 235 | ensure that INOTIFY is configured. |
| 236 | 236 | ||
| 237 | config AUDIT_TREE | ||
| 238 | def_bool y | ||
| 239 | depends on AUDITSYSCALL && INOTIFY | ||
| 240 | |||
| 237 | config IKCONFIG | 241 | config IKCONFIG |
| 238 | tristate "Kernel .config support" | 242 | tristate "Kernel .config support" |
| 239 | ---help--- | 243 | ---help--- |
diff --git a/ipc/mqueue.c b/ipc/mqueue.c index c0b26dc4617b..bfa274ba9ed4 100644 --- a/ipc/mqueue.c +++ b/ipc/mqueue.c | |||
| @@ -676,7 +676,7 @@ asmlinkage long sys_mq_open(const char __user *u_name, int oflag, mode_t mode, | |||
| 676 | 676 | ||
| 677 | if (oflag & O_CREAT) { | 677 | if (oflag & O_CREAT) { |
| 678 | if (dentry->d_inode) { /* entry already exists */ | 678 | if (dentry->d_inode) { /* entry already exists */ |
| 679 | audit_inode(name, dentry->d_inode); | 679 | audit_inode(name, dentry); |
| 680 | error = -EEXIST; | 680 | error = -EEXIST; |
| 681 | if (oflag & O_EXCL) | 681 | if (oflag & O_EXCL) |
| 682 | goto out; | 682 | goto out; |
| @@ -689,7 +689,7 @@ asmlinkage long sys_mq_open(const char __user *u_name, int oflag, mode_t mode, | |||
| 689 | error = -ENOENT; | 689 | error = -ENOENT; |
| 690 | if (!dentry->d_inode) | 690 | if (!dentry->d_inode) |
| 691 | goto out; | 691 | goto out; |
| 692 | audit_inode(name, dentry->d_inode); | 692 | audit_inode(name, dentry); |
| 693 | filp = do_open(dentry, oflag); | 693 | filp = do_open(dentry, oflag); |
| 694 | } | 694 | } |
| 695 | 695 | ||
| @@ -837,7 +837,7 @@ asmlinkage long sys_mq_timedsend(mqd_t mqdes, const char __user *u_msg_ptr, | |||
| 837 | if (unlikely(filp->f_op != &mqueue_file_operations)) | 837 | if (unlikely(filp->f_op != &mqueue_file_operations)) |
| 838 | goto out_fput; | 838 | goto out_fput; |
| 839 | info = MQUEUE_I(inode); | 839 | info = MQUEUE_I(inode); |
| 840 | audit_inode(NULL, inode); | 840 | audit_inode(NULL, filp->f_path.dentry); |
| 841 | 841 | ||
| 842 | if (unlikely(!(filp->f_mode & FMODE_WRITE))) | 842 | if (unlikely(!(filp->f_mode & FMODE_WRITE))) |
| 843 | goto out_fput; | 843 | goto out_fput; |
| @@ -921,7 +921,7 @@ asmlinkage ssize_t sys_mq_timedreceive(mqd_t mqdes, char __user *u_msg_ptr, | |||
| 921 | if (unlikely(filp->f_op != &mqueue_file_operations)) | 921 | if (unlikely(filp->f_op != &mqueue_file_operations)) |
| 922 | goto out_fput; | 922 | goto out_fput; |
| 923 | info = MQUEUE_I(inode); | 923 | info = MQUEUE_I(inode); |
| 924 | audit_inode(NULL, inode); | 924 | audit_inode(NULL, filp->f_path.dentry); |
| 925 | 925 | ||
| 926 | if (unlikely(!(filp->f_mode & FMODE_READ))) | 926 | if (unlikely(!(filp->f_mode & FMODE_READ))) |
| 927 | goto out_fput; | 927 | goto out_fput; |
diff --git a/kernel/Makefile b/kernel/Makefile index 79f017e09fbd..f60afe742599 100644 --- a/kernel/Makefile +++ b/kernel/Makefile | |||
| @@ -46,6 +46,7 @@ obj-$(CONFIG_IKCONFIG) += configs.o | |||
| 46 | obj-$(CONFIG_STOP_MACHINE) += stop_machine.o | 46 | obj-$(CONFIG_STOP_MACHINE) += stop_machine.o |
| 47 | obj-$(CONFIG_AUDIT) += audit.o auditfilter.o | 47 | obj-$(CONFIG_AUDIT) += audit.o auditfilter.o |
| 48 | obj-$(CONFIG_AUDITSYSCALL) += auditsc.o | 48 | obj-$(CONFIG_AUDITSYSCALL) += auditsc.o |
| 49 | obj-$(CONFIG_AUDIT_TREE) += audit_tree.o | ||
| 49 | obj-$(CONFIG_KPROBES) += kprobes.o | 50 | obj-$(CONFIG_KPROBES) += kprobes.o |
| 50 | obj-$(CONFIG_SYSFS) += ksysfs.o | 51 | obj-$(CONFIG_SYSFS) += ksysfs.o |
| 51 | obj-$(CONFIG_DETECT_SOFTLOCKUP) += softlockup.o | 52 | obj-$(CONFIG_DETECT_SOFTLOCKUP) += softlockup.o |
diff --git a/kernel/audit.c b/kernel/audit.c index 6977ea57a7e2..f93c2713017d 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
| @@ -468,6 +468,21 @@ int audit_send_list(void *_dest) | |||
| 468 | return 0; | 468 | return 0; |
| 469 | } | 469 | } |
| 470 | 470 | ||
| 471 | #ifdef CONFIG_AUDIT_TREE | ||
| 472 | static int prune_tree_thread(void *unused) | ||
| 473 | { | ||
| 474 | mutex_lock(&audit_cmd_mutex); | ||
| 475 | audit_prune_trees(); | ||
| 476 | mutex_unlock(&audit_cmd_mutex); | ||
| 477 | return 0; | ||
| 478 | } | ||
| 479 | |||
| 480 | void audit_schedule_prune(void) | ||
| 481 | { | ||
| 482 | kthread_run(prune_tree_thread, NULL, "audit_prune_tree"); | ||
| 483 | } | ||
| 484 | #endif | ||
| 485 | |||
| 471 | struct sk_buff *audit_make_reply(int pid, int seq, int type, int done, | 486 | struct sk_buff *audit_make_reply(int pid, int seq, int type, int done, |
| 472 | int multi, void *payload, int size) | 487 | int multi, void *payload, int size) |
| 473 | { | 488 | { |
| @@ -540,6 +555,8 @@ static int audit_netlink_ok(struct sk_buff *skb, u16 msg_type) | |||
| 540 | case AUDIT_SIGNAL_INFO: | 555 | case AUDIT_SIGNAL_INFO: |
| 541 | case AUDIT_TTY_GET: | 556 | case AUDIT_TTY_GET: |
| 542 | case AUDIT_TTY_SET: | 557 | case AUDIT_TTY_SET: |
| 558 | case AUDIT_TRIM: | ||
| 559 | case AUDIT_MAKE_EQUIV: | ||
| 543 | if (security_netlink_recv(skb, CAP_AUDIT_CONTROL)) | 560 | if (security_netlink_recv(skb, CAP_AUDIT_CONTROL)) |
| 544 | err = -EPERM; | 561 | err = -EPERM; |
| 545 | break; | 562 | break; |
| @@ -756,6 +773,76 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) | |||
| 756 | uid, seq, data, nlmsg_len(nlh), | 773 | uid, seq, data, nlmsg_len(nlh), |
| 757 | loginuid, sid); | 774 | loginuid, sid); |
| 758 | break; | 775 | break; |
| 776 | case AUDIT_TRIM: | ||
| 777 | audit_trim_trees(); | ||
| 778 | ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE); | ||
| 779 | if (!ab) | ||
| 780 | break; | ||
| 781 | audit_log_format(ab, "auid=%u", loginuid); | ||
| 782 | if (sid) { | ||
| 783 | u32 len; | ||
| 784 | ctx = NULL; | ||
| 785 | if (selinux_sid_to_string(sid, &ctx, &len)) | ||
| 786 | audit_log_format(ab, " ssid=%u", sid); | ||
| 787 | else | ||
| 788 | audit_log_format(ab, " subj=%s", ctx); | ||
| 789 | kfree(ctx); | ||
| 790 | } | ||
| 791 | audit_log_format(ab, " op=trim res=1"); | ||
| 792 | audit_log_end(ab); | ||
| 793 | break; | ||
| 794 | case AUDIT_MAKE_EQUIV: { | ||
| 795 | void *bufp = data; | ||
| 796 | u32 sizes[2]; | ||
| 797 | size_t len = nlmsg_len(nlh); | ||
| 798 | char *old, *new; | ||
| 799 | |||
| 800 | err = -EINVAL; | ||
| 801 | if (len < 2 * sizeof(u32)) | ||
| 802 | break; | ||
| 803 | memcpy(sizes, bufp, 2 * sizeof(u32)); | ||
| 804 | bufp += 2 * sizeof(u32); | ||
| 805 | len -= 2 * sizeof(u32); | ||
| 806 | old = audit_unpack_string(&bufp, &len, sizes[0]); | ||
| 807 | if (IS_ERR(old)) { | ||
| 808 | err = PTR_ERR(old); | ||
| 809 | break; | ||
| 810 | } | ||
| 811 | new = audit_unpack_string(&bufp, &len, sizes[1]); | ||
| 812 | if (IS_ERR(new)) { | ||
| 813 | err = PTR_ERR(new); | ||
| 814 | kfree(old); | ||
| 815 | break; | ||
| 816 | } | ||
| 817 | /* OK, here comes... */ | ||
| 818 | err = audit_tag_tree(old, new); | ||
| 819 | |||
| 820 | ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE); | ||
| 821 | if (!ab) { | ||
| 822 | kfree(old); | ||
| 823 | kfree(new); | ||
| 824 | break; | ||
| 825 | } | ||
| 826 | audit_log_format(ab, "auid=%u", loginuid); | ||
| 827 | if (sid) { | ||
| 828 | u32 len; | ||
| 829 | ctx = NULL; | ||
| 830 | if (selinux_sid_to_string(sid, &ctx, &len)) | ||
| 831 | audit_log_format(ab, " ssid=%u", sid); | ||
| 832 | else | ||
| 833 | audit_log_format(ab, " subj=%s", ctx); | ||
| 834 | kfree(ctx); | ||
| 835 | } | ||
| 836 | audit_log_format(ab, " op=make_equiv old="); | ||
| 837 | audit_log_untrustedstring(ab, old); | ||
| 838 | audit_log_format(ab, " new="); | ||
| 839 | audit_log_untrustedstring(ab, new); | ||
| 840 | audit_log_format(ab, " res=%d", !err); | ||
| 841 | audit_log_end(ab); | ||
| 842 | kfree(old); | ||
| 843 | kfree(new); | ||
| 844 | break; | ||
| 845 | } | ||
| 759 | case AUDIT_SIGNAL_INFO: | 846 | case AUDIT_SIGNAL_INFO: |
| 760 | err = selinux_sid_to_string(audit_sig_sid, &ctx, &len); | 847 | err = selinux_sid_to_string(audit_sig_sid, &ctx, &len); |
| 761 | if (err) | 848 | if (err) |
diff --git a/kernel/audit.h b/kernel/audit.h index 95877435c347..2554bd524fd1 100644 --- a/kernel/audit.h +++ b/kernel/audit.h | |||
| @@ -73,6 +73,9 @@ struct audit_field { | |||
| 73 | struct selinux_audit_rule *se_rule; | 73 | struct selinux_audit_rule *se_rule; |
| 74 | }; | 74 | }; |
| 75 | 75 | ||
| 76 | struct audit_tree; | ||
| 77 | struct audit_chunk; | ||
| 78 | |||
| 76 | struct audit_krule { | 79 | struct audit_krule { |
| 77 | int vers_ops; | 80 | int vers_ops; |
| 78 | u32 flags; | 81 | u32 flags; |
| @@ -86,7 +89,8 @@ struct audit_krule { | |||
| 86 | struct audit_field *arch_f; /* quick access to arch field */ | 89 | struct audit_field *arch_f; /* quick access to arch field */ |
| 87 | struct audit_field *inode_f; /* quick access to an inode field */ | 90 | struct audit_field *inode_f; /* quick access to an inode field */ |
| 88 | struct audit_watch *watch; /* associated watch */ | 91 | struct audit_watch *watch; /* associated watch */ |
| 89 | struct list_head rlist; /* entry in audit_watch.rules list */ | 92 | struct audit_tree *tree; /* associated watched tree */ |
| 93 | struct list_head rlist; /* entry in audit_{watch,tree}.rules list */ | ||
| 90 | }; | 94 | }; |
| 91 | 95 | ||
| 92 | struct audit_entry { | 96 | struct audit_entry { |
| @@ -130,6 +134,34 @@ extern void audit_handle_ievent(struct inotify_watch *, u32, u32, u32, | |||
| 130 | const char *, struct inode *); | 134 | const char *, struct inode *); |
| 131 | extern int selinux_audit_rule_update(void); | 135 | extern int selinux_audit_rule_update(void); |
| 132 | 136 | ||
| 137 | extern struct mutex audit_filter_mutex; | ||
| 138 | extern void audit_free_rule_rcu(struct rcu_head *); | ||
| 139 | |||
| 140 | #ifdef CONFIG_AUDIT_TREE | ||
| 141 | extern struct audit_chunk *audit_tree_lookup(const struct inode *); | ||
| 142 | extern void audit_put_chunk(struct audit_chunk *); | ||
| 143 | extern int audit_tree_match(struct audit_chunk *, struct audit_tree *); | ||
| 144 | extern int audit_make_tree(struct audit_krule *, char *, u32); | ||
| 145 | extern int audit_add_tree_rule(struct audit_krule *); | ||
| 146 | extern int audit_remove_tree_rule(struct audit_krule *); | ||
| 147 | extern void audit_trim_trees(void); | ||
| 148 | extern int audit_tag_tree(char *old, char *new); | ||
| 149 | extern void audit_schedule_prune(void); | ||
| 150 | extern void audit_prune_trees(void); | ||
| 151 | extern const char *audit_tree_path(struct audit_tree *); | ||
| 152 | extern void audit_put_tree(struct audit_tree *); | ||
| 153 | #else | ||
| 154 | #define audit_remove_tree_rule(rule) BUG() | ||
| 155 | #define audit_add_tree_rule(rule) -EINVAL | ||
| 156 | #define audit_make_tree(rule, str, op) -EINVAL | ||
| 157 | #define audit_trim_trees() (void)0 | ||
| 158 | #define audit_put_tree(tree) (void)0 | ||
| 159 | #define audit_tag_tree(old, new) -EINVAL | ||
| 160 | #define audit_tree_path(rule) "" /* never called */ | ||
| 161 | #endif | ||
| 162 | |||
| 163 | extern char *audit_unpack_string(void **, size_t *, size_t); | ||
| 164 | |||
| 133 | #ifdef CONFIG_AUDITSYSCALL | 165 | #ifdef CONFIG_AUDITSYSCALL |
| 134 | extern int __audit_signal_info(int sig, struct task_struct *t); | 166 | extern int __audit_signal_info(int sig, struct task_struct *t); |
| 135 | static inline int audit_signal_info(int sig, struct task_struct *t) | 167 | static inline int audit_signal_info(int sig, struct task_struct *t) |
diff --git a/kernel/audit_tree.c b/kernel/audit_tree.c new file mode 100644 index 000000000000..f4fcf58f20f8 --- /dev/null +++ b/kernel/audit_tree.c | |||
| @@ -0,0 +1,903 @@ | |||
| 1 | #include "audit.h" | ||
| 2 | #include <linux/inotify.h> | ||
| 3 | #include <linux/namei.h> | ||
| 4 | #include <linux/mount.h> | ||
| 5 | |||
| 6 | struct audit_tree; | ||
| 7 | struct audit_chunk; | ||
| 8 | |||
| 9 | struct audit_tree { | ||
| 10 | atomic_t count; | ||
| 11 | int goner; | ||
| 12 | struct audit_chunk *root; | ||
| 13 | struct list_head chunks; | ||
| 14 | struct list_head rules; | ||
| 15 | struct list_head list; | ||
| 16 | struct list_head same_root; | ||
| 17 | struct rcu_head head; | ||
| 18 | char pathname[]; | ||
| 19 | }; | ||
| 20 | |||
| 21 | struct audit_chunk { | ||
| 22 | struct list_head hash; | ||
| 23 | struct inotify_watch watch; | ||
| 24 | struct list_head trees; /* with root here */ | ||
| 25 | int dead; | ||
| 26 | int count; | ||
| 27 | struct rcu_head head; | ||
| 28 | struct node { | ||
| 29 | struct list_head list; | ||
| 30 | struct audit_tree *owner; | ||
| 31 | unsigned index; /* index; upper bit indicates 'will prune' */ | ||
| 32 | } owners[]; | ||
| 33 | }; | ||
| 34 | |||
| 35 | static LIST_HEAD(tree_list); | ||
| 36 | static LIST_HEAD(prune_list); | ||
| 37 | |||
| 38 | /* | ||
| 39 | * One struct chunk is attached to each inode of interest. | ||
| 40 | * We replace struct chunk on tagging/untagging. | ||
| 41 | * Rules have pointer to struct audit_tree. | ||
| 42 | * Rules have struct list_head rlist forming a list of rules over | ||
| 43 | * the same tree. | ||
| 44 | * References to struct chunk are collected at audit_inode{,_child}() | ||
| 45 | * time and used in AUDIT_TREE rule matching. | ||
| 46 | * These references are dropped at the same time we are calling | ||
| 47 | * audit_free_names(), etc. | ||
| 48 | * | ||
| 49 | * Cyclic lists galore: | ||
| 50 | * tree.chunks anchors chunk.owners[].list hash_lock | ||
| 51 | * tree.rules anchors rule.rlist audit_filter_mutex | ||
| 52 | * chunk.trees anchors tree.same_root hash_lock | ||
| 53 | * chunk.hash is a hash with middle bits of watch.inode as | ||
| 54 | * a hash function. RCU, hash_lock | ||
| 55 | * | ||
| 56 | * tree is refcounted; one reference for "some rules on rules_list refer to | ||
| 57 | * it", one for each chunk with pointer to it. | ||
| 58 | * | ||
| 59 | * chunk is refcounted by embedded inotify_watch. | ||
| 60 | * | ||
| 61 | * node.index allows to get from node.list to containing chunk. | ||
| 62 | * MSB of that sucker is stolen to mark taggings that we might have to | ||
| 63 | * revert - several operations have very unpleasant cleanup logics and | ||
| 64 | * that makes a difference. Some. | ||
| 65 | */ | ||
| 66 | |||
| 67 | static struct inotify_handle *rtree_ih; | ||
| 68 | |||
| 69 | static struct audit_tree *alloc_tree(const char *s) | ||
| 70 | { | ||
| 71 | struct audit_tree *tree; | ||
| 72 | |||
| 73 | tree = kmalloc(sizeof(struct audit_tree) + strlen(s) + 1, GFP_KERNEL); | ||
| 74 | if (tree) { | ||
| 75 | atomic_set(&tree->count, 1); | ||
| 76 | tree->goner = 0; | ||
| 77 | INIT_LIST_HEAD(&tree->chunks); | ||
| 78 | INIT_LIST_HEAD(&tree->rules); | ||
| 79 | INIT_LIST_HEAD(&tree->list); | ||
| 80 | INIT_LIST_HEAD(&tree->same_root); | ||
| 81 | tree->root = NULL; | ||
| 82 | strcpy(tree->pathname, s); | ||
| 83 | } | ||
| 84 | return tree; | ||
| 85 | } | ||
| 86 | |||
| 87 | static inline void get_tree(struct audit_tree *tree) | ||
| 88 | { | ||
| 89 | atomic_inc(&tree->count); | ||
| 90 | } | ||
| 91 | |||
| 92 | static void __put_tree(struct rcu_head *rcu) | ||
| 93 | { | ||
| 94 | struct audit_tree *tree = container_of(rcu, struct audit_tree, head); | ||
| 95 | kfree(tree); | ||
| 96 | } | ||
| 97 | |||
| 98 | static inline void put_tree(struct audit_tree *tree) | ||
| 99 | { | ||
| 100 | if (atomic_dec_and_test(&tree->count)) | ||
| 101 | call_rcu(&tree->head, __put_tree); | ||
| 102 | } | ||
| 103 | |||
| 104 | /* to avoid bringing the entire thing in audit.h */ | ||
| 105 | const char *audit_tree_path(struct audit_tree *tree) | ||
| 106 | { | ||
| 107 | return tree->pathname; | ||
| 108 | } | ||
| 109 | |||
| 110 | static struct audit_chunk *alloc_chunk(int count) | ||
| 111 | { | ||
| 112 | struct audit_chunk *chunk; | ||
| 113 | size_t size; | ||
| 114 | int i; | ||
| 115 | |||
| 116 | size = offsetof(struct audit_chunk, owners) + count * sizeof(struct node); | ||
| 117 | chunk = kzalloc(size, GFP_KERNEL); | ||
| 118 | if (!chunk) | ||
| 119 | return NULL; | ||
| 120 | |||
| 121 | INIT_LIST_HEAD(&chunk->hash); | ||
| 122 | INIT_LIST_HEAD(&chunk->trees); | ||
| 123 | chunk->count = count; | ||
| 124 | for (i = 0; i < count; i++) { | ||
| 125 | INIT_LIST_HEAD(&chunk->owners[i].list); | ||
| 126 | chunk->owners[i].index = i; | ||
| 127 | } | ||
| 128 | inotify_init_watch(&chunk->watch); | ||
| 129 | return chunk; | ||
| 130 | } | ||
| 131 | |||
| 132 | static void __free_chunk(struct rcu_head *rcu) | ||
| 133 | { | ||
| 134 | struct audit_chunk *chunk = container_of(rcu, struct audit_chunk, head); | ||
| 135 | int i; | ||
| 136 | |||
| 137 | for (i = 0; i < chunk->count; i++) { | ||
| 138 | if (chunk->owners[i].owner) | ||
| 139 | put_tree(chunk->owners[i].owner); | ||
| 140 | } | ||
| 141 | kfree(chunk); | ||
| 142 | } | ||
| 143 | |||
| 144 | static inline void free_chunk(struct audit_chunk *chunk) | ||
| 145 | { | ||
| 146 | call_rcu(&chunk->head, __free_chunk); | ||
| 147 | } | ||
| 148 | |||
| 149 | void audit_put_chunk(struct audit_chunk *chunk) | ||
| 150 | { | ||
| 151 | put_inotify_watch(&chunk->watch); | ||
| 152 | } | ||
| 153 | |||
| 154 | enum {HASH_SIZE = 128}; | ||
| 155 | static struct list_head chunk_hash_heads[HASH_SIZE]; | ||
| 156 | static __cacheline_aligned_in_smp DEFINE_SPINLOCK(hash_lock); | ||
| 157 | |||
| 158 | static inline struct list_head *chunk_hash(const struct inode *inode) | ||
| 159 | { | ||
| 160 | unsigned long n = (unsigned long)inode / L1_CACHE_BYTES; | ||
| 161 | return chunk_hash_heads + n % HASH_SIZE; | ||
| 162 | } | ||
| 163 | |||
| 164 | /* hash_lock is held by caller */ | ||
| 165 | static void insert_hash(struct audit_chunk *chunk) | ||
| 166 | { | ||
| 167 | struct list_head *list = chunk_hash(chunk->watch.inode); | ||
| 168 | list_add_rcu(&chunk->hash, list); | ||
| 169 | } | ||
| 170 | |||
| 171 | /* called under rcu_read_lock */ | ||
| 172 | struct audit_chunk *audit_tree_lookup(const struct inode *inode) | ||
| 173 | { | ||
| 174 | struct list_head *list = chunk_hash(inode); | ||
| 175 | struct list_head *pos; | ||
| 176 | |||
| 177 | list_for_each_rcu(pos, list) { | ||
| 178 | struct audit_chunk *p = container_of(pos, struct audit_chunk, hash); | ||
| 179 | if (p->watch.inode == inode) { | ||
| 180 | get_inotify_watch(&p->watch); | ||
| 181 | return p; | ||
| 182 | } | ||
| 183 | } | ||
| 184 | return NULL; | ||
| 185 | } | ||
| 186 | |||
| 187 | int audit_tree_match(struct audit_chunk *chunk, struct audit_tree *tree) | ||
| 188 | { | ||
| 189 | int n; | ||
| 190 | for (n = 0; n < chunk->count; n++) | ||
| 191 | if (chunk->owners[n].owner == tree) | ||
| 192 | return 1; | ||
| 193 | return 0; | ||
| 194 | } | ||
| 195 | |||
| 196 | /* tagging and untagging inodes with trees */ | ||
| 197 | |||
| 198 | static void untag_chunk(struct audit_chunk *chunk, struct node *p) | ||
| 199 | { | ||
| 200 | struct audit_chunk *new; | ||
| 201 | struct audit_tree *owner; | ||
| 202 | int size = chunk->count - 1; | ||
| 203 | int i, j; | ||
| 204 | |||
| 205 | mutex_lock(&chunk->watch.inode->inotify_mutex); | ||
| 206 | if (chunk->dead) { | ||
| 207 | mutex_unlock(&chunk->watch.inode->inotify_mutex); | ||
| 208 | return; | ||
| 209 | } | ||
| 210 | |||
| 211 | owner = p->owner; | ||
| 212 | |||
| 213 | if (!size) { | ||
| 214 | chunk->dead = 1; | ||
| 215 | spin_lock(&hash_lock); | ||
| 216 | list_del_init(&chunk->trees); | ||
| 217 | if (owner->root == chunk) | ||
| 218 | owner->root = NULL; | ||
| 219 | list_del_init(&p->list); | ||
| 220 | list_del_rcu(&chunk->hash); | ||
| 221 | spin_unlock(&hash_lock); | ||
| 222 | inotify_evict_watch(&chunk->watch); | ||
| 223 | mutex_unlock(&chunk->watch.inode->inotify_mutex); | ||
| 224 | put_inotify_watch(&chunk->watch); | ||
| 225 | return; | ||
| 226 | } | ||
| 227 | |||
| 228 | new = alloc_chunk(size); | ||
| 229 | if (!new) | ||
| 230 | goto Fallback; | ||
| 231 | if (inotify_clone_watch(&chunk->watch, &new->watch) < 0) { | ||
| 232 | free_chunk(new); | ||
| 233 | goto Fallback; | ||
| 234 | } | ||
| 235 | |||
| 236 | chunk->dead = 1; | ||
| 237 | spin_lock(&hash_lock); | ||
| 238 | list_replace_init(&chunk->trees, &new->trees); | ||
| 239 | if (owner->root == chunk) { | ||
| 240 | list_del_init(&owner->same_root); | ||
| 241 | owner->root = NULL; | ||
| 242 | } | ||
| 243 | |||
| 244 | for (i = j = 0; i < size; i++, j++) { | ||
| 245 | struct audit_tree *s; | ||
| 246 | if (&chunk->owners[j] == p) { | ||
| 247 | list_del_init(&p->list); | ||
| 248 | i--; | ||
| 249 | continue; | ||
| 250 | } | ||
| 251 | s = chunk->owners[j].owner; | ||
| 252 | new->owners[i].owner = s; | ||
| 253 | new->owners[i].index = chunk->owners[j].index - j + i; | ||
| 254 | if (!s) /* result of earlier fallback */ | ||
| 255 | continue; | ||
| 256 | get_tree(s); | ||
| 257 | list_replace_init(&chunk->owners[i].list, &new->owners[j].list); | ||
| 258 | } | ||
| 259 | |||
| 260 | list_replace_rcu(&chunk->hash, &new->hash); | ||
| 261 | list_for_each_entry(owner, &new->trees, same_root) | ||
| 262 | owner->root = new; | ||
| 263 | spin_unlock(&hash_lock); | ||
| 264 | inotify_evict_watch(&chunk->watch); | ||
| 265 | mutex_unlock(&chunk->watch.inode->inotify_mutex); | ||
| 266 | put_inotify_watch(&chunk->watch); | ||
| 267 | return; | ||
| 268 | |||
| 269 | Fallback: | ||
| 270 | // do the best we can | ||
| 271 | spin_lock(&hash_lock); | ||
| 272 | if (owner->root == chunk) { | ||
| 273 | list_del_init(&owner->same_root); | ||
| 274 | owner->root = NULL; | ||
| 275 | } | ||
| 276 | list_del_init(&p->list); | ||
| 277 | p->owner = NULL; | ||
| 278 | put_tree(owner); | ||
| 279 | spin_unlock(&hash_lock); | ||
| 280 | mutex_unlock(&chunk->watch.inode->inotify_mutex); | ||
| 281 | } | ||
| 282 | |||
| 283 | static int create_chunk(struct inode *inode, struct audit_tree *tree) | ||
| 284 | { | ||
| 285 | struct audit_chunk *chunk = alloc_chunk(1); | ||
| 286 | if (!chunk) | ||
| 287 | return -ENOMEM; | ||
| 288 | |||
| 289 | if (inotify_add_watch(rtree_ih, &chunk->watch, inode, IN_IGNORED | IN_DELETE_SELF) < 0) { | ||
| 290 | free_chunk(chunk); | ||
| 291 | return -ENOSPC; | ||
| 292 | } | ||
| 293 | |||
| 294 | mutex_lock(&inode->inotify_mutex); | ||
| 295 | spin_lock(&hash_lock); | ||
| 296 | if (tree->goner) { | ||
| 297 | spin_unlock(&hash_lock); | ||
| 298 | chunk->dead = 1; | ||
| 299 | inotify_evict_watch(&chunk->watch); | ||
| 300 | mutex_unlock(&inode->inotify_mutex); | ||
| 301 | put_inotify_watch(&chunk->watch); | ||
| 302 | return 0; | ||
| 303 | } | ||
| 304 | chunk->owners[0].index = (1U << 31); | ||
| 305 | chunk->owners[0].owner = tree; | ||
| 306 | get_tree(tree); | ||
| 307 | list_add(&chunk->owners[0].list, &tree->chunks); | ||
| 308 | if (!tree->root) { | ||
| 309 | tree->root = chunk; | ||
| 310 | list_add(&tree->same_root, &chunk->trees); | ||
| 311 | } | ||
| 312 | insert_hash(chunk); | ||
| 313 | spin_unlock(&hash_lock); | ||
| 314 | mutex_unlock(&inode->inotify_mutex); | ||
| 315 | return 0; | ||
| 316 | } | ||
| 317 | |||
| 318 | /* the first tagged inode becomes root of tree */ | ||
| 319 | static int tag_chunk(struct inode *inode, struct audit_tree *tree) | ||
| 320 | { | ||
| 321 | struct inotify_watch *watch; | ||
| 322 | struct audit_tree *owner; | ||
| 323 | struct audit_chunk *chunk, *old; | ||
| 324 | struct node *p; | ||
| 325 | int n; | ||
| 326 | |||
| 327 | if (inotify_find_watch(rtree_ih, inode, &watch) < 0) | ||
| 328 | return create_chunk(inode, tree); | ||
| 329 | |||
| 330 | old = container_of(watch, struct audit_chunk, watch); | ||
| 331 | |||
| 332 | /* are we already there? */ | ||
| 333 | spin_lock(&hash_lock); | ||
| 334 | for (n = 0; n < old->count; n++) { | ||
| 335 | if (old->owners[n].owner == tree) { | ||
| 336 | spin_unlock(&hash_lock); | ||
| 337 | put_inotify_watch(watch); | ||
| 338 | return 0; | ||
| 339 | } | ||
| 340 | } | ||
| 341 | spin_unlock(&hash_lock); | ||
| 342 | |||
| 343 | chunk = alloc_chunk(old->count + 1); | ||
| 344 | if (!chunk) | ||
| 345 | return -ENOMEM; | ||
| 346 | |||
| 347 | mutex_lock(&inode->inotify_mutex); | ||
| 348 | if (inotify_clone_watch(&old->watch, &chunk->watch) < 0) { | ||
| 349 | mutex_unlock(&inode->inotify_mutex); | ||
| 350 | free_chunk(chunk); | ||
| 351 | return -ENOSPC; | ||
| 352 | } | ||
| 353 | spin_lock(&hash_lock); | ||
| 354 | if (tree->goner) { | ||
| 355 | spin_unlock(&hash_lock); | ||
| 356 | chunk->dead = 1; | ||
| 357 | inotify_evict_watch(&chunk->watch); | ||
| 358 | mutex_unlock(&inode->inotify_mutex); | ||
| 359 | put_inotify_watch(&chunk->watch); | ||
| 360 | return 0; | ||
| 361 | } | ||
| 362 | list_replace_init(&old->trees, &chunk->trees); | ||
| 363 | for (n = 0, p = chunk->owners; n < old->count; n++, p++) { | ||
| 364 | struct audit_tree *s = old->owners[n].owner; | ||
| 365 | p->owner = s; | ||
| 366 | p->index = old->owners[n].index; | ||
| 367 | if (!s) /* result of fallback in untag */ | ||
| 368 | continue; | ||
| 369 | get_tree(s); | ||
| 370 | list_replace_init(&old->owners[n].list, &p->list); | ||
| 371 | } | ||
| 372 | p->index = (chunk->count - 1) | (1U<<31); | ||
| 373 | p->owner = tree; | ||
| 374 | get_tree(tree); | ||
| 375 | list_add(&p->list, &tree->chunks); | ||
| 376 | list_replace_rcu(&old->hash, &chunk->hash); | ||
| 377 | list_for_each_entry(owner, &chunk->trees, same_root) | ||
| 378 | owner->root = chunk; | ||
| 379 | old->dead = 1; | ||
| 380 | if (!tree->root) { | ||
| 381 | tree->root = chunk; | ||
| 382 | list_add(&tree->same_root, &chunk->trees); | ||
| 383 | } | ||
| 384 | spin_unlock(&hash_lock); | ||
| 385 | inotify_evict_watch(&old->watch); | ||
| 386 | mutex_unlock(&inode->inotify_mutex); | ||
| 387 | put_inotify_watch(&old->watch); | ||
| 388 | return 0; | ||
| 389 | } | ||
| 390 | |||
| 391 | static struct audit_chunk *find_chunk(struct node *p) | ||
| 392 | { | ||
| 393 | int index = p->index & ~(1U<<31); | ||
| 394 | p -= index; | ||
| 395 | return container_of(p, struct audit_chunk, owners[0]); | ||
| 396 | } | ||
| 397 | |||
| 398 | static void kill_rules(struct audit_tree *tree) | ||
| 399 | { | ||
| 400 | struct audit_krule *rule, *next; | ||
| 401 | struct audit_entry *entry; | ||
| 402 | struct audit_buffer *ab; | ||
| 403 | |||
| 404 | list_for_each_entry_safe(rule, next, &tree->rules, rlist) { | ||
| 405 | entry = container_of(rule, struct audit_entry, rule); | ||
| 406 | |||
| 407 | list_del_init(&rule->rlist); | ||
| 408 | if (rule->tree) { | ||
| 409 | /* not a half-baked one */ | ||
| 410 | ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE); | ||
| 411 | audit_log_format(ab, "op=remove rule dir="); | ||
| 412 | audit_log_untrustedstring(ab, rule->tree->pathname); | ||
| 413 | if (rule->filterkey) { | ||
| 414 | audit_log_format(ab, " key="); | ||
| 415 | audit_log_untrustedstring(ab, rule->filterkey); | ||
| 416 | } else | ||
| 417 | audit_log_format(ab, " key=(null)"); | ||
| 418 | audit_log_format(ab, " list=%d res=1", rule->listnr); | ||
| 419 | audit_log_end(ab); | ||
| 420 | rule->tree = NULL; | ||
| 421 | list_del_rcu(&entry->list); | ||
| 422 | call_rcu(&entry->rcu, audit_free_rule_rcu); | ||
| 423 | } | ||
| 424 | } | ||
| 425 | } | ||
| 426 | |||
| 427 | /* | ||
| 428 | * finish killing struct audit_tree | ||
| 429 | */ | ||
| 430 | static void prune_one(struct audit_tree *victim) | ||
| 431 | { | ||
| 432 | spin_lock(&hash_lock); | ||
| 433 | while (!list_empty(&victim->chunks)) { | ||
| 434 | struct node *p; | ||
| 435 | struct audit_chunk *chunk; | ||
| 436 | |||
| 437 | p = list_entry(victim->chunks.next, struct node, list); | ||
| 438 | chunk = find_chunk(p); | ||
| 439 | get_inotify_watch(&chunk->watch); | ||
| 440 | spin_unlock(&hash_lock); | ||
| 441 | |||
| 442 | untag_chunk(chunk, p); | ||
| 443 | |||
| 444 | put_inotify_watch(&chunk->watch); | ||
| 445 | spin_lock(&hash_lock); | ||
| 446 | } | ||
| 447 | spin_unlock(&hash_lock); | ||
| 448 | put_tree(victim); | ||
| 449 | } | ||
| 450 | |||
| 451 | /* trim the uncommitted chunks from tree */ | ||
| 452 | |||
| 453 | static void trim_marked(struct audit_tree *tree) | ||
| 454 | { | ||
| 455 | struct list_head *p, *q; | ||
| 456 | spin_lock(&hash_lock); | ||
| 457 | if (tree->goner) { | ||
| 458 | spin_unlock(&hash_lock); | ||
| 459 | return; | ||
| 460 | } | ||
| 461 | /* reorder */ | ||
| 462 | for (p = tree->chunks.next; p != &tree->chunks; p = q) { | ||
| 463 | struct node *node = list_entry(p, struct node, list); | ||
| 464 | q = p->next; | ||
| 465 | if (node->index & (1U<<31)) { | ||
| 466 | list_del_init(p); | ||
| 467 | list_add(p, &tree->chunks); | ||
| 468 | } | ||
| 469 | } | ||
| 470 | |||
| 471 | while (!list_empty(&tree->chunks)) { | ||
| 472 | struct node *node; | ||
| 473 | struct audit_chunk *chunk; | ||
| 474 | |||
| 475 | node = list_entry(tree->chunks.next, struct node, list); | ||
| 476 | |||
| 477 | /* have we run out of marked? */ | ||
| 478 | if (!(node->index & (1U<<31))) | ||
| 479 | break; | ||
| 480 | |||
| 481 | chunk = find_chunk(node); | ||
| 482 | get_inotify_watch(&chunk->watch); | ||
| 483 | spin_unlock(&hash_lock); | ||
| 484 | |||
| 485 | untag_chunk(chunk, node); | ||
| 486 | |||
| 487 | put_inotify_watch(&chunk->watch); | ||
| 488 | spin_lock(&hash_lock); | ||
| 489 | } | ||
| 490 | if (!tree->root && !tree->goner) { | ||
| 491 | tree->goner = 1; | ||
| 492 | spin_unlock(&hash_lock); | ||
| 493 | mutex_lock(&audit_filter_mutex); | ||
| 494 | kill_rules(tree); | ||
| 495 | list_del_init(&tree->list); | ||
| 496 | mutex_unlock(&audit_filter_mutex); | ||
| 497 | prune_one(tree); | ||
| 498 | } else { | ||
| 499 | spin_unlock(&hash_lock); | ||
| 500 | } | ||
| 501 | } | ||
| 502 | |||
| 503 | /* called with audit_filter_mutex */ | ||
| 504 | int audit_remove_tree_rule(struct audit_krule *rule) | ||
| 505 | { | ||
| 506 | struct audit_tree *tree; | ||
| 507 | tree = rule->tree; | ||
| 508 | if (tree) { | ||
| 509 | spin_lock(&hash_lock); | ||
| 510 | list_del_init(&rule->rlist); | ||
| 511 | if (list_empty(&tree->rules) && !tree->goner) { | ||
| 512 | tree->root = NULL; | ||
| 513 | list_del_init(&tree->same_root); | ||
| 514 | tree->goner = 1; | ||
| 515 | list_move(&tree->list, &prune_list); | ||
| 516 | rule->tree = NULL; | ||
| 517 | spin_unlock(&hash_lock); | ||
| 518 | audit_schedule_prune(); | ||
| 519 | return 1; | ||
| 520 | } | ||
| 521 | rule->tree = NULL; | ||
| 522 | spin_unlock(&hash_lock); | ||
| 523 | return 1; | ||
| 524 | } | ||
| 525 | return 0; | ||
| 526 | } | ||
| 527 | |||
| 528 | void audit_trim_trees(void) | ||
| 529 | { | ||
| 530 | struct list_head cursor; | ||
| 531 | |||
| 532 | mutex_lock(&audit_filter_mutex); | ||
| 533 | list_add(&cursor, &tree_list); | ||
| 534 | while (cursor.next != &tree_list) { | ||
| 535 | struct audit_tree *tree; | ||
| 536 | struct nameidata nd; | ||
| 537 | struct vfsmount *root_mnt; | ||
| 538 | struct node *node; | ||
| 539 | struct list_head list; | ||
| 540 | int err; | ||
| 541 | |||
| 542 | tree = container_of(cursor.next, struct audit_tree, list); | ||
| 543 | get_tree(tree); | ||
| 544 | list_del(&cursor); | ||
| 545 | list_add(&cursor, &tree->list); | ||
| 546 | mutex_unlock(&audit_filter_mutex); | ||
| 547 | |||
| 548 | err = path_lookup(tree->pathname, 0, &nd); | ||
| 549 | if (err) | ||
| 550 | goto skip_it; | ||
| 551 | |||
| 552 | root_mnt = collect_mounts(nd.mnt, nd.dentry); | ||
| 553 | path_release(&nd); | ||
| 554 | if (!root_mnt) | ||
| 555 | goto skip_it; | ||
| 556 | |||
| 557 | list_add_tail(&list, &root_mnt->mnt_list); | ||
| 558 | spin_lock(&hash_lock); | ||
| 559 | list_for_each_entry(node, &tree->chunks, list) { | ||
| 560 | struct audit_chunk *chunk = find_chunk(node); | ||
| 561 | struct inode *inode = chunk->watch.inode; | ||
| 562 | struct vfsmount *mnt; | ||
| 563 | node->index |= 1U<<31; | ||
| 564 | list_for_each_entry(mnt, &list, mnt_list) { | ||
| 565 | if (mnt->mnt_root->d_inode == inode) { | ||
| 566 | node->index &= ~(1U<<31); | ||
| 567 | break; | ||
| 568 | } | ||
| 569 | } | ||
| 570 | } | ||
| 571 | spin_unlock(&hash_lock); | ||
| 572 | trim_marked(tree); | ||
| 573 | put_tree(tree); | ||
| 574 | list_del_init(&list); | ||
| 575 | drop_collected_mounts(root_mnt); | ||
| 576 | skip_it: | ||
| 577 | mutex_lock(&audit_filter_mutex); | ||
| 578 | } | ||
| 579 | list_del(&cursor); | ||
| 580 | mutex_unlock(&audit_filter_mutex); | ||
| 581 | } | ||
| 582 | |||
| 583 | static int is_under(struct vfsmount *mnt, struct dentry *dentry, | ||
| 584 | struct nameidata *nd) | ||
| 585 | { | ||
| 586 | if (mnt != nd->mnt) { | ||
| 587 | for (;;) { | ||
| 588 | if (mnt->mnt_parent == mnt) | ||
| 589 | return 0; | ||
| 590 | if (mnt->mnt_parent == nd->mnt) | ||
| 591 | break; | ||
| 592 | mnt = mnt->mnt_parent; | ||
| 593 | } | ||
| 594 | dentry = mnt->mnt_mountpoint; | ||
| 595 | } | ||
| 596 | return is_subdir(dentry, nd->dentry); | ||
| 597 | } | ||
| 598 | |||
| 599 | int audit_make_tree(struct audit_krule *rule, char *pathname, u32 op) | ||
| 600 | { | ||
| 601 | |||
| 602 | if (pathname[0] != '/' || | ||
| 603 | rule->listnr != AUDIT_FILTER_EXIT || | ||
| 604 | op & ~AUDIT_EQUAL || | ||
| 605 | rule->inode_f || rule->watch || rule->tree) | ||
| 606 | return -EINVAL; | ||
| 607 | rule->tree = alloc_tree(pathname); | ||
| 608 | if (!rule->tree) | ||
| 609 | return -ENOMEM; | ||
| 610 | return 0; | ||
| 611 | } | ||
| 612 | |||
| 613 | void audit_put_tree(struct audit_tree *tree) | ||
| 614 | { | ||
| 615 | put_tree(tree); | ||
| 616 | } | ||
| 617 | |||
| 618 | /* called with audit_filter_mutex */ | ||
| 619 | int audit_add_tree_rule(struct audit_krule *rule) | ||
| 620 | { | ||
| 621 | struct audit_tree *seed = rule->tree, *tree; | ||
| 622 | struct nameidata nd; | ||
| 623 | struct vfsmount *mnt, *p; | ||
| 624 | struct list_head list; | ||
| 625 | int err; | ||
| 626 | |||
| 627 | list_for_each_entry(tree, &tree_list, list) { | ||
| 628 | if (!strcmp(seed->pathname, tree->pathname)) { | ||
| 629 | put_tree(seed); | ||
| 630 | rule->tree = tree; | ||
| 631 | list_add(&rule->rlist, &tree->rules); | ||
| 632 | return 0; | ||
| 633 | } | ||
| 634 | } | ||
| 635 | tree = seed; | ||
| 636 | list_add(&tree->list, &tree_list); | ||
| 637 | list_add(&rule->rlist, &tree->rules); | ||
| 638 | /* do not set rule->tree yet */ | ||
| 639 | mutex_unlock(&audit_filter_mutex); | ||
| 640 | |||
| 641 | err = path_lookup(tree->pathname, 0, &nd); | ||
| 642 | if (err) | ||
| 643 | goto Err; | ||
| 644 | mnt = collect_mounts(nd.mnt, nd.dentry); | ||
| 645 | path_release(&nd); | ||
| 646 | if (!mnt) { | ||
| 647 | err = -ENOMEM; | ||
| 648 | goto Err; | ||
| 649 | } | ||
| 650 | list_add_tail(&list, &mnt->mnt_list); | ||
| 651 | |||
| 652 | get_tree(tree); | ||
| 653 | list_for_each_entry(p, &list, mnt_list) { | ||
| 654 | err = tag_chunk(p->mnt_root->d_inode, tree); | ||
| 655 | if (err) | ||
| 656 | break; | ||
| 657 | } | ||
| 658 | |||
| 659 | list_del(&list); | ||
| 660 | drop_collected_mounts(mnt); | ||
| 661 | |||
| 662 | if (!err) { | ||
| 663 | struct node *node; | ||
| 664 | spin_lock(&hash_lock); | ||
| 665 | list_for_each_entry(node, &tree->chunks, list) | ||
| 666 | node->index &= ~(1U<<31); | ||
| 667 | spin_unlock(&hash_lock); | ||
| 668 | } else { | ||
| 669 | trim_marked(tree); | ||
| 670 | goto Err; | ||
| 671 | } | ||
| 672 | |||
| 673 | mutex_lock(&audit_filter_mutex); | ||
| 674 | if (list_empty(&rule->rlist)) { | ||
| 675 | put_tree(tree); | ||
| 676 | return -ENOENT; | ||
| 677 | } | ||
| 678 | rule->tree = tree; | ||
| 679 | put_tree(tree); | ||
| 680 | |||
| 681 | return 0; | ||
| 682 | Err: | ||
| 683 | mutex_lock(&audit_filter_mutex); | ||
| 684 | list_del_init(&tree->list); | ||
| 685 | list_del_init(&tree->rules); | ||
| 686 | put_tree(tree); | ||
| 687 | return err; | ||
| 688 | } | ||
| 689 | |||
| 690 | int audit_tag_tree(char *old, char *new) | ||
| 691 | { | ||
| 692 | struct list_head cursor, barrier; | ||
| 693 | int failed = 0; | ||
| 694 | struct nameidata nd; | ||
| 695 | struct vfsmount *tagged; | ||
| 696 | struct list_head list; | ||
| 697 | struct vfsmount *mnt; | ||
| 698 | struct dentry *dentry; | ||
| 699 | int err; | ||
| 700 | |||
| 701 | err = path_lookup(new, 0, &nd); | ||
| 702 | if (err) | ||
| 703 | return err; | ||
| 704 | tagged = collect_mounts(nd.mnt, nd.dentry); | ||
| 705 | path_release(&nd); | ||
| 706 | if (!tagged) | ||
| 707 | return -ENOMEM; | ||
| 708 | |||
| 709 | err = path_lookup(old, 0, &nd); | ||
| 710 | if (err) { | ||
| 711 | drop_collected_mounts(tagged); | ||
| 712 | return err; | ||
| 713 | } | ||
| 714 | mnt = mntget(nd.mnt); | ||
| 715 | dentry = dget(nd.dentry); | ||
| 716 | path_release(&nd); | ||
| 717 | |||
| 718 | if (dentry == tagged->mnt_root && dentry == mnt->mnt_root) | ||
| 719 | follow_up(&mnt, &dentry); | ||
| 720 | |||
| 721 | list_add_tail(&list, &tagged->mnt_list); | ||
| 722 | |||
| 723 | mutex_lock(&audit_filter_mutex); | ||
| 724 | list_add(&barrier, &tree_list); | ||
| 725 | list_add(&cursor, &barrier); | ||
| 726 | |||
| 727 | while (cursor.next != &tree_list) { | ||
| 728 | struct audit_tree *tree; | ||
| 729 | struct vfsmount *p; | ||
| 730 | |||
| 731 | tree = container_of(cursor.next, struct audit_tree, list); | ||
| 732 | get_tree(tree); | ||
| 733 | list_del(&cursor); | ||
| 734 | list_add(&cursor, &tree->list); | ||
| 735 | mutex_unlock(&audit_filter_mutex); | ||
| 736 | |||
| 737 | err = path_lookup(tree->pathname, 0, &nd); | ||
| 738 | if (err) { | ||
| 739 | put_tree(tree); | ||
| 740 | mutex_lock(&audit_filter_mutex); | ||
| 741 | continue; | ||
| 742 | } | ||
| 743 | |||
| 744 | spin_lock(&vfsmount_lock); | ||
| 745 | if (!is_under(mnt, dentry, &nd)) { | ||
| 746 | spin_unlock(&vfsmount_lock); | ||
| 747 | path_release(&nd); | ||
| 748 | put_tree(tree); | ||
| 749 | mutex_lock(&audit_filter_mutex); | ||
| 750 | continue; | ||
| 751 | } | ||
| 752 | spin_unlock(&vfsmount_lock); | ||
| 753 | path_release(&nd); | ||
| 754 | |||
| 755 | list_for_each_entry(p, &list, mnt_list) { | ||
| 756 | failed = tag_chunk(p->mnt_root->d_inode, tree); | ||
| 757 | if (failed) | ||
| 758 | break; | ||
| 759 | } | ||
| 760 | |||
| 761 | if (failed) { | ||
| 762 | put_tree(tree); | ||
| 763 | mutex_lock(&audit_filter_mutex); | ||
| 764 | break; | ||
| 765 | } | ||
| 766 | |||
| 767 | mutex_lock(&audit_filter_mutex); | ||
| 768 | spin_lock(&hash_lock); | ||
| 769 | if (!tree->goner) { | ||
| 770 | list_del(&tree->list); | ||
| 771 | list_add(&tree->list, &tree_list); | ||
| 772 | } | ||
| 773 | spin_unlock(&hash_lock); | ||
| 774 | put_tree(tree); | ||
| 775 | } | ||
| 776 | |||
| 777 | while (barrier.prev != &tree_list) { | ||
| 778 | struct audit_tree *tree; | ||
| 779 | |||
| 780 | tree = container_of(barrier.prev, struct audit_tree, list); | ||
| 781 | get_tree(tree); | ||
| 782 | list_del(&tree->list); | ||
| 783 | list_add(&tree->list, &barrier); | ||
| 784 | mutex_unlock(&audit_filter_mutex); | ||
| 785 | |||
| 786 | if (!failed) { | ||
| 787 | struct node *node; | ||
| 788 | spin_lock(&hash_lock); | ||
| 789 | list_for_each_entry(node, &tree->chunks, list) | ||
| 790 | node->index &= ~(1U<<31); | ||
| 791 | spin_unlock(&hash_lock); | ||
| 792 | } else { | ||
| 793 | trim_marked(tree); | ||
| 794 | } | ||
| 795 | |||
| 796 | put_tree(tree); | ||
| 797 | mutex_lock(&audit_filter_mutex); | ||
| 798 | } | ||
| 799 | list_del(&barrier); | ||
| 800 | list_del(&cursor); | ||
| 801 | list_del(&list); | ||
| 802 | mutex_unlock(&audit_filter_mutex); | ||
| 803 | dput(dentry); | ||
| 804 | mntput(mnt); | ||
| 805 | drop_collected_mounts(tagged); | ||
| 806 | return failed; | ||
| 807 | } | ||
| 808 | |||
| 809 | /* | ||
| 810 | * That gets run when evict_chunk() ends up needing to kill audit_tree. | ||
| 811 | * Runs from a separate thread, with audit_cmd_mutex held. | ||
| 812 | */ | ||
| 813 | void audit_prune_trees(void) | ||
| 814 | { | ||
| 815 | mutex_lock(&audit_filter_mutex); | ||
| 816 | |||
| 817 | while (!list_empty(&prune_list)) { | ||
| 818 | struct audit_tree *victim; | ||
| 819 | |||
| 820 | victim = list_entry(prune_list.next, struct audit_tree, list); | ||
| 821 | list_del_init(&victim->list); | ||
| 822 | |||
| 823 | mutex_unlock(&audit_filter_mutex); | ||
| 824 | |||
| 825 | prune_one(victim); | ||
| 826 | |||
| 827 | mutex_lock(&audit_filter_mutex); | ||
| 828 | } | ||
| 829 | |||
| 830 | mutex_unlock(&audit_filter_mutex); | ||
| 831 | } | ||
| 832 | |||
| 833 | /* | ||
| 834 | * Here comes the stuff asynchronous to auditctl operations | ||
| 835 | */ | ||
| 836 | |||
| 837 | /* inode->inotify_mutex is locked */ | ||
| 838 | static void evict_chunk(struct audit_chunk *chunk) | ||
| 839 | { | ||
| 840 | struct audit_tree *owner; | ||
| 841 | int n; | ||
| 842 | |||
| 843 | if (chunk->dead) | ||
| 844 | return; | ||
| 845 | |||
| 846 | chunk->dead = 1; | ||
| 847 | mutex_lock(&audit_filter_mutex); | ||
| 848 | spin_lock(&hash_lock); | ||
| 849 | while (!list_empty(&chunk->trees)) { | ||
| 850 | owner = list_entry(chunk->trees.next, | ||
| 851 | struct audit_tree, same_root); | ||
| 852 | owner->goner = 1; | ||
| 853 | owner->root = NULL; | ||
| 854 | list_del_init(&owner->same_root); | ||
| 855 | spin_unlock(&hash_lock); | ||
| 856 | kill_rules(owner); | ||
| 857 | list_move(&owner->list, &prune_list); | ||
| 858 | audit_schedule_prune(); | ||
| 859 | spin_lock(&hash_lock); | ||
| 860 | } | ||
| 861 | list_del_rcu(&chunk->hash); | ||
| 862 | for (n = 0; n < chunk->count; n++) | ||
| 863 | list_del_init(&chunk->owners[n].list); | ||
| 864 | spin_unlock(&hash_lock); | ||
| 865 | mutex_unlock(&audit_filter_mutex); | ||
| 866 | } | ||
| 867 | |||
| 868 | static void handle_event(struct inotify_watch *watch, u32 wd, u32 mask, | ||
| 869 | u32 cookie, const char *dname, struct inode *inode) | ||
| 870 | { | ||
| 871 | struct audit_chunk *chunk = container_of(watch, struct audit_chunk, watch); | ||
| 872 | |||
| 873 | if (mask & IN_IGNORED) { | ||
| 874 | evict_chunk(chunk); | ||
| 875 | put_inotify_watch(watch); | ||
| 876 | } | ||
| 877 | } | ||
| 878 | |||
| 879 | static void destroy_watch(struct inotify_watch *watch) | ||
| 880 | { | ||
| 881 | struct audit_chunk *chunk = container_of(watch, struct audit_chunk, watch); | ||
| 882 | free_chunk(chunk); | ||
| 883 | } | ||
| 884 | |||
| 885 | static const struct inotify_operations rtree_inotify_ops = { | ||
| 886 | .handle_event = handle_event, | ||
| 887 | .destroy_watch = destroy_watch, | ||
| 888 | }; | ||
| 889 | |||
| 890 | static int __init audit_tree_init(void) | ||
| 891 | { | ||
| 892 | int i; | ||
| 893 | |||
| 894 | rtree_ih = inotify_init(&rtree_inotify_ops); | ||
| 895 | if (IS_ERR(rtree_ih)) | ||
| 896 | audit_panic("cannot initialize inotify handle for rectree watches"); | ||
| 897 | |||
| 898 | for (i = 0; i < HASH_SIZE; i++) | ||
| 899 | INIT_LIST_HEAD(&chunk_hash_heads[i]); | ||
| 900 | |||
| 901 | return 0; | ||
| 902 | } | ||
| 903 | __initcall(audit_tree_init); | ||
diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c index df66a21fb360..5d96f2cc7be8 100644 --- a/kernel/auditfilter.c +++ b/kernel/auditfilter.c | |||
| @@ -87,7 +87,7 @@ struct list_head audit_filter_list[AUDIT_NR_FILTERS] = { | |||
| 87 | #endif | 87 | #endif |
| 88 | }; | 88 | }; |
| 89 | 89 | ||
| 90 | static DEFINE_MUTEX(audit_filter_mutex); | 90 | DEFINE_MUTEX(audit_filter_mutex); |
| 91 | 91 | ||
| 92 | /* Inotify handle */ | 92 | /* Inotify handle */ |
| 93 | extern struct inotify_handle *audit_ih; | 93 | extern struct inotify_handle *audit_ih; |
| @@ -145,7 +145,7 @@ static inline void audit_free_rule(struct audit_entry *e) | |||
| 145 | kfree(e); | 145 | kfree(e); |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | static inline void audit_free_rule_rcu(struct rcu_head *head) | 148 | void audit_free_rule_rcu(struct rcu_head *head) |
| 149 | { | 149 | { |
| 150 | struct audit_entry *e = container_of(head, struct audit_entry, rcu); | 150 | struct audit_entry *e = container_of(head, struct audit_entry, rcu); |
| 151 | audit_free_rule(e); | 151 | audit_free_rule(e); |
| @@ -217,7 +217,7 @@ static inline struct audit_entry *audit_init_entry(u32 field_count) | |||
| 217 | 217 | ||
| 218 | /* Unpack a filter field's string representation from user-space | 218 | /* Unpack a filter field's string representation from user-space |
| 219 | * buffer. */ | 219 | * buffer. */ |
| 220 | static char *audit_unpack_string(void **bufp, size_t *remain, size_t len) | 220 | char *audit_unpack_string(void **bufp, size_t *remain, size_t len) |
| 221 | { | 221 | { |
| 222 | char *str; | 222 | char *str; |
| 223 | 223 | ||
| @@ -247,7 +247,7 @@ static inline int audit_to_inode(struct audit_krule *krule, | |||
| 247 | struct audit_field *f) | 247 | struct audit_field *f) |
| 248 | { | 248 | { |
| 249 | if (krule->listnr != AUDIT_FILTER_EXIT || | 249 | if (krule->listnr != AUDIT_FILTER_EXIT || |
| 250 | krule->watch || krule->inode_f) | 250 | krule->watch || krule->inode_f || krule->tree) |
| 251 | return -EINVAL; | 251 | return -EINVAL; |
| 252 | 252 | ||
| 253 | krule->inode_f = f; | 253 | krule->inode_f = f; |
| @@ -266,7 +266,7 @@ static int audit_to_watch(struct audit_krule *krule, char *path, int len, | |||
| 266 | if (path[0] != '/' || path[len-1] == '/' || | 266 | if (path[0] != '/' || path[len-1] == '/' || |
| 267 | krule->listnr != AUDIT_FILTER_EXIT || | 267 | krule->listnr != AUDIT_FILTER_EXIT || |
| 268 | op & ~AUDIT_EQUAL || | 268 | op & ~AUDIT_EQUAL || |
| 269 | krule->inode_f || krule->watch) /* 1 inode # per rule, for hash */ | 269 | krule->inode_f || krule->watch || krule->tree) |
| 270 | return -EINVAL; | 270 | return -EINVAL; |
| 271 | 271 | ||
| 272 | watch = audit_init_watch(path); | 272 | watch = audit_init_watch(path); |
| @@ -622,6 +622,17 @@ static struct audit_entry *audit_data_to_entry(struct audit_rule_data *data, | |||
| 622 | goto exit_free; | 622 | goto exit_free; |
| 623 | } | 623 | } |
| 624 | break; | 624 | break; |
| 625 | case AUDIT_DIR: | ||
| 626 | str = audit_unpack_string(&bufp, &remain, f->val); | ||
| 627 | if (IS_ERR(str)) | ||
| 628 | goto exit_free; | ||
| 629 | entry->rule.buflen += f->val; | ||
| 630 | |||
| 631 | err = audit_make_tree(&entry->rule, str, f->op); | ||
| 632 | kfree(str); | ||
| 633 | if (err) | ||
| 634 | goto exit_free; | ||
| 635 | break; | ||
| 625 | case AUDIT_INODE: | 636 | case AUDIT_INODE: |
| 626 | err = audit_to_inode(&entry->rule, f); | 637 | err = audit_to_inode(&entry->rule, f); |
| 627 | if (err) | 638 | if (err) |
| @@ -668,7 +679,7 @@ exit_free: | |||
| 668 | } | 679 | } |
| 669 | 680 | ||
| 670 | /* Pack a filter field's string representation into data block. */ | 681 | /* Pack a filter field's string representation into data block. */ |
| 671 | static inline size_t audit_pack_string(void **bufp, char *str) | 682 | static inline size_t audit_pack_string(void **bufp, const char *str) |
| 672 | { | 683 | { |
| 673 | size_t len = strlen(str); | 684 | size_t len = strlen(str); |
| 674 | 685 | ||
| @@ -747,6 +758,11 @@ static struct audit_rule_data *audit_krule_to_data(struct audit_krule *krule) | |||
| 747 | data->buflen += data->values[i] = | 758 | data->buflen += data->values[i] = |
| 748 | audit_pack_string(&bufp, krule->watch->path); | 759 | audit_pack_string(&bufp, krule->watch->path); |
| 749 | break; | 760 | break; |
| 761 | case AUDIT_DIR: | ||
| 762 | data->buflen += data->values[i] = | ||
| 763 | audit_pack_string(&bufp, | ||
| 764 | audit_tree_path(krule->tree)); | ||
| 765 | break; | ||
| 750 | case AUDIT_FILTERKEY: | 766 | case AUDIT_FILTERKEY: |
| 751 | data->buflen += data->values[i] = | 767 | data->buflen += data->values[i] = |
| 752 | audit_pack_string(&bufp, krule->filterkey); | 768 | audit_pack_string(&bufp, krule->filterkey); |
| @@ -795,6 +811,11 @@ static int audit_compare_rule(struct audit_krule *a, struct audit_krule *b) | |||
| 795 | if (strcmp(a->watch->path, b->watch->path)) | 811 | if (strcmp(a->watch->path, b->watch->path)) |
| 796 | return 1; | 812 | return 1; |
| 797 | break; | 813 | break; |
| 814 | case AUDIT_DIR: | ||
| 815 | if (strcmp(audit_tree_path(a->tree), | ||
| 816 | audit_tree_path(b->tree))) | ||
| 817 | return 1; | ||
| 818 | break; | ||
| 798 | case AUDIT_FILTERKEY: | 819 | case AUDIT_FILTERKEY: |
| 799 | /* both filterkeys exist based on above type compare */ | 820 | /* both filterkeys exist based on above type compare */ |
| 800 | if (strcmp(a->filterkey, b->filterkey)) | 821 | if (strcmp(a->filterkey, b->filterkey)) |
| @@ -897,6 +918,14 @@ static struct audit_entry *audit_dupe_rule(struct audit_krule *old, | |||
| 897 | new->inode_f = old->inode_f; | 918 | new->inode_f = old->inode_f; |
| 898 | new->watch = NULL; | 919 | new->watch = NULL; |
| 899 | new->field_count = old->field_count; | 920 | new->field_count = old->field_count; |
| 921 | /* | ||
| 922 | * note that we are OK with not refcounting here; audit_match_tree() | ||
| 923 | * never dereferences tree and we can't get false positives there | ||
| 924 | * since we'd have to have rule gone from the list *and* removed | ||
| 925 | * before the chunks found by lookup had been allocated, i.e. before | ||
| 926 | * the beginning of list scan. | ||
| 927 | */ | ||
| 928 | new->tree = old->tree; | ||
| 900 | memcpy(new->fields, old->fields, sizeof(struct audit_field) * fcount); | 929 | memcpy(new->fields, old->fields, sizeof(struct audit_field) * fcount); |
| 901 | 930 | ||
| 902 | /* deep copy this information, updating the se_rule fields, because | 931 | /* deep copy this information, updating the se_rule fields, because |
| @@ -1217,6 +1246,7 @@ static inline int audit_add_rule(struct audit_entry *entry, | |||
| 1217 | struct audit_entry *e; | 1246 | struct audit_entry *e; |
| 1218 | struct audit_field *inode_f = entry->rule.inode_f; | 1247 | struct audit_field *inode_f = entry->rule.inode_f; |
| 1219 | struct audit_watch *watch = entry->rule.watch; | 1248 | struct audit_watch *watch = entry->rule.watch; |
| 1249 | struct audit_tree *tree = entry->rule.tree; | ||
| 1220 | struct nameidata *ndp = NULL, *ndw = NULL; | 1250 | struct nameidata *ndp = NULL, *ndw = NULL; |
| 1221 | int h, err; | 1251 | int h, err; |
| 1222 | #ifdef CONFIG_AUDITSYSCALL | 1252 | #ifdef CONFIG_AUDITSYSCALL |
| @@ -1238,6 +1268,9 @@ static inline int audit_add_rule(struct audit_entry *entry, | |||
| 1238 | mutex_unlock(&audit_filter_mutex); | 1268 | mutex_unlock(&audit_filter_mutex); |
| 1239 | if (e) { | 1269 | if (e) { |
| 1240 | err = -EEXIST; | 1270 | err = -EEXIST; |
| 1271 | /* normally audit_add_tree_rule() will free it on failure */ | ||
| 1272 | if (tree) | ||
| 1273 | audit_put_tree(tree); | ||
| 1241 | goto error; | 1274 | goto error; |
| 1242 | } | 1275 | } |
| 1243 | 1276 | ||
| @@ -1259,6 +1292,13 @@ static inline int audit_add_rule(struct audit_entry *entry, | |||
| 1259 | h = audit_hash_ino((u32)watch->ino); | 1292 | h = audit_hash_ino((u32)watch->ino); |
| 1260 | list = &audit_inode_hash[h]; | 1293 | list = &audit_inode_hash[h]; |
| 1261 | } | 1294 | } |
| 1295 | if (tree) { | ||
| 1296 | err = audit_add_tree_rule(&entry->rule); | ||
| 1297 | if (err) { | ||
| 1298 | mutex_unlock(&audit_filter_mutex); | ||
| 1299 | goto error; | ||
| 1300 | } | ||
| 1301 | } | ||
| 1262 | 1302 | ||
| 1263 | if (entry->rule.flags & AUDIT_FILTER_PREPEND) { | 1303 | if (entry->rule.flags & AUDIT_FILTER_PREPEND) { |
| 1264 | list_add_rcu(&entry->list, list); | 1304 | list_add_rcu(&entry->list, list); |
| @@ -1292,6 +1332,7 @@ static inline int audit_del_rule(struct audit_entry *entry, | |||
| 1292 | struct audit_entry *e; | 1332 | struct audit_entry *e; |
| 1293 | struct audit_field *inode_f = entry->rule.inode_f; | 1333 | struct audit_field *inode_f = entry->rule.inode_f; |
| 1294 | struct audit_watch *watch, *tmp_watch = entry->rule.watch; | 1334 | struct audit_watch *watch, *tmp_watch = entry->rule.watch; |
| 1335 | struct audit_tree *tree = entry->rule.tree; | ||
| 1295 | LIST_HEAD(inotify_list); | 1336 | LIST_HEAD(inotify_list); |
| 1296 | int h, ret = 0; | 1337 | int h, ret = 0; |
| 1297 | #ifdef CONFIG_AUDITSYSCALL | 1338 | #ifdef CONFIG_AUDITSYSCALL |
| @@ -1336,6 +1377,9 @@ static inline int audit_del_rule(struct audit_entry *entry, | |||
| 1336 | } | 1377 | } |
| 1337 | } | 1378 | } |
| 1338 | 1379 | ||
| 1380 | if (e->rule.tree) | ||
| 1381 | audit_remove_tree_rule(&e->rule); | ||
| 1382 | |||
| 1339 | list_del_rcu(&e->list); | 1383 | list_del_rcu(&e->list); |
| 1340 | call_rcu(&e->rcu, audit_free_rule_rcu); | 1384 | call_rcu(&e->rcu, audit_free_rule_rcu); |
| 1341 | 1385 | ||
| @@ -1354,6 +1398,8 @@ static inline int audit_del_rule(struct audit_entry *entry, | |||
| 1354 | out: | 1398 | out: |
| 1355 | if (tmp_watch) | 1399 | if (tmp_watch) |
| 1356 | audit_put_watch(tmp_watch); /* match initial get */ | 1400 | audit_put_watch(tmp_watch); /* match initial get */ |
| 1401 | if (tree) | ||
| 1402 | audit_put_tree(tree); /* that's the temporary one */ | ||
| 1357 | 1403 | ||
| 1358 | return ret; | 1404 | return ret; |
| 1359 | } | 1405 | } |
| @@ -1737,6 +1783,7 @@ int selinux_audit_rule_update(void) | |||
| 1737 | { | 1783 | { |
| 1738 | struct audit_entry *entry, *n, *nentry; | 1784 | struct audit_entry *entry, *n, *nentry; |
| 1739 | struct audit_watch *watch; | 1785 | struct audit_watch *watch; |
| 1786 | struct audit_tree *tree; | ||
| 1740 | int i, err = 0; | 1787 | int i, err = 0; |
| 1741 | 1788 | ||
| 1742 | /* audit_filter_mutex synchronizes the writers */ | 1789 | /* audit_filter_mutex synchronizes the writers */ |
| @@ -1748,6 +1795,7 @@ int selinux_audit_rule_update(void) | |||
| 1748 | continue; | 1795 | continue; |
| 1749 | 1796 | ||
| 1750 | watch = entry->rule.watch; | 1797 | watch = entry->rule.watch; |
| 1798 | tree = entry->rule.tree; | ||
| 1751 | nentry = audit_dupe_rule(&entry->rule, watch); | 1799 | nentry = audit_dupe_rule(&entry->rule, watch); |
| 1752 | if (unlikely(IS_ERR(nentry))) { | 1800 | if (unlikely(IS_ERR(nentry))) { |
| 1753 | /* save the first error encountered for the | 1801 | /* save the first error encountered for the |
| @@ -1763,7 +1811,9 @@ int selinux_audit_rule_update(void) | |||
| 1763 | list_add(&nentry->rule.rlist, | 1811 | list_add(&nentry->rule.rlist, |
| 1764 | &watch->rules); | 1812 | &watch->rules); |
| 1765 | list_del(&entry->rule.rlist); | 1813 | list_del(&entry->rule.rlist); |
| 1766 | } | 1814 | } else if (tree) |
| 1815 | list_replace_init(&entry->rule.rlist, | ||
| 1816 | &nentry->rule.rlist); | ||
| 1767 | list_replace_rcu(&entry->list, &nentry->list); | 1817 | list_replace_rcu(&entry->list, &nentry->list); |
| 1768 | } | 1818 | } |
| 1769 | call_rcu(&entry->rcu, audit_free_rule_rcu); | 1819 | call_rcu(&entry->rcu, audit_free_rule_rcu); |
diff --git a/kernel/auditsc.c b/kernel/auditsc.c index e19b5a33aede..80ecab0942ef 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c | |||
| @@ -65,6 +65,7 @@ | |||
| 65 | #include <linux/binfmts.h> | 65 | #include <linux/binfmts.h> |
| 66 | #include <linux/highmem.h> | 66 | #include <linux/highmem.h> |
| 67 | #include <linux/syscalls.h> | 67 | #include <linux/syscalls.h> |
| 68 | #include <linux/inotify.h> | ||
| 68 | 69 | ||
| 69 | #include "audit.h" | 70 | #include "audit.h" |
| 70 | 71 | ||
| @@ -179,6 +180,11 @@ struct audit_aux_data_pids { | |||
| 179 | int pid_count; | 180 | int pid_count; |
| 180 | }; | 181 | }; |
| 181 | 182 | ||
| 183 | struct audit_tree_refs { | ||
| 184 | struct audit_tree_refs *next; | ||
| 185 | struct audit_chunk *c[31]; | ||
| 186 | }; | ||
| 187 | |||
| 182 | /* The per-task audit context. */ | 188 | /* The per-task audit context. */ |
| 183 | struct audit_context { | 189 | struct audit_context { |
| 184 | int dummy; /* must be the first element */ | 190 | int dummy; /* must be the first element */ |
| @@ -211,6 +217,9 @@ struct audit_context { | |||
| 211 | pid_t target_pid; | 217 | pid_t target_pid; |
| 212 | u32 target_sid; | 218 | u32 target_sid; |
| 213 | 219 | ||
| 220 | struct audit_tree_refs *trees, *first_trees; | ||
| 221 | int tree_count; | ||
| 222 | |||
| 214 | #if AUDIT_DEBUG | 223 | #if AUDIT_DEBUG |
| 215 | int put_count; | 224 | int put_count; |
| 216 | int ino_count; | 225 | int ino_count; |
| @@ -265,6 +274,117 @@ static int audit_match_perm(struct audit_context *ctx, int mask) | |||
| 265 | } | 274 | } |
| 266 | } | 275 | } |
| 267 | 276 | ||
| 277 | /* | ||
| 278 | * We keep a linked list of fixed-sized (31 pointer) arrays of audit_chunk *; | ||
| 279 | * ->first_trees points to its beginning, ->trees - to the current end of data. | ||
| 280 | * ->tree_count is the number of free entries in array pointed to by ->trees. | ||
| 281 | * Original condition is (NULL, NULL, 0); as soon as it grows we never revert to NULL, | ||
| 282 | * "empty" becomes (p, p, 31) afterwards. We don't shrink the list (and seriously, | ||
| 283 | * it's going to remain 1-element for almost any setup) until we free context itself. | ||
| 284 | * References in it _are_ dropped - at the same time we free/drop aux stuff. | ||
| 285 | */ | ||
| 286 | |||
| 287 | #ifdef CONFIG_AUDIT_TREE | ||
| 288 | static int put_tree_ref(struct audit_context *ctx, struct audit_chunk *chunk) | ||
| 289 | { | ||
| 290 | struct audit_tree_refs *p = ctx->trees; | ||
| 291 | int left = ctx->tree_count; | ||
| 292 | if (likely(left)) { | ||
| 293 | p->c[--left] = chunk; | ||
| 294 | ctx->tree_count = left; | ||
| 295 | return 1; | ||
| 296 | } | ||
| 297 | if (!p) | ||
| 298 | return 0; | ||
| 299 | p = p->next; | ||
| 300 | if (p) { | ||
| 301 | p->c[30] = chunk; | ||
| 302 | ctx->trees = p; | ||
| 303 | ctx->tree_count = 30; | ||
| 304 | return 1; | ||
| 305 | } | ||
| 306 | return 0; | ||
| 307 | } | ||
| 308 | |||
| 309 | static int grow_tree_refs(struct audit_context *ctx) | ||
| 310 | { | ||
| 311 | struct audit_tree_refs *p = ctx->trees; | ||
| 312 | ctx->trees = kzalloc(sizeof(struct audit_tree_refs), GFP_KERNEL); | ||
| 313 | if (!ctx->trees) { | ||
| 314 | ctx->trees = p; | ||
| 315 | return 0; | ||
| 316 | } | ||
| 317 | if (p) | ||
| 318 | p->next = ctx->trees; | ||
| 319 | else | ||
| 320 | ctx->first_trees = ctx->trees; | ||
| 321 | ctx->tree_count = 31; | ||
| 322 | return 1; | ||
| 323 | } | ||
| 324 | #endif | ||
| 325 | |||
| 326 | static void unroll_tree_refs(struct audit_context *ctx, | ||
| 327 | struct audit_tree_refs *p, int count) | ||
| 328 | { | ||
| 329 | #ifdef CONFIG_AUDIT_TREE | ||
| 330 | struct audit_tree_refs *q; | ||
| 331 | int n; | ||
| 332 | if (!p) { | ||
| 333 | /* we started with empty chain */ | ||
| 334 | p = ctx->first_trees; | ||
| 335 | count = 31; | ||
| 336 | /* if the very first allocation has failed, nothing to do */ | ||
| 337 | if (!p) | ||
| 338 | return; | ||
| 339 | } | ||
| 340 | n = count; | ||
| 341 | for (q = p; q != ctx->trees; q = q->next, n = 31) { | ||
| 342 | while (n--) { | ||
| 343 | audit_put_chunk(q->c[n]); | ||
| 344 | q->c[n] = NULL; | ||
| 345 | } | ||
| 346 | } | ||
| 347 | while (n-- > ctx->tree_count) { | ||
| 348 | audit_put_chunk(q->c[n]); | ||
| 349 | q->c[n] = NULL; | ||
| 350 | } | ||
| 351 | ctx->trees = p; | ||
| 352 | ctx->tree_count = count; | ||
| 353 | #endif | ||
| 354 | } | ||
| 355 | |||
| 356 | static void free_tree_refs(struct audit_context *ctx) | ||
| 357 | { | ||
| 358 | struct audit_tree_refs *p, *q; | ||
| 359 | for (p = ctx->first_trees; p; p = q) { | ||
| 360 | q = p->next; | ||
| 361 | kfree(p); | ||
| 362 | } | ||
| 363 | } | ||
| 364 | |||
| 365 | static int match_tree_refs(struct audit_context *ctx, struct audit_tree *tree) | ||
| 366 | { | ||
| 367 | #ifdef CONFIG_AUDIT_TREE | ||
| 368 | struct audit_tree_refs *p; | ||
| 369 | int n; | ||
| 370 | if (!tree) | ||
| 371 | return 0; | ||
| 372 | /* full ones */ | ||
| 373 | for (p = ctx->first_trees; p != ctx->trees; p = p->next) { | ||
| 374 | for (n = 0; n < 31; n++) | ||
| 375 | if (audit_tree_match(p->c[n], tree)) | ||
| 376 | return 1; | ||
| 377 | } | ||
| 378 | /* partial */ | ||
| 379 | if (p) { | ||
| 380 | for (n = ctx->tree_count; n < 31; n++) | ||
| 381 | if (audit_tree_match(p->c[n], tree)) | ||
| 382 | return 1; | ||
| 383 | } | ||
| 384 | #endif | ||
| 385 | return 0; | ||
| 386 | } | ||
| 387 | |||
| 268 | /* Determine if any context name data matches a rule's watch data */ | 388 | /* Determine if any context name data matches a rule's watch data */ |
| 269 | /* Compare a task_struct with an audit_rule. Return 1 on match, 0 | 389 | /* Compare a task_struct with an audit_rule. Return 1 on match, 0 |
| 270 | * otherwise. */ | 390 | * otherwise. */ |
| @@ -379,6 +499,10 @@ static int audit_filter_rules(struct task_struct *tsk, | |||
| 379 | result = (name->dev == rule->watch->dev && | 499 | result = (name->dev == rule->watch->dev && |
| 380 | name->ino == rule->watch->ino); | 500 | name->ino == rule->watch->ino); |
| 381 | break; | 501 | break; |
| 502 | case AUDIT_DIR: | ||
| 503 | if (ctx) | ||
| 504 | result = match_tree_refs(ctx, rule->tree); | ||
| 505 | break; | ||
| 382 | case AUDIT_LOGINUID: | 506 | case AUDIT_LOGINUID: |
| 383 | result = 0; | 507 | result = 0; |
| 384 | if (ctx) | 508 | if (ctx) |
| @@ -727,6 +851,8 @@ static inline void audit_free_context(struct audit_context *context) | |||
| 727 | context->name_count, count); | 851 | context->name_count, count); |
| 728 | } | 852 | } |
| 729 | audit_free_names(context); | 853 | audit_free_names(context); |
| 854 | unroll_tree_refs(context, NULL, 0); | ||
| 855 | free_tree_refs(context); | ||
| 730 | audit_free_aux(context); | 856 | audit_free_aux(context); |
| 731 | kfree(context->filterkey); | 857 | kfree(context->filterkey); |
| 732 | kfree(context); | 858 | kfree(context); |
| @@ -1270,6 +1396,7 @@ void audit_syscall_exit(int valid, long return_code) | |||
| 1270 | tsk->audit_context = new_context; | 1396 | tsk->audit_context = new_context; |
| 1271 | } else { | 1397 | } else { |
| 1272 | audit_free_names(context); | 1398 | audit_free_names(context); |
| 1399 | unroll_tree_refs(context, NULL, 0); | ||
| 1273 | audit_free_aux(context); | 1400 | audit_free_aux(context); |
| 1274 | context->aux = NULL; | 1401 | context->aux = NULL; |
| 1275 | context->aux_pids = NULL; | 1402 | context->aux_pids = NULL; |
| @@ -1281,6 +1408,95 @@ void audit_syscall_exit(int valid, long return_code) | |||
| 1281 | } | 1408 | } |
| 1282 | } | 1409 | } |
| 1283 | 1410 | ||
| 1411 | static inline void handle_one(const struct inode *inode) | ||
| 1412 | { | ||
| 1413 | #ifdef CONFIG_AUDIT_TREE | ||
| 1414 | struct audit_context *context; | ||
| 1415 | struct audit_tree_refs *p; | ||
| 1416 | struct audit_chunk *chunk; | ||
| 1417 | int count; | ||
| 1418 | if (likely(list_empty(&inode->inotify_watches))) | ||
| 1419 | return; | ||
| 1420 | context = current->audit_context; | ||
| 1421 | p = context->trees; | ||
| 1422 | count = context->tree_count; | ||
| 1423 | rcu_read_lock(); | ||
| 1424 | chunk = audit_tree_lookup(inode); | ||
| 1425 | rcu_read_unlock(); | ||
| 1426 | if (!chunk) | ||
| 1427 | return; | ||
| 1428 | if (likely(put_tree_ref(context, chunk))) | ||
| 1429 | return; | ||
| 1430 | if (unlikely(!grow_tree_refs(context))) { | ||
| 1431 | printk(KERN_WARNING "out of memory, audit has lost a tree reference"); | ||
| 1432 | audit_set_auditable(context); | ||
| 1433 | audit_put_chunk(chunk); | ||
| 1434 | unroll_tree_refs(context, p, count); | ||
| 1435 | return; | ||
| 1436 | } | ||
| 1437 | put_tree_ref(context, chunk); | ||
| 1438 | #endif | ||
| 1439 | } | ||
| 1440 | |||
| 1441 | static void handle_path(const struct dentry *dentry) | ||
| 1442 | { | ||
| 1443 | #ifdef CONFIG_AUDIT_TREE | ||
| 1444 | struct audit_context *context; | ||
| 1445 | struct audit_tree_refs *p; | ||
| 1446 | const struct dentry *d, *parent; | ||
| 1447 | struct audit_chunk *drop; | ||
| 1448 | unsigned long seq; | ||
| 1449 | int count; | ||
| 1450 | |||
| 1451 | context = current->audit_context; | ||
| 1452 | p = context->trees; | ||
| 1453 | count = context->tree_count; | ||
| 1454 | retry: | ||
| 1455 | drop = NULL; | ||
| 1456 | d = dentry; | ||
| 1457 | rcu_read_lock(); | ||
| 1458 | seq = read_seqbegin(&rename_lock); | ||
| 1459 | for(;;) { | ||
| 1460 | struct inode *inode = d->d_inode; | ||
| 1461 | if (inode && unlikely(!list_empty(&inode->inotify_watches))) { | ||
| 1462 | struct audit_chunk *chunk; | ||
| 1463 | chunk = audit_tree_lookup(inode); | ||
| 1464 | if (chunk) { | ||
| 1465 | if (unlikely(!put_tree_ref(context, chunk))) { | ||
| 1466 | drop = chunk; | ||
| 1467 | break; | ||
| 1468 | } | ||
| 1469 | } | ||
| 1470 | } | ||
| 1471 | parent = d->d_parent; | ||
| 1472 | if (parent == d) | ||
| 1473 | break; | ||
| 1474 | d = parent; | ||
| 1475 | } | ||
| 1476 | if (unlikely(read_seqretry(&rename_lock, seq) || drop)) { /* in this order */ | ||
| 1477 | rcu_read_unlock(); | ||
| 1478 | if (!drop) { | ||
| 1479 | /* just a race with rename */ | ||
| 1480 | unroll_tree_refs(context, p, count); | ||
| 1481 | goto retry; | ||
| 1482 | } | ||
| 1483 | audit_put_chunk(drop); | ||
| 1484 | if (grow_tree_refs(context)) { | ||
| 1485 | /* OK, got more space */ | ||
| 1486 | unroll_tree_refs(context, p, count); | ||
| 1487 | goto retry; | ||
| 1488 | } | ||
| 1489 | /* too bad */ | ||
| 1490 | printk(KERN_WARNING | ||
| 1491 | "out of memory, audit has lost a tree reference"); | ||
| 1492 | unroll_tree_refs(context, p, count); | ||
| 1493 | audit_set_auditable(context); | ||
| 1494 | return; | ||
| 1495 | } | ||
| 1496 | rcu_read_unlock(); | ||
| 1497 | #endif | ||
| 1498 | } | ||
| 1499 | |||
| 1284 | /** | 1500 | /** |
| 1285 | * audit_getname - add a name to the list | 1501 | * audit_getname - add a name to the list |
| 1286 | * @name: name to add | 1502 | * @name: name to add |
| @@ -1403,10 +1619,11 @@ static void audit_copy_inode(struct audit_names *name, const struct inode *inode | |||
| 1403 | * | 1619 | * |
| 1404 | * Called from fs/namei.c:path_lookup(). | 1620 | * Called from fs/namei.c:path_lookup(). |
| 1405 | */ | 1621 | */ |
| 1406 | void __audit_inode(const char *name, const struct inode *inode) | 1622 | void __audit_inode(const char *name, const struct dentry *dentry) |
| 1407 | { | 1623 | { |
| 1408 | int idx; | 1624 | int idx; |
| 1409 | struct audit_context *context = current->audit_context; | 1625 | struct audit_context *context = current->audit_context; |
| 1626 | const struct inode *inode = dentry->d_inode; | ||
| 1410 | 1627 | ||
| 1411 | if (!context->in_syscall) | 1628 | if (!context->in_syscall) |
| 1412 | return; | 1629 | return; |
| @@ -1426,6 +1643,7 @@ void __audit_inode(const char *name, const struct inode *inode) | |||
| 1426 | idx = context->name_count - 1; | 1643 | idx = context->name_count - 1; |
| 1427 | context->names[idx].name = NULL; | 1644 | context->names[idx].name = NULL; |
| 1428 | } | 1645 | } |
| 1646 | handle_path(dentry); | ||
| 1429 | audit_copy_inode(&context->names[idx], inode); | 1647 | audit_copy_inode(&context->names[idx], inode); |
| 1430 | } | 1648 | } |
| 1431 | 1649 | ||
| @@ -1443,17 +1661,20 @@ void __audit_inode(const char *name, const struct inode *inode) | |||
| 1443 | * must be hooked prior, in order to capture the target inode during | 1661 | * must be hooked prior, in order to capture the target inode during |
| 1444 | * unsuccessful attempts. | 1662 | * unsuccessful attempts. |
| 1445 | */ | 1663 | */ |
| 1446 | void __audit_inode_child(const char *dname, const struct inode *inode, | 1664 | void __audit_inode_child(const char *dname, const struct dentry *dentry, |
| 1447 | const struct inode *parent) | 1665 | const struct inode *parent) |
| 1448 | { | 1666 | { |
| 1449 | int idx; | 1667 | int idx; |
| 1450 | struct audit_context *context = current->audit_context; | 1668 | struct audit_context *context = current->audit_context; |
| 1451 | const char *found_parent = NULL, *found_child = NULL; | 1669 | const char *found_parent = NULL, *found_child = NULL; |
| 1670 | const struct inode *inode = dentry->d_inode; | ||
| 1452 | int dirlen = 0; | 1671 | int dirlen = 0; |
| 1453 | 1672 | ||
| 1454 | if (!context->in_syscall) | 1673 | if (!context->in_syscall) |
| 1455 | return; | 1674 | return; |
| 1456 | 1675 | ||
| 1676 | if (inode) | ||
| 1677 | handle_one(inode); | ||
| 1457 | /* determine matching parent */ | 1678 | /* determine matching parent */ |
| 1458 | if (!dname) | 1679 | if (!dname) |
| 1459 | goto add_names; | 1680 | goto add_names; |
diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 824cade07827..91a081a82f55 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c | |||
| @@ -496,7 +496,7 @@ retry: | |||
| 496 | panic("Out of memory and no killable processes...\n"); | 496 | panic("Out of memory and no killable processes...\n"); |
| 497 | } | 497 | } |
| 498 | 498 | ||
| 499 | if (oom_kill_process(p, points, gfp_mask, order, | 499 | if (oom_kill_process(p, gfp_mask, order, points, |
| 500 | "Out of memory")) | 500 | "Out of memory")) |
| 501 | goto retry; | 501 | goto retry; |
| 502 | 502 | ||
diff --git a/scripts/checkstack.pl b/scripts/checkstack.pl index 28e480c8100f..d716b76098bb 100755 --- a/scripts/checkstack.pl +++ b/scripts/checkstack.pl | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | # Random bits by Matt Mackall <mpm@selenic.com> | 13 | # Random bits by Matt Mackall <mpm@selenic.com> |
| 14 | # M68k port by Geert Uytterhoeven and Andreas Schwab | 14 | # M68k port by Geert Uytterhoeven and Andreas Schwab |
| 15 | # AVR32 port by Haavard Skinnemoen <hskinnemoen@atmel.com> | 15 | # AVR32 port by Haavard Skinnemoen <hskinnemoen@atmel.com> |
| 16 | # PARISC port by Kyle McMartin <kyle@parisc-linux.org> | ||
| 16 | # | 17 | # |
| 17 | # Usage: | 18 | # Usage: |
| 18 | # objdump -d vmlinux | scripts/checkstack.pl [arch] | 19 | # objdump -d vmlinux | scripts/checkstack.pl [arch] |
| @@ -61,6 +62,8 @@ my (@stack, $re, $x, $xs); | |||
| 61 | } elsif ($arch eq 'mips') { | 62 | } elsif ($arch eq 'mips') { |
| 62 | #88003254: 27bdffe0 addiu sp,sp,-32 | 63 | #88003254: 27bdffe0 addiu sp,sp,-32 |
| 63 | $re = qr/.*addiu.*sp,sp,-(([0-9]{2}|[3-9])[0-9]{2})/o; | 64 | $re = qr/.*addiu.*sp,sp,-(([0-9]{2}|[3-9])[0-9]{2})/o; |
| 65 | } elsif ($arch eq 'parisc' || $arch eq 'parisc64') { | ||
| 66 | $re = qr/.*ldo ($x{1,8})\(sp\),sp/o; | ||
| 64 | } elsif ($arch eq 'ppc') { | 67 | } elsif ($arch eq 'ppc') { |
| 65 | #c00029f4: 94 21 ff 30 stwu r1,-208(r1) | 68 | #c00029f4: 94 21 ff 30 stwu r1,-208(r1) |
| 66 | $re = qr/.*stwu.*r1,-($x{1,8})\(r1\)/o; | 69 | $re = qr/.*stwu.*r1,-($x{1,8})\(r1\)/o; |
diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc index e4eeb59a8c24..b9bb32dfd628 100644 --- a/scripts/kconfig/qconf.cc +++ b/scripts/kconfig/qconf.cc | |||
| @@ -1274,8 +1274,12 @@ ConfigMainWindow::ConfigMainWindow(void) | |||
| 1274 | QMenuBar* menu; | 1274 | QMenuBar* menu; |
| 1275 | bool ok; | 1275 | bool ok; |
| 1276 | int x, y, width, height; | 1276 | int x, y, width, height; |
| 1277 | char title[256]; | ||
| 1277 | 1278 | ||
| 1278 | QWidget *d = configApp->desktop(); | 1279 | QWidget *d = configApp->desktop(); |
| 1280 | snprintf(title, sizeof(title), _("Linux Kernel v%s Configuration"), | ||
| 1281 | getenv("KERNELVERSION")); | ||
| 1282 | setCaption(title); | ||
| 1279 | 1283 | ||
| 1280 | width = configSettings->readNumEntry("/window width", d->width() - 64); | 1284 | width = configSettings->readNumEntry("/window width", d->width() - 64); |
| 1281 | height = configSettings->readNumEntry("/window height", d->height() - 64); | 1285 | height = configSettings->readNumEntry("/window height", d->height() - 64); |
