diff options
author | Steve French <sfrench@us.ibm.com> | 2007-10-22 12:28:19 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2007-10-22 12:28:19 -0400 |
commit | 7efb35af738e96565934cc640d863eb18dba0206 (patch) | |
tree | 29ed331d864b0cfa73fdca5fd3982896e56f9530 | |
parent | 748c5151deb56e4b7b5a9b07a884243764933831 (diff) | |
parent | 55b70a0300b873c0ec7ea6e33752af56f41250ce (diff) |
Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6
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); |