aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2010-08-31 03:45:21 -0400
committerIngo Molnar <mingo@elte.hu>2010-08-31 03:45:46 -0400
commitdaab7fc734a53fdeaf844b7c03053118ad1769da (patch)
tree575deb3cdcc6dda562acaed6f7c29bc81ae01cf2 /arch/sparc
parent774ea0bcb27f57b6fd521b3b6c43237782fed4b9 (diff)
parent2bfc96a127bc1cc94d26bfaa40159966064f9c8c (diff)
Merge commit 'v2.6.36-rc3' into x86/memblock
Conflicts: arch/x86/kernel/trampoline.c mm/memblock.c Merge reason: Resolve the conflicts, update to latest upstream. Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/sparc')
-rw-r--r--arch/sparc/Kconfig7
-rw-r--r--arch/sparc/Kconfig.debug14
-rw-r--r--arch/sparc/boot/btfixupprep.c4
-rw-r--r--arch/sparc/configs/sparc32_defconfig1120
-rw-r--r--arch/sparc/configs/sparc64_defconfig1705
-rw-r--r--arch/sparc/include/asm/atomic_64.h10
-rw-r--r--arch/sparc/include/asm/backoff.h11
-rw-r--r--arch/sparc/include/asm/device.h11
-rw-r--r--arch/sparc/include/asm/dma-mapping.h10
-rw-r--r--arch/sparc/include/asm/fb.h4
-rw-r--r--arch/sparc/include/asm/floppy_64.h10
-rw-r--r--arch/sparc/include/asm/highmem.h2
-rw-r--r--arch/sparc/include/asm/ioctls.h2
-rw-r--r--arch/sparc/include/asm/local64.h1
-rw-r--r--arch/sparc/include/asm/of_device.h38
-rw-r--r--arch/sparc/include/asm/of_platform.h18
-rw-r--r--arch/sparc/include/asm/oplib_64.h27
-rw-r--r--arch/sparc/include/asm/parport.h16
-rw-r--r--arch/sparc/include/asm/perf_event.h23
-rw-r--r--arch/sparc/include/asm/prom.h10
-rw-r--r--arch/sparc/include/asm/rwsem-const.h12
-rw-r--r--arch/sparc/include/asm/rwsem.h120
-rw-r--r--arch/sparc/include/asm/scatterlist.h1
-rw-r--r--arch/sparc/include/asm/system_64.h1
-rw-r--r--arch/sparc/include/asm/termbits.h1
-rw-r--r--arch/sparc/include/asm/uaccess_32.h15
-rw-r--r--arch/sparc/include/asm/uaccess_64.h23
-rw-r--r--arch/sparc/include/asm/unistd.h5
-rw-r--r--arch/sparc/kernel/apc.c6
-rw-r--r--arch/sparc/kernel/auxio_64.c5
-rw-r--r--arch/sparc/kernel/central.c8
-rw-r--r--arch/sparc/kernel/chmc.c16
-rw-r--r--arch/sparc/kernel/helpers.S75
-rw-r--r--arch/sparc/kernel/ioport.c2
-rw-r--r--arch/sparc/kernel/of_device_32.c63
-rw-r--r--arch/sparc/kernel/of_device_64.c61
-rw-r--r--arch/sparc/kernel/of_device_common.c35
-rw-r--r--arch/sparc/kernel/pci.c6
-rw-r--r--arch/sparc/kernel/pci_fire.c6
-rw-r--r--arch/sparc/kernel/pci_impl.h2
-rw-r--r--arch/sparc/kernel/pci_psycho.c16
-rw-r--r--arch/sparc/kernel/pci_sabre.c16
-rw-r--r--arch/sparc/kernel/pci_schizo.c32
-rw-r--r--arch/sparc/kernel/pci_sun4v.c6
-rw-r--r--arch/sparc/kernel/perf_event.c25
-rw-r--r--arch/sparc/kernel/pmc.c4
-rw-r--r--arch/sparc/kernel/power.c6
-rw-r--r--arch/sparc/kernel/process_32.c6
-rw-r--r--arch/sparc/kernel/process_64.c6
-rw-r--r--arch/sparc/kernel/prom.h8
-rw-r--r--arch/sparc/kernel/prom_64.c6
-rw-r--r--arch/sparc/kernel/prom_common.c2
-rw-r--r--arch/sparc/kernel/prom_irqtrans.c2
-rw-r--r--arch/sparc/kernel/psycho_common.c2
-rw-r--r--arch/sparc/kernel/psycho_common.h2
-rw-r--r--arch/sparc/kernel/sbus.c16
-rw-r--r--arch/sparc/kernel/sys32.S9
-rw-r--r--arch/sparc/kernel/sys_sparc32.c7
-rw-r--r--arch/sparc/kernel/sys_sparc_32.c4
-rw-r--r--arch/sparc/kernel/sys_sparc_64.c4
-rw-r--r--arch/sparc/kernel/systbls_32.S3
-rw-r--r--arch/sparc/kernel/systbls_64.S6
-rw-r--r--arch/sparc/kernel/time_32.c4
-rw-r--r--arch/sparc/kernel/time_64.c12
-rw-r--r--arch/sparc/lib/Makefile2
-rw-r--r--arch/sparc/lib/atomic_64.S36
-rw-r--r--arch/sparc/lib/bitops.S12
-rw-r--r--arch/sparc/lib/rwsem_64.S163
-rw-r--r--arch/sparc/mm/highmem.c4
-rw-r--r--arch/sparc/mm/io-unit.c4
-rw-r--r--arch/sparc/mm/iommu.c6
-rw-r--r--arch/sparc/prom/cif.S16
-rw-r--r--arch/sparc/prom/console_64.c48
-rw-r--r--arch/sparc/prom/devops_64.c36
-rw-r--r--arch/sparc/prom/misc_64.c314
-rw-r--r--arch/sparc/prom/p1275.c102
-rw-r--r--arch/sparc/prom/tree_64.c210
77 files changed, 864 insertions, 3799 deletions
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index c0015db247ba..491e9d6de191 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -18,6 +18,7 @@ config 64BIT
18config SPARC 18config SPARC
19 bool 19 bool
20 default y 20 default y
21 select OF
21 select HAVE_IDE 22 select HAVE_IDE
22 select HAVE_OPROFILE 23 select HAVE_OPROFILE
23 select HAVE_ARCH_KGDB if !SMP || SPARC64 24 select HAVE_ARCH_KGDB if !SMP || SPARC64
@@ -66,9 +67,6 @@ config BITS
66 default 32 if SPARC32 67 default 32 if SPARC32
67 default 64 if SPARC64 68 default 64 if SPARC64
68 69
69config GENERIC_TIME
70 def_bool y
71
72config ARCH_USES_GETTIMEOFFSET 70config ARCH_USES_GETTIMEOFFSET
73 bool 71 bool
74 default y if SPARC32 72 default y if SPARC32
@@ -148,9 +146,6 @@ config GENERIC_GPIO
148config ARCH_NO_VIRT_TO_BUS 146config ARCH_NO_VIRT_TO_BUS
149 def_bool y 147 def_bool y
150 148
151config OF
152 def_bool y
153
154config ARCH_SUPPORTS_DEBUG_PAGEALLOC 149config ARCH_SUPPORTS_DEBUG_PAGEALLOC
155 def_bool y if SPARC64 150 def_bool y if SPARC64
156 151
diff --git a/arch/sparc/Kconfig.debug b/arch/sparc/Kconfig.debug
index 1b4a831565f9..d9a795efbc04 100644
--- a/arch/sparc/Kconfig.debug
+++ b/arch/sparc/Kconfig.debug
@@ -30,18 +30,4 @@ config FRAME_POINTER
30 depends on MCOUNT 30 depends on MCOUNT
31 default y 31 default y
32 32
33config DEBUG_STRICT_USER_COPY_CHECKS
34 bool "Strict copy size checks"
35 depends on DEBUG_KERNEL && !TRACE_BRANCH_PROFILING
36 ---help---
37 Enabling this option turns a certain set of sanity checks for user
38 copy operations into compile time failures.
39
40 The copy_from_user() etc checks are there to help test if there
41 are sufficient security checks on the length argument of
42 the copy operation, by having gcc prove that the argument is
43 within bounds.
44
45 If unsure, or if you run an older (pre 4.4) gcc, say N.
46
47endmenu 33endmenu
diff --git a/arch/sparc/boot/btfixupprep.c b/arch/sparc/boot/btfixupprep.c
index e7f2940bd270..da031159e2b7 100644
--- a/arch/sparc/boot/btfixupprep.c
+++ b/arch/sparc/boot/btfixupprep.c
@@ -216,7 +216,7 @@ main1:
216 switch (buffer[nbase+3]) { 216 switch (buffer[nbase+3]) {
217 case 'f': 217 case 'f':
218 if (initval) { 218 if (initval) {
219 fprintf(stderr, "Cannot use pre-initalized fixups for calls\n%s\n", buffer); 219 fprintf(stderr, "Cannot use pre-initialized fixups for calls\n%s\n", buffer);
220 exit(1); 220 exit(1);
221 } 221 }
222 if (!strcmp (sect, "__ksymtab")) { 222 if (!strcmp (sect, "__ksymtab")) {
@@ -273,7 +273,7 @@ main1:
273 break; 273 break;
274 case 'i': 274 case 'i':
275 if (initval) { 275 if (initval) {
276 fprintf(stderr, "Cannot use pre-initalized fixups for INT\n%s\n", buffer); 276 fprintf(stderr, "Cannot use pre-initialized fixups for INT\n%s\n", buffer);
277 exit(1); 277 exit(1);
278 } 278 }
279 if (strncmp (buffer + mode+9, "HI22 ", 10) && strncmp (buffer + mode+9, "LO10 ", 10)) { 279 if (strncmp (buffer + mode+9, "HI22 ", 10) && strncmp (buffer + mode+9, "LO10 ", 10)) {
diff --git a/arch/sparc/configs/sparc32_defconfig b/arch/sparc/configs/sparc32_defconfig
index 6a8d078070ca..fb23fd6b186a 100644
--- a/arch/sparc/configs/sparc32_defconfig
+++ b/arch/sparc/configs/sparc32_defconfig
@@ -1,1225 +1,105 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.33
4# Wed Mar 3 02:52:23 2010
5#
6# CONFIG_64BIT is not set
7CONFIG_SPARC=y
8CONFIG_SPARC32=y
9# CONFIG_SPARC64 is not set
10CONFIG_ARCH_DEFCONFIG="arch/sparc/configs/sparc32_defconfig"
11CONFIG_BITS=32
12CONFIG_GENERIC_TIME=y
13CONFIG_ARCH_USES_GETTIMEOFFSET=y
14CONFIG_AUDIT_ARCH=y
15CONFIG_MMU=y
16CONFIG_HIGHMEM=y
17CONFIG_ZONE_DMA=y
18CONFIG_GENERIC_ISA_DMA=y
19CONFIG_ARCH_NO_VIRT_TO_BUS=y
20CONFIG_OF=y
21CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
22CONFIG_CONSTRUCTORS=y
23
24#
25# General setup
26#
27CONFIG_EXPERIMENTAL=y 1CONFIG_EXPERIMENTAL=y
28CONFIG_BROKEN_ON_SMP=y
29CONFIG_INIT_ENV_ARG_LIMIT=32
30CONFIG_LOCALVERSION=""
31CONFIG_LOCALVERSION_AUTO=y
32CONFIG_SWAP=y
33CONFIG_SYSVIPC=y 2CONFIG_SYSVIPC=y
34CONFIG_SYSVIPC_SYSCTL=y
35CONFIG_POSIX_MQUEUE=y 3CONFIG_POSIX_MQUEUE=y
36CONFIG_POSIX_MQUEUE_SYSCTL=y
37# CONFIG_BSD_PROCESS_ACCT is not set
38# CONFIG_TASKSTATS is not set
39# CONFIG_AUDIT is not set
40
41#
42# RCU Subsystem
43#
44CONFIG_TREE_RCU=y
45# CONFIG_TREE_PREEMPT_RCU is not set
46# CONFIG_TINY_RCU is not set
47# CONFIG_RCU_TRACE is not set
48CONFIG_RCU_FANOUT=32
49# CONFIG_RCU_FANOUT_EXACT is not set
50# CONFIG_TREE_RCU_TRACE is not set
51# CONFIG_IKCONFIG is not set
52CONFIG_LOG_BUF_SHIFT=14 4CONFIG_LOG_BUF_SHIFT=14
53# CONFIG_CGROUPS is not set
54CONFIG_SYSFS_DEPRECATED=y
55CONFIG_SYSFS_DEPRECATED_V2=y 5CONFIG_SYSFS_DEPRECATED_V2=y
56# CONFIG_RELAY is not set
57CONFIG_NAMESPACES=y
58# CONFIG_UTS_NS is not set
59# CONFIG_IPC_NS is not set
60# CONFIG_USER_NS is not set
61# CONFIG_PID_NS is not set
62# CONFIG_NET_NS is not set
63CONFIG_BLK_DEV_INITRD=y 6CONFIG_BLK_DEV_INITRD=y
64CONFIG_INITRAMFS_SOURCE=""
65CONFIG_RD_GZIP=y
66CONFIG_RD_BZIP2=y
67CONFIG_RD_LZMA=y
68CONFIG_RD_LZO=y
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 7# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
70CONFIG_SYSCTL=y
71CONFIG_ANON_INODES=y
72# CONFIG_EMBEDDED is not set
73CONFIG_UID16=y
74CONFIG_SYSCTL_SYSCALL=y
75CONFIG_KALLSYMS=y
76# CONFIG_KALLSYMS_ALL is not set
77# CONFIG_KALLSYMS_EXTRA_PASS is not set
78CONFIG_HOTPLUG=y
79CONFIG_PRINTK=y
80CONFIG_BUG=y
81CONFIG_ELF_CORE=y
82CONFIG_BASE_FULL=y
83CONFIG_FUTEX=y
84CONFIG_EPOLL=y
85CONFIG_SIGNALFD=y
86CONFIG_TIMERFD=y
87CONFIG_EVENTFD=y
88CONFIG_SHMEM=y
89CONFIG_AIO=y
90CONFIG_HAVE_PERF_EVENTS=y
91CONFIG_PERF_USE_VMALLOC=y
92
93#
94# Kernel Performance Events And Counters
95#
96# CONFIG_PERF_EVENTS is not set
97# CONFIG_PERF_COUNTERS is not set
98CONFIG_VM_EVENT_COUNTERS=y
99CONFIG_PCI_QUIRKS=y
100CONFIG_COMPAT_BRK=y
101CONFIG_SLAB=y 8CONFIG_SLAB=y
102# CONFIG_SLUB is not set
103# CONFIG_SLOB is not set
104# CONFIG_PROFILING is not set
105CONFIG_HAVE_OPROFILE=y
106CONFIG_HAVE_ARCH_TRACEHOOK=y
107CONFIG_HAVE_DMA_ATTRS=y
108CONFIG_HAVE_DMA_API_DEBUG=y
109
110#
111# GCOV-based kernel profiling
112#
113# CONFIG_SLOW_WORK is not set
114# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
115CONFIG_SLABINFO=y
116CONFIG_RT_MUTEXES=y
117CONFIG_BASE_SMALL=0
118CONFIG_MODULES=y 9CONFIG_MODULES=y
119# CONFIG_MODULE_FORCE_LOAD is not set
120CONFIG_MODULE_UNLOAD=y 10CONFIG_MODULE_UNLOAD=y
121# CONFIG_MODULE_FORCE_UNLOAD is not set
122# CONFIG_MODVERSIONS is not set
123# CONFIG_MODULE_SRCVERSION_ALL is not set
124CONFIG_BLOCK=y
125CONFIG_LBDAF=y
126# CONFIG_BLK_DEV_BSG is not set 11# CONFIG_BLK_DEV_BSG is not set
127# CONFIG_BLK_DEV_INTEGRITY is not set
128
129#
130# IO Schedulers
131#
132CONFIG_IOSCHED_NOOP=y
133CONFIG_IOSCHED_DEADLINE=y
134CONFIG_IOSCHED_CFQ=y
135# CONFIG_DEFAULT_DEADLINE is not set
136CONFIG_DEFAULT_CFQ=y
137# CONFIG_DEFAULT_NOOP is not set
138CONFIG_DEFAULT_IOSCHED="cfq"
139# CONFIG_INLINE_SPIN_TRYLOCK is not set
140# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
141# CONFIG_INLINE_SPIN_LOCK is not set
142# CONFIG_INLINE_SPIN_LOCK_BH is not set
143# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
144# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
145CONFIG_INLINE_SPIN_UNLOCK=y
146# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
147CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
148# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
149# CONFIG_INLINE_READ_TRYLOCK is not set
150# CONFIG_INLINE_READ_LOCK is not set
151# CONFIG_INLINE_READ_LOCK_BH is not set
152# CONFIG_INLINE_READ_LOCK_IRQ is not set
153# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
154CONFIG_INLINE_READ_UNLOCK=y
155# CONFIG_INLINE_READ_UNLOCK_BH is not set
156CONFIG_INLINE_READ_UNLOCK_IRQ=y
157# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
158# CONFIG_INLINE_WRITE_TRYLOCK is not set
159# CONFIG_INLINE_WRITE_LOCK is not set
160# CONFIG_INLINE_WRITE_LOCK_BH is not set
161# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
162# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
163CONFIG_INLINE_WRITE_UNLOCK=y
164# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
165CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
166# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
167# CONFIG_MUTEX_SPIN_ON_OWNER is not set
168# CONFIG_FREEZER is not set
169
170#
171# Processor type and features
172#
173# CONFIG_SMP is not set
174# CONFIG_HZ_100 is not set
175CONFIG_HZ_250=y
176# CONFIG_HZ_300 is not set
177# CONFIG_HZ_1000 is not set
178CONFIG_HZ=250
179# CONFIG_SCHED_HRTICK is not set
180CONFIG_RWSEM_GENERIC_SPINLOCK=y
181CONFIG_GENERIC_FIND_NEXT_BIT=y
182CONFIG_GENERIC_HWEIGHT=y
183CONFIG_GENERIC_CALIBRATE_DELAY=y
184CONFIG_ARCH_MAY_HAVE_PC_FDC=y
185CONFIG_EMULATED_CMPXCHG=y
186CONFIG_SELECT_MEMORY_MODEL=y
187CONFIG_FLATMEM_MANUAL=y
188# CONFIG_DISCONTIGMEM_MANUAL is not set
189# CONFIG_SPARSEMEM_MANUAL is not set
190CONFIG_FLATMEM=y
191CONFIG_FLAT_NODE_MEM_MAP=y
192CONFIG_PAGEFLAGS_EXTENDED=y
193CONFIG_SPLIT_PTLOCK_CPUS=4
194# CONFIG_PHYS_ADDR_T_64BIT is not set
195CONFIG_ZONE_DMA_FLAG=1
196CONFIG_BOUNCE=y
197# CONFIG_KSM is not set
198CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
199CONFIG_SUN_PM=y
200# CONFIG_SPARC_LED is not set
201CONFIG_SERIAL_CONSOLE=y
202# CONFIG_SPARC_LEON is not set
203
204#
205# Bus options (PCI etc.)
206#
207CONFIG_SBUS=y
208CONFIG_SBUSCHAR=y
209CONFIG_PCI=y 12CONFIG_PCI=y
210CONFIG_PCI_SYSCALL=y
211# CONFIG_ARCH_SUPPORTS_MSI is not set
212# CONFIG_PCI_DEBUG is not set
213# CONFIG_PCI_STUB is not set
214# CONFIG_PCI_IOV is not set
215# CONFIG_PCCARD is not set
216CONFIG_SUN_OPENPROMFS=m 13CONFIG_SUN_OPENPROMFS=m
217CONFIG_SPARC32_PCI=y
218
219#
220# Executable file formats
221#
222CONFIG_BINFMT_ELF=y
223# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
224# CONFIG_HAVE_AOUT is not set
225CONFIG_BINFMT_MISC=m 14CONFIG_BINFMT_MISC=m
226CONFIG_NET=y 15CONFIG_NET=y
227
228#
229# Networking options
230#
231CONFIG_PACKET=y 16CONFIG_PACKET=y
232CONFIG_UNIX=y 17CONFIG_UNIX=y
233CONFIG_XFRM=y
234CONFIG_XFRM_USER=m 18CONFIG_XFRM_USER=m
235# CONFIG_XFRM_SUB_POLICY is not set
236# CONFIG_XFRM_MIGRATE is not set
237# CONFIG_XFRM_STATISTICS is not set
238CONFIG_XFRM_IPCOMP=y
239CONFIG_NET_KEY=m 19CONFIG_NET_KEY=m
240# CONFIG_NET_KEY_MIGRATE is not set
241CONFIG_INET=y 20CONFIG_INET=y
242# CONFIG_IP_MULTICAST is not set
243# CONFIG_IP_ADVANCED_ROUTER is not set
244CONFIG_IP_FIB_HASH=y
245CONFIG_IP_PNP=y 21CONFIG_IP_PNP=y
246CONFIG_IP_PNP_DHCP=y 22CONFIG_IP_PNP_DHCP=y
247# CONFIG_IP_PNP_BOOTP is not set
248# CONFIG_IP_PNP_RARP is not set
249# CONFIG_NET_IPIP is not set
250# CONFIG_NET_IPGRE is not set
251# CONFIG_ARPD is not set
252# CONFIG_SYN_COOKIES is not set
253CONFIG_INET_AH=y 23CONFIG_INET_AH=y
254CONFIG_INET_ESP=y 24CONFIG_INET_ESP=y
255CONFIG_INET_IPCOMP=y 25CONFIG_INET_IPCOMP=y
256CONFIG_INET_XFRM_TUNNEL=y
257CONFIG_INET_TUNNEL=y
258CONFIG_INET_XFRM_MODE_TRANSPORT=y
259CONFIG_INET_XFRM_MODE_TUNNEL=y
260CONFIG_INET_XFRM_MODE_BEET=y
261# CONFIG_INET_LRO is not set 26# CONFIG_INET_LRO is not set
262CONFIG_INET_DIAG=y
263CONFIG_INET_TCP_DIAG=y
264# CONFIG_TCP_CONG_ADVANCED is not set
265CONFIG_TCP_CONG_CUBIC=y
266CONFIG_DEFAULT_TCP_CONG="cubic"
267# CONFIG_TCP_MD5SIG is not set
268CONFIG_IPV6=m
269CONFIG_IPV6_PRIVACY=y 27CONFIG_IPV6_PRIVACY=y
270# CONFIG_IPV6_ROUTER_PREF is not set
271# CONFIG_IPV6_OPTIMISTIC_DAD is not set
272CONFIG_INET6_AH=m 28CONFIG_INET6_AH=m
273CONFIG_INET6_ESP=m 29CONFIG_INET6_ESP=m
274CONFIG_INET6_IPCOMP=m 30CONFIG_INET6_IPCOMP=m
275# CONFIG_IPV6_MIP6 is not set
276CONFIG_INET6_XFRM_TUNNEL=m
277CONFIG_INET6_TUNNEL=m
278CONFIG_INET6_XFRM_MODE_TRANSPORT=m
279CONFIG_INET6_XFRM_MODE_TUNNEL=m
280CONFIG_INET6_XFRM_MODE_BEET=m
281# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
282CONFIG_IPV6_SIT=m
283# CONFIG_IPV6_SIT_6RD is not set
284CONFIG_IPV6_NDISC_NODETYPE=y
285CONFIG_IPV6_TUNNEL=m 31CONFIG_IPV6_TUNNEL=m
286# CONFIG_IPV6_MULTIPLE_TABLES is not set
287# CONFIG_IPV6_MROUTE is not set
288# CONFIG_NETWORK_SECMARK is not set
289# CONFIG_NETFILTER is not set
290# CONFIG_IP_DCCP is not set
291# CONFIG_IP_SCTP is not set
292# CONFIG_RDS is not set
293# CONFIG_TIPC is not set
294# CONFIG_ATM is not set
295# CONFIG_BRIDGE is not set
296# CONFIG_NET_DSA is not set
297# CONFIG_VLAN_8021Q is not set
298# CONFIG_DECNET is not set
299# CONFIG_LLC2 is not set
300# CONFIG_IPX is not set
301# CONFIG_ATALK is not set
302# CONFIG_X25 is not set
303# CONFIG_LAPB is not set
304# CONFIG_ECONET is not set
305# CONFIG_WAN_ROUTER is not set
306# CONFIG_PHONET is not set
307# CONFIG_IEEE802154 is not set
308# CONFIG_NET_SCHED is not set
309# CONFIG_DCB is not set
310
311#
312# Network testing
313#
314CONFIG_NET_PKTGEN=m 32CONFIG_NET_PKTGEN=m
315# CONFIG_HAMRADIO is not set
316# CONFIG_CAN is not set
317# CONFIG_IRDA is not set
318# CONFIG_BT is not set
319# CONFIG_AF_RXRPC is not set
320CONFIG_WIRELESS=y
321# CONFIG_CFG80211 is not set
322# CONFIG_LIB80211 is not set
323
324#
325# CFG80211 needs to be enabled for MAC80211
326#
327# CONFIG_WIMAX is not set
328# CONFIG_RFKILL is not set
329# CONFIG_NET_9P is not set
330
331#
332# Device Drivers
333#
334
335#
336# Generic Driver Options
337#
338CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 33CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
339CONFIG_STANDALONE=y
340CONFIG_PREVENT_FIRMWARE_BUILD=y
341CONFIG_FW_LOADER=y
342CONFIG_FIRMWARE_IN_KERNEL=y
343CONFIG_EXTRA_FIRMWARE=""
344# CONFIG_DEBUG_DRIVER is not set
345# CONFIG_DEBUG_DEVRES is not set
346# CONFIG_SYS_HYPERVISOR is not set
347# CONFIG_CONNECTOR is not set
348# CONFIG_MTD is not set
349CONFIG_OF_DEVICE=y
350# CONFIG_PARPORT is not set
351CONFIG_BLK_DEV=y
352# CONFIG_BLK_DEV_FD is not set
353# CONFIG_BLK_CPQ_CISS_DA is not set
354# CONFIG_BLK_DEV_DAC960 is not set
355# CONFIG_BLK_DEV_UMEM is not set
356# CONFIG_BLK_DEV_COW_COMMON is not set
357CONFIG_BLK_DEV_LOOP=m 34CONFIG_BLK_DEV_LOOP=m
358CONFIG_BLK_DEV_CRYPTOLOOP=m 35CONFIG_BLK_DEV_CRYPTOLOOP=m
359
360#
361# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
362#
363# CONFIG_BLK_DEV_NBD is not set
364# CONFIG_BLK_DEV_SX8 is not set
365CONFIG_BLK_DEV_RAM=y 36CONFIG_BLK_DEV_RAM=y
366CONFIG_BLK_DEV_RAM_COUNT=16
367CONFIG_BLK_DEV_RAM_SIZE=4096
368# CONFIG_BLK_DEV_XIP is not set
369# CONFIG_CDROM_PKTCDVD is not set
370# CONFIG_ATA_OVER_ETH is not set
371# CONFIG_BLK_DEV_HD is not set
372CONFIG_MISC_DEVICES=y
373# CONFIG_PHANTOM is not set
374# CONFIG_SGI_IOC4 is not set
375# CONFIG_TIFM_CORE is not set
376# CONFIG_ENCLOSURE_SERVICES is not set
377# CONFIG_HP_ILO is not set
378# CONFIG_TI_DAC7512 is not set
379# CONFIG_C2PORT is not set
380
381#
382# EEPROM support
383#
384# CONFIG_EEPROM_AT25 is not set
385# CONFIG_EEPROM_93CX6 is not set
386# CONFIG_CB710_CORE is not set
387CONFIG_HAVE_IDE=y
388# CONFIG_IDE is not set
389
390#
391# SCSI device support
392#
393# CONFIG_RAID_ATTRS is not set
394CONFIG_SCSI=y 37CONFIG_SCSI=y
395CONFIG_SCSI_DMA=y
396# CONFIG_SCSI_TGT is not set
397# CONFIG_SCSI_NETLINK is not set
398CONFIG_SCSI_PROC_FS=y
399
400#
401# SCSI support type (disk, tape, CD-ROM)
402#
403CONFIG_BLK_DEV_SD=y 38CONFIG_BLK_DEV_SD=y
404# CONFIG_CHR_DEV_ST is not set
405# CONFIG_CHR_DEV_OSST is not set
406CONFIG_BLK_DEV_SR=m 39CONFIG_BLK_DEV_SR=m
407# CONFIG_BLK_DEV_SR_VENDOR is not set
408CONFIG_CHR_DEV_SG=m 40CONFIG_CHR_DEV_SG=m
409# CONFIG_CHR_DEV_SCH is not set
410# CONFIG_SCSI_MULTI_LUN is not set
411# CONFIG_SCSI_CONSTANTS is not set
412# CONFIG_SCSI_LOGGING is not set
413# CONFIG_SCSI_SCAN_ASYNC is not set
414CONFIG_SCSI_WAIT_SCAN=m
415
416#
417# SCSI Transports
418#
419CONFIG_SCSI_SPI_ATTRS=y
420# CONFIG_SCSI_FC_ATTRS is not set
421# CONFIG_SCSI_ISCSI_ATTRS is not set
422# CONFIG_SCSI_SAS_LIBSAS is not set
423# CONFIG_SCSI_SRP_ATTRS is not set
424CONFIG_SCSI_LOWLEVEL=y
425# CONFIG_ISCSI_TCP is not set
426# CONFIG_SCSI_CXGB3_ISCSI is not set
427# CONFIG_SCSI_BNX2_ISCSI is not set
428# CONFIG_BE2ISCSI is not set
429# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
430# CONFIG_SCSI_HPSA is not set
431# CONFIG_SCSI_3W_9XXX is not set
432# CONFIG_SCSI_3W_SAS is not set
433# CONFIG_SCSI_ACARD is not set
434# CONFIG_SCSI_AACRAID is not set
435# CONFIG_SCSI_AIC7XXX is not set
436# CONFIG_SCSI_AIC7XXX_OLD is not set
437# CONFIG_SCSI_AIC79XX is not set
438# CONFIG_SCSI_AIC94XX is not set
439# CONFIG_SCSI_MVSAS is not set
440# CONFIG_SCSI_ARCMSR is not set
441# CONFIG_MEGARAID_NEWGEN is not set
442# CONFIG_MEGARAID_LEGACY is not set
443# CONFIG_MEGARAID_SAS is not set
444# CONFIG_SCSI_MPT2SAS is not set
445# CONFIG_SCSI_HPTIOP is not set
446# CONFIG_LIBFC is not set
447# CONFIG_LIBFCOE is not set
448# CONFIG_FCOE is not set
449# CONFIG_SCSI_DMX3191D is not set
450# CONFIG_SCSI_FUTURE_DOMAIN is not set
451# CONFIG_SCSI_IPS is not set
452# CONFIG_SCSI_INITIO is not set
453# CONFIG_SCSI_INIA100 is not set
454# CONFIG_SCSI_STEX is not set
455# CONFIG_SCSI_SYM53C8XX_2 is not set
456# CONFIG_SCSI_QLOGIC_1280 is not set
457CONFIG_SCSI_QLOGICPTI=m 41CONFIG_SCSI_QLOGICPTI=m
458# CONFIG_SCSI_QLA_FC is not set
459# CONFIG_SCSI_QLA_ISCSI is not set
460# CONFIG_SCSI_LPFC is not set
461# CONFIG_SCSI_DC395x is not set
462# CONFIG_SCSI_DC390T is not set
463# CONFIG_SCSI_NSP32 is not set
464# CONFIG_SCSI_DEBUG is not set
465CONFIG_SCSI_SUNESP=y 42CONFIG_SCSI_SUNESP=y
466# CONFIG_SCSI_PMCRAID is not set
467# CONFIG_SCSI_PM8001 is not set
468# CONFIG_SCSI_SRP is not set
469# CONFIG_SCSI_BFA_FC is not set
470# CONFIG_SCSI_DH is not set
471# CONFIG_SCSI_OSD_INITIATOR is not set
472# CONFIG_ATA is not set
473# CONFIG_MD is not set
474# CONFIG_FUSION is not set
475
476#
477# IEEE 1394 (FireWire) support
478#
479
480#
481# You can enable one or both FireWire driver stacks.
482#
483
484#
485# The newer stack is recommended.
486#
487# CONFIG_FIREWIRE is not set
488# CONFIG_IEEE1394 is not set
489# CONFIG_I2O is not set
490CONFIG_NETDEVICES=y 43CONFIG_NETDEVICES=y
491CONFIG_DUMMY=m 44CONFIG_DUMMY=m
492# CONFIG_BONDING is not set
493# CONFIG_MACVLAN is not set
494# CONFIG_EQUALIZER is not set
495# CONFIG_TUN is not set
496# CONFIG_VETH is not set
497# CONFIG_ARCNET is not set
498# CONFIG_PHYLIB is not set
499CONFIG_NET_ETHERNET=y 45CONFIG_NET_ETHERNET=y
500CONFIG_MII=m 46CONFIG_MII=m
501CONFIG_SUNLANCE=y 47CONFIG_SUNLANCE=y
502CONFIG_HAPPYMEAL=m 48CONFIG_HAPPYMEAL=m
503CONFIG_SUNBMAC=m 49CONFIG_SUNBMAC=m
504CONFIG_SUNQE=m 50CONFIG_SUNQE=m
505# CONFIG_SUNGEM is not set
506# CONFIG_CASSINI is not set
507# CONFIG_NET_VENDOR_3COM is not set
508# CONFIG_ENC28J60 is not set
509# CONFIG_ETHOC is not set
510# CONFIG_GRETH is not set
511# CONFIG_DNET is not set
512# CONFIG_NET_TULIP is not set
513# CONFIG_HP100 is not set
514# CONFIG_IBM_NEW_EMAC_ZMII is not set
515# CONFIG_IBM_NEW_EMAC_RGMII is not set
516# CONFIG_IBM_NEW_EMAC_TAH is not set
517# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
518# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
519# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
520# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
521# CONFIG_NET_PCI is not set
522# CONFIG_B44 is not set
523# CONFIG_KS8842 is not set
524# CONFIG_KS8851 is not set
525# CONFIG_KS8851_MLL is not set
526# CONFIG_ATL2 is not set
527CONFIG_NETDEV_1000=y
528# CONFIG_ACENIC is not set
529# CONFIG_DL2K is not set
530# CONFIG_E1000 is not set
531# CONFIG_IP1000 is not set
532# CONFIG_IGB is not set
533# CONFIG_IGBVF is not set
534# CONFIG_MYRI_SBUS is not set
535# CONFIG_NS83820 is not set
536# CONFIG_HAMACHI is not set
537# CONFIG_YELLOWFIN is not set
538# CONFIG_R8169 is not set
539# CONFIG_SIS190 is not set
540# CONFIG_SKGE is not set
541# CONFIG_SKY2 is not set
542# CONFIG_VIA_VELOCITY is not set
543# CONFIG_TIGON3 is not set
544# CONFIG_BNX2 is not set
545# CONFIG_CNIC is not set
546# CONFIG_QLA3XXX is not set
547# CONFIG_ATL1 is not set
548# CONFIG_ATL1E is not set
549# CONFIG_ATL1C is not set
550# CONFIG_JME is not set
551CONFIG_NETDEV_10000=y
552# CONFIG_CHELSIO_T1 is not set
553CONFIG_CHELSIO_T3_DEPENDS=y
554# CONFIG_CHELSIO_T3 is not set
555# CONFIG_ENIC is not set
556# CONFIG_IXGBE is not set
557# CONFIG_IXGB is not set
558# CONFIG_S2IO is not set
559# CONFIG_VXGE is not set
560# CONFIG_MYRI10GE is not set
561# CONFIG_NETXEN_NIC is not set
562# CONFIG_NIU is not set
563# CONFIG_MLX4_EN is not set
564# CONFIG_MLX4_CORE is not set
565# CONFIG_TEHUTI is not set
566# CONFIG_BNX2X is not set
567# CONFIG_QLCNIC is not set
568# CONFIG_QLGE is not set
569# CONFIG_SFC is not set
570# CONFIG_BE2NET is not set
571# CONFIG_TR is not set
572# CONFIG_WLAN is not set 51# CONFIG_WLAN is not set
573
574#
575# Enable WiMAX (Networking options) to see the WiMAX drivers
576#
577# CONFIG_WAN is not set
578# CONFIG_FDDI is not set
579# CONFIG_HIPPI is not set
580# CONFIG_PPP is not set
581# CONFIG_SLIP is not set
582# CONFIG_NET_FC is not set
583# CONFIG_NETCONSOLE is not set
584# CONFIG_NETPOLL is not set
585# CONFIG_NET_POLL_CONTROLLER is not set
586# CONFIG_VMXNET3 is not set
587# CONFIG_ISDN is not set
588# CONFIG_PHONE is not set
589
590#
591# Input device support
592#
593CONFIG_INPUT=y
594# CONFIG_INPUT_FF_MEMLESS is not set
595# CONFIG_INPUT_POLLDEV is not set
596# CONFIG_INPUT_SPARSEKMAP is not set
597
598#
599# Userland interfaces
600#
601CONFIG_INPUT_MOUSEDEV=y
602CONFIG_INPUT_MOUSEDEV_PSAUX=y
603CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
604CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
605CONFIG_INPUT_JOYDEV=m 52CONFIG_INPUT_JOYDEV=m
606CONFIG_INPUT_EVDEV=m 53CONFIG_INPUT_EVDEV=m
607CONFIG_INPUT_EVBUG=m 54CONFIG_INPUT_EVBUG=m
608
609#
610# Input Device Drivers
611#
612CONFIG_INPUT_KEYBOARD=y
613CONFIG_KEYBOARD_ATKBD=m 55CONFIG_KEYBOARD_ATKBD=m
614# CONFIG_KEYBOARD_LKKBD is not set
615# CONFIG_KEYBOARD_NEWTON is not set
616# CONFIG_KEYBOARD_OPENCORES is not set
617# CONFIG_KEYBOARD_STOWAWAY is not set
618CONFIG_KEYBOARD_SUNKBD=m 56CONFIG_KEYBOARD_SUNKBD=m
619# CONFIG_KEYBOARD_XTKBD is not set
620CONFIG_INPUT_MOUSE=y
621CONFIG_MOUSE_PS2=m 57CONFIG_MOUSE_PS2=m
622CONFIG_MOUSE_PS2_ALPS=y
623CONFIG_MOUSE_PS2_LOGIPS2PP=y
624CONFIG_MOUSE_PS2_SYNAPTICS=y
625CONFIG_MOUSE_PS2_TRACKPOINT=y
626# CONFIG_MOUSE_PS2_ELANTECH is not set
627# CONFIG_MOUSE_PS2_SENTELIC is not set
628# CONFIG_MOUSE_PS2_TOUCHKIT is not set
629CONFIG_MOUSE_SERIAL=m 58CONFIG_MOUSE_SERIAL=m
630# CONFIG_MOUSE_APPLETOUCH is not set
631# CONFIG_MOUSE_BCM5974 is not set
632# CONFIG_MOUSE_VSXXXAA is not set
633# CONFIG_INPUT_JOYSTICK is not set
634# CONFIG_INPUT_TABLET is not set
635# CONFIG_INPUT_TOUCHSCREEN is not set
636# CONFIG_INPUT_MISC is not set
637
638#
639# Hardware I/O ports
640#
641CONFIG_SERIO=m 59CONFIG_SERIO=m
642# CONFIG_SERIO_I8042 is not set 60# CONFIG_SERIO_I8042 is not set
643CONFIG_SERIO_SERPORT=m
644# CONFIG_SERIO_PCIPS2 is not set
645CONFIG_SERIO_LIBPS2=m
646# CONFIG_SERIO_RAW is not set
647# CONFIG_SERIO_ALTERA_PS2 is not set
648# CONFIG_GAMEPORT is not set
649
650#
651# Character devices
652#
653CONFIG_VT=y
654CONFIG_CONSOLE_TRANSLATIONS=y
655CONFIG_VT_CONSOLE=y
656CONFIG_HW_CONSOLE=y
657# CONFIG_VT_HW_CONSOLE_BINDING is not set
658CONFIG_DEVKMEM=y
659# CONFIG_SERIAL_NONSTANDARD is not set
660# CONFIG_NOZOMI is not set
661
662#
663# Serial drivers
664#
665# CONFIG_SERIAL_8250 is not set
666
667#
668# Non-8250 serial port support
669#
670# CONFIG_SERIAL_MAX3100 is not set
671CONFIG_SERIAL_SUNCORE=y
672CONFIG_SERIAL_SUNZILOG=y 61CONFIG_SERIAL_SUNZILOG=y
673CONFIG_SERIAL_SUNZILOG_CONSOLE=y 62CONFIG_SERIAL_SUNZILOG_CONSOLE=y
674CONFIG_SERIAL_SUNSU=y 63CONFIG_SERIAL_SUNSU=y
675CONFIG_SERIAL_SUNSU_CONSOLE=y 64CONFIG_SERIAL_SUNSU_CONSOLE=y
676# CONFIG_SERIAL_SUNSAB is not set
677CONFIG_SERIAL_CORE=y
678CONFIG_SERIAL_CORE_CONSOLE=y
679CONFIG_CONSOLE_POLL=y
680# CONFIG_SERIAL_JSM is not set
681# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
682CONFIG_UNIX98_PTYS=y
683# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
684CONFIG_LEGACY_PTYS=y
685CONFIG_LEGACY_PTY_COUNT=256
686# CONFIG_IPMI_HANDLER is not set
687CONFIG_HW_RANDOM=m
688# CONFIG_HW_RANDOM_TIMERIOMEM is not set
689# CONFIG_R3964 is not set
690# CONFIG_APPLICOM is not set
691# CONFIG_RAW_DRIVER is not set
692# CONFIG_TCG_TPM is not set
693CONFIG_DEVPORT=y
694# CONFIG_I2C is not set
695CONFIG_SPI=y 65CONFIG_SPI=y
696# CONFIG_SPI_DEBUG is not set
697CONFIG_SPI_MASTER=y
698
699#
700# SPI Master Controller Drivers
701#
702CONFIG_SPI_BITBANG=m
703CONFIG_SPI_XILINX=m 66CONFIG_SPI_XILINX=m
704CONFIG_SPI_XILINX_PLTFM=m 67CONFIG_SPI_XILINX_PLTFM=m
705# CONFIG_SPI_DESIGNWARE is not set
706
707#
708# SPI Protocol Masters
709#
710# CONFIG_SPI_SPIDEV is not set
711# CONFIG_SPI_TLE62X0 is not set
712
713#
714# PPS support
715#
716# CONFIG_PPS is not set
717CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
718# CONFIG_GPIOLIB is not set
719# CONFIG_W1 is not set
720# CONFIG_POWER_SUPPLY is not set
721CONFIG_HWMON=y
722# CONFIG_HWMON_VID is not set
723# CONFIG_HWMON_DEBUG_CHIP is not set
724
725#
726# Native drivers
727#
728# CONFIG_SENSORS_ADCXX is not set
729# CONFIG_SENSORS_I5K_AMB is not set
730# CONFIG_SENSORS_F71805F is not set
731# CONFIG_SENSORS_F71882FG is not set
732# CONFIG_SENSORS_IT87 is not set
733# CONFIG_SENSORS_LM70 is not set
734# CONFIG_SENSORS_MAX1111 is not set
735# CONFIG_SENSORS_PC87360 is not set
736# CONFIG_SENSORS_PC87427 is not set
737# CONFIG_SENSORS_SIS5595 is not set
738# CONFIG_SENSORS_SMSC47M1 is not set
739# CONFIG_SENSORS_SMSC47B397 is not set
740# CONFIG_SENSORS_VIA686A is not set
741# CONFIG_SENSORS_VT1211 is not set
742# CONFIG_SENSORS_VT8231 is not set
743# CONFIG_SENSORS_W83627HF is not set
744# CONFIG_SENSORS_W83627EHF is not set
745# CONFIG_SENSORS_LIS3_SPI is not set
746# CONFIG_THERMAL is not set
747# CONFIG_WATCHDOG is not set
748CONFIG_SSB_POSSIBLE=y
749
750#
751# Sonics Silicon Backplane
752#
753# CONFIG_SSB is not set
754
755#
756# Multifunction device drivers
757#
758# CONFIG_MFD_CORE is not set
759# CONFIG_MFD_SM501 is not set
760# CONFIG_HTC_PASIC3 is not set
761# CONFIG_MFD_TMIO is not set
762# CONFIG_MFD_MC13783 is not set
763# CONFIG_AB4500_CORE is not set
764# CONFIG_REGULATOR is not set
765# CONFIG_MEDIA_SUPPORT is not set
766
767#
768# Graphics support
769#
770CONFIG_VGA_ARB=y
771CONFIG_VGA_ARB_MAX_GPUS=16
772# CONFIG_VGASTATE is not set
773# CONFIG_VIDEO_OUTPUT_CONTROL is not set
774# CONFIG_FB is not set
775# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
776
777#
778# Display device support
779#
780# CONFIG_DISPLAY_SUPPORT is not set
781
782#
783# Console display driver support
784#
785CONFIG_DUMMY_CONSOLE=y
786# CONFIG_SOUND is not set
787CONFIG_HID_SUPPORT=y
788CONFIG_HID=y
789# CONFIG_HIDRAW is not set
790# CONFIG_HID_PID is not set
791
792#
793# Special HID drivers
794#
795CONFIG_USB_SUPPORT=y
796CONFIG_USB_ARCH_HAS_HCD=y
797CONFIG_USB_ARCH_HAS_OHCI=y
798CONFIG_USB_ARCH_HAS_EHCI=y
799# CONFIG_USB is not set
800
801#
802# Enable Host or Gadget support to see Inventra options
803#
804
805#
806# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
807#
808# CONFIG_USB_GADGET is not set
809
810#
811# OTG and related infrastructure
812#
813# CONFIG_UWB is not set
814# CONFIG_MMC is not set
815# CONFIG_MEMSTICK is not set
816# CONFIG_NEW_LEDS is not set
817# CONFIG_ACCESSIBILITY is not set
818# CONFIG_INFINIBAND is not set
819CONFIG_RTC_LIB=y
820CONFIG_RTC_CLASS=y
821CONFIG_RTC_HCTOSYS=y
822CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
823# CONFIG_RTC_DEBUG is not set
824
825#
826# RTC interfaces
827#
828CONFIG_RTC_INTF_SYSFS=y
829CONFIG_RTC_INTF_PROC=y
830CONFIG_RTC_INTF_DEV=y
831# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
832# CONFIG_RTC_DRV_TEST is not set
833
834#
835# SPI RTC drivers
836#
837# CONFIG_RTC_DRV_M41T94 is not set
838# CONFIG_RTC_DRV_DS1305 is not set
839# CONFIG_RTC_DRV_DS1390 is not set
840# CONFIG_RTC_DRV_MAX6902 is not set
841# CONFIG_RTC_DRV_R9701 is not set
842# CONFIG_RTC_DRV_RS5C348 is not set
843# CONFIG_RTC_DRV_DS3234 is not set
844# CONFIG_RTC_DRV_PCF2123 is not set
845
846#
847# Platform RTC drivers
848#
849# CONFIG_RTC_DRV_DS1286 is not set
850# CONFIG_RTC_DRV_DS1511 is not set
851# CONFIG_RTC_DRV_DS1553 is not set
852# CONFIG_RTC_DRV_DS1742 is not set
853# CONFIG_RTC_DRV_STK17TA8 is not set
854# CONFIG_RTC_DRV_M48T86 is not set
855# CONFIG_RTC_DRV_M48T35 is not set
856CONFIG_RTC_DRV_M48T59=y
857# CONFIG_RTC_DRV_MSM6242 is not set
858# CONFIG_RTC_DRV_BQ4802 is not set
859# CONFIG_RTC_DRV_RP5C01 is not set
860# CONFIG_RTC_DRV_V3020 is not set
861
862#
863# on-CPU RTC drivers
864#
865# CONFIG_DMADEVICES is not set
866# CONFIG_AUXDISPLAY is not set
867# CONFIG_UIO is not set
868
869#
870# TI VLYNQ
871#
872# CONFIG_STAGING is not set
873
874#
875# Misc Linux/SPARC drivers
876#
877CONFIG_SUN_OPENPROMIO=m 68CONFIG_SUN_OPENPROMIO=m
878# CONFIG_TADPOLE_TS102_UCTRL is not set
879# CONFIG_SUN_JSFLASH is not set
880
881#
882# File systems
883#
884CONFIG_EXT2_FS=y 69CONFIG_EXT2_FS=y
885CONFIG_EXT2_FS_XATTR=y 70CONFIG_EXT2_FS_XATTR=y
886CONFIG_EXT2_FS_POSIX_ACL=y 71CONFIG_EXT2_FS_POSIX_ACL=y
887CONFIG_EXT2_FS_SECURITY=y 72CONFIG_EXT2_FS_SECURITY=y
888# CONFIG_EXT2_FS_XIP is not set
889# CONFIG_EXT3_FS is not set
890# CONFIG_EXT4_FS is not set
891CONFIG_FS_MBCACHE=y
892# CONFIG_REISERFS_FS is not set
893# CONFIG_JFS_FS is not set
894CONFIG_FS_POSIX_ACL=y
895# CONFIG_XFS_FS is not set
896# CONFIG_GFS2_FS is not set
897# CONFIG_OCFS2_FS is not set
898# CONFIG_BTRFS_FS is not set
899# CONFIG_NILFS2_FS is not set
900CONFIG_FILE_LOCKING=y
901CONFIG_FSNOTIFY=y
902CONFIG_DNOTIFY=y
903CONFIG_INOTIFY=y
904CONFIG_INOTIFY_USER=y
905# CONFIG_QUOTA is not set
906CONFIG_AUTOFS_FS=m 73CONFIG_AUTOFS_FS=m
907CONFIG_AUTOFS4_FS=m 74CONFIG_AUTOFS4_FS=m
908# CONFIG_FUSE_FS is not set
909
910#
911# Caches
912#
913# CONFIG_FSCACHE is not set
914
915#
916# CD-ROM/DVD Filesystems
917#
918CONFIG_ISO9660_FS=m 75CONFIG_ISO9660_FS=m
919# CONFIG_JOLIET is not set
920# CONFIG_ZISOFS is not set
921# CONFIG_UDF_FS is not set
922
923#
924# DOS/FAT/NT Filesystems
925#
926# CONFIG_MSDOS_FS is not set
927# CONFIG_VFAT_FS is not set
928# CONFIG_NTFS_FS is not set
929
930#
931# Pseudo filesystems
932#
933CONFIG_PROC_FS=y
934CONFIG_PROC_KCORE=y 76CONFIG_PROC_KCORE=y
935CONFIG_PROC_SYSCTL=y
936CONFIG_PROC_PAGE_MONITOR=y
937CONFIG_SYSFS=y
938# CONFIG_TMPFS is not set
939# CONFIG_HUGETLB_PAGE is not set
940# CONFIG_CONFIGFS_FS is not set
941CONFIG_MISC_FILESYSTEMS=y
942# CONFIG_ADFS_FS is not set
943# CONFIG_AFFS_FS is not set
944# CONFIG_HFS_FS is not set
945# CONFIG_HFSPLUS_FS is not set
946# CONFIG_BEFS_FS is not set
947# CONFIG_BFS_FS is not set
948# CONFIG_EFS_FS is not set
949# CONFIG_CRAMFS is not set
950# CONFIG_SQUASHFS is not set
951# CONFIG_VXFS_FS is not set
952# CONFIG_MINIX_FS is not set
953# CONFIG_OMFS_FS is not set
954# CONFIG_HPFS_FS is not set
955# CONFIG_QNX4FS_FS is not set
956CONFIG_ROMFS_FS=m 77CONFIG_ROMFS_FS=m
957CONFIG_ROMFS_BACKED_BY_BLOCK=y
958# CONFIG_ROMFS_BACKED_BY_MTD is not set
959# CONFIG_ROMFS_BACKED_BY_BOTH is not set
960CONFIG_ROMFS_ON_BLOCK=y
961# CONFIG_SYSV_FS is not set
962# CONFIG_UFS_FS is not set
963CONFIG_NETWORK_FILESYSTEMS=y
964CONFIG_NFS_FS=y 78CONFIG_NFS_FS=y
965# CONFIG_NFS_V3 is not set
966# CONFIG_NFS_V4 is not set
967CONFIG_ROOT_NFS=y 79CONFIG_ROOT_NFS=y
968# CONFIG_NFSD is not set
969CONFIG_LOCKD=y
970CONFIG_NFS_COMMON=y
971CONFIG_SUNRPC=y
972CONFIG_SUNRPC_GSS=m
973CONFIG_RPCSEC_GSS_KRB5=m 80CONFIG_RPCSEC_GSS_KRB5=m
974# CONFIG_RPCSEC_GSS_SPKM3 is not set
975# CONFIG_SMB_FS is not set
976# CONFIG_CIFS is not set
977# CONFIG_NCP_FS is not set
978# CONFIG_CODA_FS is not set
979# CONFIG_AFS_FS is not set
980
981#
982# Partition Types
983#
984# CONFIG_PARTITION_ADVANCED is not set
985CONFIG_MSDOS_PARTITION=y
986CONFIG_SUN_PARTITION=y
987CONFIG_NLS=y 81CONFIG_NLS=y
988CONFIG_NLS_DEFAULT="iso8859-1"
989# CONFIG_NLS_CODEPAGE_437 is not set
990# CONFIG_NLS_CODEPAGE_737 is not set
991# CONFIG_NLS_CODEPAGE_775 is not set
992# CONFIG_NLS_CODEPAGE_850 is not set
993# CONFIG_NLS_CODEPAGE_852 is not set
994# CONFIG_NLS_CODEPAGE_855 is not set
995# CONFIG_NLS_CODEPAGE_857 is not set
996# CONFIG_NLS_CODEPAGE_860 is not set
997# CONFIG_NLS_CODEPAGE_861 is not set
998# CONFIG_NLS_CODEPAGE_862 is not set
999# CONFIG_NLS_CODEPAGE_863 is not set
1000# CONFIG_NLS_CODEPAGE_864 is not set
1001# CONFIG_NLS_CODEPAGE_865 is not set
1002# CONFIG_NLS_CODEPAGE_866 is not set
1003# CONFIG_NLS_CODEPAGE_869 is not set
1004# CONFIG_NLS_CODEPAGE_936 is not set
1005# CONFIG_NLS_CODEPAGE_950 is not set
1006# CONFIG_NLS_CODEPAGE_932 is not set
1007# CONFIG_NLS_CODEPAGE_949 is not set
1008# CONFIG_NLS_CODEPAGE_874 is not set
1009# CONFIG_NLS_ISO8859_8 is not set
1010# CONFIG_NLS_CODEPAGE_1250 is not set
1011# CONFIG_NLS_CODEPAGE_1251 is not set
1012# CONFIG_NLS_ASCII is not set
1013# CONFIG_NLS_ISO8859_1 is not set
1014# CONFIG_NLS_ISO8859_2 is not set
1015# CONFIG_NLS_ISO8859_3 is not set
1016# CONFIG_NLS_ISO8859_4 is not set
1017# CONFIG_NLS_ISO8859_5 is not set
1018# CONFIG_NLS_ISO8859_6 is not set
1019# CONFIG_NLS_ISO8859_7 is not set
1020# CONFIG_NLS_ISO8859_9 is not set
1021# CONFIG_NLS_ISO8859_13 is not set
1022# CONFIG_NLS_ISO8859_14 is not set
1023# CONFIG_NLS_ISO8859_15 is not set
1024# CONFIG_NLS_KOI8_R is not set
1025# CONFIG_NLS_KOI8_U is not set
1026# CONFIG_NLS_UTF8 is not set
1027# CONFIG_DLM is not set
1028
1029#
1030# Kernel hacking
1031#
1032CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1033# CONFIG_PRINTK_TIME is not set
1034# CONFIG_ENABLE_WARN_DEPRECATED is not set 82# CONFIG_ENABLE_WARN_DEPRECATED is not set
1035CONFIG_ENABLE_MUST_CHECK=y
1036CONFIG_FRAME_WARN=1024
1037CONFIG_MAGIC_SYSRQ=y
1038# CONFIG_STRIP_ASM_SYMS is not set
1039# CONFIG_UNUSED_SYMBOLS is not set
1040# CONFIG_DEBUG_FS is not set
1041# CONFIG_HEADERS_CHECK is not set
1042CONFIG_DEBUG_KERNEL=y 83CONFIG_DEBUG_KERNEL=y
1043CONFIG_DETECT_SOFTLOCKUP=y
1044# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1045CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1046CONFIG_DETECT_HUNG_TASK=y 84CONFIG_DETECT_HUNG_TASK=y
1047# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1048CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1049# CONFIG_SCHED_DEBUG is not set 85# CONFIG_SCHED_DEBUG is not set
1050# CONFIG_SCHEDSTATS is not set
1051# CONFIG_TIMER_STATS is not set
1052# CONFIG_DEBUG_OBJECTS is not set
1053# CONFIG_DEBUG_SLAB is not set
1054# CONFIG_DEBUG_RT_MUTEXES is not set
1055# CONFIG_RT_MUTEX_TESTER is not set
1056# CONFIG_DEBUG_SPINLOCK is not set
1057# CONFIG_DEBUG_MUTEXES is not set
1058# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1059# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1060# CONFIG_DEBUG_KOBJECT is not set
1061# CONFIG_DEBUG_HIGHMEM is not set
1062CONFIG_DEBUG_BUGVERBOSE=y
1063# CONFIG_DEBUG_INFO is not set
1064# CONFIG_DEBUG_VM is not set
1065# CONFIG_DEBUG_WRITECOUNT is not set
1066CONFIG_DEBUG_MEMORY_INIT=y
1067# CONFIG_DEBUG_LIST is not set
1068# CONFIG_DEBUG_SG is not set
1069# CONFIG_DEBUG_NOTIFIERS is not set
1070# CONFIG_DEBUG_CREDENTIALS is not set
1071# CONFIG_BOOT_PRINTK_DELAY is not set
1072# CONFIG_RCU_TORTURE_TEST is not set
1073# CONFIG_RCU_CPU_STALL_DETECTOR is not set 86# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1074# CONFIG_BACKTRACE_SELF_TEST is not set
1075# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1076# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1077# CONFIG_FAULT_INJECTION is not set
1078# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1079# CONFIG_PAGE_POISONING is not set
1080# CONFIG_DMA_API_DEBUG is not set
1081# CONFIG_SAMPLES is not set
1082CONFIG_HAVE_ARCH_KGDB=y
1083CONFIG_KGDB=y 87CONFIG_KGDB=y
1084CONFIG_KGDB_SERIAL_CONSOLE=y
1085CONFIG_KGDB_TESTS=y 88CONFIG_KGDB_TESTS=y
1086# CONFIG_KGDB_TESTS_ON_BOOT is not set
1087# CONFIG_DEBUG_STACK_USAGE is not set
1088# CONFIG_STACK_DEBUG is not set
1089# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
1090
1091#
1092# Security options
1093#
1094# CONFIG_KEYS is not set
1095# CONFIG_SECURITY is not set
1096# CONFIG_SECURITYFS is not set
1097# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1098# CONFIG_DEFAULT_SECURITY_SMACK is not set
1099# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1100CONFIG_DEFAULT_SECURITY_DAC=y
1101CONFIG_DEFAULT_SECURITY=""
1102CONFIG_CRYPTO=y
1103
1104#
1105# Crypto core or helper
1106#
1107CONFIG_CRYPTO_ALGAPI=y
1108CONFIG_CRYPTO_ALGAPI2=y
1109CONFIG_CRYPTO_AEAD=y
1110CONFIG_CRYPTO_AEAD2=y
1111CONFIG_CRYPTO_BLKCIPHER=y
1112CONFIG_CRYPTO_BLKCIPHER2=y
1113CONFIG_CRYPTO_HASH=y
1114CONFIG_CRYPTO_HASH2=y
1115CONFIG_CRYPTO_RNG2=y
1116CONFIG_CRYPTO_PCOMP=y
1117CONFIG_CRYPTO_MANAGER=y
1118CONFIG_CRYPTO_MANAGER2=y
1119# CONFIG_CRYPTO_GF128MUL is not set
1120CONFIG_CRYPTO_NULL=m 89CONFIG_CRYPTO_NULL=m
1121CONFIG_CRYPTO_WORKQUEUE=y
1122# CONFIG_CRYPTO_CRYPTD is not set
1123CONFIG_CRYPTO_AUTHENC=y
1124# CONFIG_CRYPTO_TEST is not set
1125
1126#
1127# Authenticated Encryption with Associated Data
1128#
1129# CONFIG_CRYPTO_CCM is not set
1130# CONFIG_CRYPTO_GCM is not set
1131# CONFIG_CRYPTO_SEQIV is not set
1132
1133#
1134# Block modes
1135#
1136CONFIG_CRYPTO_CBC=y
1137# CONFIG_CRYPTO_CTR is not set
1138# CONFIG_CRYPTO_CTS is not set
1139CONFIG_CRYPTO_ECB=m 90CONFIG_CRYPTO_ECB=m
1140# CONFIG_CRYPTO_LRW is not set
1141CONFIG_CRYPTO_PCBC=m 91CONFIG_CRYPTO_PCBC=m
1142# CONFIG_CRYPTO_XTS is not set
1143
1144#
1145# Hash modes
1146#
1147CONFIG_CRYPTO_HMAC=y
1148# CONFIG_CRYPTO_XCBC is not set
1149# CONFIG_CRYPTO_VMAC is not set
1150
1151#
1152# Digest
1153#
1154CONFIG_CRYPTO_CRC32C=m
1155# CONFIG_CRYPTO_GHASH is not set
1156CONFIG_CRYPTO_MD4=y 92CONFIG_CRYPTO_MD4=y
1157CONFIG_CRYPTO_MD5=y
1158CONFIG_CRYPTO_MICHAEL_MIC=m 93CONFIG_CRYPTO_MICHAEL_MIC=m
1159# CONFIG_CRYPTO_RMD128 is not set
1160# CONFIG_CRYPTO_RMD160 is not set
1161# CONFIG_CRYPTO_RMD256 is not set
1162# CONFIG_CRYPTO_RMD320 is not set
1163CONFIG_CRYPTO_SHA1=y
1164CONFIG_CRYPTO_SHA256=m 94CONFIG_CRYPTO_SHA256=m
1165CONFIG_CRYPTO_SHA512=m 95CONFIG_CRYPTO_SHA512=m
1166# CONFIG_CRYPTO_TGR192 is not set
1167# CONFIG_CRYPTO_WP512 is not set
1168
1169#
1170# Ciphers
1171#
1172CONFIG_CRYPTO_AES=m 96CONFIG_CRYPTO_AES=m
1173# CONFIG_CRYPTO_ANUBIS is not set
1174CONFIG_CRYPTO_ARC4=m 97CONFIG_CRYPTO_ARC4=m
1175CONFIG_CRYPTO_BLOWFISH=m 98CONFIG_CRYPTO_BLOWFISH=m
1176# CONFIG_CRYPTO_CAMELLIA is not set
1177CONFIG_CRYPTO_CAST5=m 99CONFIG_CRYPTO_CAST5=m
1178CONFIG_CRYPTO_CAST6=m 100CONFIG_CRYPTO_CAST6=m
1179CONFIG_CRYPTO_DES=y
1180# CONFIG_CRYPTO_FCRYPT is not set
1181# CONFIG_CRYPTO_KHAZAD is not set
1182# CONFIG_CRYPTO_SALSA20 is not set
1183# CONFIG_CRYPTO_SEED is not set
1184CONFIG_CRYPTO_SERPENT=m 101CONFIG_CRYPTO_SERPENT=m
1185# CONFIG_CRYPTO_TEA is not set
1186CONFIG_CRYPTO_TWOFISH=m 102CONFIG_CRYPTO_TWOFISH=m
1187CONFIG_CRYPTO_TWOFISH_COMMON=m
1188
1189#
1190# Compression
1191#
1192CONFIG_CRYPTO_DEFLATE=y
1193# CONFIG_CRYPTO_ZLIB is not set
1194# CONFIG_CRYPTO_LZO is not set
1195
1196#
1197# Random Number Generation
1198#
1199# CONFIG_CRYPTO_ANSI_CPRNG is not set 103# CONFIG_CRYPTO_ANSI_CPRNG is not set
1200# CONFIG_CRYPTO_HW is not set 104# CONFIG_CRYPTO_HW is not set
1201# CONFIG_BINARY_PRINTF is not set
1202
1203#
1204# Library routines
1205#
1206CONFIG_BITREVERSE=y
1207CONFIG_GENERIC_FIND_LAST_BIT=y
1208# CONFIG_CRC_CCITT is not set
1209# CONFIG_CRC16 is not set
1210# CONFIG_CRC_T10DIF is not set
1211# CONFIG_CRC_ITU_T is not set
1212CONFIG_CRC32=y
1213# CONFIG_CRC7 is not set
1214CONFIG_LIBCRC32C=m 105CONFIG_LIBCRC32C=m
1215CONFIG_ZLIB_INFLATE=y
1216CONFIG_ZLIB_DEFLATE=y
1217CONFIG_LZO_DECOMPRESS=y
1218CONFIG_DECOMPRESS_GZIP=y
1219CONFIG_DECOMPRESS_BZIP2=y
1220CONFIG_DECOMPRESS_LZMA=y
1221CONFIG_DECOMPRESS_LZO=y
1222CONFIG_HAS_IOMEM=y
1223CONFIG_HAS_IOPORT=y
1224CONFIG_HAS_DMA=y
1225CONFIG_NLATTR=y
diff --git a/arch/sparc/configs/sparc64_defconfig b/arch/sparc/configs/sparc64_defconfig
index 1dc07a0014c1..3c1e85807403 100644
--- a/arch/sparc/configs/sparc64_defconfig
+++ b/arch/sparc/configs/sparc64_defconfig
@@ -1,305 +1,41 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.34
4# Wed May 26 21:14:01 2010
5#
6CONFIG_64BIT=y 1CONFIG_64BIT=y
7CONFIG_SPARC=y
8# CONFIG_SPARC32 is not set
9CONFIG_SPARC64=y
10CONFIG_ARCH_DEFCONFIG="arch/sparc/configs/sparc64_defconfig"
11CONFIG_BITS=64
12CONFIG_GENERIC_TIME=y
13CONFIG_GENERIC_CMOS_UPDATE=y
14CONFIG_GENERIC_CLOCKEVENTS=y
15CONFIG_IOMMU_HELPER=y
16CONFIG_QUICKLIST=y
17CONFIG_STACKTRACE_SUPPORT=y
18CONFIG_LOCKDEP_SUPPORT=y
19CONFIG_HAVE_LATENCYTOP_SUPPORT=y
20CONFIG_AUDIT_ARCH=y
21CONFIG_HAVE_SETUP_PER_CPU_AREA=y
22CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
23CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
24CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
25CONFIG_MMU=y
26CONFIG_NEED_DMA_MAP_STATE=y
27CONFIG_ARCH_NO_VIRT_TO_BUS=y
28CONFIG_OF=y
29CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
30CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
31CONFIG_CONSTRUCTORS=y
32
33#
34# General setup
35#
36CONFIG_EXPERIMENTAL=y 2CONFIG_EXPERIMENTAL=y
37CONFIG_LOCK_KERNEL=y
38CONFIG_INIT_ENV_ARG_LIMIT=32
39CONFIG_LOCALVERSION=""
40# CONFIG_LOCALVERSION_AUTO is not set 3# CONFIG_LOCALVERSION_AUTO is not set
41CONFIG_SWAP=y
42CONFIG_SYSVIPC=y 4CONFIG_SYSVIPC=y
43CONFIG_SYSVIPC_SYSCTL=y
44CONFIG_POSIX_MQUEUE=y 5CONFIG_POSIX_MQUEUE=y
45CONFIG_POSIX_MQUEUE_SYSCTL=y
46# CONFIG_BSD_PROCESS_ACCT is not set
47# CONFIG_TASKSTATS is not set
48# CONFIG_AUDIT is not set
49
50#
51# RCU Subsystem
52#
53CONFIG_TREE_RCU=y
54# CONFIG_TREE_PREEMPT_RCU is not set
55# CONFIG_TINY_RCU is not set
56# CONFIG_RCU_TRACE is not set
57CONFIG_RCU_FANOUT=64
58# CONFIG_RCU_FANOUT_EXACT is not set
59# CONFIG_RCU_FAST_NO_HZ is not set
60# CONFIG_TREE_RCU_TRACE is not set
61# CONFIG_IKCONFIG is not set
62CONFIG_LOG_BUF_SHIFT=18 6CONFIG_LOG_BUF_SHIFT=18
63# CONFIG_CGROUPS is not set
64# CONFIG_SYSFS_DEPRECATED_V2 is not set
65CONFIG_RELAY=y
66CONFIG_NAMESPACES=y
67# CONFIG_UTS_NS is not set
68# CONFIG_IPC_NS is not set
69# CONFIG_USER_NS is not set
70# CONFIG_PID_NS is not set
71# CONFIG_NET_NS is not set
72CONFIG_BLK_DEV_INITRD=y 7CONFIG_BLK_DEV_INITRD=y
73CONFIG_INITRAMFS_SOURCE=""
74CONFIG_RD_GZIP=y
75CONFIG_RD_BZIP2=y
76CONFIG_RD_LZMA=y
77CONFIG_RD_LZO=y
78CONFIG_CC_OPTIMIZE_FOR_SIZE=y
79CONFIG_SYSCTL=y
80CONFIG_ANON_INODES=y
81# CONFIG_EMBEDDED is not set
82CONFIG_UID16=y
83CONFIG_SYSCTL_SYSCALL=y
84CONFIG_KALLSYMS=y
85# CONFIG_KALLSYMS_ALL is not set
86# CONFIG_KALLSYMS_EXTRA_PASS is not set
87CONFIG_HOTPLUG=y
88CONFIG_PRINTK=y
89CONFIG_BUG=y
90CONFIG_ELF_CORE=y
91CONFIG_BASE_FULL=y
92CONFIG_FUTEX=y
93CONFIG_EPOLL=y
94CONFIG_SIGNALFD=y
95CONFIG_TIMERFD=y
96CONFIG_EVENTFD=y
97CONFIG_SHMEM=y
98CONFIG_AIO=y
99CONFIG_HAVE_PERF_EVENTS=y
100CONFIG_PERF_USE_VMALLOC=y
101
102#
103# Kernel Performance Events And Counters
104#
105CONFIG_PERF_EVENTS=y
106CONFIG_PERF_COUNTERS=y 8CONFIG_PERF_COUNTERS=y
107# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
108CONFIG_VM_EVENT_COUNTERS=y
109CONFIG_PCI_QUIRKS=y
110# CONFIG_COMPAT_BRK is not set 9# CONFIG_COMPAT_BRK is not set
111CONFIG_SLAB=y 10CONFIG_SLAB=y
112# CONFIG_SLUB is not set
113# CONFIG_SLOB is not set
114CONFIG_PROFILING=y 11CONFIG_PROFILING=y
115CONFIG_TRACEPOINTS=y
116CONFIG_OPROFILE=m 12CONFIG_OPROFILE=m
117CONFIG_HAVE_OPROFILE=y
118CONFIG_KPROBES=y 13CONFIG_KPROBES=y
119CONFIG_HAVE_SYSCALL_WRAPPERS=y
120CONFIG_KRETPROBES=y
121CONFIG_HAVE_KPROBES=y
122CONFIG_HAVE_KRETPROBES=y
123CONFIG_HAVE_ARCH_TRACEHOOK=y
124CONFIG_HAVE_DMA_ATTRS=y
125CONFIG_USE_GENERIC_SMP_HELPERS=y
126CONFIG_HAVE_DMA_API_DEBUG=y
127
128#
129# GCOV-based kernel profiling
130#
131# CONFIG_GCOV_KERNEL is not set
132# CONFIG_SLOW_WORK is not set
133# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
134CONFIG_SLABINFO=y
135CONFIG_RT_MUTEXES=y
136CONFIG_BASE_SMALL=0
137CONFIG_MODULES=y 14CONFIG_MODULES=y
138# CONFIG_MODULE_FORCE_LOAD is not set
139CONFIG_MODULE_UNLOAD=y 15CONFIG_MODULE_UNLOAD=y
140CONFIG_MODULE_FORCE_UNLOAD=y 16CONFIG_MODULE_FORCE_UNLOAD=y
141CONFIG_MODVERSIONS=y 17CONFIG_MODVERSIONS=y
142CONFIG_MODULE_SRCVERSION_ALL=y 18CONFIG_MODULE_SRCVERSION_ALL=y
143CONFIG_STOP_MACHINE=y
144CONFIG_BLOCK=y
145CONFIG_BLK_DEV_BSG=y
146# CONFIG_BLK_DEV_INTEGRITY is not set
147CONFIG_BLOCK_COMPAT=y
148
149#
150# IO Schedulers
151#
152CONFIG_IOSCHED_NOOP=y
153CONFIG_IOSCHED_DEADLINE=y
154CONFIG_IOSCHED_CFQ=y
155# CONFIG_DEFAULT_DEADLINE is not set
156CONFIG_DEFAULT_CFQ=y
157# CONFIG_DEFAULT_NOOP is not set
158CONFIG_DEFAULT_IOSCHED="cfq"
159# CONFIG_INLINE_SPIN_TRYLOCK is not set
160# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
161# CONFIG_INLINE_SPIN_LOCK is not set
162# CONFIG_INLINE_SPIN_LOCK_BH is not set
163# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
164# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
165CONFIG_INLINE_SPIN_UNLOCK=y
166# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
167CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
168# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
169# CONFIG_INLINE_READ_TRYLOCK is not set
170# CONFIG_INLINE_READ_LOCK is not set
171# CONFIG_INLINE_READ_LOCK_BH is not set
172# CONFIG_INLINE_READ_LOCK_IRQ is not set
173# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
174CONFIG_INLINE_READ_UNLOCK=y
175# CONFIG_INLINE_READ_UNLOCK_BH is not set
176CONFIG_INLINE_READ_UNLOCK_IRQ=y
177# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
178# CONFIG_INLINE_WRITE_TRYLOCK is not set
179# CONFIG_INLINE_WRITE_LOCK is not set
180# CONFIG_INLINE_WRITE_LOCK_BH is not set
181# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
182# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
183CONFIG_INLINE_WRITE_UNLOCK=y
184# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
185CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
186# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
187CONFIG_MUTEX_SPIN_ON_OWNER=y
188# CONFIG_FREEZER is not set
189
190#
191# Processor type and features
192#
193CONFIG_SMP=y 19CONFIG_SMP=y
194CONFIG_NR_CPUS=64
195CONFIG_HZ_100=y 20CONFIG_HZ_100=y
196# CONFIG_HZ_250 is not set
197# CONFIG_HZ_300 is not set
198# CONFIG_HZ_1000 is not set
199CONFIG_HZ=100
200CONFIG_SCHED_HRTICK=y
201CONFIG_RWSEM_XCHGADD_ALGORITHM=y
202CONFIG_GENERIC_FIND_NEXT_BIT=y
203CONFIG_GENERIC_HWEIGHT=y
204CONFIG_GENERIC_CALIBRATE_DELAY=y
205CONFIG_ARCH_MAY_HAVE_PC_FDC=y
206CONFIG_SPARC64_SMP=y
207CONFIG_EARLYFB=y
208CONFIG_SPARC64_PAGE_SIZE_8KB=y
209# CONFIG_SPARC64_PAGE_SIZE_64KB is not set
210CONFIG_SECCOMP=y
211CONFIG_HOTPLUG_CPU=y 21CONFIG_HOTPLUG_CPU=y
212CONFIG_GENERIC_HARDIRQS=y
213CONFIG_TICK_ONESHOT=y
214CONFIG_NO_HZ=y 22CONFIG_NO_HZ=y
215CONFIG_HIGH_RES_TIMERS=y 23CONFIG_HIGH_RES_TIMERS=y
216CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
217# CONFIG_CPU_FREQ is not set
218CONFIG_US3_MC=y
219CONFIG_HUGETLB_PAGE_SIZE_4MB=y
220# CONFIG_HUGETLB_PAGE_SIZE_512K is not set
221# CONFIG_HUGETLB_PAGE_SIZE_64K is not set
222CONFIG_NUMA=y 24CONFIG_NUMA=y
223CONFIG_NODES_SHIFT=4
224CONFIG_NODES_SPAN_OTHER_NODES=y
225CONFIG_ARCH_POPULATES_NODE_MAP=y
226CONFIG_ARCH_SELECT_MEMORY_MODEL=y
227CONFIG_ARCH_SPARSEMEM_ENABLE=y
228CONFIG_ARCH_SPARSEMEM_DEFAULT=y
229CONFIG_SELECT_MEMORY_MODEL=y
230# CONFIG_FLATMEM_MANUAL is not set
231# CONFIG_DISCONTIGMEM_MANUAL is not set
232CONFIG_SPARSEMEM_MANUAL=y
233CONFIG_SPARSEMEM=y
234CONFIG_NEED_MULTIPLE_NODES=y
235CONFIG_HAVE_MEMORY_PRESENT=y
236CONFIG_SPARSEMEM_EXTREME=y
237CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
238CONFIG_SPARSEMEM_VMEMMAP=y
239CONFIG_PAGEFLAGS_EXTENDED=y
240CONFIG_SPLIT_PTLOCK_CPUS=4
241# CONFIG_COMPACTION is not set
242CONFIG_MIGRATION=y
243CONFIG_PHYS_ADDR_T_64BIT=y
244CONFIG_ZONE_DMA_FLAG=0
245CONFIG_NR_QUICK=1
246# CONFIG_KSM is not set
247CONFIG_DEFAULT_MMAP_MIN_ADDR=8192 25CONFIG_DEFAULT_MMAP_MIN_ADDR=8192
248CONFIG_SCHED_SMT=y
249CONFIG_SCHED_MC=y
250# CONFIG_PREEMPT_NONE is not set
251CONFIG_PREEMPT_VOLUNTARY=y 26CONFIG_PREEMPT_VOLUNTARY=y
252# CONFIG_PREEMPT is not set
253# CONFIG_CMDLINE_BOOL is not set
254
255#
256# Bus options (PCI etc.)
257#
258CONFIG_SBUS=y
259CONFIG_SBUSCHAR=y
260CONFIG_SUN_LDOMS=y 27CONFIG_SUN_LDOMS=y
261CONFIG_PCI=y 28CONFIG_PCI=y
262CONFIG_PCI_DOMAINS=y
263CONFIG_PCI_SYSCALL=y
264CONFIG_ARCH_SUPPORTS_MSI=y
265CONFIG_PCI_MSI=y 29CONFIG_PCI_MSI=y
266# CONFIG_PCI_DEBUG is not set
267# CONFIG_PCI_STUB is not set
268# CONFIG_PCI_IOV is not set
269# CONFIG_PCCARD is not set
270CONFIG_SUN_OPENPROMFS=m 30CONFIG_SUN_OPENPROMFS=m
271CONFIG_SPARC64_PCI=y
272
273#
274# Executable file formats
275#
276CONFIG_BINFMT_ELF=y
277CONFIG_COMPAT_BINFMT_ELF=y
278# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
279# CONFIG_HAVE_AOUT is not set
280CONFIG_BINFMT_MISC=m 31CONFIG_BINFMT_MISC=m
281CONFIG_COMPAT=y
282CONFIG_SYSVIPC_COMPAT=y
283CONFIG_NET=y
284
285#
286# Networking options
287#
288CONFIG_PACKET=y 32CONFIG_PACKET=y
289CONFIG_UNIX=y 33CONFIG_UNIX=y
290CONFIG_XFRM=y
291CONFIG_XFRM_USER=m 34CONFIG_XFRM_USER=m
292# CONFIG_XFRM_SUB_POLICY is not set
293CONFIG_XFRM_MIGRATE=y
294# CONFIG_XFRM_STATISTICS is not set
295CONFIG_XFRM_IPCOMP=y
296CONFIG_NET_KEY=m 35CONFIG_NET_KEY=m
297CONFIG_NET_KEY_MIGRATE=y 36CONFIG_NET_KEY_MIGRATE=y
298CONFIG_INET=y 37CONFIG_INET=y
299CONFIG_IP_MULTICAST=y 38CONFIG_IP_MULTICAST=y
300# CONFIG_IP_ADVANCED_ROUTER is not set
301CONFIG_IP_FIB_HASH=y
302# CONFIG_IP_PNP is not set
303CONFIG_NET_IPIP=m 39CONFIG_NET_IPIP=m
304CONFIG_NET_IPGRE=m 40CONFIG_NET_IPGRE=m
305CONFIG_NET_IPGRE_BROADCAST=y 41CONFIG_NET_IPGRE_BROADCAST=y
@@ -311,19 +47,6 @@ CONFIG_SYN_COOKIES=y
311CONFIG_INET_AH=y 47CONFIG_INET_AH=y
312CONFIG_INET_ESP=y 48CONFIG_INET_ESP=y
313CONFIG_INET_IPCOMP=y 49CONFIG_INET_IPCOMP=y
314CONFIG_INET_XFRM_TUNNEL=y
315CONFIG_INET_TUNNEL=y
316CONFIG_INET_XFRM_MODE_TRANSPORT=y
317CONFIG_INET_XFRM_MODE_TUNNEL=y
318CONFIG_INET_XFRM_MODE_BEET=y
319CONFIG_INET_LRO=y
320CONFIG_INET_DIAG=y
321CONFIG_INET_TCP_DIAG=y
322# CONFIG_TCP_CONG_ADVANCED is not set
323CONFIG_TCP_CONG_CUBIC=y
324CONFIG_DEFAULT_TCP_CONG="cubic"
325# CONFIG_TCP_MD5SIG is not set
326CONFIG_IPV6=m
327CONFIG_IPV6_PRIVACY=y 50CONFIG_IPV6_PRIVACY=y
328CONFIG_IPV6_ROUTER_PREF=y 51CONFIG_IPV6_ROUTER_PREF=y
329CONFIG_IPV6_ROUTE_INFO=y 52CONFIG_IPV6_ROUTE_INFO=y
@@ -331,276 +54,33 @@ CONFIG_IPV6_OPTIMISTIC_DAD=y
331CONFIG_INET6_AH=m 54CONFIG_INET6_AH=m
332CONFIG_INET6_ESP=m 55CONFIG_INET6_ESP=m
333CONFIG_INET6_IPCOMP=m 56CONFIG_INET6_IPCOMP=m
334# CONFIG_IPV6_MIP6 is not set
335CONFIG_INET6_XFRM_TUNNEL=m
336CONFIG_INET6_TUNNEL=m
337CONFIG_INET6_XFRM_MODE_TRANSPORT=m
338CONFIG_INET6_XFRM_MODE_TUNNEL=m
339CONFIG_INET6_XFRM_MODE_BEET=m
340# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
341CONFIG_IPV6_SIT=m
342# CONFIG_IPV6_SIT_6RD is not set
343CONFIG_IPV6_NDISC_NODETYPE=y
344CONFIG_IPV6_TUNNEL=m 57CONFIG_IPV6_TUNNEL=m
345# CONFIG_IPV6_MULTIPLE_TABLES is not set
346# CONFIG_IPV6_MROUTE is not set
347# CONFIG_NETWORK_SECMARK is not set
348# CONFIG_NETFILTER is not set
349# CONFIG_IP_DCCP is not set
350# CONFIG_IP_SCTP is not set
351# CONFIG_RDS is not set
352# CONFIG_TIPC is not set
353# CONFIG_ATM is not set
354# CONFIG_L2TP is not set
355# CONFIG_BRIDGE is not set
356# CONFIG_NET_DSA is not set
357CONFIG_VLAN_8021Q=m 58CONFIG_VLAN_8021Q=m
358# CONFIG_VLAN_8021Q_GVRP is not set
359# CONFIG_DECNET is not set
360# CONFIG_LLC2 is not set
361# CONFIG_IPX is not set
362# CONFIG_ATALK is not set
363# CONFIG_X25 is not set
364# CONFIG_LAPB is not set
365# CONFIG_ECONET is not set
366# CONFIG_WAN_ROUTER is not set
367# CONFIG_PHONET is not set
368# CONFIG_IEEE802154 is not set
369# CONFIG_NET_SCHED is not set
370# CONFIG_DCB is not set
371CONFIG_RPS=y
372
373#
374# Network testing
375#
376CONFIG_NET_PKTGEN=m 59CONFIG_NET_PKTGEN=m
377CONFIG_NET_TCPPROBE=m 60CONFIG_NET_TCPPROBE=m
378# CONFIG_NET_DROP_MONITOR is not set
379# CONFIG_HAMRADIO is not set
380# CONFIG_CAN is not set
381# CONFIG_IRDA is not set
382# CONFIG_BT is not set
383# CONFIG_AF_RXRPC is not set
384CONFIG_WIRELESS=y
385# CONFIG_CFG80211 is not set
386# CONFIG_LIB80211 is not set
387
388#
389# CFG80211 needs to be enabled for MAC80211
390#
391
392#
393# Some wireless drivers require a rate control algorithm
394#
395# CONFIG_WIMAX is not set
396# CONFIG_RFKILL is not set
397# CONFIG_NET_9P is not set
398# CONFIG_CAIF is not set
399
400#
401# Device Drivers
402#
403
404#
405# Generic Driver Options
406#
407CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 61CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
408# CONFIG_DEVTMPFS is not set
409CONFIG_STANDALONE=y
410# CONFIG_PREVENT_FIRMWARE_BUILD is not set 62# CONFIG_PREVENT_FIRMWARE_BUILD is not set
411CONFIG_FW_LOADER=y
412CONFIG_FIRMWARE_IN_KERNEL=y
413CONFIG_EXTRA_FIRMWARE=""
414# CONFIG_DEBUG_DRIVER is not set
415# CONFIG_DEBUG_DEVRES is not set
416# CONFIG_SYS_HYPERVISOR is not set
417CONFIG_CONNECTOR=m 63CONFIG_CONNECTOR=m
418# CONFIG_MTD is not set
419CONFIG_OF_DEVICE=y
420CONFIG_OF_MDIO=m
421# CONFIG_PARPORT is not set
422CONFIG_BLK_DEV=y
423# CONFIG_BLK_DEV_FD is not set
424# CONFIG_BLK_CPQ_CISS_DA is not set
425# CONFIG_BLK_DEV_DAC960 is not set
426# CONFIG_BLK_DEV_UMEM is not set
427# CONFIG_BLK_DEV_COW_COMMON is not set
428CONFIG_BLK_DEV_LOOP=m 64CONFIG_BLK_DEV_LOOP=m
429CONFIG_BLK_DEV_CRYPTOLOOP=m 65CONFIG_BLK_DEV_CRYPTOLOOP=m
430# CONFIG_BLK_DEV_DRBD is not set
431CONFIG_BLK_DEV_NBD=m 66CONFIG_BLK_DEV_NBD=m
432# CONFIG_BLK_DEV_SX8 is not set
433# CONFIG_BLK_DEV_UB is not set
434# CONFIG_BLK_DEV_RAM is not set
435CONFIG_CDROM_PKTCDVD=m 67CONFIG_CDROM_PKTCDVD=m
436CONFIG_CDROM_PKTCDVD_BUFFERS=8
437CONFIG_CDROM_PKTCDVD_WCACHE=y 68CONFIG_CDROM_PKTCDVD_WCACHE=y
438CONFIG_ATA_OVER_ETH=m 69CONFIG_ATA_OVER_ETH=m
439CONFIG_SUNVDC=m 70CONFIG_SUNVDC=m
440# CONFIG_BLK_DEV_HD is not set
441CONFIG_MISC_DEVICES=y
442# CONFIG_AD525X_DPOT is not set
443# CONFIG_PHANTOM is not set
444# CONFIG_SGI_IOC4 is not set
445# CONFIG_TIFM_CORE is not set
446# CONFIG_ICS932S401 is not set
447# CONFIG_ENCLOSURE_SERVICES is not set
448# CONFIG_HP_ILO is not set
449# CONFIG_ISL29003 is not set
450# CONFIG_SENSORS_TSL2550 is not set
451# CONFIG_DS1682 is not set
452# CONFIG_C2PORT is not set
453
454#
455# EEPROM support
456#
457# CONFIG_EEPROM_AT24 is not set
458# CONFIG_EEPROM_LEGACY is not set
459# CONFIG_EEPROM_MAX6875 is not set
460# CONFIG_EEPROM_93CX6 is not set
461# CONFIG_CB710_CORE is not set
462CONFIG_HAVE_IDE=y
463CONFIG_IDE=y 71CONFIG_IDE=y
464
465#
466# Please see Documentation/ide/ide.txt for help/info on IDE drives
467#
468CONFIG_IDE_XFER_MODE=y
469CONFIG_IDE_TIMINGS=y
470CONFIG_IDE_ATAPI=y
471# CONFIG_BLK_DEV_IDE_SATA is not set
472CONFIG_IDE_GD=y
473CONFIG_IDE_GD_ATA=y
474# CONFIG_IDE_GD_ATAPI is not set
475CONFIG_BLK_DEV_IDECD=y 72CONFIG_BLK_DEV_IDECD=y
476CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
477# CONFIG_BLK_DEV_IDETAPE is not set
478# CONFIG_IDE_TASK_IOCTL is not set
479CONFIG_IDE_PROC_FS=y
480
481#
482# IDE chipset support/bugfixes
483#
484# CONFIG_BLK_DEV_PLATFORM is not set
485CONFIG_BLK_DEV_IDEDMA_SFF=y
486
487#
488# PCI IDE chipsets support
489#
490CONFIG_BLK_DEV_IDEPCI=y
491CONFIG_IDEPCI_PCIBUS_ORDER=y
492# CONFIG_BLK_DEV_GENERIC is not set
493# CONFIG_BLK_DEV_OPTI621 is not set
494CONFIG_BLK_DEV_IDEDMA_PCI=y
495# CONFIG_BLK_DEV_AEC62XX is not set
496CONFIG_BLK_DEV_ALI15X3=y 73CONFIG_BLK_DEV_ALI15X3=y
497# CONFIG_BLK_DEV_AMD74XX is not set
498# CONFIG_BLK_DEV_CMD64X is not set
499# CONFIG_BLK_DEV_TRIFLEX is not set
500# CONFIG_BLK_DEV_CS5520 is not set
501# CONFIG_BLK_DEV_CS5530 is not set
502# CONFIG_BLK_DEV_HPT366 is not set
503# CONFIG_BLK_DEV_JMICRON is not set
504# CONFIG_BLK_DEV_SC1200 is not set
505# CONFIG_BLK_DEV_PIIX is not set
506# CONFIG_BLK_DEV_IT8172 is not set
507# CONFIG_BLK_DEV_IT8213 is not set
508# CONFIG_BLK_DEV_IT821X is not set
509# CONFIG_BLK_DEV_NS87415 is not set
510# CONFIG_BLK_DEV_PDC202XX_OLD is not set
511# CONFIG_BLK_DEV_PDC202XX_NEW is not set
512# CONFIG_BLK_DEV_SVWKS is not set
513# CONFIG_BLK_DEV_SIIMAGE is not set
514# CONFIG_BLK_DEV_SLC90E66 is not set
515# CONFIG_BLK_DEV_TRM290 is not set
516# CONFIG_BLK_DEV_VIA82CXXX is not set
517# CONFIG_BLK_DEV_TC86C001 is not set
518CONFIG_BLK_DEV_IDEDMA=y
519
520#
521# SCSI device support
522#
523CONFIG_SCSI_MOD=y
524CONFIG_RAID_ATTRS=m 74CONFIG_RAID_ATTRS=m
525CONFIG_SCSI=y 75CONFIG_SCSI=y
526CONFIG_SCSI_DMA=y
527# CONFIG_SCSI_TGT is not set
528CONFIG_SCSI_NETLINK=y
529CONFIG_SCSI_PROC_FS=y
530
531#
532# SCSI support type (disk, tape, CD-ROM)
533#
534CONFIG_BLK_DEV_SD=y 76CONFIG_BLK_DEV_SD=y
535# CONFIG_CHR_DEV_ST is not set
536# CONFIG_CHR_DEV_OSST is not set
537CONFIG_BLK_DEV_SR=m 77CONFIG_BLK_DEV_SR=m
538CONFIG_BLK_DEV_SR_VENDOR=y 78CONFIG_BLK_DEV_SR_VENDOR=y
539CONFIG_CHR_DEV_SG=m 79CONFIG_CHR_DEV_SG=m
540# CONFIG_CHR_DEV_SCH is not set
541CONFIG_SCSI_MULTI_LUN=y 80CONFIG_SCSI_MULTI_LUN=y
542CONFIG_SCSI_CONSTANTS=y 81CONFIG_SCSI_CONSTANTS=y
543# CONFIG_SCSI_LOGGING is not set
544# CONFIG_SCSI_SCAN_ASYNC is not set
545CONFIG_SCSI_WAIT_SCAN=m
546
547#
548# SCSI Transports
549#
550CONFIG_SCSI_SPI_ATTRS=y 82CONFIG_SCSI_SPI_ATTRS=y
551CONFIG_SCSI_FC_ATTRS=y 83CONFIG_SCSI_FC_ATTRS=y
552# CONFIG_SCSI_ISCSI_ATTRS is not set
553# CONFIG_SCSI_SAS_ATTRS is not set
554# CONFIG_SCSI_SAS_LIBSAS is not set
555# CONFIG_SCSI_SRP_ATTRS is not set
556CONFIG_SCSI_LOWLEVEL=y
557# CONFIG_ISCSI_TCP is not set
558# CONFIG_SCSI_CXGB3_ISCSI is not set
559# CONFIG_SCSI_BNX2_ISCSI is not set
560# CONFIG_BE2ISCSI is not set
561# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
562# CONFIG_SCSI_HPSA is not set
563# CONFIG_SCSI_3W_9XXX is not set
564# CONFIG_SCSI_3W_SAS is not set
565# CONFIG_SCSI_ACARD is not set
566# CONFIG_SCSI_AACRAID is not set
567# CONFIG_SCSI_AIC7XXX is not set
568# CONFIG_SCSI_AIC7XXX_OLD is not set
569# CONFIG_SCSI_AIC79XX is not set
570# CONFIG_SCSI_AIC94XX is not set
571# CONFIG_SCSI_MVSAS is not set
572# CONFIG_SCSI_ARCMSR is not set
573# CONFIG_MEGARAID_NEWGEN is not set
574# CONFIG_MEGARAID_LEGACY is not set
575# CONFIG_MEGARAID_SAS is not set
576# CONFIG_SCSI_MPT2SAS is not set
577# CONFIG_SCSI_HPTIOP is not set
578# CONFIG_LIBFC is not set
579# CONFIG_LIBFCOE is not set
580# CONFIG_FCOE is not set
581# CONFIG_SCSI_DMX3191D is not set
582# CONFIG_SCSI_FUTURE_DOMAIN is not set
583# CONFIG_SCSI_IPS is not set
584# CONFIG_SCSI_INITIO is not set
585# CONFIG_SCSI_INIA100 is not set
586# CONFIG_SCSI_STEX is not set
587# CONFIG_SCSI_SYM53C8XX_2 is not set
588# CONFIG_SCSI_QLOGIC_1280 is not set
589# CONFIG_SCSI_QLOGICPTI is not set
590# CONFIG_SCSI_QLA_FC is not set
591# CONFIG_SCSI_QLA_ISCSI is not set
592# CONFIG_SCSI_LPFC is not set
593# CONFIG_SCSI_DC395x is not set
594# CONFIG_SCSI_DC390T is not set
595# CONFIG_SCSI_DEBUG is not set
596# CONFIG_SCSI_SUNESP is not set
597# CONFIG_SCSI_PMCRAID is not set
598# CONFIG_SCSI_PM8001 is not set
599# CONFIG_SCSI_SRP is not set
600# CONFIG_SCSI_BFA_FC is not set
601# CONFIG_SCSI_DH is not set
602# CONFIG_SCSI_OSD_INITIATOR is not set
603# CONFIG_ATA is not set
604CONFIG_MD=y 84CONFIG_MD=y
605CONFIG_BLK_DEV_MD=m 85CONFIG_BLK_DEV_MD=m
606CONFIG_MD_LINEAR=m 86CONFIG_MD_LINEAR=m
@@ -608,178 +88,26 @@ CONFIG_MD_RAID0=m
608CONFIG_MD_RAID1=m 88CONFIG_MD_RAID1=m
609CONFIG_MD_RAID10=m 89CONFIG_MD_RAID10=m
610CONFIG_MD_RAID456=m 90CONFIG_MD_RAID456=m
611# CONFIG_MULTICORE_RAID456 is not set
612CONFIG_MD_RAID6_PQ=m
613# CONFIG_ASYNC_RAID6_TEST is not set
614CONFIG_MD_MULTIPATH=m 91CONFIG_MD_MULTIPATH=m
615# CONFIG_MD_FAULTY is not set
616CONFIG_BLK_DEV_DM=m 92CONFIG_BLK_DEV_DM=m
617# CONFIG_DM_DEBUG is not set
618CONFIG_DM_CRYPT=m 93CONFIG_DM_CRYPT=m
619CONFIG_DM_SNAPSHOT=m 94CONFIG_DM_SNAPSHOT=m
620CONFIG_DM_MIRROR=m 95CONFIG_DM_MIRROR=m
621# CONFIG_DM_LOG_USERSPACE is not set
622CONFIG_DM_ZERO=m 96CONFIG_DM_ZERO=m
623# CONFIG_DM_MULTIPATH is not set
624# CONFIG_DM_DELAY is not set
625# CONFIG_DM_UEVENT is not set
626# CONFIG_FUSION is not set
627
628#
629# IEEE 1394 (FireWire) support
630#
631
632#
633# You can enable one or both FireWire driver stacks.
634#
635
636#
637# The newer stack is recommended.
638#
639# CONFIG_FIREWIRE is not set
640# CONFIG_IEEE1394 is not set
641# CONFIG_I2O is not set
642CONFIG_NETDEVICES=y 97CONFIG_NETDEVICES=y
643# CONFIG_DUMMY is not set
644# CONFIG_BONDING is not set
645# CONFIG_MACVLAN is not set
646# CONFIG_EQUALIZER is not set
647# CONFIG_TUN is not set
648# CONFIG_VETH is not set
649# CONFIG_ARCNET is not set
650CONFIG_PHYLIB=m
651
652#
653# MII PHY device drivers
654#
655# CONFIG_MARVELL_PHY is not set
656# CONFIG_DAVICOM_PHY is not set
657# CONFIG_QSEMI_PHY is not set
658# CONFIG_LXT_PHY is not set
659# CONFIG_CICADA_PHY is not set
660# CONFIG_VITESSE_PHY is not set
661# CONFIG_SMSC_PHY is not set
662# CONFIG_BROADCOM_PHY is not set
663# CONFIG_ICPLUS_PHY is not set
664# CONFIG_REALTEK_PHY is not set
665# CONFIG_NATIONAL_PHY is not set
666# CONFIG_STE10XP is not set
667# CONFIG_LSI_ET1011C_PHY is not set
668# CONFIG_MICREL_PHY is not set
669# CONFIG_MDIO_BITBANG is not set
670CONFIG_NET_ETHERNET=y 98CONFIG_NET_ETHERNET=y
671CONFIG_MII=m 99CONFIG_MII=m
672CONFIG_SUNLANCE=m 100CONFIG_SUNLANCE=m
673CONFIG_HAPPYMEAL=m 101CONFIG_HAPPYMEAL=m
674# CONFIG_SUNBMAC is not set
675# CONFIG_SUNQE is not set
676CONFIG_SUNGEM=m 102CONFIG_SUNGEM=m
677# CONFIG_CASSINI is not set
678CONFIG_SUNVNET=m 103CONFIG_SUNVNET=m
679# CONFIG_NET_VENDOR_3COM is not set
680# CONFIG_ETHOC is not set
681# CONFIG_GRETH is not set
682# CONFIG_DNET is not set
683# CONFIG_NET_TULIP is not set
684# CONFIG_HP100 is not set
685# CONFIG_IBM_NEW_EMAC_ZMII is not set
686# CONFIG_IBM_NEW_EMAC_RGMII is not set
687# CONFIG_IBM_NEW_EMAC_TAH is not set
688# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
689# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
690# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
691# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
692CONFIG_NET_PCI=y 104CONFIG_NET_PCI=y
693# CONFIG_PCNET32 is not set
694# CONFIG_AMD8111_ETH is not set
695# CONFIG_ADAPTEC_STARFIRE is not set
696# CONFIG_KSZ884X_PCI is not set
697# CONFIG_B44 is not set
698# CONFIG_FORCEDETH is not set
699# CONFIG_E100 is not set
700# CONFIG_FEALNX is not set
701# CONFIG_NATSEMI is not set
702# CONFIG_NE2K_PCI is not set
703# CONFIG_8139CP is not set
704# CONFIG_8139TOO is not set
705# CONFIG_R6040 is not set
706# CONFIG_SIS900 is not set
707# CONFIG_EPIC100 is not set
708# CONFIG_SMSC9420 is not set
709# CONFIG_SUNDANCE is not set
710# CONFIG_TLAN is not set
711# CONFIG_KS8842 is not set
712# CONFIG_KS8851_MLL is not set
713# CONFIG_VIA_RHINE is not set
714# CONFIG_SC92031 is not set
715# CONFIG_ATL2 is not set
716CONFIG_NETDEV_1000=y
717# CONFIG_ACENIC is not set
718# CONFIG_DL2K is not set
719CONFIG_E1000=m 105CONFIG_E1000=m
720CONFIG_E1000E=m 106CONFIG_E1000E=m
721# CONFIG_IP1000 is not set
722# CONFIG_IGB is not set
723# CONFIG_IGBVF is not set
724# CONFIG_MYRI_SBUS is not set
725# CONFIG_NS83820 is not set
726# CONFIG_HAMACHI is not set
727# CONFIG_YELLOWFIN is not set
728# CONFIG_R8169 is not set
729# CONFIG_SIS190 is not set
730# CONFIG_SKGE is not set
731# CONFIG_SKY2 is not set
732# CONFIG_VIA_VELOCITY is not set
733CONFIG_TIGON3=m 107CONFIG_TIGON3=m
734CONFIG_BNX2=m 108CONFIG_BNX2=m
735# CONFIG_CNIC is not set
736# CONFIG_QLA3XXX is not set
737# CONFIG_ATL1 is not set
738# CONFIG_ATL1E is not set
739# CONFIG_ATL1C is not set
740# CONFIG_JME is not set
741CONFIG_NETDEV_10000=y
742# CONFIG_CHELSIO_T1 is not set
743CONFIG_CHELSIO_T3_DEPENDS=y
744# CONFIG_CHELSIO_T3 is not set
745CONFIG_CHELSIO_T4_DEPENDS=y
746# CONFIG_CHELSIO_T4 is not set
747# CONFIG_ENIC is not set
748# CONFIG_IXGBE is not set
749# CONFIG_IXGBEVF is not set
750# CONFIG_IXGB is not set
751# CONFIG_S2IO is not set
752# CONFIG_VXGE is not set
753# CONFIG_MYRI10GE is not set
754# CONFIG_NETXEN_NIC is not set
755CONFIG_NIU=m 109CONFIG_NIU=m
756# CONFIG_MLX4_EN is not set
757# CONFIG_MLX4_CORE is not set
758# CONFIG_TEHUTI is not set
759# CONFIG_BNX2X is not set
760# CONFIG_QLCNIC is not set
761# CONFIG_QLGE is not set
762# CONFIG_SFC is not set
763# CONFIG_BE2NET is not set
764# CONFIG_TR is not set
765# CONFIG_WLAN is not set 110# CONFIG_WLAN is not set
766
767#
768# Enable WiMAX (Networking options) to see the WiMAX drivers
769#
770
771#
772# USB Network Adapters
773#
774# CONFIG_USB_CATC is not set
775# CONFIG_USB_KAWETH is not set
776# CONFIG_USB_PEGASUS is not set
777# CONFIG_USB_RTL8150 is not set
778# CONFIG_USB_USBNET is not set
779# CONFIG_USB_IPHETH is not set
780# CONFIG_WAN is not set
781# CONFIG_FDDI is not set
782# CONFIG_HIPPI is not set
783CONFIG_PPP=m 111CONFIG_PPP=m
784CONFIG_PPP_MULTILINK=y 112CONFIG_PPP_MULTILINK=y
785CONFIG_PPP_FILTER=y 113CONFIG_PPP_FILTER=y
@@ -789,1157 +117,126 @@ CONFIG_PPP_DEFLATE=m
789CONFIG_PPP_BSDCOMP=m 117CONFIG_PPP_BSDCOMP=m
790CONFIG_PPP_MPPE=m 118CONFIG_PPP_MPPE=m
791CONFIG_PPPOE=m 119CONFIG_PPPOE=m
792# CONFIG_SLIP is not set
793CONFIG_SLHC=m
794# CONFIG_NET_FC is not set
795# CONFIG_NETCONSOLE is not set
796# CONFIG_NETPOLL is not set
797# CONFIG_NET_POLL_CONTROLLER is not set
798# CONFIG_VMXNET3 is not set
799# CONFIG_ISDN is not set
800# CONFIG_PHONE is not set
801
802#
803# Input device support
804#
805CONFIG_INPUT=y
806# CONFIG_INPUT_FF_MEMLESS is not set
807# CONFIG_INPUT_POLLDEV is not set
808# CONFIG_INPUT_SPARSEKMAP is not set
809
810#
811# Userland interfaces
812#
813CONFIG_INPUT_MOUSEDEV=y
814CONFIG_INPUT_MOUSEDEV_PSAUX=y
815CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
816CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
817# CONFIG_INPUT_JOYDEV is not set
818CONFIG_INPUT_EVDEV=y 120CONFIG_INPUT_EVDEV=y
819# CONFIG_INPUT_EVBUG is not set
820
821#
822# Input Device Drivers
823#
824CONFIG_INPUT_KEYBOARD=y
825# CONFIG_KEYBOARD_ADP5588 is not set
826CONFIG_KEYBOARD_ATKBD=y
827# CONFIG_QT2160 is not set
828CONFIG_KEYBOARD_LKKBD=m 121CONFIG_KEYBOARD_LKKBD=m
829# CONFIG_KEYBOARD_TCA6416 is not set
830# CONFIG_KEYBOARD_MAX7359 is not set
831# CONFIG_KEYBOARD_NEWTON is not set
832# CONFIG_KEYBOARD_OPENCORES is not set
833# CONFIG_KEYBOARD_STOWAWAY is not set
834CONFIG_KEYBOARD_SUNKBD=y 122CONFIG_KEYBOARD_SUNKBD=y
835# CONFIG_KEYBOARD_XTKBD is not set
836CONFIG_INPUT_MOUSE=y
837CONFIG_MOUSE_PS2=y
838CONFIG_MOUSE_PS2_ALPS=y
839CONFIG_MOUSE_PS2_LOGIPS2PP=y
840CONFIG_MOUSE_PS2_SYNAPTICS=y
841CONFIG_MOUSE_PS2_TRACKPOINT=y
842# CONFIG_MOUSE_PS2_ELANTECH is not set
843# CONFIG_MOUSE_PS2_SENTELIC is not set
844# CONFIG_MOUSE_PS2_TOUCHKIT is not set
845CONFIG_MOUSE_SERIAL=y 123CONFIG_MOUSE_SERIAL=y
846# CONFIG_MOUSE_APPLETOUCH is not set
847# CONFIG_MOUSE_BCM5974 is not set
848# CONFIG_MOUSE_VSXXXAA is not set
849# CONFIG_MOUSE_SYNAPTICS_I2C is not set
850# CONFIG_INPUT_JOYSTICK is not set
851# CONFIG_INPUT_TABLET is not set
852# CONFIG_INPUT_TOUCHSCREEN is not set
853CONFIG_INPUT_MISC=y 124CONFIG_INPUT_MISC=y
854# CONFIG_INPUT_AD714X is not set
855CONFIG_INPUT_SPARCSPKR=y 125CONFIG_INPUT_SPARCSPKR=y
856# CONFIG_INPUT_ATI_REMOTE is not set
857# CONFIG_INPUT_ATI_REMOTE2 is not set
858# CONFIG_INPUT_KEYSPAN_REMOTE is not set
859# CONFIG_INPUT_POWERMATE is not set
860# CONFIG_INPUT_YEALINK is not set
861# CONFIG_INPUT_CM109 is not set
862# CONFIG_INPUT_UINPUT is not set
863# CONFIG_INPUT_PCF8574 is not set
864
865#
866# Hardware I/O ports
867#
868CONFIG_SERIO=y
869CONFIG_SERIO_I8042=y
870# CONFIG_SERIO_SERPORT is not set 126# CONFIG_SERIO_SERPORT is not set
871CONFIG_SERIO_PCIPS2=m 127CONFIG_SERIO_PCIPS2=m
872CONFIG_SERIO_LIBPS2=y
873CONFIG_SERIO_RAW=m 128CONFIG_SERIO_RAW=m
874# CONFIG_SERIO_ALTERA_PS2 is not set
875# CONFIG_GAMEPORT is not set
876
877#
878# Character devices
879#
880CONFIG_VT=y
881CONFIG_CONSOLE_TRANSLATIONS=y
882CONFIG_VT_CONSOLE=y
883CONFIG_HW_CONSOLE=y
884# CONFIG_VT_HW_CONSOLE_BINDING is not set
885# CONFIG_DEVKMEM is not set 129# CONFIG_DEVKMEM is not set
886# CONFIG_SERIAL_NONSTANDARD is not set
887# CONFIG_N_GSM is not set
888# CONFIG_NOZOMI is not set
889
890#
891# Serial drivers
892#
893# CONFIG_SERIAL_8250 is not set
894
895#
896# Non-8250 serial port support
897#
898CONFIG_SERIAL_SUNCORE=y
899# CONFIG_SERIAL_SUNZILOG is not set
900CONFIG_SERIAL_SUNSU=y 130CONFIG_SERIAL_SUNSU=y
901CONFIG_SERIAL_SUNSU_CONSOLE=y 131CONFIG_SERIAL_SUNSU_CONSOLE=y
902CONFIG_SERIAL_SUNSAB=y 132CONFIG_SERIAL_SUNSAB=y
903CONFIG_SERIAL_SUNSAB_CONSOLE=y 133CONFIG_SERIAL_SUNSAB_CONSOLE=y
904CONFIG_SERIAL_SUNHV=y 134CONFIG_SERIAL_SUNHV=y
905CONFIG_SERIAL_CORE=y
906CONFIG_SERIAL_CORE_CONSOLE=y
907# CONFIG_SERIAL_JSM is not set
908# CONFIG_SERIAL_TIMBERDALE is not set
909# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
910# CONFIG_SERIAL_ALTERA_JTAGUART is not set
911# CONFIG_SERIAL_ALTERA_UART is not set
912CONFIG_UNIX98_PTYS=y
913# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
914# CONFIG_LEGACY_PTYS is not set 135# CONFIG_LEGACY_PTYS is not set
915# CONFIG_IPMI_HANDLER is not set
916CONFIG_HW_RANDOM=m
917# CONFIG_HW_RANDOM_TIMERIOMEM is not set
918CONFIG_HW_RANDOM_N2RNG=m
919# CONFIG_R3964 is not set
920# CONFIG_APPLICOM is not set
921# CONFIG_RAW_DRIVER is not set
922# CONFIG_TCG_TPM is not set
923CONFIG_DEVPORT=y
924CONFIG_I2C=y
925CONFIG_I2C_BOARDINFO=y
926CONFIG_I2C_COMPAT=y
927# CONFIG_I2C_CHARDEV is not set
928CONFIG_I2C_HELPER_AUTO=y
929CONFIG_I2C_ALGOBIT=y
930
931#
932# I2C Hardware Bus support
933#
934
935#
936# PC SMBus host controller drivers
937#
938# CONFIG_I2C_ALI1535 is not set
939# CONFIG_I2C_ALI1563 is not set
940# CONFIG_I2C_ALI15X3 is not set
941# CONFIG_I2C_AMD756 is not set
942# CONFIG_I2C_AMD8111 is not set
943# CONFIG_I2C_I801 is not set
944# CONFIG_I2C_ISCH is not set
945# CONFIG_I2C_PIIX4 is not set
946# CONFIG_I2C_NFORCE2 is not set
947# CONFIG_I2C_SIS5595 is not set
948# CONFIG_I2C_SIS630 is not set
949# CONFIG_I2C_SIS96X is not set
950# CONFIG_I2C_VIA is not set
951# CONFIG_I2C_VIAPRO is not set
952
953#
954# I2C system bus drivers (mostly embedded / system-on-chip)
955#
956# CONFIG_I2C_OCORES is not set
957# CONFIG_I2C_SIMTEC is not set
958# CONFIG_I2C_XILINX is not set
959
960#
961# External I2C/SMBus adapter drivers
962#
963# CONFIG_I2C_PARPORT_LIGHT is not set
964# CONFIG_I2C_TAOS_EVM is not set
965# CONFIG_I2C_TINY_USB is not set
966
967#
968# Other I2C/SMBus bus drivers
969#
970# CONFIG_I2C_PCA_PLATFORM is not set
971# CONFIG_I2C_STUB is not set
972# CONFIG_I2C_DEBUG_CORE is not set
973# CONFIG_I2C_DEBUG_ALGO is not set
974# CONFIG_I2C_DEBUG_BUS is not set
975# CONFIG_SPI is not set
976
977#
978# PPS support
979#
980# CONFIG_PPS is not set
981CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
982# CONFIG_GPIOLIB is not set
983# CONFIG_W1 is not set
984# CONFIG_POWER_SUPPLY is not set
985CONFIG_HWMON=y
986# CONFIG_HWMON_VID is not set
987# CONFIG_HWMON_DEBUG_CHIP is not set
988
989#
990# Native drivers
991#
992# CONFIG_SENSORS_AD7414 is not set
993# CONFIG_SENSORS_AD7418 is not set
994# CONFIG_SENSORS_ADM1021 is not set
995# CONFIG_SENSORS_ADM1025 is not set
996# CONFIG_SENSORS_ADM1026 is not set
997# CONFIG_SENSORS_ADM1029 is not set
998# CONFIG_SENSORS_ADM1031 is not set
999# CONFIG_SENSORS_ADM9240 is not set
1000# CONFIG_SENSORS_ADT7411 is not set
1001# CONFIG_SENSORS_ADT7462 is not set
1002# CONFIG_SENSORS_ADT7470 is not set
1003# CONFIG_SENSORS_ADT7475 is not set
1004# CONFIG_SENSORS_ASC7621 is not set
1005# CONFIG_SENSORS_ATXP1 is not set
1006# CONFIG_SENSORS_DS1621 is not set
1007# CONFIG_SENSORS_I5K_AMB is not set
1008# CONFIG_SENSORS_F71805F is not set
1009# CONFIG_SENSORS_F71882FG is not set
1010# CONFIG_SENSORS_F75375S is not set
1011# CONFIG_SENSORS_G760A is not set
1012# CONFIG_SENSORS_GL518SM is not set
1013# CONFIG_SENSORS_GL520SM is not set
1014# CONFIG_SENSORS_IT87 is not set
1015# CONFIG_SENSORS_LM63 is not set
1016# CONFIG_SENSORS_LM73 is not set
1017# CONFIG_SENSORS_LM75 is not set
1018# CONFIG_SENSORS_LM77 is not set
1019# CONFIG_SENSORS_LM78 is not set
1020# CONFIG_SENSORS_LM80 is not set
1021# CONFIG_SENSORS_LM83 is not set
1022# CONFIG_SENSORS_LM85 is not set
1023# CONFIG_SENSORS_LM87 is not set
1024# CONFIG_SENSORS_LM90 is not set
1025# CONFIG_SENSORS_LM92 is not set
1026# CONFIG_SENSORS_LM93 is not set
1027# CONFIG_SENSORS_LTC4215 is not set
1028# CONFIG_SENSORS_LTC4245 is not set
1029# CONFIG_SENSORS_LM95241 is not set
1030# CONFIG_SENSORS_MAX1619 is not set
1031# CONFIG_SENSORS_MAX6650 is not set
1032# CONFIG_SENSORS_PC87360 is not set
1033# CONFIG_SENSORS_PC87427 is not set
1034# CONFIG_SENSORS_PCF8591 is not set
1035# CONFIG_SENSORS_SIS5595 is not set
1036# CONFIG_SENSORS_DME1737 is not set
1037# CONFIG_SENSORS_SMSC47M1 is not set
1038# CONFIG_SENSORS_SMSC47M192 is not set
1039# CONFIG_SENSORS_SMSC47B397 is not set
1040# CONFIG_SENSORS_ADS7828 is not set
1041# CONFIG_SENSORS_AMC6821 is not set
1042# CONFIG_SENSORS_THMC50 is not set
1043# CONFIG_SENSORS_TMP401 is not set
1044# CONFIG_SENSORS_TMP421 is not set
1045# CONFIG_SENSORS_VIA686A is not set
1046# CONFIG_SENSORS_VT1211 is not set
1047# CONFIG_SENSORS_VT8231 is not set
1048# CONFIG_SENSORS_W83781D is not set
1049# CONFIG_SENSORS_W83791D is not set
1050# CONFIG_SENSORS_W83792D is not set
1051# CONFIG_SENSORS_W83793 is not set
1052# CONFIG_SENSORS_W83L785TS is not set
1053# CONFIG_SENSORS_W83L786NG is not set
1054# CONFIG_SENSORS_W83627HF is not set
1055# CONFIG_SENSORS_W83627EHF is not set
1056# CONFIG_SENSORS_ULTRA45 is not set
1057# CONFIG_SENSORS_LIS3_I2C is not set
1058# CONFIG_THERMAL is not set
1059# CONFIG_WATCHDOG is not set
1060CONFIG_SSB_POSSIBLE=y
1061
1062#
1063# Sonics Silicon Backplane
1064#
1065# CONFIG_SSB is not set
1066
1067#
1068# Multifunction device drivers
1069#
1070# CONFIG_MFD_CORE is not set
1071# CONFIG_MFD_88PM860X is not set
1072# CONFIG_MFD_SM501 is not set
1073# CONFIG_HTC_PASIC3 is not set
1074# CONFIG_TWL4030_CORE is not set
1075# CONFIG_MFD_TMIO is not set
1076# CONFIG_PMIC_DA903X is not set
1077# CONFIG_PMIC_ADP5520 is not set
1078# CONFIG_MFD_MAX8925 is not set
1079# CONFIG_MFD_WM8400 is not set
1080# CONFIG_MFD_WM831X is not set
1081# CONFIG_MFD_WM8350_I2C is not set
1082# CONFIG_MFD_WM8994 is not set
1083# CONFIG_MFD_PCF50633 is not set
1084# CONFIG_AB3100_CORE is not set
1085# CONFIG_LPC_SCH is not set
1086# CONFIG_REGULATOR is not set
1087# CONFIG_MEDIA_SUPPORT is not set
1088
1089#
1090# Graphics support
1091#
1092CONFIG_VGA_ARB=y
1093CONFIG_VGA_ARB_MAX_GPUS=16
1094# CONFIG_DRM is not set
1095# CONFIG_VGASTATE is not set
1096# CONFIG_VIDEO_OUTPUT_CONTROL is not set
1097CONFIG_FB=y 136CONFIG_FB=y
1098# CONFIG_FIRMWARE_EDID is not set
1099CONFIG_FB_DDC=y
1100# CONFIG_FB_BOOT_VESA_SUPPORT is not set
1101CONFIG_FB_CFB_FILLRECT=y
1102CONFIG_FB_CFB_COPYAREA=y
1103CONFIG_FB_CFB_IMAGEBLIT=y
1104# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
1105# CONFIG_FB_SYS_FILLRECT is not set
1106# CONFIG_FB_SYS_COPYAREA is not set
1107# CONFIG_FB_SYS_IMAGEBLIT is not set
1108# CONFIG_FB_FOREIGN_ENDIAN is not set
1109# CONFIG_FB_SYS_FOPS is not set
1110# CONFIG_FB_SVGALIB is not set
1111# CONFIG_FB_MACMODES is not set
1112# CONFIG_FB_BACKLIGHT is not set
1113CONFIG_FB_MODE_HELPERS=y
1114CONFIG_FB_TILEBLITTING=y 137CONFIG_FB_TILEBLITTING=y
1115
1116#
1117# Frame buffer hardware drivers
1118#
1119# CONFIG_FB_CIRRUS is not set
1120# CONFIG_FB_PM2 is not set
1121# CONFIG_FB_ASILIANT is not set
1122# CONFIG_FB_IMSTT is not set
1123# CONFIG_FB_UVESA is not set
1124CONFIG_FB_SBUS=y 138CONFIG_FB_SBUS=y
1125# CONFIG_FB_BW2 is not set
1126# CONFIG_FB_CG3 is not set
1127CONFIG_FB_CG6=y 139CONFIG_FB_CG6=y
1128CONFIG_FB_FFB=y 140CONFIG_FB_FFB=y
1129# CONFIG_FB_TCX is not set
1130# CONFIG_FB_CG14 is not set
1131# CONFIG_FB_P9100 is not set
1132# CONFIG_FB_LEO is not set
1133CONFIG_FB_XVR500=y 141CONFIG_FB_XVR500=y
1134CONFIG_FB_XVR2500=y 142CONFIG_FB_XVR2500=y
1135CONFIG_FB_XVR1000=y 143CONFIG_FB_XVR1000=y
1136# CONFIG_FB_S1D13XXX is not set
1137# CONFIG_FB_NVIDIA is not set
1138# CONFIG_FB_RIVA is not set
1139# CONFIG_FB_MATROX is not set
1140CONFIG_FB_RADEON=y 144CONFIG_FB_RADEON=y
1141CONFIG_FB_RADEON_I2C=y
1142# CONFIG_FB_RADEON_BACKLIGHT is not set 145# CONFIG_FB_RADEON_BACKLIGHT is not set
1143# CONFIG_FB_RADEON_DEBUG is not set
1144# CONFIG_FB_ATY128 is not set
1145CONFIG_FB_ATY=y 146CONFIG_FB_ATY=y
1146CONFIG_FB_ATY_CT=y
1147# CONFIG_FB_ATY_GENERIC_LCD is not set
1148CONFIG_FB_ATY_GX=y 147CONFIG_FB_ATY_GX=y
1149# CONFIG_FB_ATY_BACKLIGHT is not set 148# CONFIG_FB_ATY_BACKLIGHT is not set
1150# CONFIG_FB_S3 is not set
1151# CONFIG_FB_SAVAGE is not set
1152# CONFIG_FB_SIS is not set
1153# CONFIG_FB_VIA is not set
1154# CONFIG_FB_NEOMAGIC is not set
1155# CONFIG_FB_KYRO is not set
1156# CONFIG_FB_3DFX is not set
1157# CONFIG_FB_VOODOO1 is not set
1158# CONFIG_FB_VT8623 is not set
1159# CONFIG_FB_TRIDENT is not set
1160# CONFIG_FB_ARK is not set
1161# CONFIG_FB_PM3 is not set
1162# CONFIG_FB_CARMINE is not set
1163# CONFIG_FB_VIRTUAL is not set
1164# CONFIG_FB_METRONOME is not set
1165# CONFIG_FB_MB862XX is not set
1166# CONFIG_FB_BROADSHEET is not set
1167# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1168
1169#
1170# Display device support
1171#
1172# CONFIG_DISPLAY_SUPPORT is not set
1173
1174#
1175# Console display driver support
1176#
1177CONFIG_DUMMY_CONSOLE=y
1178CONFIG_FRAMEBUFFER_CONSOLE=y 149CONFIG_FRAMEBUFFER_CONSOLE=y
1179CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y 150CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
1180# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
1181CONFIG_FONTS=y 151CONFIG_FONTS=y
1182# CONFIG_FONT_8x8 is not set
1183# CONFIG_FONT_8x16 is not set
1184# CONFIG_FONT_6x11 is not set
1185# CONFIG_FONT_7x14 is not set
1186# CONFIG_FONT_PEARL_8x8 is not set
1187# CONFIG_FONT_ACORN_8x8 is not set
1188CONFIG_FONT_SUN8x16=y 152CONFIG_FONT_SUN8x16=y
1189# CONFIG_FONT_SUN12x22 is not set
1190# CONFIG_FONT_10x18 is not set
1191CONFIG_LOGO=y 153CONFIG_LOGO=y
1192# CONFIG_LOGO_LINUX_MONO is not set 154# CONFIG_LOGO_LINUX_MONO is not set
1193# CONFIG_LOGO_LINUX_VGA16 is not set 155# CONFIG_LOGO_LINUX_VGA16 is not set
1194# CONFIG_LOGO_LINUX_CLUT224 is not set 156# CONFIG_LOGO_LINUX_CLUT224 is not set
1195CONFIG_LOGO_SUN_CLUT224=y
1196CONFIG_SOUND=m 157CONFIG_SOUND=m
1197CONFIG_SOUND_OSS_CORE=y
1198CONFIG_SOUND_OSS_CORE_PRECLAIM=y
1199CONFIG_SND=m 158CONFIG_SND=m
1200CONFIG_SND_TIMER=m
1201CONFIG_SND_PCM=m
1202CONFIG_SND_RAWMIDI=m
1203CONFIG_SND_SEQUENCER=m 159CONFIG_SND_SEQUENCER=m
1204CONFIG_SND_SEQ_DUMMY=m 160CONFIG_SND_SEQ_DUMMY=m
1205CONFIG_SND_OSSEMUL=y
1206CONFIG_SND_MIXER_OSS=m 161CONFIG_SND_MIXER_OSS=m
1207CONFIG_SND_PCM_OSS=m 162CONFIG_SND_PCM_OSS=m
1208CONFIG_SND_PCM_OSS_PLUGINS=y
1209CONFIG_SND_SEQUENCER_OSS=y 163CONFIG_SND_SEQUENCER_OSS=y
1210# CONFIG_SND_HRTIMER is not set
1211# CONFIG_SND_DYNAMIC_MINORS is not set
1212CONFIG_SND_SUPPORT_OLD_API=y
1213CONFIG_SND_VERBOSE_PROCFS=y
1214# CONFIG_SND_VERBOSE_PRINTK is not set
1215# CONFIG_SND_DEBUG is not set
1216CONFIG_SND_VMASTER=y
1217CONFIG_SND_RAWMIDI_SEQ=m
1218# CONFIG_SND_OPL3_LIB_SEQ is not set
1219# CONFIG_SND_OPL4_LIB_SEQ is not set
1220# CONFIG_SND_SBAWE_SEQ is not set
1221# CONFIG_SND_EMU10K1_SEQ is not set
1222CONFIG_SND_MPU401_UART=m
1223CONFIG_SND_AC97_CODEC=m
1224CONFIG_SND_DRIVERS=y
1225CONFIG_SND_DUMMY=m 164CONFIG_SND_DUMMY=m
1226CONFIG_SND_VIRMIDI=m 165CONFIG_SND_VIRMIDI=m
1227CONFIG_SND_MTPAV=m 166CONFIG_SND_MTPAV=m
1228# CONFIG_SND_SERIAL_U16550 is not set
1229# CONFIG_SND_MPU401 is not set
1230# CONFIG_SND_AC97_POWER_SAVE is not set
1231CONFIG_SND_PCI=y
1232# CONFIG_SND_AD1889 is not set
1233# CONFIG_SND_ALS300 is not set
1234CONFIG_SND_ALI5451=m 167CONFIG_SND_ALI5451=m
1235# CONFIG_SND_ATIIXP is not set
1236# CONFIG_SND_ATIIXP_MODEM is not set
1237# CONFIG_SND_AU8810 is not set
1238# CONFIG_SND_AU8820 is not set
1239# CONFIG_SND_AU8830 is not set
1240# CONFIG_SND_AW2 is not set
1241# CONFIG_SND_AZT3328 is not set
1242# CONFIG_SND_BT87X is not set
1243# CONFIG_SND_CA0106 is not set
1244# CONFIG_SND_CMIPCI is not set
1245# CONFIG_SND_OXYGEN is not set
1246# CONFIG_SND_CS4281 is not set
1247# CONFIG_SND_CS46XX is not set
1248# CONFIG_SND_CS5535AUDIO is not set
1249# CONFIG_SND_CTXFI is not set
1250# CONFIG_SND_DARLA20 is not set
1251# CONFIG_SND_GINA20 is not set
1252# CONFIG_SND_LAYLA20 is not set
1253# CONFIG_SND_DARLA24 is not set
1254# CONFIG_SND_GINA24 is not set
1255# CONFIG_SND_LAYLA24 is not set
1256# CONFIG_SND_MONA is not set
1257# CONFIG_SND_MIA is not set
1258# CONFIG_SND_ECHO3G is not set
1259# CONFIG_SND_INDIGO is not set
1260# CONFIG_SND_INDIGOIO is not set
1261# CONFIG_SND_INDIGODJ is not set
1262# CONFIG_SND_INDIGOIOX is not set
1263# CONFIG_SND_INDIGODJX is not set
1264# CONFIG_SND_EMU10K1 is not set
1265# CONFIG_SND_EMU10K1X is not set
1266# CONFIG_SND_ENS1370 is not set
1267# CONFIG_SND_ENS1371 is not set
1268# CONFIG_SND_ES1938 is not set
1269# CONFIG_SND_ES1968 is not set
1270# CONFIG_SND_FM801 is not set
1271# CONFIG_SND_HDA_INTEL is not set
1272# CONFIG_SND_HDSP is not set
1273# CONFIG_SND_HDSPM is not set
1274# CONFIG_SND_HIFIER is not set
1275# CONFIG_SND_ICE1712 is not set
1276# CONFIG_SND_ICE1724 is not set
1277# CONFIG_SND_INTEL8X0 is not set
1278# CONFIG_SND_INTEL8X0M is not set
1279# CONFIG_SND_KORG1212 is not set
1280# CONFIG_SND_LX6464ES is not set
1281# CONFIG_SND_MAESTRO3 is not set
1282# CONFIG_SND_MIXART is not set
1283# CONFIG_SND_NM256 is not set
1284# CONFIG_SND_PCXHR is not set
1285# CONFIG_SND_RIPTIDE is not set
1286# CONFIG_SND_RME32 is not set
1287# CONFIG_SND_RME96 is not set
1288# CONFIG_SND_RME9652 is not set
1289# CONFIG_SND_SONICVIBES is not set
1290# CONFIG_SND_TRIDENT is not set
1291# CONFIG_SND_VIA82XX is not set
1292# CONFIG_SND_VIA82XX_MODEM is not set
1293# CONFIG_SND_VIRTUOSO is not set
1294# CONFIG_SND_VX222 is not set
1295# CONFIG_SND_YMFPCI is not set
1296CONFIG_SND_USB=y
1297# CONFIG_SND_USB_AUDIO is not set
1298# CONFIG_SND_USB_UA101 is not set
1299# CONFIG_SND_USB_CAIAQ is not set
1300CONFIG_SND_SPARC=y
1301# CONFIG_SND_SUN_AMD7930 is not set
1302CONFIG_SND_SUN_CS4231=m 168CONFIG_SND_SUN_CS4231=m
1303# CONFIG_SND_SUN_DBRI is not set
1304# CONFIG_SND_SOC is not set
1305# CONFIG_SOUND_PRIME is not set
1306CONFIG_AC97_BUS=m
1307CONFIG_HID_SUPPORT=y
1308CONFIG_HID=y
1309# CONFIG_HIDRAW is not set
1310
1311#
1312# USB Input Devices
1313#
1314CONFIG_USB_HID=y
1315# CONFIG_HID_PID is not set
1316CONFIG_USB_HIDDEV=y 169CONFIG_USB_HIDDEV=y
1317
1318#
1319# Special HID drivers
1320#
1321# CONFIG_HID_3M_PCT is not set
1322CONFIG_HID_A4TECH=y
1323CONFIG_HID_APPLE=y
1324CONFIG_HID_BELKIN=y
1325# CONFIG_HID_CANDO is not set
1326CONFIG_HID_CHERRY=y
1327CONFIG_HID_CHICONY=y
1328# CONFIG_HID_PRODIKEYS is not set
1329CONFIG_HID_CYPRESS=y
1330CONFIG_HID_DRAGONRISE=y 170CONFIG_HID_DRAGONRISE=y
1331# CONFIG_DRAGONRISE_FF is not set
1332# CONFIG_HID_EGALAX is not set
1333CONFIG_HID_EZKEY=y
1334CONFIG_HID_KYE=y
1335CONFIG_HID_GYRATION=y 171CONFIG_HID_GYRATION=y
1336CONFIG_HID_TWINHAN=y 172CONFIG_HID_TWINHAN=y
1337CONFIG_HID_KENSINGTON=y
1338CONFIG_HID_LOGITECH=y
1339# CONFIG_LOGITECH_FF is not set
1340# CONFIG_LOGIRUMBLEPAD2_FF is not set
1341# CONFIG_LOGIG940_FF is not set
1342CONFIG_HID_MICROSOFT=y
1343# CONFIG_HID_MOSART is not set
1344CONFIG_HID_MONTEREY=y
1345CONFIG_HID_NTRIG=y 173CONFIG_HID_NTRIG=y
1346CONFIG_HID_ORTEK=y 174CONFIG_HID_ORTEK=y
1347CONFIG_HID_PANTHERLORD=y 175CONFIG_HID_PANTHERLORD=y
1348# CONFIG_PANTHERLORD_FF is not set
1349CONFIG_HID_PETALYNX=y 176CONFIG_HID_PETALYNX=y
1350# CONFIG_HID_PICOLCD is not set
1351# CONFIG_HID_QUANTA is not set
1352# CONFIG_HID_ROCCAT_KONE is not set
1353CONFIG_HID_SAMSUNG=y 177CONFIG_HID_SAMSUNG=y
1354CONFIG_HID_SONY=y 178CONFIG_HID_SONY=y
1355# CONFIG_HID_STANTUM is not set
1356CONFIG_HID_SUNPLUS=y 179CONFIG_HID_SUNPLUS=y
1357CONFIG_HID_GREENASIA=y 180CONFIG_HID_GREENASIA=y
1358# CONFIG_GREENASIA_FF is not set
1359CONFIG_HID_SMARTJOYPLUS=y 181CONFIG_HID_SMARTJOYPLUS=y
1360# CONFIG_SMARTJOYPLUS_FF is not set
1361CONFIG_HID_TOPSEED=y 182CONFIG_HID_TOPSEED=y
1362CONFIG_HID_THRUSTMASTER=y 183CONFIG_HID_THRUSTMASTER=y
1363# CONFIG_THRUSTMASTER_FF is not set
1364CONFIG_HID_ZEROPLUS=y 184CONFIG_HID_ZEROPLUS=y
1365# CONFIG_ZEROPLUS_FF is not set
1366# CONFIG_HID_ZYDACRON is not set
1367CONFIG_USB_SUPPORT=y
1368CONFIG_USB_ARCH_HAS_HCD=y
1369CONFIG_USB_ARCH_HAS_OHCI=y
1370CONFIG_USB_ARCH_HAS_EHCI=y
1371CONFIG_USB=y 185CONFIG_USB=y
1372# CONFIG_USB_DEBUG is not set
1373# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1374
1375#
1376# Miscellaneous USB options
1377#
1378# CONFIG_USB_DEVICEFS is not set
1379# CONFIG_USB_DEVICE_CLASS is not set 186# CONFIG_USB_DEVICE_CLASS is not set
1380# CONFIG_USB_DYNAMIC_MINORS is not set
1381# CONFIG_USB_MON is not set
1382# CONFIG_USB_WUSB is not set
1383# CONFIG_USB_WUSB_CBAF is not set
1384
1385#
1386# USB Host Controller Drivers
1387#
1388# CONFIG_USB_C67X00_HCD is not set
1389# CONFIG_USB_XHCI_HCD is not set
1390CONFIG_USB_EHCI_HCD=m 187CONFIG_USB_EHCI_HCD=m
1391# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1392# CONFIG_USB_EHCI_TT_NEWSCHED is not set 188# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1393# CONFIG_USB_OXU210HP_HCD is not set
1394# CONFIG_USB_ISP116X_HCD is not set
1395# CONFIG_USB_ISP1760_HCD is not set
1396# CONFIG_USB_ISP1362_HCD is not set
1397CONFIG_USB_OHCI_HCD=y 189CONFIG_USB_OHCI_HCD=y
1398# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1399# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
1400CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1401CONFIG_USB_UHCI_HCD=m 190CONFIG_USB_UHCI_HCD=m
1402# CONFIG_USB_SL811_HCD is not set
1403# CONFIG_USB_R8A66597_HCD is not set
1404# CONFIG_USB_WHCI_HCD is not set
1405# CONFIG_USB_HWA_HCD is not set
1406
1407#
1408# USB Device Class drivers
1409#
1410# CONFIG_USB_ACM is not set
1411# CONFIG_USB_PRINTER is not set
1412# CONFIG_USB_WDM is not set
1413# CONFIG_USB_TMC is not set
1414
1415#
1416# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1417#
1418
1419#
1420# also be needed; see USB_STORAGE Help for more info
1421#
1422CONFIG_USB_STORAGE=m 191CONFIG_USB_STORAGE=m
1423# CONFIG_USB_STORAGE_DEBUG is not set
1424# CONFIG_USB_STORAGE_DATAFAB is not set
1425# CONFIG_USB_STORAGE_FREECOM is not set
1426# CONFIG_USB_STORAGE_ISD200 is not set
1427# CONFIG_USB_STORAGE_USBAT is not set
1428# CONFIG_USB_STORAGE_SDDR09 is not set
1429# CONFIG_USB_STORAGE_SDDR55 is not set
1430# CONFIG_USB_STORAGE_JUMPSHOT is not set
1431# CONFIG_USB_STORAGE_ALAUDA is not set
1432# CONFIG_USB_STORAGE_ONETOUCH is not set
1433# CONFIG_USB_STORAGE_KARMA is not set
1434# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1435# CONFIG_USB_LIBUSUAL is not set
1436
1437#
1438# USB Imaging devices
1439#
1440# CONFIG_USB_MDC800 is not set
1441# CONFIG_USB_MICROTEK is not set
1442
1443#
1444# USB port drivers
1445#
1446# CONFIG_USB_SERIAL is not set
1447
1448#
1449# USB Miscellaneous drivers
1450#
1451# CONFIG_USB_EMI62 is not set
1452# CONFIG_USB_EMI26 is not set
1453# CONFIG_USB_ADUTUX is not set
1454# CONFIG_USB_SEVSEG is not set
1455# CONFIG_USB_RIO500 is not set
1456# CONFIG_USB_LEGOTOWER is not set
1457# CONFIG_USB_LCD is not set
1458# CONFIG_USB_LED is not set
1459# CONFIG_USB_CYPRESS_CY7C63 is not set
1460# CONFIG_USB_CYTHERM is not set
1461# CONFIG_USB_IDMOUSE is not set
1462# CONFIG_USB_FTDI_ELAN is not set
1463# CONFIG_USB_APPLEDISPLAY is not set
1464# CONFIG_USB_SISUSBVGA is not set
1465# CONFIG_USB_LD is not set
1466# CONFIG_USB_TRANCEVIBRATOR is not set
1467# CONFIG_USB_IOWARRIOR is not set
1468# CONFIG_USB_TEST is not set
1469# CONFIG_USB_ISIGHTFW is not set
1470# CONFIG_USB_GADGET is not set
1471
1472#
1473# OTG and related infrastructure
1474#
1475# CONFIG_NOP_USB_XCEIV is not set
1476# CONFIG_UWB is not set
1477# CONFIG_MMC is not set
1478# CONFIG_MEMSTICK is not set
1479# CONFIG_NEW_LEDS is not set
1480# CONFIG_ACCESSIBILITY is not set
1481# CONFIG_INFINIBAND is not set
1482CONFIG_RTC_LIB=y
1483CONFIG_RTC_CLASS=y
1484CONFIG_RTC_HCTOSYS=y
1485CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1486# CONFIG_RTC_DEBUG is not set
1487
1488#
1489# RTC interfaces
1490#
1491CONFIG_RTC_INTF_SYSFS=y
1492CONFIG_RTC_INTF_PROC=y
1493CONFIG_RTC_INTF_DEV=y
1494# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1495# CONFIG_RTC_DRV_TEST is not set
1496
1497#
1498# I2C RTC drivers
1499#
1500# CONFIG_RTC_DRV_DS1307 is not set
1501# CONFIG_RTC_DRV_DS1374 is not set
1502# CONFIG_RTC_DRV_DS1672 is not set
1503# CONFIG_RTC_DRV_MAX6900 is not set
1504# CONFIG_RTC_DRV_RS5C372 is not set
1505# CONFIG_RTC_DRV_ISL1208 is not set
1506# CONFIG_RTC_DRV_X1205 is not set
1507# CONFIG_RTC_DRV_PCF8563 is not set
1508# CONFIG_RTC_DRV_PCF8583 is not set
1509# CONFIG_RTC_DRV_M41T80 is not set
1510# CONFIG_RTC_DRV_BQ32K is not set
1511# CONFIG_RTC_DRV_S35390A is not set
1512# CONFIG_RTC_DRV_FM3130 is not set
1513# CONFIG_RTC_DRV_RX8581 is not set
1514# CONFIG_RTC_DRV_RX8025 is not set
1515
1516#
1517# SPI RTC drivers
1518#
1519
1520#
1521# Platform RTC drivers
1522#
1523CONFIG_RTC_DRV_CMOS=y
1524# CONFIG_RTC_DRV_DS1286 is not set
1525# CONFIG_RTC_DRV_DS1511 is not set
1526# CONFIG_RTC_DRV_DS1553 is not set
1527# CONFIG_RTC_DRV_DS1742 is not set
1528# CONFIG_RTC_DRV_STK17TA8 is not set
1529# CONFIG_RTC_DRV_M48T86 is not set
1530# CONFIG_RTC_DRV_M48T35 is not set
1531CONFIG_RTC_DRV_M48T59=y
1532# CONFIG_RTC_DRV_MSM6242 is not set
1533CONFIG_RTC_DRV_BQ4802=y
1534# CONFIG_RTC_DRV_RP5C01 is not set
1535# CONFIG_RTC_DRV_V3020 is not set
1536
1537#
1538# on-CPU RTC drivers
1539#
1540CONFIG_RTC_DRV_SUN4V=y
1541CONFIG_RTC_DRV_STARFIRE=y
1542# CONFIG_DMADEVICES is not set
1543# CONFIG_AUXDISPLAY is not set
1544# CONFIG_UIO is not set
1545# CONFIG_STAGING is not set
1546
1547#
1548# Misc Linux/SPARC drivers
1549#
1550CONFIG_SUN_OPENPROMIO=y 192CONFIG_SUN_OPENPROMIO=y
1551# CONFIG_OBP_FLASH is not set
1552# CONFIG_TADPOLE_TS102_UCTRL is not set
1553# CONFIG_BBC_I2C is not set
1554# CONFIG_ENVCTRL is not set
1555# CONFIG_DISPLAY7SEG is not set
1556
1557#
1558# File systems
1559#
1560CONFIG_EXT2_FS=y 193CONFIG_EXT2_FS=y
1561CONFIG_EXT2_FS_XATTR=y 194CONFIG_EXT2_FS_XATTR=y
1562CONFIG_EXT2_FS_POSIX_ACL=y 195CONFIG_EXT2_FS_POSIX_ACL=y
1563CONFIG_EXT2_FS_SECURITY=y 196CONFIG_EXT2_FS_SECURITY=y
1564# CONFIG_EXT2_FS_XIP is not set
1565CONFIG_EXT3_FS=y 197CONFIG_EXT3_FS=y
1566# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set 198# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1567CONFIG_EXT3_FS_XATTR=y
1568CONFIG_EXT3_FS_POSIX_ACL=y 199CONFIG_EXT3_FS_POSIX_ACL=y
1569CONFIG_EXT3_FS_SECURITY=y 200CONFIG_EXT3_FS_SECURITY=y
1570# CONFIG_EXT4_FS is not set
1571CONFIG_JBD=y
1572# CONFIG_JBD_DEBUG is not set
1573CONFIG_FS_MBCACHE=y
1574# CONFIG_REISERFS_FS is not set
1575# CONFIG_JFS_FS is not set
1576CONFIG_FS_POSIX_ACL=y
1577# CONFIG_XFS_FS is not set
1578# CONFIG_GFS2_FS is not set
1579# CONFIG_OCFS2_FS is not set
1580# CONFIG_BTRFS_FS is not set
1581# CONFIG_NILFS2_FS is not set
1582CONFIG_FILE_LOCKING=y
1583CONFIG_FSNOTIFY=y
1584CONFIG_DNOTIFY=y
1585CONFIG_INOTIFY=y
1586CONFIG_INOTIFY_USER=y
1587# CONFIG_QUOTA is not set
1588# CONFIG_AUTOFS_FS is not set
1589# CONFIG_AUTOFS4_FS is not set
1590# CONFIG_FUSE_FS is not set
1591
1592#
1593# Caches
1594#
1595# CONFIG_FSCACHE is not set
1596
1597#
1598# CD-ROM/DVD Filesystems
1599#
1600# CONFIG_ISO9660_FS is not set
1601# CONFIG_UDF_FS is not set
1602
1603#
1604# DOS/FAT/NT Filesystems
1605#
1606# CONFIG_MSDOS_FS is not set
1607# CONFIG_VFAT_FS is not set
1608# CONFIG_NTFS_FS is not set
1609
1610#
1611# Pseudo filesystems
1612#
1613CONFIG_PROC_FS=y
1614CONFIG_PROC_KCORE=y 201CONFIG_PROC_KCORE=y
1615CONFIG_PROC_SYSCTL=y
1616CONFIG_PROC_PAGE_MONITOR=y
1617CONFIG_SYSFS=y
1618CONFIG_TMPFS=y 202CONFIG_TMPFS=y
1619# CONFIG_TMPFS_POSIX_ACL is not set
1620CONFIG_HUGETLBFS=y 203CONFIG_HUGETLBFS=y
1621CONFIG_HUGETLB_PAGE=y
1622# CONFIG_CONFIGFS_FS is not set
1623CONFIG_MISC_FILESYSTEMS=y
1624# CONFIG_ADFS_FS is not set
1625# CONFIG_AFFS_FS is not set
1626# CONFIG_ECRYPT_FS is not set
1627# CONFIG_HFS_FS is not set
1628# CONFIG_HFSPLUS_FS is not set
1629# CONFIG_BEFS_FS is not set
1630# CONFIG_BFS_FS is not set
1631# CONFIG_EFS_FS is not set
1632# CONFIG_LOGFS is not set
1633# CONFIG_CRAMFS is not set
1634# CONFIG_SQUASHFS is not set
1635# CONFIG_VXFS_FS is not set
1636# CONFIG_MINIX_FS is not set
1637# CONFIG_OMFS_FS is not set
1638# CONFIG_HPFS_FS is not set
1639# CONFIG_QNX4FS_FS is not set
1640# CONFIG_ROMFS_FS is not set
1641# CONFIG_SYSV_FS is not set
1642# CONFIG_UFS_FS is not set
1643CONFIG_NETWORK_FILESYSTEMS=y
1644# CONFIG_NFS_FS is not set
1645# CONFIG_NFSD is not set
1646# CONFIG_SMB_FS is not set
1647# CONFIG_CEPH_FS is not set
1648# CONFIG_CIFS is not set
1649# CONFIG_NCP_FS is not set
1650# CONFIG_CODA_FS is not set
1651# CONFIG_AFS_FS is not set
1652
1653#
1654# Partition Types
1655#
1656# CONFIG_PARTITION_ADVANCED is not set
1657CONFIG_MSDOS_PARTITION=y
1658CONFIG_SUN_PARTITION=y
1659CONFIG_NLS=y
1660CONFIG_NLS_DEFAULT="iso8859-1"
1661# CONFIG_NLS_CODEPAGE_437 is not set
1662# CONFIG_NLS_CODEPAGE_737 is not set
1663# CONFIG_NLS_CODEPAGE_775 is not set
1664# CONFIG_NLS_CODEPAGE_850 is not set
1665# CONFIG_NLS_CODEPAGE_852 is not set
1666# CONFIG_NLS_CODEPAGE_855 is not set
1667# CONFIG_NLS_CODEPAGE_857 is not set
1668# CONFIG_NLS_CODEPAGE_860 is not set
1669# CONFIG_NLS_CODEPAGE_861 is not set
1670# CONFIG_NLS_CODEPAGE_862 is not set
1671# CONFIG_NLS_CODEPAGE_863 is not set
1672# CONFIG_NLS_CODEPAGE_864 is not set
1673# CONFIG_NLS_CODEPAGE_865 is not set
1674# CONFIG_NLS_CODEPAGE_866 is not set
1675# CONFIG_NLS_CODEPAGE_869 is not set
1676# CONFIG_NLS_CODEPAGE_936 is not set
1677# CONFIG_NLS_CODEPAGE_950 is not set
1678# CONFIG_NLS_CODEPAGE_932 is not set
1679# CONFIG_NLS_CODEPAGE_949 is not set
1680# CONFIG_NLS_CODEPAGE_874 is not set
1681# CONFIG_NLS_ISO8859_8 is not set
1682# CONFIG_NLS_CODEPAGE_1250 is not set
1683# CONFIG_NLS_CODEPAGE_1251 is not set
1684# CONFIG_NLS_ASCII is not set
1685# CONFIG_NLS_ISO8859_1 is not set
1686# CONFIG_NLS_ISO8859_2 is not set
1687# CONFIG_NLS_ISO8859_3 is not set
1688# CONFIG_NLS_ISO8859_4 is not set
1689# CONFIG_NLS_ISO8859_5 is not set
1690# CONFIG_NLS_ISO8859_6 is not set
1691# CONFIG_NLS_ISO8859_7 is not set
1692# CONFIG_NLS_ISO8859_9 is not set
1693# CONFIG_NLS_ISO8859_13 is not set
1694# CONFIG_NLS_ISO8859_14 is not set
1695# CONFIG_NLS_ISO8859_15 is not set
1696# CONFIG_NLS_KOI8_R is not set
1697# CONFIG_NLS_KOI8_U is not set
1698# CONFIG_NLS_UTF8 is not set
1699# CONFIG_DLM is not set
1700
1701#
1702# Kernel hacking
1703#
1704CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1705CONFIG_PRINTK_TIME=y 204CONFIG_PRINTK_TIME=y
1706# CONFIG_ENABLE_WARN_DEPRECATED is not set 205# CONFIG_ENABLE_WARN_DEPRECATED is not set
1707CONFIG_ENABLE_MUST_CHECK=y
1708CONFIG_FRAME_WARN=2048
1709CONFIG_MAGIC_SYSRQ=y 206CONFIG_MAGIC_SYSRQ=y
1710# CONFIG_STRIP_ASM_SYMS is not set
1711# CONFIG_UNUSED_SYMBOLS is not set
1712CONFIG_DEBUG_FS=y
1713# CONFIG_HEADERS_CHECK is not set
1714CONFIG_DEBUG_KERNEL=y 207CONFIG_DEBUG_KERNEL=y
1715# CONFIG_DEBUG_SHIRQ is not set 208CONFIG_LOCKUP_DETECTOR=y
1716CONFIG_DETECT_SOFTLOCKUP=y
1717# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1718CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1719CONFIG_DETECT_HUNG_TASK=y 209CONFIG_DETECT_HUNG_TASK=y
1720# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1721CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1722# CONFIG_SCHED_DEBUG is not set 210# CONFIG_SCHED_DEBUG is not set
1723CONFIG_SCHEDSTATS=y 211CONFIG_SCHEDSTATS=y
1724# CONFIG_TIMER_STATS is not set
1725# CONFIG_DEBUG_OBJECTS is not set
1726# CONFIG_DEBUG_SLAB is not set
1727# CONFIG_DEBUG_KMEMLEAK is not set
1728# CONFIG_DEBUG_RT_MUTEXES is not set
1729# CONFIG_RT_MUTEX_TESTER is not set
1730# CONFIG_DEBUG_SPINLOCK is not set
1731# CONFIG_DEBUG_MUTEXES is not set
1732# CONFIG_DEBUG_LOCK_ALLOC is not set
1733# CONFIG_PROVE_LOCKING is not set
1734# CONFIG_LOCK_STAT is not set
1735# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1736# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1737CONFIG_STACKTRACE=y
1738# CONFIG_DEBUG_KOBJECT is not set
1739CONFIG_DEBUG_BUGVERBOSE=y
1740# CONFIG_DEBUG_INFO is not set
1741# CONFIG_DEBUG_VM is not set
1742# CONFIG_DEBUG_WRITECOUNT is not set
1743CONFIG_DEBUG_MEMORY_INIT=y
1744# CONFIG_DEBUG_LIST is not set
1745# CONFIG_DEBUG_SG is not set
1746# CONFIG_DEBUG_NOTIFIERS is not set
1747# CONFIG_DEBUG_CREDENTIALS is not set
1748# CONFIG_BOOT_PRINTK_DELAY is not set
1749# CONFIG_RCU_TORTURE_TEST is not set
1750# CONFIG_RCU_CPU_STALL_DETECTOR is not set 212# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1751# CONFIG_KPROBES_SANITY_TEST is not set
1752# CONFIG_BACKTRACE_SELF_TEST is not set
1753# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1754# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1755# CONFIG_LKDTM is not set
1756# CONFIG_FAULT_INJECTION is not set
1757# CONFIG_LATENCYTOP is not set
1758CONFIG_SYSCTL_SYSCALL_CHECK=y 213CONFIG_SYSCTL_SYSCALL_CHECK=y
1759# CONFIG_DEBUG_PAGEALLOC is not set
1760CONFIG_NOP_TRACER=y
1761CONFIG_HAVE_FUNCTION_TRACER=y
1762CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1763CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
1764CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
1765CONFIG_HAVE_DYNAMIC_FTRACE=y
1766CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1767CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
1768CONFIG_RING_BUFFER=y
1769CONFIG_EVENT_TRACING=y
1770CONFIG_CONTEXT_SWITCH_TRACER=y
1771CONFIG_RING_BUFFER_ALLOW_SWAP=y
1772CONFIG_TRACING=y
1773CONFIG_GENERIC_TRACER=y
1774CONFIG_TRACING_SUPPORT=y
1775CONFIG_FTRACE=y
1776# CONFIG_FUNCTION_TRACER is not set
1777# CONFIG_IRQSOFF_TRACER is not set
1778# CONFIG_SCHED_TRACER is not set
1779# CONFIG_FTRACE_SYSCALLS is not set
1780# CONFIG_BOOT_TRACER is not set
1781CONFIG_BRANCH_PROFILE_NONE=y
1782# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1783# CONFIG_PROFILE_ALL_BRANCHES is not set
1784# CONFIG_STACK_TRACER is not set
1785# CONFIG_KMEMTRACE is not set
1786# CONFIG_WORKQUEUE_TRACER is not set
1787CONFIG_BLK_DEV_IO_TRACE=y 214CONFIG_BLK_DEV_IO_TRACE=y
1788# CONFIG_FTRACE_STARTUP_TEST is not set
1789# CONFIG_RING_BUFFER_BENCHMARK is not set
1790# CONFIG_DYNAMIC_DEBUG is not set
1791# CONFIG_DMA_API_DEBUG is not set
1792# CONFIG_ATOMIC64_SELFTEST is not set
1793# CONFIG_SAMPLES is not set
1794CONFIG_HAVE_ARCH_KGDB=y
1795# CONFIG_KGDB is not set
1796# CONFIG_DEBUG_STACK_USAGE is not set
1797# CONFIG_DEBUG_DCFLUSH is not set
1798# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
1799
1800#
1801# Security options
1802#
1803CONFIG_KEYS=y 215CONFIG_KEYS=y
1804# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
1805# CONFIG_SECURITY is not set
1806# CONFIG_SECURITYFS is not set
1807# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1808# CONFIG_DEFAULT_SECURITY_SMACK is not set
1809# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1810CONFIG_DEFAULT_SECURITY_DAC=y
1811CONFIG_DEFAULT_SECURITY=""
1812CONFIG_XOR_BLOCKS=m
1813CONFIG_ASYNC_CORE=m
1814CONFIG_ASYNC_MEMCPY=m
1815CONFIG_ASYNC_XOR=m
1816CONFIG_ASYNC_PQ=m
1817CONFIG_ASYNC_RAID6_RECOV=m
1818CONFIG_CRYPTO=y
1819
1820#
1821# Crypto core or helper
1822#
1823CONFIG_CRYPTO_ALGAPI=y
1824CONFIG_CRYPTO_ALGAPI2=y
1825CONFIG_CRYPTO_AEAD=y
1826CONFIG_CRYPTO_AEAD2=y
1827CONFIG_CRYPTO_BLKCIPHER=y
1828CONFIG_CRYPTO_BLKCIPHER2=y
1829CONFIG_CRYPTO_HASH=y
1830CONFIG_CRYPTO_HASH2=y
1831CONFIG_CRYPTO_RNG2=y
1832CONFIG_CRYPTO_PCOMP=y
1833CONFIG_CRYPTO_MANAGER=y
1834CONFIG_CRYPTO_MANAGER2=y
1835CONFIG_CRYPTO_GF128MUL=m
1836CONFIG_CRYPTO_NULL=m 216CONFIG_CRYPTO_NULL=m
1837# CONFIG_CRYPTO_PCRYPT is not set
1838CONFIG_CRYPTO_WORKQUEUE=y
1839# CONFIG_CRYPTO_CRYPTD is not set
1840CONFIG_CRYPTO_AUTHENC=y
1841CONFIG_CRYPTO_TEST=m 217CONFIG_CRYPTO_TEST=m
1842
1843#
1844# Authenticated Encryption with Associated Data
1845#
1846# CONFIG_CRYPTO_CCM is not set
1847# CONFIG_CRYPTO_GCM is not set
1848# CONFIG_CRYPTO_SEQIV is not set
1849
1850#
1851# Block modes
1852#
1853CONFIG_CRYPTO_CBC=y
1854# CONFIG_CRYPTO_CTR is not set
1855# CONFIG_CRYPTO_CTS is not set
1856CONFIG_CRYPTO_ECB=m
1857CONFIG_CRYPTO_LRW=m 218CONFIG_CRYPTO_LRW=m
1858CONFIG_CRYPTO_PCBC=m 219CONFIG_CRYPTO_PCBC=m
1859CONFIG_CRYPTO_XTS=m 220CONFIG_CRYPTO_XTS=m
1860
1861#
1862# Hash modes
1863#
1864CONFIG_CRYPTO_HMAC=y
1865CONFIG_CRYPTO_XCBC=y 221CONFIG_CRYPTO_XCBC=y
1866# CONFIG_CRYPTO_VMAC is not set
1867
1868#
1869# Digest
1870#
1871CONFIG_CRYPTO_CRC32C=m
1872# CONFIG_CRYPTO_GHASH is not set
1873CONFIG_CRYPTO_MD4=y 222CONFIG_CRYPTO_MD4=y
1874CONFIG_CRYPTO_MD5=y
1875CONFIG_CRYPTO_MICHAEL_MIC=m 223CONFIG_CRYPTO_MICHAEL_MIC=m
1876# CONFIG_CRYPTO_RMD128 is not set
1877# CONFIG_CRYPTO_RMD160 is not set
1878# CONFIG_CRYPTO_RMD256 is not set
1879# CONFIG_CRYPTO_RMD320 is not set
1880CONFIG_CRYPTO_SHA1=y
1881CONFIG_CRYPTO_SHA256=m 224CONFIG_CRYPTO_SHA256=m
1882CONFIG_CRYPTO_SHA512=m 225CONFIG_CRYPTO_SHA512=m
1883CONFIG_CRYPTO_TGR192=m 226CONFIG_CRYPTO_TGR192=m
1884CONFIG_CRYPTO_WP512=m 227CONFIG_CRYPTO_WP512=m
1885
1886#
1887# Ciphers
1888#
1889CONFIG_CRYPTO_AES=m 228CONFIG_CRYPTO_AES=m
1890CONFIG_CRYPTO_ANUBIS=m 229CONFIG_CRYPTO_ANUBIS=m
1891CONFIG_CRYPTO_ARC4=m
1892CONFIG_CRYPTO_BLOWFISH=m 230CONFIG_CRYPTO_BLOWFISH=m
1893CONFIG_CRYPTO_CAMELLIA=m 231CONFIG_CRYPTO_CAMELLIA=m
1894CONFIG_CRYPTO_CAST5=m 232CONFIG_CRYPTO_CAST5=m
1895CONFIG_CRYPTO_CAST6=m 233CONFIG_CRYPTO_CAST6=m
1896CONFIG_CRYPTO_DES=y
1897CONFIG_CRYPTO_FCRYPT=m 234CONFIG_CRYPTO_FCRYPT=m
1898CONFIG_CRYPTO_KHAZAD=m 235CONFIG_CRYPTO_KHAZAD=m
1899# CONFIG_CRYPTO_SALSA20 is not set
1900CONFIG_CRYPTO_SEED=m 236CONFIG_CRYPTO_SEED=m
1901CONFIG_CRYPTO_SERPENT=m 237CONFIG_CRYPTO_SERPENT=m
1902CONFIG_CRYPTO_TEA=m 238CONFIG_CRYPTO_TEA=m
1903CONFIG_CRYPTO_TWOFISH=m 239CONFIG_CRYPTO_TWOFISH=m
1904CONFIG_CRYPTO_TWOFISH_COMMON=m
1905
1906#
1907# Compression
1908#
1909CONFIG_CRYPTO_DEFLATE=y
1910# CONFIG_CRYPTO_ZLIB is not set
1911# CONFIG_CRYPTO_LZO is not set
1912
1913#
1914# Random Number Generation
1915#
1916# CONFIG_CRYPTO_ANSI_CPRNG is not set 240# CONFIG_CRYPTO_ANSI_CPRNG is not set
1917CONFIG_CRYPTO_HW=y
1918# CONFIG_CRYPTO_DEV_NIAGARA2 is not set
1919# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1920CONFIG_BINARY_PRINTF=y
1921
1922#
1923# Library routines
1924#
1925CONFIG_BITREVERSE=y
1926CONFIG_GENERIC_FIND_LAST_BIT=y
1927CONFIG_CRC_CCITT=m
1928CONFIG_CRC16=m 241CONFIG_CRC16=m
1929# CONFIG_CRC_T10DIF is not set
1930# CONFIG_CRC_ITU_T is not set
1931CONFIG_CRC32=y
1932# CONFIG_CRC7 is not set
1933CONFIG_LIBCRC32C=m 242CONFIG_LIBCRC32C=m
1934CONFIG_ZLIB_INFLATE=y
1935CONFIG_ZLIB_DEFLATE=y
1936CONFIG_LZO_DECOMPRESS=y
1937CONFIG_DECOMPRESS_GZIP=y
1938CONFIG_DECOMPRESS_BZIP2=y
1939CONFIG_DECOMPRESS_LZMA=y
1940CONFIG_DECOMPRESS_LZO=y
1941CONFIG_HAS_IOMEM=y
1942CONFIG_HAS_IOPORT=y
1943CONFIG_HAS_DMA=y
1944CONFIG_HAVE_LMB=y
1945CONFIG_NLATTR=y
diff --git a/arch/sparc/include/asm/atomic_64.h b/arch/sparc/include/asm/atomic_64.h
index 2050ca02c423..bdb2ff880bdd 100644
--- a/arch/sparc/include/asm/atomic_64.h
+++ b/arch/sparc/include/asm/atomic_64.h
@@ -20,14 +20,14 @@
20#define atomic64_set(v, i) (((v)->counter) = i) 20#define atomic64_set(v, i) (((v)->counter) = i)
21 21
22extern void atomic_add(int, atomic_t *); 22extern void atomic_add(int, atomic_t *);
23extern void atomic64_add(int, atomic64_t *); 23extern void atomic64_add(long, atomic64_t *);
24extern void atomic_sub(int, atomic_t *); 24extern void atomic_sub(int, atomic_t *);
25extern void atomic64_sub(int, atomic64_t *); 25extern void atomic64_sub(long, atomic64_t *);
26 26
27extern int atomic_add_ret(int, atomic_t *); 27extern int atomic_add_ret(int, atomic_t *);
28extern int atomic64_add_ret(int, atomic64_t *); 28extern long atomic64_add_ret(long, atomic64_t *);
29extern int atomic_sub_ret(int, atomic_t *); 29extern int atomic_sub_ret(int, atomic_t *);
30extern int atomic64_sub_ret(int, atomic64_t *); 30extern long atomic64_sub_ret(long, atomic64_t *);
31 31
32#define atomic_dec_return(v) atomic_sub_ret(1, v) 32#define atomic_dec_return(v) atomic_sub_ret(1, v)
33#define atomic64_dec_return(v) atomic64_sub_ret(1, v) 33#define atomic64_dec_return(v) atomic64_sub_ret(1, v)
@@ -91,7 +91,7 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
91 ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n))) 91 ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n)))
92#define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) 92#define atomic64_xchg(v, new) (xchg(&((v)->counter), new))
93 93
94static inline int atomic64_add_unless(atomic64_t *v, long a, long u) 94static inline long atomic64_add_unless(atomic64_t *v, long a, long u)
95{ 95{
96 long c, old; 96 long c, old;
97 c = atomic64_read(v); 97 c = atomic64_read(v);
diff --git a/arch/sparc/include/asm/backoff.h b/arch/sparc/include/asm/backoff.h
index fa1fdf67e350..db3af0d30fb1 100644
--- a/arch/sparc/include/asm/backoff.h
+++ b/arch/sparc/include/asm/backoff.h
@@ -8,6 +8,9 @@
8#define BACKOFF_SETUP(reg) \ 8#define BACKOFF_SETUP(reg) \
9 mov 1, reg 9 mov 1, reg
10 10
11#define BACKOFF_LABEL(spin_label, continue_label) \
12 spin_label
13
11#define BACKOFF_SPIN(reg, tmp, label) \ 14#define BACKOFF_SPIN(reg, tmp, label) \
12 mov reg, tmp; \ 15 mov reg, tmp; \
1388: brnz,pt tmp, 88b; \ 1688: brnz,pt tmp, 88b; \
@@ -22,9 +25,11 @@
22#else 25#else
23 26
24#define BACKOFF_SETUP(reg) 27#define BACKOFF_SETUP(reg)
25#define BACKOFF_SPIN(reg, tmp, label) \ 28
26 ba,pt %xcc, label; \ 29#define BACKOFF_LABEL(spin_label, continue_label) \
27 nop; 30 continue_label
31
32#define BACKOFF_SPIN(reg, tmp, label)
28 33
29#endif 34#endif
30 35
diff --git a/arch/sparc/include/asm/device.h b/arch/sparc/include/asm/device.h
index d4c452147412..daa6a8a5e9cd 100644
--- a/arch/sparc/include/asm/device.h
+++ b/arch/sparc/include/asm/device.h
@@ -6,18 +6,25 @@
6#ifndef _ASM_SPARC_DEVICE_H 6#ifndef _ASM_SPARC_DEVICE_H
7#define _ASM_SPARC_DEVICE_H 7#define _ASM_SPARC_DEVICE_H
8 8
9#include <asm/openprom.h>
10
9struct device_node; 11struct device_node;
10struct of_device; 12struct platform_device;
11 13
12struct dev_archdata { 14struct dev_archdata {
13 void *iommu; 15 void *iommu;
14 void *stc; 16 void *stc;
15 void *host_controller; 17 void *host_controller;
16 struct of_device *op; 18 struct platform_device *op;
17 int numa_node; 19 int numa_node;
18}; 20};
19 21
22extern void of_propagate_archdata(struct platform_device *bus);
23
20struct pdev_archdata { 24struct pdev_archdata {
25 struct resource resource[PROMREG_MAX];
26 unsigned int irqs[PROMINTR_MAX];
27 int num_irqs;
21}; 28};
22 29
23#endif /* _ASM_SPARC_DEVICE_H */ 30#endif /* _ASM_SPARC_DEVICE_H */
diff --git a/arch/sparc/include/asm/dma-mapping.h b/arch/sparc/include/asm/dma-mapping.h
index 4b4a0c0b0ccd..8c0e4f7bb204 100644
--- a/arch/sparc/include/asm/dma-mapping.h
+++ b/arch/sparc/include/asm/dma-mapping.h
@@ -11,7 +11,6 @@ extern int dma_supported(struct device *dev, u64 mask);
11 11
12#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) 12#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
13#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) 13#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
14#define dma_is_consistent(d, h) (1)
15 14
16extern struct dma_map_ops *dma_ops, pci32_dma_ops; 15extern struct dma_map_ops *dma_ops, pci32_dma_ops;
17extern struct bus_type pci_bus_type; 16extern struct bus_type pci_bus_type;
@@ -52,15 +51,6 @@ static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
52 return (dma_addr == DMA_ERROR_CODE); 51 return (dma_addr == DMA_ERROR_CODE);
53} 52}
54 53
55static inline int dma_get_cache_alignment(void)
56{
57 /*
58 * no easy way to get cache size on all processors, so return
59 * the maximum possible, to be safe
60 */
61 return (1 << INTERNODE_CACHE_SHIFT);
62}
63
64static inline int dma_set_mask(struct device *dev, u64 mask) 54static inline int dma_set_mask(struct device *dev, u64 mask)
65{ 55{
66#ifdef CONFIG_PCI 56#ifdef CONFIG_PCI
diff --git a/arch/sparc/include/asm/fb.h b/arch/sparc/include/asm/fb.h
index e834880be204..2173432ad7f7 100644
--- a/arch/sparc/include/asm/fb.h
+++ b/arch/sparc/include/asm/fb.h
@@ -1,5 +1,6 @@
1#ifndef _SPARC_FB_H_ 1#ifndef _SPARC_FB_H_
2#define _SPARC_FB_H_ 2#define _SPARC_FB_H_
3#include <linux/console.h>
3#include <linux/fb.h> 4#include <linux/fb.h>
4#include <linux/fs.h> 5#include <linux/fs.h>
5#include <asm/page.h> 6#include <asm/page.h>
@@ -18,6 +19,9 @@ static inline int fb_is_primary_device(struct fb_info *info)
18 struct device *dev = info->device; 19 struct device *dev = info->device;
19 struct device_node *node; 20 struct device_node *node;
20 21
22 if (console_set_on_cmdline)
23 return 0;
24
21 node = dev->of_node; 25 node = dev->of_node;
22 if (node && 26 if (node &&
23 node == of_console_device) 27 node == of_console_device)
diff --git a/arch/sparc/include/asm/floppy_64.h b/arch/sparc/include/asm/floppy_64.h
index 8fac3ab22f36..6597ce874d78 100644
--- a/arch/sparc/include/asm/floppy_64.h
+++ b/arch/sparc/include/asm/floppy_64.h
@@ -43,7 +43,7 @@ struct sun_flpy_controller {
43/* You'll only ever find one controller on an Ultra anyways. */ 43/* You'll only ever find one controller on an Ultra anyways. */
44static struct sun_flpy_controller *sun_fdc = (struct sun_flpy_controller *)-1; 44static struct sun_flpy_controller *sun_fdc = (struct sun_flpy_controller *)-1;
45unsigned long fdc_status; 45unsigned long fdc_status;
46static struct of_device *floppy_op = NULL; 46static struct platform_device *floppy_op = NULL;
47 47
48struct sun_floppy_ops { 48struct sun_floppy_ops {
49 unsigned char (*fd_inb) (unsigned long port); 49 unsigned char (*fd_inb) (unsigned long port);
@@ -548,7 +548,7 @@ static unsigned long __init sun_floppy_init(void)
548{ 548{
549 static int initialized = 0; 549 static int initialized = 0;
550 struct device_node *dp; 550 struct device_node *dp;
551 struct of_device *op; 551 struct platform_device *op;
552 const char *prop; 552 const char *prop;
553 char state[128]; 553 char state[128];
554 554
@@ -567,7 +567,7 @@ static unsigned long __init sun_floppy_init(void)
567 } 567 }
568 if (op) { 568 if (op) {
569 floppy_op = op; 569 floppy_op = op;
570 FLOPPY_IRQ = op->irqs[0]; 570 FLOPPY_IRQ = op->archdata.irqs[0];
571 } else { 571 } else {
572 struct device_node *ebus_dp; 572 struct device_node *ebus_dp;
573 void __iomem *auxio_reg; 573 void __iomem *auxio_reg;
@@ -593,7 +593,7 @@ static unsigned long __init sun_floppy_init(void)
593 if (state_prop && !strncmp(state_prop, "disabled", 8)) 593 if (state_prop && !strncmp(state_prop, "disabled", 8))
594 return 0; 594 return 0;
595 595
596 FLOPPY_IRQ = op->irqs[0]; 596 FLOPPY_IRQ = op->archdata.irqs[0];
597 597
598 /* Make sure the high density bit is set, some systems 598 /* Make sure the high density bit is set, some systems
599 * (most notably Ultra5/Ultra10) come up with it clear. 599 * (most notably Ultra5/Ultra10) come up with it clear.
@@ -661,7 +661,7 @@ static unsigned long __init sun_floppy_init(void)
661 config = 0; 661 config = 0;
662 for (dp = ebus_dp->child; dp; dp = dp->sibling) { 662 for (dp = ebus_dp->child; dp; dp = dp->sibling) {
663 if (!strcmp(dp->name, "ecpp")) { 663 if (!strcmp(dp->name, "ecpp")) {
664 struct of_device *ecpp_op; 664 struct platform_device *ecpp_op;
665 665
666 ecpp_op = of_find_device_by_node(dp); 666 ecpp_op = of_find_device_by_node(dp);
667 if (ecpp_op) 667 if (ecpp_op)
diff --git a/arch/sparc/include/asm/highmem.h b/arch/sparc/include/asm/highmem.h
index 3de42e776274..ec23b0a87b98 100644
--- a/arch/sparc/include/asm/highmem.h
+++ b/arch/sparc/include/asm/highmem.h
@@ -71,7 +71,7 @@ static inline void kunmap(struct page *page)
71} 71}
72 72
73extern void *kmap_atomic(struct page *page, enum km_type type); 73extern void *kmap_atomic(struct page *page, enum km_type type);
74extern void kunmap_atomic(void *kvaddr, enum km_type type); 74extern void kunmap_atomic_notypecheck(void *kvaddr, enum km_type type);
75extern struct page *kmap_atomic_to_page(void *vaddr); 75extern struct page *kmap_atomic_to_page(void *vaddr);
76 76
77#define flush_cache_kmaps() flush_cache_all() 77#define flush_cache_kmaps() flush_cache_all()
diff --git a/arch/sparc/include/asm/ioctls.h b/arch/sparc/include/asm/ioctls.h
index 1fe6855c5c18..53f4ee009bdd 100644
--- a/arch/sparc/include/asm/ioctls.h
+++ b/arch/sparc/include/asm/ioctls.h
@@ -80,6 +80,7 @@
80/* Get minor device of a pty master's FD -- Solaris equiv is ISPTM */ 80/* Get minor device of a pty master's FD -- Solaris equiv is ISPTM */
81#define TIOCGPTN _IOR('t', 134, unsigned int) /* Get Pty Number */ 81#define TIOCGPTN _IOR('t', 134, unsigned int) /* Get Pty Number */
82#define TIOCSPTLCK _IOW('t', 135, int) /* Lock/unlock PTY */ 82#define TIOCSPTLCK _IOW('t', 135, int) /* Lock/unlock PTY */
83#define TIOCSIG _IOW('t', 136, int) /* Generate signal on Pty slave */
83 84
84/* Little f */ 85/* Little f */
85#define FIOCLEX _IO('f', 1) 86#define FIOCLEX _IO('f', 1)
@@ -132,5 +133,6 @@
132#define TIOCPKT_START 8 133#define TIOCPKT_START 8
133#define TIOCPKT_NOSTOP 16 134#define TIOCPKT_NOSTOP 16
134#define TIOCPKT_DOSTOP 32 135#define TIOCPKT_DOSTOP 32
136#define TIOCPKT_IOCTL 64
135 137
136#endif /* !(_ASM_SPARC_IOCTLS_H) */ 138#endif /* !(_ASM_SPARC_IOCTLS_H) */
diff --git a/arch/sparc/include/asm/local64.h b/arch/sparc/include/asm/local64.h
new file mode 100644
index 000000000000..36c93b5cc239
--- /dev/null
+++ b/arch/sparc/include/asm/local64.h
@@ -0,0 +1 @@
#include <asm-generic/local64.h>
diff --git a/arch/sparc/include/asm/of_device.h b/arch/sparc/include/asm/of_device.h
deleted file mode 100644
index f320246a0586..000000000000
--- a/arch/sparc/include/asm/of_device.h
+++ /dev/null
@@ -1,38 +0,0 @@
1#ifndef _ASM_SPARC_OF_DEVICE_H
2#define _ASM_SPARC_OF_DEVICE_H
3#ifdef __KERNEL__
4
5#include <linux/device.h>
6#include <linux/of.h>
7#include <linux/mod_devicetable.h>
8#include <asm/openprom.h>
9
10/*
11 * The of_device is a kind of "base class" that is a superset of
12 * struct device for use by devices attached to an OF node and
13 * probed using OF properties.
14 */
15struct of_device
16{
17 struct device dev;
18 struct resource resource[PROMREG_MAX];
19 unsigned int irqs[PROMINTR_MAX];
20 int num_irqs;
21
22 void *sysdata;
23
24 int slot;
25 int portid;
26 int clock_freq;
27};
28
29extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name);
30extern void of_iounmap(struct resource *res, void __iomem *base, unsigned long size);
31
32extern void of_propagate_archdata(struct of_device *bus);
33
34/* This is just here during the transition */
35#include <linux/of_platform.h>
36
37#endif /* __KERNEL__ */
38#endif /* _ASM_SPARC_OF_DEVICE_H */
diff --git a/arch/sparc/include/asm/of_platform.h b/arch/sparc/include/asm/of_platform.h
deleted file mode 100644
index 90da99059f83..000000000000
--- a/arch/sparc/include/asm/of_platform.h
+++ /dev/null
@@ -1,18 +0,0 @@
1#ifndef ___ASM_SPARC_OF_PLATFORM_H
2#define ___ASM_SPARC_OF_PLATFORM_H
3/*
4 * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
5 * <benh@kernel.crashing.org>
6 * Modified for Sparc by merging parts of asm/of_device.h
7 * by Stephen Rothwell
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version
12 * 2 of the License, or (at your option) any later version.
13 *
14 */
15
16#define of_bus_type of_platform_bus_type /* for compatibility */
17
18#endif
diff --git a/arch/sparc/include/asm/oplib_64.h b/arch/sparc/include/asm/oplib_64.h
index a5db0317b5fb..3e0b2d62303d 100644
--- a/arch/sparc/include/asm/oplib_64.h
+++ b/arch/sparc/include/asm/oplib_64.h
@@ -185,9 +185,8 @@ extern int prom_getunumber(int syndrome_code,
185 char *buf, int buflen); 185 char *buf, int buflen);
186 186
187/* Retain physical memory to the caller across soft resets. */ 187/* Retain physical memory to the caller across soft resets. */
188extern unsigned long prom_retain(const char *name, 188extern int prom_retain(const char *name, unsigned long size,
189 unsigned long pa_low, unsigned long pa_high, 189 unsigned long align, unsigned long *paddr);
190 long size, long align);
191 190
192/* Load explicit I/D TLB entries into the calling processor. */ 191/* Load explicit I/D TLB entries into the calling processor. */
193extern long prom_itlb_load(unsigned long index, 192extern long prom_itlb_load(unsigned long index,
@@ -287,26 +286,6 @@ extern void prom_sun4v_guest_soft_state(void);
287extern int prom_ihandle2path(int handle, char *buffer, int bufsize); 286extern int prom_ihandle2path(int handle, char *buffer, int bufsize);
288 287
289/* Client interface level routines. */ 288/* Client interface level routines. */
290extern long p1275_cmd(const char *, long, ...); 289extern void p1275_cmd_direct(unsigned long *);
291
292#if 0
293#define P1275_SIZE(x) ((((long)((x) / 32)) << 32) | (x))
294#else
295#define P1275_SIZE(x) x
296#endif
297
298/* We support at most 16 input and 1 output argument */
299#define P1275_ARG_NUMBER 0
300#define P1275_ARG_IN_STRING 1
301#define P1275_ARG_OUT_BUF 2
302#define P1275_ARG_OUT_32B 3
303#define P1275_ARG_IN_FUNCTION 4
304#define P1275_ARG_IN_BUF 5
305#define P1275_ARG_IN_64B 6
306
307#define P1275_IN(x) ((x) & 0xf)
308#define P1275_OUT(x) (((x) << 4) & 0xf0)
309#define P1275_INOUT(i,o) (P1275_IN(i)|P1275_OUT(o))
310#define P1275_ARG(n,x) ((x) << ((n)*3 + 8))
311 290
312#endif /* !(__SPARC64_OPLIB_H) */ 291#endif /* !(__SPARC64_OPLIB_H) */
diff --git a/arch/sparc/include/asm/parport.h b/arch/sparc/include/asm/parport.h
index c333b8d0949b..aa4c82648d88 100644
--- a/arch/sparc/include/asm/parport.h
+++ b/arch/sparc/include/asm/parport.h
@@ -103,7 +103,7 @@ static inline unsigned int get_dma_residue(unsigned int dmanr)
103 return ebus_dma_residue(&sparc_ebus_dmas[dmanr].info); 103 return ebus_dma_residue(&sparc_ebus_dmas[dmanr].info);
104} 104}
105 105
106static int __devinit ecpp_probe(struct of_device *op, const struct of_device_id *match) 106static int __devinit ecpp_probe(struct platform_device *op, const struct of_device_id *match)
107{ 107{
108 unsigned long base = op->resource[0].start; 108 unsigned long base = op->resource[0].start;
109 unsigned long config = op->resource[1].start; 109 unsigned long config = op->resource[1].start;
@@ -116,7 +116,7 @@ static int __devinit ecpp_probe(struct of_device *op, const struct of_device_id
116 parent = op->dev.of_node->parent; 116 parent = op->dev.of_node->parent;
117 if (!strcmp(parent->name, "dma")) { 117 if (!strcmp(parent->name, "dma")) {
118 p = parport_pc_probe_port(base, base + 0x400, 118 p = parport_pc_probe_port(base, base + 0x400,
119 op->irqs[0], PARPORT_DMA_NOFIFO, 119 op->archdata.irqs[0], PARPORT_DMA_NOFIFO,
120 op->dev.parent->parent, 0); 120 op->dev.parent->parent, 0);
121 if (!p) 121 if (!p)
122 return -ENOMEM; 122 return -ENOMEM;
@@ -166,7 +166,7 @@ static int __devinit ecpp_probe(struct of_device *op, const struct of_device_id
166 0, PTR_LPT_REG_DIR); 166 0, PTR_LPT_REG_DIR);
167 167
168 p = parport_pc_probe_port(base, base + 0x400, 168 p = parport_pc_probe_port(base, base + 0x400,
169 op->irqs[0], 169 op->archdata.irqs[0],
170 slot, 170 slot,
171 op->dev.parent, 171 op->dev.parent,
172 0); 172 0);
@@ -192,7 +192,7 @@ out_err:
192 return err; 192 return err;
193} 193}
194 194
195static int __devexit ecpp_remove(struct of_device *op) 195static int __devexit ecpp_remove(struct platform_device *op)
196{ 196{
197 struct parport *p = dev_get_drvdata(&op->dev); 197 struct parport *p = dev_get_drvdata(&op->dev);
198 int slot = p->dma; 198 int slot = p->dma;
@@ -228,6 +228,10 @@ static const struct of_device_id ecpp_match[] = {
228 .name = "parallel", 228 .name = "parallel",
229 .compatible = "ns87317-ecpp", 229 .compatible = "ns87317-ecpp",
230 }, 230 },
231 {
232 .name = "parallel",
233 .compatible = "pnpALI,1533,3",
234 },
231 {}, 235 {},
232}; 236};
233 237
@@ -243,9 +247,7 @@ static struct of_platform_driver ecpp_driver = {
243 247
244static int parport_pc_find_nonpci_ports(int autoirq, int autodma) 248static int parport_pc_find_nonpci_ports(int autoirq, int autodma)
245{ 249{
246 of_register_driver(&ecpp_driver, &of_bus_type); 250 return of_register_platform_driver(&ecpp_driver);
247
248 return 0;
249} 251}
250 252
251#endif /* !(_ASM_SPARC64_PARPORT_H */ 253#endif /* !(_ASM_SPARC64_PARPORT_H */
diff --git a/arch/sparc/include/asm/perf_event.h b/arch/sparc/include/asm/perf_event.h
index 7e2669894ce8..727af70646cb 100644
--- a/arch/sparc/include/asm/perf_event.h
+++ b/arch/sparc/include/asm/perf_event.h
@@ -6,7 +6,30 @@ extern void set_perf_event_pending(void);
6#define PERF_EVENT_INDEX_OFFSET 0 6#define PERF_EVENT_INDEX_OFFSET 0
7 7
8#ifdef CONFIG_PERF_EVENTS 8#ifdef CONFIG_PERF_EVENTS
9#include <asm/ptrace.h>
10
9extern void init_hw_perf_events(void); 11extern void init_hw_perf_events(void);
12
13#define perf_arch_fetch_caller_regs(regs, ip) \
14do { \
15 unsigned long _pstate, _asi, _pil, _i7, _fp; \
16 __asm__ __volatile__("rdpr %%pstate, %0\n\t" \
17 "rd %%asi, %1\n\t" \
18 "rdpr %%pil, %2\n\t" \
19 "mov %%i7, %3\n\t" \
20 "mov %%i6, %4\n\t" \
21 : "=r" (_pstate), \
22 "=r" (_asi), \
23 "=r" (_pil), \
24 "=r" (_i7), \
25 "=r" (_fp)); \
26 (regs)->tstate = (_pstate << 8) | \
27 (_asi << 24) | (_pil << 20); \
28 (regs)->tpc = (ip); \
29 (regs)->tnpc = (regs)->tpc + 4; \
30 (regs)->u_regs[UREG_I6] = _fp; \
31 (regs)->u_regs[UREG_I7] = _i7; \
32} while (0)
10#else 33#else
11static inline void init_hw_perf_events(void) { } 34static inline void init_hw_perf_events(void) { }
12#endif 35#endif
diff --git a/arch/sparc/include/asm/prom.h b/arch/sparc/include/asm/prom.h
index f845828ca4c6..291f12575edd 100644
--- a/arch/sparc/include/asm/prom.h
+++ b/arch/sparc/include/asm/prom.h
@@ -43,20 +43,22 @@ extern int of_getintprop_default(struct device_node *np,
43extern int of_find_in_proplist(const char *list, const char *match, int len); 43extern int of_find_in_proplist(const char *list, const char *match, int len);
44#ifdef CONFIG_NUMA 44#ifdef CONFIG_NUMA
45extern int of_node_to_nid(struct device_node *dp); 45extern int of_node_to_nid(struct device_node *dp);
46#else 46#define of_node_to_nid of_node_to_nid
47#define of_node_to_nid(dp) (-1)
48#endif 47#endif
49 48
50extern void prom_build_devicetree(void); 49extern void prom_build_devicetree(void);
51extern void of_populate_present_mask(void); 50extern void of_populate_present_mask(void);
52extern void of_fill_in_cpu_data(void); 51extern void of_fill_in_cpu_data(void);
53 52
53struct resource;
54extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name);
55extern void of_iounmap(struct resource *res, void __iomem *base, unsigned long size);
56
54/* These routines are here to provide compatibility with how powerpc 57/* These routines are here to provide compatibility with how powerpc
55 * handles IRQ mapping for OF device nodes. We precompute and permanently 58 * handles IRQ mapping for OF device nodes. We precompute and permanently
56 * register them in the of_device objects, whereas powerpc computes them 59 * register them in the platform_device objects, whereas powerpc computes them
57 * on request. 60 * on request.
58 */ 61 */
59extern unsigned int irq_of_parse_and_map(struct device_node *node, int index);
60static inline void irq_dispose_mapping(unsigned int virq) 62static inline void irq_dispose_mapping(unsigned int virq)
61{ 63{
62} 64}
diff --git a/arch/sparc/include/asm/rwsem-const.h b/arch/sparc/include/asm/rwsem-const.h
deleted file mode 100644
index a303c9d64d84..000000000000
--- a/arch/sparc/include/asm/rwsem-const.h
+++ /dev/null
@@ -1,12 +0,0 @@
1/* rwsem-const.h: RW semaphore counter constants. */
2#ifndef _SPARC64_RWSEM_CONST_H
3#define _SPARC64_RWSEM_CONST_H
4
5#define RWSEM_UNLOCKED_VALUE 0x00000000
6#define RWSEM_ACTIVE_BIAS 0x00000001
7#define RWSEM_ACTIVE_MASK 0x0000ffff
8#define RWSEM_WAITING_BIAS 0xffff0000
9#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS
10#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)
11
12#endif /* _SPARC64_RWSEM_CONST_H */
diff --git a/arch/sparc/include/asm/rwsem.h b/arch/sparc/include/asm/rwsem.h
index 6e5621006f85..a2b4302869bc 100644
--- a/arch/sparc/include/asm/rwsem.h
+++ b/arch/sparc/include/asm/rwsem.h
@@ -15,16 +15,21 @@
15 15
16#include <linux/list.h> 16#include <linux/list.h>
17#include <linux/spinlock.h> 17#include <linux/spinlock.h>
18#include <asm/rwsem-const.h>
19 18
20struct rwsem_waiter; 19struct rwsem_waiter;
21 20
22struct rw_semaphore { 21struct rw_semaphore {
23 signed int count; 22 signed long count;
24 spinlock_t wait_lock; 23#define RWSEM_UNLOCKED_VALUE 0x00000000L
25 struct list_head wait_list; 24#define RWSEM_ACTIVE_BIAS 0x00000001L
25#define RWSEM_ACTIVE_MASK 0xffffffffL
26#define RWSEM_WAITING_BIAS (-RWSEM_ACTIVE_MASK-1)
27#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS
28#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)
29 spinlock_t wait_lock;
30 struct list_head wait_list;
26#ifdef CONFIG_DEBUG_LOCK_ALLOC 31#ifdef CONFIG_DEBUG_LOCK_ALLOC
27 struct lockdep_map dep_map; 32 struct lockdep_map dep_map;
28#endif 33#endif
29}; 34};
30 35
@@ -41,6 +46,11 @@ struct rw_semaphore {
41#define DECLARE_RWSEM(name) \ 46#define DECLARE_RWSEM(name) \
42 struct rw_semaphore name = __RWSEM_INITIALIZER(name) 47 struct rw_semaphore name = __RWSEM_INITIALIZER(name)
43 48
49extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem);
50extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem);
51extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem);
52extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem);
53
44extern void __init_rwsem(struct rw_semaphore *sem, const char *name, 54extern void __init_rwsem(struct rw_semaphore *sem, const char *name,
45 struct lock_class_key *key); 55 struct lock_class_key *key);
46 56
@@ -51,27 +61,103 @@ do { \
51 __init_rwsem((sem), #sem, &__key); \ 61 __init_rwsem((sem), #sem, &__key); \
52} while (0) 62} while (0)
53 63
54extern void __down_read(struct rw_semaphore *sem); 64/*
55extern int __down_read_trylock(struct rw_semaphore *sem); 65 * lock for reading
56extern void __down_write(struct rw_semaphore *sem); 66 */
57extern int __down_write_trylock(struct rw_semaphore *sem); 67static inline void __down_read(struct rw_semaphore *sem)
58extern void __up_read(struct rw_semaphore *sem); 68{
59extern void __up_write(struct rw_semaphore *sem); 69 if (unlikely(atomic64_inc_return((atomic64_t *)(&sem->count)) <= 0L))
60extern void __downgrade_write(struct rw_semaphore *sem); 70 rwsem_down_read_failed(sem);
71}
72
73static inline int __down_read_trylock(struct rw_semaphore *sem)
74{
75 long tmp;
76
77 while ((tmp = sem->count) >= 0L) {
78 if (tmp == cmpxchg(&sem->count, tmp,
79 tmp + RWSEM_ACTIVE_READ_BIAS)) {
80 return 1;
81 }
82 }
83 return 0;
84}
61 85
86/*
87 * lock for writing
88 */
62static inline void __down_write_nested(struct rw_semaphore *sem, int subclass) 89static inline void __down_write_nested(struct rw_semaphore *sem, int subclass)
63{ 90{
64 __down_write(sem); 91 long tmp;
92
93 tmp = atomic64_add_return(RWSEM_ACTIVE_WRITE_BIAS,
94 (atomic64_t *)(&sem->count));
95 if (unlikely(tmp != RWSEM_ACTIVE_WRITE_BIAS))
96 rwsem_down_write_failed(sem);
65} 97}
66 98
67static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem) 99static inline void __down_write(struct rw_semaphore *sem)
68{ 100{
69 return atomic_add_return(delta, (atomic_t *)(&sem->count)); 101 __down_write_nested(sem, 0);
102}
103
104static inline int __down_write_trylock(struct rw_semaphore *sem)
105{
106 long tmp;
107
108 tmp = cmpxchg(&sem->count, RWSEM_UNLOCKED_VALUE,
109 RWSEM_ACTIVE_WRITE_BIAS);
110 return tmp == RWSEM_UNLOCKED_VALUE;
70} 111}
71 112
72static inline void rwsem_atomic_add(int delta, struct rw_semaphore *sem) 113/*
114 * unlock after reading
115 */
116static inline void __up_read(struct rw_semaphore *sem)
117{
118 long tmp;
119
120 tmp = atomic64_dec_return((atomic64_t *)(&sem->count));
121 if (unlikely(tmp < -1L && (tmp & RWSEM_ACTIVE_MASK) == 0L))
122 rwsem_wake(sem);
123}
124
125/*
126 * unlock after writing
127 */
128static inline void __up_write(struct rw_semaphore *sem)
129{
130 if (unlikely(atomic64_sub_return(RWSEM_ACTIVE_WRITE_BIAS,
131 (atomic64_t *)(&sem->count)) < 0L))
132 rwsem_wake(sem);
133}
134
135/*
136 * implement atomic add functionality
137 */
138static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem)
139{
140 atomic64_add(delta, (atomic64_t *)(&sem->count));
141}
142
143/*
144 * downgrade write lock to read lock
145 */
146static inline void __downgrade_write(struct rw_semaphore *sem)
147{
148 long tmp;
149
150 tmp = atomic64_add_return(-RWSEM_WAITING_BIAS, (atomic64_t *)(&sem->count));
151 if (tmp < 0L)
152 rwsem_downgrade_wake(sem);
153}
154
155/*
156 * implement exchange and add functionality
157 */
158static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem)
73{ 159{
74 atomic_add(delta, (atomic_t *)(&sem->count)); 160 return atomic64_add_return(delta, (atomic64_t *)(&sem->count));
75} 161}
76 162
77static inline int rwsem_is_locked(struct rw_semaphore *sem) 163static inline int rwsem_is_locked(struct rw_semaphore *sem)
diff --git a/arch/sparc/include/asm/scatterlist.h b/arch/sparc/include/asm/scatterlist.h
index 433e45f05fd4..92bb638313f8 100644
--- a/arch/sparc/include/asm/scatterlist.h
+++ b/arch/sparc/include/asm/scatterlist.h
@@ -3,7 +3,6 @@
3 3
4#include <asm-generic/scatterlist.h> 4#include <asm-generic/scatterlist.h>
5 5
6#define ISA_DMA_THRESHOLD (~0UL)
7#define ARCH_HAS_SG_CHAIN 6#define ARCH_HAS_SG_CHAIN
8 7
9#endif /* !(_SPARC_SCATTERLIST_H) */ 8#endif /* !(_SPARC_SCATTERLIST_H) */
diff --git a/arch/sparc/include/asm/system_64.h b/arch/sparc/include/asm/system_64.h
index d24cfe16afc1..e3b65d8cf41b 100644
--- a/arch/sparc/include/asm/system_64.h
+++ b/arch/sparc/include/asm/system_64.h
@@ -106,6 +106,7 @@ do { __asm__ __volatile__("ba,pt %%xcc, 1f\n\t" \
106 */ 106 */
107#define write_pic(__p) \ 107#define write_pic(__p) \
108 __asm__ __volatile__("ba,pt %%xcc, 99f\n\t" \ 108 __asm__ __volatile__("ba,pt %%xcc, 99f\n\t" \
109 " nop\n\t" \
109 ".align 64\n" \ 110 ".align 64\n" \
110 "99:wr %0, 0x0, %%pic\n\t" \ 111 "99:wr %0, 0x0, %%pic\n\t" \
111 "rd %%pic, %%g0" : : "r" (__p)) 112 "rd %%pic, %%g0" : : "r" (__p))
diff --git a/arch/sparc/include/asm/termbits.h b/arch/sparc/include/asm/termbits.h
index d72dfed1f9d7..23b10ff08df2 100644
--- a/arch/sparc/include/asm/termbits.h
+++ b/arch/sparc/include/asm/termbits.h
@@ -225,6 +225,7 @@ struct ktermios {
225#define FLUSHO 0x00002000 225#define FLUSHO 0x00002000
226#define PENDIN 0x00004000 226#define PENDIN 0x00004000
227#define IEXTEN 0x00008000 227#define IEXTEN 0x00008000
228#define EXTPROC 0x00010000
228 229
229/* modem lines */ 230/* modem lines */
230#define TIOCM_LE 0x001 231#define TIOCM_LE 0x001
diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h
index 25f1d10155e8..8303ac481034 100644
--- a/arch/sparc/include/asm/uaccess_32.h
+++ b/arch/sparc/include/asm/uaccess_32.h
@@ -260,23 +260,8 @@ static inline unsigned long __copy_to_user(void __user *to, const void *from, un
260 return __copy_user(to, (__force void __user *) from, n); 260 return __copy_user(to, (__force void __user *) from, n);
261} 261}
262 262
263extern void copy_from_user_overflow(void)
264#ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS
265 __compiletime_error("copy_from_user() buffer size is not provably correct")
266#else
267 __compiletime_warning("copy_from_user() buffer size is not provably correct")
268#endif
269;
270
271static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n) 263static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n)
272{ 264{
273 int sz = __compiletime_object_size(to);
274
275 if (unlikely(sz != -1 && sz < n)) {
276 copy_from_user_overflow();
277 return n;
278 }
279
280 if (n && __access_ok((unsigned long) from, n)) 265 if (n && __access_ok((unsigned long) from, n))
281 return __copy_user((__force void __user *) to, from, n); 266 return __copy_user((__force void __user *) to, from, n);
282 else 267 else
diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h
index 2406788bfe5f..3e1449f07798 100644
--- a/arch/sparc/include/asm/uaccess_64.h
+++ b/arch/sparc/include/asm/uaccess_64.h
@@ -205,14 +205,6 @@ __asm__ __volatile__( \
205 205
206extern int __get_user_bad(void); 206extern int __get_user_bad(void);
207 207
208extern void copy_from_user_overflow(void)
209#ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS
210 __compiletime_error("copy_from_user() buffer size is not provably correct")
211#else
212 __compiletime_warning("copy_from_user() buffer size is not provably correct")
213#endif
214;
215
216extern unsigned long __must_check ___copy_from_user(void *to, 208extern unsigned long __must_check ___copy_from_user(void *to,
217 const void __user *from, 209 const void __user *from,
218 unsigned long size); 210 unsigned long size);
@@ -221,16 +213,11 @@ extern unsigned long copy_from_user_fixup(void *to, const void __user *from,
221static inline unsigned long __must_check 213static inline unsigned long __must_check
222copy_from_user(void *to, const void __user *from, unsigned long size) 214copy_from_user(void *to, const void __user *from, unsigned long size)
223{ 215{
224 int sz = __compiletime_object_size(to); 216 unsigned long ret = ___copy_from_user(to, from, size);
225 unsigned long ret = size; 217
226 218 if (unlikely(ret))
227 if (likely(sz == -1 || sz >= size)) { 219 ret = copy_from_user_fixup(to, from, size);
228 ret = ___copy_from_user(to, from, size); 220
229 if (unlikely(ret))
230 ret = copy_from_user_fixup(to, from, size);
231 } else {
232 copy_from_user_overflow();
233 }
234 return ret; 221 return ret;
235} 222}
236#define __copy_from_user copy_from_user 223#define __copy_from_user copy_from_user
diff --git a/arch/sparc/include/asm/unistd.h b/arch/sparc/include/asm/unistd.h
index d0b3b01ac9d4..03eb5a8f6f93 100644
--- a/arch/sparc/include/asm/unistd.h
+++ b/arch/sparc/include/asm/unistd.h
@@ -397,8 +397,11 @@
397#define __NR_rt_tgsigqueueinfo 326 397#define __NR_rt_tgsigqueueinfo 326
398#define __NR_perf_event_open 327 398#define __NR_perf_event_open 327
399#define __NR_recvmmsg 328 399#define __NR_recvmmsg 328
400#define __NR_fanotify_init 329
401#define __NR_fanotify_mark 330
402#define __NR_prlimit64 331
400 403
401#define NR_syscalls 329 404#define NR_syscalls 332
402 405
403#ifdef __32bit_syscall_numbers__ 406#ifdef __32bit_syscall_numbers__
404/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants, 407/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants,
diff --git a/arch/sparc/kernel/apc.c b/arch/sparc/kernel/apc.c
index b27476caa133..2c0046ecc715 100644
--- a/arch/sparc/kernel/apc.c
+++ b/arch/sparc/kernel/apc.c
@@ -68,7 +68,7 @@ static void apc_swift_idle(void)
68#endif 68#endif
69} 69}
70 70
71static inline void apc_free(struct of_device *op) 71static inline void apc_free(struct platform_device *op)
72{ 72{
73 of_iounmap(&op->resource[0], regs, resource_size(&op->resource[0])); 73 of_iounmap(&op->resource[0], regs, resource_size(&op->resource[0]));
74} 74}
@@ -136,7 +136,7 @@ static const struct file_operations apc_fops = {
136 136
137static struct miscdevice apc_miscdev = { APC_MINOR, APC_DEVNAME, &apc_fops }; 137static struct miscdevice apc_miscdev = { APC_MINOR, APC_DEVNAME, &apc_fops };
138 138
139static int __devinit apc_probe(struct of_device *op, 139static int __devinit apc_probe(struct platform_device *op,
140 const struct of_device_id *match) 140 const struct of_device_id *match)
141{ 141{
142 int err; 142 int err;
@@ -184,7 +184,7 @@ static struct of_platform_driver apc_driver = {
184 184
185static int __init apc_init(void) 185static int __init apc_init(void)
186{ 186{
187 return of_register_driver(&apc_driver, &of_bus_type); 187 return of_register_platform_driver(&apc_driver);
188} 188}
189 189
190/* This driver is not critical to the boot process 190/* This driver is not critical to the boot process
diff --git a/arch/sparc/kernel/auxio_64.c b/arch/sparc/kernel/auxio_64.c
index ddc84128b3c2..3efd3c5af6a9 100644
--- a/arch/sparc/kernel/auxio_64.c
+++ b/arch/sparc/kernel/auxio_64.c
@@ -102,7 +102,8 @@ static struct of_device_id __initdata auxio_match[] = {
102 102
103MODULE_DEVICE_TABLE(of, auxio_match); 103MODULE_DEVICE_TABLE(of, auxio_match);
104 104
105static int __devinit auxio_probe(struct of_device *dev, const struct of_device_id *match) 105static int __devinit auxio_probe(struct platform_device *dev,
106 const struct of_device_id *match)
106{ 107{
107 struct device_node *dp = dev->dev.of_node; 108 struct device_node *dp = dev->dev.of_node;
108 unsigned long size; 109 unsigned long size;
@@ -142,7 +143,7 @@ static struct of_platform_driver auxio_driver = {
142 143
143static int __init auxio_init(void) 144static int __init auxio_init(void)
144{ 145{
145 return of_register_driver(&auxio_driver, &of_platform_bus_type); 146 return of_register_platform_driver(&auxio_driver);
146} 147}
147 148
148/* Must be after subsys_initcall() so that busses are probed. Must 149/* Must be after subsys_initcall() so that busses are probed. Must
diff --git a/arch/sparc/kernel/central.c b/arch/sparc/kernel/central.c
index 434335f65823..cfa2624c5332 100644
--- a/arch/sparc/kernel/central.c
+++ b/arch/sparc/kernel/central.c
@@ -59,7 +59,7 @@ static int __devinit clock_board_calc_nslots(struct clock_board *p)
59 } 59 }
60} 60}
61 61
62static int __devinit clock_board_probe(struct of_device *op, 62static int __devinit clock_board_probe(struct platform_device *op,
63 const struct of_device_id *match) 63 const struct of_device_id *match)
64{ 64{
65 struct clock_board *p = kzalloc(sizeof(*p), GFP_KERNEL); 65 struct clock_board *p = kzalloc(sizeof(*p), GFP_KERNEL);
@@ -157,7 +157,7 @@ static struct of_platform_driver clock_board_driver = {
157 }, 157 },
158}; 158};
159 159
160static int __devinit fhc_probe(struct of_device *op, 160static int __devinit fhc_probe(struct platform_device *op,
161 const struct of_device_id *match) 161 const struct of_device_id *match)
162{ 162{
163 struct fhc *p = kzalloc(sizeof(*p), GFP_KERNEL); 163 struct fhc *p = kzalloc(sizeof(*p), GFP_KERNEL);
@@ -265,8 +265,8 @@ static struct of_platform_driver fhc_driver = {
265 265
266static int __init sunfire_init(void) 266static int __init sunfire_init(void)
267{ 267{
268 (void) of_register_driver(&fhc_driver, &of_platform_bus_type); 268 (void) of_register_platform_driver(&fhc_driver);
269 (void) of_register_driver(&clock_board_driver, &of_platform_bus_type); 269 (void) of_register_platform_driver(&clock_board_driver);
270 return 0; 270 return 0;
271} 271}
272 272
diff --git a/arch/sparc/kernel/chmc.c b/arch/sparc/kernel/chmc.c
index 870cb65b3f21..08c466ebb32b 100644
--- a/arch/sparc/kernel/chmc.c
+++ b/arch/sparc/kernel/chmc.c
@@ -392,7 +392,7 @@ static void __devinit jbusmc_construct_dimm_groups(struct jbusmc *p,
392 } 392 }
393} 393}
394 394
395static int __devinit jbusmc_probe(struct of_device *op, 395static int __devinit jbusmc_probe(struct platform_device *op,
396 const struct of_device_id *match) 396 const struct of_device_id *match)
397{ 397{
398 const struct linux_prom64_registers *mem_regs; 398 const struct linux_prom64_registers *mem_regs;
@@ -690,7 +690,7 @@ static void chmc_fetch_decode_regs(struct chmc *p)
690 chmc_read_mcreg(p, CHMCTRL_DECODE4)); 690 chmc_read_mcreg(p, CHMCTRL_DECODE4));
691} 691}
692 692
693static int __devinit chmc_probe(struct of_device *op, 693static int __devinit chmc_probe(struct platform_device *op,
694 const struct of_device_id *match) 694 const struct of_device_id *match)
695{ 695{
696 struct device_node *dp = op->dev.of_node; 696 struct device_node *dp = op->dev.of_node;
@@ -765,7 +765,7 @@ out_free:
765 goto out; 765 goto out;
766} 766}
767 767
768static int __devinit us3mc_probe(struct of_device *op, 768static int __devinit us3mc_probe(struct platform_device *op,
769 const struct of_device_id *match) 769 const struct of_device_id *match)
770{ 770{
771 if (mc_type == MC_TYPE_SAFARI) 771 if (mc_type == MC_TYPE_SAFARI)
@@ -775,21 +775,21 @@ static int __devinit us3mc_probe(struct of_device *op,
775 return -ENODEV; 775 return -ENODEV;
776} 776}
777 777
778static void __devexit chmc_destroy(struct of_device *op, struct chmc *p) 778static void __devexit chmc_destroy(struct platform_device *op, struct chmc *p)
779{ 779{
780 list_del(&p->list); 780 list_del(&p->list);
781 of_iounmap(&op->resource[0], p->regs, 0x48); 781 of_iounmap(&op->resource[0], p->regs, 0x48);
782 kfree(p); 782 kfree(p);
783} 783}
784 784
785static void __devexit jbusmc_destroy(struct of_device *op, struct jbusmc *p) 785static void __devexit jbusmc_destroy(struct platform_device *op, struct jbusmc *p)
786{ 786{
787 mc_list_del(&p->list); 787 mc_list_del(&p->list);
788 of_iounmap(&op->resource[0], p->regs, JBUSMC_REGS_SIZE); 788 of_iounmap(&op->resource[0], p->regs, JBUSMC_REGS_SIZE);
789 kfree(p); 789 kfree(p);
790} 790}
791 791
792static int __devexit us3mc_remove(struct of_device *op) 792static int __devexit us3mc_remove(struct platform_device *op)
793{ 793{
794 void *p = dev_get_drvdata(&op->dev); 794 void *p = dev_get_drvdata(&op->dev);
795 795
@@ -848,7 +848,7 @@ static int __init us3mc_init(void)
848 ret = register_dimm_printer(us3mc_dimm_printer); 848 ret = register_dimm_printer(us3mc_dimm_printer);
849 849
850 if (!ret) { 850 if (!ret) {
851 ret = of_register_driver(&us3mc_driver, &of_bus_type); 851 ret = of_register_platform_driver(&us3mc_driver);
852 if (ret) 852 if (ret)
853 unregister_dimm_printer(us3mc_dimm_printer); 853 unregister_dimm_printer(us3mc_dimm_printer);
854 } 854 }
@@ -859,7 +859,7 @@ static void __exit us3mc_cleanup(void)
859{ 859{
860 if (us3mc_platform()) { 860 if (us3mc_platform()) {
861 unregister_dimm_printer(us3mc_dimm_printer); 861 unregister_dimm_printer(us3mc_dimm_printer);
862 of_unregister_driver(&us3mc_driver); 862 of_unregister_platform_driver(&us3mc_driver);
863 } 863 }
864} 864}
865 865
diff --git a/arch/sparc/kernel/helpers.S b/arch/sparc/kernel/helpers.S
index 92090cc9e829..314dd0c9fc5b 100644
--- a/arch/sparc/kernel/helpers.S
+++ b/arch/sparc/kernel/helpers.S
@@ -46,81 +46,6 @@ stack_trace_flush:
46 nop 46 nop
47 .size stack_trace_flush,.-stack_trace_flush 47 .size stack_trace_flush,.-stack_trace_flush
48 48
49#ifdef CONFIG_PERF_EVENTS
50 .globl perf_arch_fetch_caller_regs
51 .type perf_arch_fetch_caller_regs,#function
52perf_arch_fetch_caller_regs:
53 /* We always read the %pstate into %o5 since we will use
54 * that to construct a fake %tstate to store into the regs.
55 */
56 rdpr %pstate, %o5
57 brz,pn %o2, 50f
58 mov %o2, %g7
59
60 /* Turn off interrupts while we walk around the register
61 * window by hand.
62 */
63 wrpr %o5, PSTATE_IE, %pstate
64
65 /* The %canrestore tells us how many register windows are
66 * still live in the chip above us, past that we have to
67 * walk the frame as saved on the stack. We stash away
68 * the %cwp in %g1 so we can return back to the original
69 * register window.
70 */
71 rdpr %cwp, %g1
72 rdpr %canrestore, %g2
73 sub %g1, 1, %g3
74
75 /* We have the skip count in %g7, if it hits zero then
76 * %fp/%i7 are the registers we need. Otherwise if our
77 * %canrestore count maintained in %g2 hits zero we have
78 * to start traversing the stack.
79 */
8010: brz,pn %g2, 4f
81 sub %g2, 1, %g2
82 wrpr %g3, %cwp
83 subcc %g7, 1, %g7
84 bne,pt %xcc, 10b
85 sub %g3, 1, %g3
86
87 /* We found the values we need in the cpu's register
88 * windows.
89 */
90 mov %fp, %g3
91 ba,pt %xcc, 3f
92 mov %i7, %g2
93
9450: mov %fp, %g3
95 ba,pt %xcc, 2f
96 mov %i7, %g2
97
98 /* We hit the end of the valid register windows in the
99 * cpu, start traversing the stack frame.
100 */
1014: mov %fp, %g3
102
10320: ldx [%g3 + STACK_BIAS + RW_V9_I7], %g2
104 subcc %g7, 1, %g7
105 bne,pn %xcc, 20b
106 ldx [%g3 + STACK_BIAS + RW_V9_I6], %g3
107
108 /* Restore the current register window position and
109 * re-enable interrupts.
110 */
1113: wrpr %g1, %cwp
112 wrpr %o5, %pstate
113
1142: stx %g3, [%o0 + PT_V9_FP]
115 sllx %o5, 8, %o5
116 stx %o5, [%o0 + PT_V9_TSTATE]
117 stx %g2, [%o0 + PT_V9_TPC]
118 add %g2, 4, %g2
119 retl
120 stx %g2, [%o0 + PT_V9_TNPC]
121 .size perf_arch_fetch_caller_regs,.-perf_arch_fetch_caller_regs
122#endif /* CONFIG_PERF_EVENTS */
123
124#ifdef CONFIG_SMP 49#ifdef CONFIG_SMP
125 .globl hard_smp_processor_id 50 .globl hard_smp_processor_id
126 .type hard_smp_processor_id,#function 51 .type hard_smp_processor_id,#function
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c
index 703e4aa9bc38..41f7e4e0f72a 100644
--- a/arch/sparc/kernel/ioport.c
+++ b/arch/sparc/kernel/ioport.c
@@ -253,7 +253,7 @@ EXPORT_SYMBOL(sbus_set_sbus64);
253static void *sbus_alloc_coherent(struct device *dev, size_t len, 253static void *sbus_alloc_coherent(struct device *dev, size_t len,
254 dma_addr_t *dma_addrp, gfp_t gfp) 254 dma_addr_t *dma_addrp, gfp_t gfp)
255{ 255{
256 struct of_device *op = to_of_device(dev); 256 struct platform_device *op = to_platform_device(dev);
257 unsigned long len_total = (len + PAGE_SIZE-1) & PAGE_MASK; 257 unsigned long len_total = (len + PAGE_SIZE-1) & PAGE_MASK;
258 unsigned long va; 258 unsigned long va;
259 struct resource *res; 259 struct resource *res;
diff --git a/arch/sparc/kernel/of_device_32.c b/arch/sparc/kernel/of_device_32.c
index 47e63f1e719c..2d055a1e9cc2 100644
--- a/arch/sparc/kernel/of_device_32.c
+++ b/arch/sparc/kernel/of_device_32.c
@@ -241,10 +241,10 @@ static int __init use_1to1_mapping(struct device_node *pp)
241 241
242static int of_resource_verbose; 242static int of_resource_verbose;
243 243
244static void __init build_device_resources(struct of_device *op, 244static void __init build_device_resources(struct platform_device *op,
245 struct device *parent) 245 struct device *parent)
246{ 246{
247 struct of_device *p_op; 247 struct platform_device *p_op;
248 struct of_bus *bus; 248 struct of_bus *bus;
249 int na, ns; 249 int na, ns;
250 int index, num_reg; 250 int index, num_reg;
@@ -253,7 +253,7 @@ static void __init build_device_resources(struct of_device *op,
253 if (!parent) 253 if (!parent)
254 return; 254 return;
255 255
256 p_op = to_of_device(parent); 256 p_op = to_platform_device(parent);
257 bus = of_match_bus(p_op->dev.of_node); 257 bus = of_match_bus(p_op->dev.of_node);
258 bus->count_cells(op->dev.of_node, &na, &ns); 258 bus->count_cells(op->dev.of_node, &na, &ns);
259 259
@@ -267,6 +267,8 @@ static void __init build_device_resources(struct of_device *op,
267 /* Conver to num-entries. */ 267 /* Conver to num-entries. */
268 num_reg /= na + ns; 268 num_reg /= na + ns;
269 269
270 op->resource = op->archdata.resource;
271 op->num_resources = num_reg;
270 for (index = 0; index < num_reg; index++) { 272 for (index = 0; index < num_reg; index++) {
271 struct resource *r = &op->resource[index]; 273 struct resource *r = &op->resource[index];
272 u32 addr[OF_MAX_ADDR_CELLS]; 274 u32 addr[OF_MAX_ADDR_CELLS];
@@ -333,10 +335,10 @@ static void __init build_device_resources(struct of_device *op,
333 } 335 }
334} 336}
335 337
336static struct of_device * __init scan_one_device(struct device_node *dp, 338static struct platform_device * __init scan_one_device(struct device_node *dp,
337 struct device *parent) 339 struct device *parent)
338{ 340{
339 struct of_device *op = kzalloc(sizeof(*op), GFP_KERNEL); 341 struct platform_device *op = kzalloc(sizeof(*op), GFP_KERNEL);
340 const struct linux_prom_irqs *intr; 342 const struct linux_prom_irqs *intr;
341 struct dev_archdata *sd; 343 struct dev_archdata *sd;
342 int len, i; 344 int len, i;
@@ -349,27 +351,21 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
349 351
350 op->dev.of_node = dp; 352 op->dev.of_node = dp;
351 353
352 op->clock_freq = of_getintprop_default(dp, "clock-frequency",
353 (25*1000*1000));
354 op->portid = of_getintprop_default(dp, "upa-portid", -1);
355 if (op->portid == -1)
356 op->portid = of_getintprop_default(dp, "portid", -1);
357
358 intr = of_get_property(dp, "intr", &len); 354 intr = of_get_property(dp, "intr", &len);
359 if (intr) { 355 if (intr) {
360 op->num_irqs = len / sizeof(struct linux_prom_irqs); 356 op->archdata.num_irqs = len / sizeof(struct linux_prom_irqs);
361 for (i = 0; i < op->num_irqs; i++) 357 for (i = 0; i < op->archdata.num_irqs; i++)
362 op->irqs[i] = intr[i].pri; 358 op->archdata.irqs[i] = intr[i].pri;
363 } else { 359 } else {
364 const unsigned int *irq = 360 const unsigned int *irq =
365 of_get_property(dp, "interrupts", &len); 361 of_get_property(dp, "interrupts", &len);
366 362
367 if (irq) { 363 if (irq) {
368 op->num_irqs = len / sizeof(unsigned int); 364 op->archdata.num_irqs = len / sizeof(unsigned int);
369 for (i = 0; i < op->num_irqs; i++) 365 for (i = 0; i < op->archdata.num_irqs; i++)
370 op->irqs[i] = irq[i]; 366 op->archdata.irqs[i] = irq[i];
371 } else { 367 } else {
372 op->num_irqs = 0; 368 op->archdata.num_irqs = 0;
373 } 369 }
374 } 370 }
375 if (sparc_cpu_model == sun4d) { 371 if (sparc_cpu_model == sun4d) {
@@ -411,8 +407,8 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
411 goto build_resources; 407 goto build_resources;
412 } 408 }
413 409
414 for (i = 0; i < op->num_irqs; i++) { 410 for (i = 0; i < op->archdata.num_irqs; i++) {
415 int this_irq = op->irqs[i]; 411 int this_irq = op->archdata.irqs[i];
416 int sbusl = pil_to_sbus[this_irq]; 412 int sbusl = pil_to_sbus[this_irq];
417 413
418 if (sbusl) 414 if (sbusl)
@@ -420,7 +416,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
420 (sbusl << 2) + 416 (sbusl << 2) +
421 slot); 417 slot);
422 418
423 op->irqs[i] = this_irq; 419 op->archdata.irqs[i] = this_irq;
424 } 420 }
425 } 421 }
426 422
@@ -428,7 +424,7 @@ build_resources:
428 build_device_resources(op, parent); 424 build_device_resources(op, parent);
429 425
430 op->dev.parent = parent; 426 op->dev.parent = parent;
431 op->dev.bus = &of_platform_bus_type; 427 op->dev.bus = &platform_bus_type;
432 if (!parent) 428 if (!parent)
433 dev_set_name(&op->dev, "root"); 429 dev_set_name(&op->dev, "root");
434 else 430 else
@@ -447,7 +443,7 @@ build_resources:
447static void __init scan_tree(struct device_node *dp, struct device *parent) 443static void __init scan_tree(struct device_node *dp, struct device *parent)
448{ 444{
449 while (dp) { 445 while (dp) {
450 struct of_device *op = scan_one_device(dp, parent); 446 struct platform_device *op = scan_one_device(dp, parent);
451 447
452 if (op) 448 if (op)
453 scan_tree(dp->child, &op->dev); 449 scan_tree(dp->child, &op->dev);
@@ -456,30 +452,19 @@ static void __init scan_tree(struct device_node *dp, struct device *parent)
456 } 452 }
457} 453}
458 454
459static void __init scan_of_devices(void) 455static int __init scan_of_devices(void)
460{ 456{
461 struct device_node *root = of_find_node_by_path("/"); 457 struct device_node *root = of_find_node_by_path("/");
462 struct of_device *parent; 458 struct platform_device *parent;
463 459
464 parent = scan_one_device(root, NULL); 460 parent = scan_one_device(root, NULL);
465 if (!parent) 461 if (!parent)
466 return; 462 return 0;
467 463
468 scan_tree(root->child, &parent->dev); 464 scan_tree(root->child, &parent->dev);
465 return 0;
469} 466}
470 467postcore_initcall(scan_of_devices);
471static int __init of_bus_driver_init(void)
472{
473 int err;
474
475 err = of_bus_type_init(&of_platform_bus_type, "of");
476 if (!err)
477 scan_of_devices();
478
479 return err;
480}
481
482postcore_initcall(of_bus_driver_init);
483 468
484static int __init of_debug(char *str) 469static int __init of_debug(char *str)
485{ 470{
diff --git a/arch/sparc/kernel/of_device_64.c b/arch/sparc/kernel/of_device_64.c
index 1dae8079f728..63cd4e5d47c2 100644
--- a/arch/sparc/kernel/of_device_64.c
+++ b/arch/sparc/kernel/of_device_64.c
@@ -310,10 +310,10 @@ static int __init use_1to1_mapping(struct device_node *pp)
310 310
311static int of_resource_verbose; 311static int of_resource_verbose;
312 312
313static void __init build_device_resources(struct of_device *op, 313static void __init build_device_resources(struct platform_device *op,
314 struct device *parent) 314 struct device *parent)
315{ 315{
316 struct of_device *p_op; 316 struct platform_device *p_op;
317 struct of_bus *bus; 317 struct of_bus *bus;
318 int na, ns; 318 int na, ns;
319 int index, num_reg; 319 int index, num_reg;
@@ -322,7 +322,7 @@ static void __init build_device_resources(struct of_device *op,
322 if (!parent) 322 if (!parent)
323 return; 323 return;
324 324
325 p_op = to_of_device(parent); 325 p_op = to_platform_device(parent);
326 bus = of_match_bus(p_op->dev.of_node); 326 bus = of_match_bus(p_op->dev.of_node);
327 bus->count_cells(op->dev.of_node, &na, &ns); 327 bus->count_cells(op->dev.of_node, &na, &ns);
328 328
@@ -344,6 +344,8 @@ static void __init build_device_resources(struct of_device *op,
344 num_reg = PROMREG_MAX; 344 num_reg = PROMREG_MAX;
345 } 345 }
346 346
347 op->resource = op->archdata.resource;
348 op->num_resources = num_reg;
347 for (index = 0; index < num_reg; index++) { 349 for (index = 0; index < num_reg; index++) {
348 struct resource *r = &op->resource[index]; 350 struct resource *r = &op->resource[index];
349 u32 addr[OF_MAX_ADDR_CELLS]; 351 u32 addr[OF_MAX_ADDR_CELLS];
@@ -526,7 +528,7 @@ static unsigned int __init pci_irq_swizzle(struct device_node *dp,
526 528
527static int of_irq_verbose; 529static int of_irq_verbose;
528 530
529static unsigned int __init build_one_device_irq(struct of_device *op, 531static unsigned int __init build_one_device_irq(struct platform_device *op,
530 struct device *parent, 532 struct device *parent,
531 unsigned int irq) 533 unsigned int irq)
532{ 534{
@@ -628,10 +630,10 @@ out:
628 return irq; 630 return irq;
629} 631}
630 632
631static struct of_device * __init scan_one_device(struct device_node *dp, 633static struct platform_device * __init scan_one_device(struct device_node *dp,
632 struct device *parent) 634 struct device *parent)
633{ 635{
634 struct of_device *op = kzalloc(sizeof(*op), GFP_KERNEL); 636 struct platform_device *op = kzalloc(sizeof(*op), GFP_KERNEL);
635 const unsigned int *irq; 637 const unsigned int *irq;
636 struct dev_archdata *sd; 638 struct dev_archdata *sd;
637 int len, i; 639 int len, i;
@@ -644,34 +646,28 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
644 646
645 op->dev.of_node = dp; 647 op->dev.of_node = dp;
646 648
647 op->clock_freq = of_getintprop_default(dp, "clock-frequency",
648 (25*1000*1000));
649 op->portid = of_getintprop_default(dp, "upa-portid", -1);
650 if (op->portid == -1)
651 op->portid = of_getintprop_default(dp, "portid", -1);
652
653 irq = of_get_property(dp, "interrupts", &len); 649 irq = of_get_property(dp, "interrupts", &len);
654 if (irq) { 650 if (irq) {
655 op->num_irqs = len / 4; 651 op->archdata.num_irqs = len / 4;
656 652
657 /* Prevent overrunning the op->irqs[] array. */ 653 /* Prevent overrunning the op->irqs[] array. */
658 if (op->num_irqs > PROMINTR_MAX) { 654 if (op->archdata.num_irqs > PROMINTR_MAX) {
659 printk(KERN_WARNING "%s: Too many irqs (%d), " 655 printk(KERN_WARNING "%s: Too many irqs (%d), "
660 "limiting to %d.\n", 656 "limiting to %d.\n",
661 dp->full_name, op->num_irqs, PROMINTR_MAX); 657 dp->full_name, op->archdata.num_irqs, PROMINTR_MAX);
662 op->num_irqs = PROMINTR_MAX; 658 op->archdata.num_irqs = PROMINTR_MAX;
663 } 659 }
664 memcpy(op->irqs, irq, op->num_irqs * 4); 660 memcpy(op->archdata.irqs, irq, op->archdata.num_irqs * 4);
665 } else { 661 } else {
666 op->num_irqs = 0; 662 op->archdata.num_irqs = 0;
667 } 663 }
668 664
669 build_device_resources(op, parent); 665 build_device_resources(op, parent);
670 for (i = 0; i < op->num_irqs; i++) 666 for (i = 0; i < op->archdata.num_irqs; i++)
671 op->irqs[i] = build_one_device_irq(op, parent, op->irqs[i]); 667 op->archdata.irqs[i] = build_one_device_irq(op, parent, op->archdata.irqs[i]);
672 668
673 op->dev.parent = parent; 669 op->dev.parent = parent;
674 op->dev.bus = &of_platform_bus_type; 670 op->dev.bus = &platform_bus_type;
675 if (!parent) 671 if (!parent)
676 dev_set_name(&op->dev, "root"); 672 dev_set_name(&op->dev, "root");
677 else 673 else
@@ -690,7 +686,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
690static void __init scan_tree(struct device_node *dp, struct device *parent) 686static void __init scan_tree(struct device_node *dp, struct device *parent)
691{ 687{
692 while (dp) { 688 while (dp) {
693 struct of_device *op = scan_one_device(dp, parent); 689 struct platform_device *op = scan_one_device(dp, parent);
694 690
695 if (op) 691 if (op)
696 scan_tree(dp->child, &op->dev); 692 scan_tree(dp->child, &op->dev);
@@ -699,30 +695,19 @@ static void __init scan_tree(struct device_node *dp, struct device *parent)
699 } 695 }
700} 696}
701 697
702static void __init scan_of_devices(void) 698static int __init scan_of_devices(void)
703{ 699{
704 struct device_node *root = of_find_node_by_path("/"); 700 struct device_node *root = of_find_node_by_path("/");
705 struct of_device *parent; 701 struct platform_device *parent;
706 702
707 parent = scan_one_device(root, NULL); 703 parent = scan_one_device(root, NULL);
708 if (!parent) 704 if (!parent)
709 return; 705 return 0;
710 706
711 scan_tree(root->child, &parent->dev); 707 scan_tree(root->child, &parent->dev);
708 return 0;
712} 709}
713 710postcore_initcall(scan_of_devices);
714static int __init of_bus_driver_init(void)
715{
716 int err;
717
718 err = of_bus_type_init(&of_platform_bus_type, "of");
719 if (!err)
720 scan_of_devices();
721
722 return err;
723}
724
725postcore_initcall(of_bus_driver_init);
726 711
727static int __init of_debug(char *str) 712static int __init of_debug(char *str)
728{ 713{
diff --git a/arch/sparc/kernel/of_device_common.c b/arch/sparc/kernel/of_device_common.c
index 10c6c36a6e75..49ddff56cb04 100644
--- a/arch/sparc/kernel/of_device_common.c
+++ b/arch/sparc/kernel/of_device_common.c
@@ -11,48 +11,28 @@
11 11
12#include "of_device_common.h" 12#include "of_device_common.h"
13 13
14static int node_match(struct device *dev, void *data)
15{
16 struct of_device *op = to_of_device(dev);
17 struct device_node *dp = data;
18
19 return (op->dev.of_node == dp);
20}
21
22struct of_device *of_find_device_by_node(struct device_node *dp)
23{
24 struct device *dev = bus_find_device(&of_platform_bus_type, NULL,
25 dp, node_match);
26
27 if (dev)
28 return to_of_device(dev);
29
30 return NULL;
31}
32EXPORT_SYMBOL(of_find_device_by_node);
33
34unsigned int irq_of_parse_and_map(struct device_node *node, int index) 14unsigned int irq_of_parse_and_map(struct device_node *node, int index)
35{ 15{
36 struct of_device *op = of_find_device_by_node(node); 16 struct platform_device *op = of_find_device_by_node(node);
37 17
38 if (!op || index >= op->num_irqs) 18 if (!op || index >= op->archdata.num_irqs)
39 return 0; 19 return 0;
40 20
41 return op->irqs[index]; 21 return op->archdata.irqs[index];
42} 22}
43EXPORT_SYMBOL(irq_of_parse_and_map); 23EXPORT_SYMBOL(irq_of_parse_and_map);
44 24
45/* Take the archdata values for IOMMU, STC, and HOSTDATA found in 25/* Take the archdata values for IOMMU, STC, and HOSTDATA found in
46 * BUS and propagate to all child of_device objects. 26 * BUS and propagate to all child platform_device objects.
47 */ 27 */
48void of_propagate_archdata(struct of_device *bus) 28void of_propagate_archdata(struct platform_device *bus)
49{ 29{
50 struct dev_archdata *bus_sd = &bus->dev.archdata; 30 struct dev_archdata *bus_sd = &bus->dev.archdata;
51 struct device_node *bus_dp = bus->dev.of_node; 31 struct device_node *bus_dp = bus->dev.of_node;
52 struct device_node *dp; 32 struct device_node *dp;
53 33
54 for (dp = bus_dp->child; dp; dp = dp->sibling) { 34 for (dp = bus_dp->child; dp; dp = dp->sibling) {
55 struct of_device *op = of_find_device_by_node(dp); 35 struct platform_device *op = of_find_device_by_node(dp);
56 36
57 op->dev.archdata.iommu = bus_sd->iommu; 37 op->dev.archdata.iommu = bus_sd->iommu;
58 op->dev.archdata.stc = bus_sd->stc; 38 op->dev.archdata.stc = bus_sd->stc;
@@ -64,9 +44,6 @@ void of_propagate_archdata(struct of_device *bus)
64 } 44 }
65} 45}
66 46
67struct bus_type of_platform_bus_type;
68EXPORT_SYMBOL(of_platform_bus_type);
69
70static void get_cells(struct device_node *dp, int *addrc, int *sizec) 47static void get_cells(struct device_node *dp, int *addrc, int *sizec)
71{ 48{
72 if (addrc) 49 if (addrc)
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c
index 8a8363adb8bd..4137579d9adc 100644
--- a/arch/sparc/kernel/pci.c
+++ b/arch/sparc/kernel/pci.c
@@ -198,7 +198,7 @@ static unsigned long pci_parse_of_flags(u32 addr0)
198 * into physical address resources, we only have to figure out the register 198 * into physical address resources, we only have to figure out the register
199 * mapping. 199 * mapping.
200 */ 200 */
201static void pci_parse_of_addrs(struct of_device *op, 201static void pci_parse_of_addrs(struct platform_device *op,
202 struct device_node *node, 202 struct device_node *node,
203 struct pci_dev *dev) 203 struct pci_dev *dev)
204{ 204{
@@ -248,7 +248,7 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
248{ 248{
249 struct dev_archdata *sd; 249 struct dev_archdata *sd;
250 struct pci_slot *slot; 250 struct pci_slot *slot;
251 struct of_device *op; 251 struct platform_device *op;
252 struct pci_dev *dev; 252 struct pci_dev *dev;
253 const char *type; 253 const char *type;
254 u32 class; 254 u32 class;
@@ -340,7 +340,7 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
340 dev->hdr_type = PCI_HEADER_TYPE_NORMAL; 340 dev->hdr_type = PCI_HEADER_TYPE_NORMAL;
341 dev->rom_base_reg = PCI_ROM_ADDRESS; 341 dev->rom_base_reg = PCI_ROM_ADDRESS;
342 342
343 dev->irq = sd->op->irqs[0]; 343 dev->irq = sd->op->archdata.irqs[0];
344 if (dev->irq == 0xffffffff) 344 if (dev->irq == 0xffffffff)
345 dev->irq = PCI_IRQ_NONE; 345 dev->irq = PCI_IRQ_NONE;
346 } 346 }
diff --git a/arch/sparc/kernel/pci_fire.c b/arch/sparc/kernel/pci_fire.c
index 51cfa09e392a..efb896d68754 100644
--- a/arch/sparc/kernel/pci_fire.c
+++ b/arch/sparc/kernel/pci_fire.c
@@ -410,7 +410,7 @@ static void pci_fire_hw_init(struct pci_pbm_info *pbm)
410} 410}
411 411
412static int __devinit pci_fire_pbm_init(struct pci_pbm_info *pbm, 412static int __devinit pci_fire_pbm_init(struct pci_pbm_info *pbm,
413 struct of_device *op, u32 portid) 413 struct platform_device *op, u32 portid)
414{ 414{
415 const struct linux_prom64_registers *regs; 415 const struct linux_prom64_registers *regs;
416 struct device_node *dp = op->dev.of_node; 416 struct device_node *dp = op->dev.of_node;
@@ -455,7 +455,7 @@ static int __devinit pci_fire_pbm_init(struct pci_pbm_info *pbm,
455 return 0; 455 return 0;
456} 456}
457 457
458static int __devinit fire_probe(struct of_device *op, 458static int __devinit fire_probe(struct platform_device *op,
459 const struct of_device_id *match) 459 const struct of_device_id *match)
460{ 460{
461 struct device_node *dp = op->dev.of_node; 461 struct device_node *dp = op->dev.of_node;
@@ -518,7 +518,7 @@ static struct of_platform_driver fire_driver = {
518 518
519static int __init fire_init(void) 519static int __init fire_init(void)
520{ 520{
521 return of_register_driver(&fire_driver, &of_bus_type); 521 return of_register_platform_driver(&fire_driver);
522} 522}
523 523
524subsys_initcall(fire_init); 524subsys_initcall(fire_init);
diff --git a/arch/sparc/kernel/pci_impl.h b/arch/sparc/kernel/pci_impl.h
index 03186824327e..e20ed5f06e9c 100644
--- a/arch/sparc/kernel/pci_impl.h
+++ b/arch/sparc/kernel/pci_impl.h
@@ -91,7 +91,7 @@ struct pci_pbm_info {
91 char *name; 91 char *name;
92 92
93 /* OBP specific information. */ 93 /* OBP specific information. */
94 struct of_device *op; 94 struct platform_device *op;
95 u64 ino_bitmap; 95 u64 ino_bitmap;
96 96
97 /* PBM I/O and Memory space resources. */ 97 /* PBM I/O and Memory space resources. */
diff --git a/arch/sparc/kernel/pci_psycho.c b/arch/sparc/kernel/pci_psycho.c
index 558a70512824..22eab7cf3b11 100644
--- a/arch/sparc/kernel/pci_psycho.c
+++ b/arch/sparc/kernel/pci_psycho.c
@@ -285,7 +285,7 @@ static irqreturn_t psycho_ce_intr(int irq, void *dev_id)
285#define PSYCHO_ECCCTRL_CE 0x2000000000000000UL /* Enable CE INterrupts */ 285#define PSYCHO_ECCCTRL_CE 0x2000000000000000UL /* Enable CE INterrupts */
286static void psycho_register_error_handlers(struct pci_pbm_info *pbm) 286static void psycho_register_error_handlers(struct pci_pbm_info *pbm)
287{ 287{
288 struct of_device *op = of_find_device_by_node(pbm->op->dev.of_node); 288 struct platform_device *op = of_find_device_by_node(pbm->op->dev.of_node);
289 unsigned long base = pbm->controller_regs; 289 unsigned long base = pbm->controller_regs;
290 u64 tmp; 290 u64 tmp;
291 int err; 291 int err;
@@ -302,23 +302,23 @@ static void psycho_register_error_handlers(struct pci_pbm_info *pbm)
302 * 5: POWER MANAGEMENT 302 * 5: POWER MANAGEMENT
303 */ 303 */
304 304
305 if (op->num_irqs < 6) 305 if (op->archdata.num_irqs < 6)
306 return; 306 return;
307 307
308 /* We really mean to ignore the return result here. Two 308 /* We really mean to ignore the return result here. Two
309 * PCI controller share the same interrupt numbers and 309 * PCI controller share the same interrupt numbers and
310 * drive the same front-end hardware. 310 * drive the same front-end hardware.
311 */ 311 */
312 err = request_irq(op->irqs[1], psycho_ue_intr, IRQF_SHARED, 312 err = request_irq(op->archdata.irqs[1], psycho_ue_intr, IRQF_SHARED,
313 "PSYCHO_UE", pbm); 313 "PSYCHO_UE", pbm);
314 err = request_irq(op->irqs[2], psycho_ce_intr, IRQF_SHARED, 314 err = request_irq(op->archdata.irqs[2], psycho_ce_intr, IRQF_SHARED,
315 "PSYCHO_CE", pbm); 315 "PSYCHO_CE", pbm);
316 316
317 /* This one, however, ought not to fail. We can just warn 317 /* This one, however, ought not to fail. We can just warn
318 * about it since the system can still operate properly even 318 * about it since the system can still operate properly even
319 * if this fails. 319 * if this fails.
320 */ 320 */
321 err = request_irq(op->irqs[0], psycho_pcierr_intr, IRQF_SHARED, 321 err = request_irq(op->archdata.irqs[0], psycho_pcierr_intr, IRQF_SHARED,
322 "PSYCHO_PCIERR", pbm); 322 "PSYCHO_PCIERR", pbm);
323 if (err) 323 if (err)
324 printk(KERN_WARNING "%s: Could not register PCIERR, " 324 printk(KERN_WARNING "%s: Could not register PCIERR, "
@@ -483,7 +483,7 @@ static void psycho_pbm_strbuf_init(struct pci_pbm_info *pbm,
483#define PSYCHO_MEMSPACE_SIZE 0x07fffffffUL 483#define PSYCHO_MEMSPACE_SIZE 0x07fffffffUL
484 484
485static void __devinit psycho_pbm_init(struct pci_pbm_info *pbm, 485static void __devinit psycho_pbm_init(struct pci_pbm_info *pbm,
486 struct of_device *op, int is_pbm_a) 486 struct platform_device *op, int is_pbm_a)
487{ 487{
488 psycho_pbm_init_common(pbm, op, "PSYCHO", PBM_CHIP_TYPE_PSYCHO); 488 psycho_pbm_init_common(pbm, op, "PSYCHO", PBM_CHIP_TYPE_PSYCHO);
489 psycho_pbm_strbuf_init(pbm, is_pbm_a); 489 psycho_pbm_strbuf_init(pbm, is_pbm_a);
@@ -503,7 +503,7 @@ static struct pci_pbm_info * __devinit psycho_find_sibling(u32 upa_portid)
503 503
504#define PSYCHO_CONFIGSPACE 0x001000000UL 504#define PSYCHO_CONFIGSPACE 0x001000000UL
505 505
506static int __devinit psycho_probe(struct of_device *op, 506static int __devinit psycho_probe(struct platform_device *op,
507 const struct of_device_id *match) 507 const struct of_device_id *match)
508{ 508{
509 const struct linux_prom64_registers *pr_regs; 509 const struct linux_prom64_registers *pr_regs;
@@ -612,7 +612,7 @@ static struct of_platform_driver psycho_driver = {
612 612
613static int __init psycho_init(void) 613static int __init psycho_init(void)
614{ 614{
615 return of_register_driver(&psycho_driver, &of_bus_type); 615 return of_register_platform_driver(&psycho_driver);
616} 616}
617 617
618subsys_initcall(psycho_init); 618subsys_initcall(psycho_init);
diff --git a/arch/sparc/kernel/pci_sabre.c b/arch/sparc/kernel/pci_sabre.c
index 6dad8e3b7506..5c3f5ec4cabc 100644
--- a/arch/sparc/kernel/pci_sabre.c
+++ b/arch/sparc/kernel/pci_sabre.c
@@ -311,7 +311,7 @@ static irqreturn_t sabre_ce_intr(int irq, void *dev_id)
311static void sabre_register_error_handlers(struct pci_pbm_info *pbm) 311static void sabre_register_error_handlers(struct pci_pbm_info *pbm)
312{ 312{
313 struct device_node *dp = pbm->op->dev.of_node; 313 struct device_node *dp = pbm->op->dev.of_node;
314 struct of_device *op; 314 struct platform_device *op;
315 unsigned long base = pbm->controller_regs; 315 unsigned long base = pbm->controller_regs;
316 u64 tmp; 316 u64 tmp;
317 int err; 317 int err;
@@ -329,7 +329,7 @@ static void sabre_register_error_handlers(struct pci_pbm_info *pbm)
329 * 2: CE ERR 329 * 2: CE ERR
330 * 3: POWER FAIL 330 * 3: POWER FAIL
331 */ 331 */
332 if (op->num_irqs < 4) 332 if (op->archdata.num_irqs < 4)
333 return; 333 return;
334 334
335 /* We clear the error bits in the appropriate AFSR before 335 /* We clear the error bits in the appropriate AFSR before
@@ -341,7 +341,7 @@ static void sabre_register_error_handlers(struct pci_pbm_info *pbm)
341 SABRE_UEAFSR_SDTE | SABRE_UEAFSR_PDTE), 341 SABRE_UEAFSR_SDTE | SABRE_UEAFSR_PDTE),
342 base + SABRE_UE_AFSR); 342 base + SABRE_UE_AFSR);
343 343
344 err = request_irq(op->irqs[1], sabre_ue_intr, 0, "SABRE_UE", pbm); 344 err = request_irq(op->archdata.irqs[1], sabre_ue_intr, 0, "SABRE_UE", pbm);
345 if (err) 345 if (err)
346 printk(KERN_WARNING "%s: Couldn't register UE, err=%d.\n", 346 printk(KERN_WARNING "%s: Couldn't register UE, err=%d.\n",
347 pbm->name, err); 347 pbm->name, err);
@@ -351,11 +351,11 @@ static void sabre_register_error_handlers(struct pci_pbm_info *pbm)
351 base + SABRE_CE_AFSR); 351 base + SABRE_CE_AFSR);
352 352
353 353
354 err = request_irq(op->irqs[2], sabre_ce_intr, 0, "SABRE_CE", pbm); 354 err = request_irq(op->archdata.irqs[2], sabre_ce_intr, 0, "SABRE_CE", pbm);
355 if (err) 355 if (err)
356 printk(KERN_WARNING "%s: Couldn't register CE, err=%d.\n", 356 printk(KERN_WARNING "%s: Couldn't register CE, err=%d.\n",
357 pbm->name, err); 357 pbm->name, err);
358 err = request_irq(op->irqs[0], psycho_pcierr_intr, 0, 358 err = request_irq(op->archdata.irqs[0], psycho_pcierr_intr, 0,
359 "SABRE_PCIERR", pbm); 359 "SABRE_PCIERR", pbm);
360 if (err) 360 if (err)
361 printk(KERN_WARNING "%s: Couldn't register PCIERR, err=%d.\n", 361 printk(KERN_WARNING "%s: Couldn't register PCIERR, err=%d.\n",
@@ -443,7 +443,7 @@ static void __devinit sabre_scan_bus(struct pci_pbm_info *pbm,
443} 443}
444 444
445static void __devinit sabre_pbm_init(struct pci_pbm_info *pbm, 445static void __devinit sabre_pbm_init(struct pci_pbm_info *pbm,
446 struct of_device *op) 446 struct platform_device *op)
447{ 447{
448 psycho_pbm_init_common(pbm, op, "SABRE", PBM_CHIP_TYPE_SABRE); 448 psycho_pbm_init_common(pbm, op, "SABRE", PBM_CHIP_TYPE_SABRE);
449 pbm->pci_afsr = pbm->controller_regs + SABRE_PIOAFSR; 449 pbm->pci_afsr = pbm->controller_regs + SABRE_PIOAFSR;
@@ -452,7 +452,7 @@ static void __devinit sabre_pbm_init(struct pci_pbm_info *pbm,
452 sabre_scan_bus(pbm, &op->dev); 452 sabre_scan_bus(pbm, &op->dev);
453} 453}
454 454
455static int __devinit sabre_probe(struct of_device *op, 455static int __devinit sabre_probe(struct platform_device *op,
456 const struct of_device_id *match) 456 const struct of_device_id *match)
457{ 457{
458 const struct linux_prom64_registers *pr_regs; 458 const struct linux_prom64_registers *pr_regs;
@@ -606,7 +606,7 @@ static struct of_platform_driver sabre_driver = {
606 606
607static int __init sabre_init(void) 607static int __init sabre_init(void)
608{ 608{
609 return of_register_driver(&sabre_driver, &of_bus_type); 609 return of_register_platform_driver(&sabre_driver);
610} 610}
611 611
612subsys_initcall(sabre_init); 612subsys_initcall(sabre_init);
diff --git a/arch/sparc/kernel/pci_schizo.c b/arch/sparc/kernel/pci_schizo.c
index 97a1ae2e1c02..445a47a2fb3d 100644
--- a/arch/sparc/kernel/pci_schizo.c
+++ b/arch/sparc/kernel/pci_schizo.c
@@ -844,7 +844,7 @@ static int pbm_routes_this_ino(struct pci_pbm_info *pbm, u32 ino)
844 */ 844 */
845static void tomatillo_register_error_handlers(struct pci_pbm_info *pbm) 845static void tomatillo_register_error_handlers(struct pci_pbm_info *pbm)
846{ 846{
847 struct of_device *op = of_find_device_by_node(pbm->op->dev.of_node); 847 struct platform_device *op = of_find_device_by_node(pbm->op->dev.of_node);
848 u64 tmp, err_mask, err_no_mask; 848 u64 tmp, err_mask, err_no_mask;
849 int err; 849 int err;
850 850
@@ -857,14 +857,14 @@ static void tomatillo_register_error_handlers(struct pci_pbm_info *pbm)
857 */ 857 */
858 858
859 if (pbm_routes_this_ino(pbm, SCHIZO_UE_INO)) { 859 if (pbm_routes_this_ino(pbm, SCHIZO_UE_INO)) {
860 err = request_irq(op->irqs[1], schizo_ue_intr, 0, 860 err = request_irq(op->archdata.irqs[1], schizo_ue_intr, 0,
861 "TOMATILLO_UE", pbm); 861 "TOMATILLO_UE", pbm);
862 if (err) 862 if (err)
863 printk(KERN_WARNING "%s: Could not register UE, " 863 printk(KERN_WARNING "%s: Could not register UE, "
864 "err=%d\n", pbm->name, err); 864 "err=%d\n", pbm->name, err);
865 } 865 }
866 if (pbm_routes_this_ino(pbm, SCHIZO_CE_INO)) { 866 if (pbm_routes_this_ino(pbm, SCHIZO_CE_INO)) {
867 err = request_irq(op->irqs[2], schizo_ce_intr, 0, 867 err = request_irq(op->archdata.irqs[2], schizo_ce_intr, 0,
868 "TOMATILLO_CE", pbm); 868 "TOMATILLO_CE", pbm);
869 if (err) 869 if (err)
870 printk(KERN_WARNING "%s: Could not register CE, " 870 printk(KERN_WARNING "%s: Could not register CE, "
@@ -872,10 +872,10 @@ static void tomatillo_register_error_handlers(struct pci_pbm_info *pbm)
872 } 872 }
873 err = 0; 873 err = 0;
874 if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_A_INO)) { 874 if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_A_INO)) {
875 err = request_irq(op->irqs[0], schizo_pcierr_intr, 0, 875 err = request_irq(op->archdata.irqs[0], schizo_pcierr_intr, 0,
876 "TOMATILLO_PCIERR", pbm); 876 "TOMATILLO_PCIERR", pbm);
877 } else if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_B_INO)) { 877 } else if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_B_INO)) {
878 err = request_irq(op->irqs[0], schizo_pcierr_intr, 0, 878 err = request_irq(op->archdata.irqs[0], schizo_pcierr_intr, 0,
879 "TOMATILLO_PCIERR", pbm); 879 "TOMATILLO_PCIERR", pbm);
880 } 880 }
881 if (err) 881 if (err)
@@ -883,7 +883,7 @@ static void tomatillo_register_error_handlers(struct pci_pbm_info *pbm)
883 "err=%d\n", pbm->name, err); 883 "err=%d\n", pbm->name, err);
884 884
885 if (pbm_routes_this_ino(pbm, SCHIZO_SERR_INO)) { 885 if (pbm_routes_this_ino(pbm, SCHIZO_SERR_INO)) {
886 err = request_irq(op->irqs[3], schizo_safarierr_intr, 0, 886 err = request_irq(op->archdata.irqs[3], schizo_safarierr_intr, 0,
887 "TOMATILLO_SERR", pbm); 887 "TOMATILLO_SERR", pbm);
888 if (err) 888 if (err)
889 printk(KERN_WARNING "%s: Could not register SERR, " 889 printk(KERN_WARNING "%s: Could not register SERR, "
@@ -939,7 +939,7 @@ static void tomatillo_register_error_handlers(struct pci_pbm_info *pbm)
939 939
940static void schizo_register_error_handlers(struct pci_pbm_info *pbm) 940static void schizo_register_error_handlers(struct pci_pbm_info *pbm)
941{ 941{
942 struct of_device *op = of_find_device_by_node(pbm->op->dev.of_node); 942 struct platform_device *op = of_find_device_by_node(pbm->op->dev.of_node);
943 u64 tmp, err_mask, err_no_mask; 943 u64 tmp, err_mask, err_no_mask;
944 int err; 944 int err;
945 945
@@ -952,14 +952,14 @@ static void schizo_register_error_handlers(struct pci_pbm_info *pbm)
952 */ 952 */
953 953
954 if (pbm_routes_this_ino(pbm, SCHIZO_UE_INO)) { 954 if (pbm_routes_this_ino(pbm, SCHIZO_UE_INO)) {
955 err = request_irq(op->irqs[1], schizo_ue_intr, 0, 955 err = request_irq(op->archdata.irqs[1], schizo_ue_intr, 0,
956 "SCHIZO_UE", pbm); 956 "SCHIZO_UE", pbm);
957 if (err) 957 if (err)
958 printk(KERN_WARNING "%s: Could not register UE, " 958 printk(KERN_WARNING "%s: Could not register UE, "
959 "err=%d\n", pbm->name, err); 959 "err=%d\n", pbm->name, err);
960 } 960 }
961 if (pbm_routes_this_ino(pbm, SCHIZO_CE_INO)) { 961 if (pbm_routes_this_ino(pbm, SCHIZO_CE_INO)) {
962 err = request_irq(op->irqs[2], schizo_ce_intr, 0, 962 err = request_irq(op->archdata.irqs[2], schizo_ce_intr, 0,
963 "SCHIZO_CE", pbm); 963 "SCHIZO_CE", pbm);
964 if (err) 964 if (err)
965 printk(KERN_WARNING "%s: Could not register CE, " 965 printk(KERN_WARNING "%s: Could not register CE, "
@@ -967,10 +967,10 @@ static void schizo_register_error_handlers(struct pci_pbm_info *pbm)
967 } 967 }
968 err = 0; 968 err = 0;
969 if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_A_INO)) { 969 if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_A_INO)) {
970 err = request_irq(op->irqs[0], schizo_pcierr_intr, 0, 970 err = request_irq(op->archdata.irqs[0], schizo_pcierr_intr, 0,
971 "SCHIZO_PCIERR", pbm); 971 "SCHIZO_PCIERR", pbm);
972 } else if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_B_INO)) { 972 } else if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_B_INO)) {
973 err = request_irq(op->irqs[0], schizo_pcierr_intr, 0, 973 err = request_irq(op->archdata.irqs[0], schizo_pcierr_intr, 0,
974 "SCHIZO_PCIERR", pbm); 974 "SCHIZO_PCIERR", pbm);
975 } 975 }
976 if (err) 976 if (err)
@@ -978,7 +978,7 @@ static void schizo_register_error_handlers(struct pci_pbm_info *pbm)
978 "err=%d\n", pbm->name, err); 978 "err=%d\n", pbm->name, err);
979 979
980 if (pbm_routes_this_ino(pbm, SCHIZO_SERR_INO)) { 980 if (pbm_routes_this_ino(pbm, SCHIZO_SERR_INO)) {
981 err = request_irq(op->irqs[3], schizo_safarierr_intr, 0, 981 err = request_irq(op->archdata.irqs[3], schizo_safarierr_intr, 0,
982 "SCHIZO_SERR", pbm); 982 "SCHIZO_SERR", pbm);
983 if (err) 983 if (err)
984 printk(KERN_WARNING "%s: Could not register SERR, " 984 printk(KERN_WARNING "%s: Could not register SERR, "
@@ -1307,7 +1307,7 @@ static void schizo_pbm_hw_init(struct pci_pbm_info *pbm)
1307} 1307}
1308 1308
1309static int __devinit schizo_pbm_init(struct pci_pbm_info *pbm, 1309static int __devinit schizo_pbm_init(struct pci_pbm_info *pbm,
1310 struct of_device *op, u32 portid, 1310 struct platform_device *op, u32 portid,
1311 int chip_type) 1311 int chip_type)
1312{ 1312{
1313 const struct linux_prom64_registers *regs; 1313 const struct linux_prom64_registers *regs;
@@ -1413,7 +1413,7 @@ static struct pci_pbm_info * __devinit schizo_find_sibling(u32 portid,
1413 return NULL; 1413 return NULL;
1414} 1414}
1415 1415
1416static int __devinit __schizo_init(struct of_device *op, unsigned long chip_type) 1416static int __devinit __schizo_init(struct platform_device *op, unsigned long chip_type)
1417{ 1417{
1418 struct device_node *dp = op->dev.of_node; 1418 struct device_node *dp = op->dev.of_node;
1419 struct pci_pbm_info *pbm; 1419 struct pci_pbm_info *pbm;
@@ -1460,7 +1460,7 @@ out_err:
1460 return err; 1460 return err;
1461} 1461}
1462 1462
1463static int __devinit schizo_probe(struct of_device *op, 1463static int __devinit schizo_probe(struct platform_device *op,
1464 const struct of_device_id *match) 1464 const struct of_device_id *match)
1465{ 1465{
1466 return __schizo_init(op, (unsigned long) match->data); 1466 return __schizo_init(op, (unsigned long) match->data);
@@ -1501,7 +1501,7 @@ static struct of_platform_driver schizo_driver = {
1501 1501
1502static int __init schizo_init(void) 1502static int __init schizo_init(void)
1503{ 1503{
1504 return of_register_driver(&schizo_driver, &of_bus_type); 1504 return of_register_platform_driver(&schizo_driver);
1505} 1505}
1506 1506
1507subsys_initcall(schizo_init); 1507subsys_initcall(schizo_init);
diff --git a/arch/sparc/kernel/pci_sun4v.c b/arch/sparc/kernel/pci_sun4v.c
index a24af6f7e17f..743344aa6d8a 100644
--- a/arch/sparc/kernel/pci_sun4v.c
+++ b/arch/sparc/kernel/pci_sun4v.c
@@ -879,7 +879,7 @@ static void pci_sun4v_msi_init(struct pci_pbm_info *pbm)
879#endif /* !(CONFIG_PCI_MSI) */ 879#endif /* !(CONFIG_PCI_MSI) */
880 880
881static int __devinit pci_sun4v_pbm_init(struct pci_pbm_info *pbm, 881static int __devinit pci_sun4v_pbm_init(struct pci_pbm_info *pbm,
882 struct of_device *op, u32 devhandle) 882 struct platform_device *op, u32 devhandle)
883{ 883{
884 struct device_node *dp = op->dev.of_node; 884 struct device_node *dp = op->dev.of_node;
885 int err; 885 int err;
@@ -918,7 +918,7 @@ static int __devinit pci_sun4v_pbm_init(struct pci_pbm_info *pbm,
918 return 0; 918 return 0;
919} 919}
920 920
921static int __devinit pci_sun4v_probe(struct of_device *op, 921static int __devinit pci_sun4v_probe(struct platform_device *op,
922 const struct of_device_id *match) 922 const struct of_device_id *match)
923{ 923{
924 const struct linux_prom64_registers *regs; 924 const struct linux_prom64_registers *regs;
@@ -1019,7 +1019,7 @@ static struct of_platform_driver pci_sun4v_driver = {
1019 1019
1020static int __init pci_sun4v_init(void) 1020static int __init pci_sun4v_init(void)
1021{ 1021{
1022 return of_register_driver(&pci_sun4v_driver, &of_bus_type); 1022 return of_register_platform_driver(&pci_sun4v_driver);
1023} 1023}
1024 1024
1025subsys_initcall(pci_sun4v_init); 1025subsys_initcall(pci_sun4v_init);
diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c
index 44faabc3c02c..357ced3c33ff 100644
--- a/arch/sparc/kernel/perf_event.c
+++ b/arch/sparc/kernel/perf_event.c
@@ -572,18 +572,18 @@ static u64 sparc_perf_event_update(struct perf_event *event,
572 s64 delta; 572 s64 delta;
573 573
574again: 574again:
575 prev_raw_count = atomic64_read(&hwc->prev_count); 575 prev_raw_count = local64_read(&hwc->prev_count);
576 new_raw_count = read_pmc(idx); 576 new_raw_count = read_pmc(idx);
577 577
578 if (atomic64_cmpxchg(&hwc->prev_count, prev_raw_count, 578 if (local64_cmpxchg(&hwc->prev_count, prev_raw_count,
579 new_raw_count) != prev_raw_count) 579 new_raw_count) != prev_raw_count)
580 goto again; 580 goto again;
581 581
582 delta = (new_raw_count << shift) - (prev_raw_count << shift); 582 delta = (new_raw_count << shift) - (prev_raw_count << shift);
583 delta >>= shift; 583 delta >>= shift;
584 584
585 atomic64_add(delta, &event->count); 585 local64_add(delta, &event->count);
586 atomic64_sub(delta, &hwc->period_left); 586 local64_sub(delta, &hwc->period_left);
587 587
588 return new_raw_count; 588 return new_raw_count;
589} 589}
@@ -591,27 +591,27 @@ again:
591static int sparc_perf_event_set_period(struct perf_event *event, 591static int sparc_perf_event_set_period(struct perf_event *event,
592 struct hw_perf_event *hwc, int idx) 592 struct hw_perf_event *hwc, int idx)
593{ 593{
594 s64 left = atomic64_read(&hwc->period_left); 594 s64 left = local64_read(&hwc->period_left);
595 s64 period = hwc->sample_period; 595 s64 period = hwc->sample_period;
596 int ret = 0; 596 int ret = 0;
597 597
598 if (unlikely(left <= -period)) { 598 if (unlikely(left <= -period)) {
599 left = period; 599 left = period;
600 atomic64_set(&hwc->period_left, left); 600 local64_set(&hwc->period_left, left);
601 hwc->last_period = period; 601 hwc->last_period = period;
602 ret = 1; 602 ret = 1;
603 } 603 }
604 604
605 if (unlikely(left <= 0)) { 605 if (unlikely(left <= 0)) {
606 left += period; 606 left += period;
607 atomic64_set(&hwc->period_left, left); 607 local64_set(&hwc->period_left, left);
608 hwc->last_period = period; 608 hwc->last_period = period;
609 ret = 1; 609 ret = 1;
610 } 610 }
611 if (left > MAX_PERIOD) 611 if (left > MAX_PERIOD)
612 left = MAX_PERIOD; 612 left = MAX_PERIOD;
613 613
614 atomic64_set(&hwc->prev_count, (u64)-left); 614 local64_set(&hwc->prev_count, (u64)-left);
615 615
616 write_pmc(idx, (u64)(-left) & 0xffffffff); 616 write_pmc(idx, (u64)(-left) & 0xffffffff);
617 617
@@ -1006,7 +1006,7 @@ static int sparc_pmu_enable(struct perf_event *event)
1006 * skip the schedulability test here, it will be peformed 1006 * skip the schedulability test here, it will be peformed
1007 * at commit time(->commit_txn) as a whole 1007 * at commit time(->commit_txn) as a whole
1008 */ 1008 */
1009 if (cpuc->group_flag & PERF_EVENT_TXN_STARTED) 1009 if (cpuc->group_flag & PERF_EVENT_TXN)
1010 goto nocheck; 1010 goto nocheck;
1011 1011
1012 if (check_excludes(cpuc->event, n0, 1)) 1012 if (check_excludes(cpuc->event, n0, 1))
@@ -1088,7 +1088,7 @@ static int __hw_perf_event_init(struct perf_event *event)
1088 if (!hwc->sample_period) { 1088 if (!hwc->sample_period) {
1089 hwc->sample_period = MAX_PERIOD; 1089 hwc->sample_period = MAX_PERIOD;
1090 hwc->last_period = hwc->sample_period; 1090 hwc->last_period = hwc->sample_period;
1091 atomic64_set(&hwc->period_left, hwc->sample_period); 1091 local64_set(&hwc->period_left, hwc->sample_period);
1092 } 1092 }
1093 1093
1094 return 0; 1094 return 0;
@@ -1103,7 +1103,7 @@ static void sparc_pmu_start_txn(const struct pmu *pmu)
1103{ 1103{
1104 struct cpu_hw_events *cpuhw = &__get_cpu_var(cpu_hw_events); 1104 struct cpu_hw_events *cpuhw = &__get_cpu_var(cpu_hw_events);
1105 1105
1106 cpuhw->group_flag |= PERF_EVENT_TXN_STARTED; 1106 cpuhw->group_flag |= PERF_EVENT_TXN;
1107} 1107}
1108 1108
1109/* 1109/*
@@ -1115,7 +1115,7 @@ static void sparc_pmu_cancel_txn(const struct pmu *pmu)
1115{ 1115{
1116 struct cpu_hw_events *cpuhw = &__get_cpu_var(cpu_hw_events); 1116 struct cpu_hw_events *cpuhw = &__get_cpu_var(cpu_hw_events);
1117 1117
1118 cpuhw->group_flag &= ~PERF_EVENT_TXN_STARTED; 1118 cpuhw->group_flag &= ~PERF_EVENT_TXN;
1119} 1119}
1120 1120
1121/* 1121/*
@@ -1138,6 +1138,7 @@ static int sparc_pmu_commit_txn(const struct pmu *pmu)
1138 if (sparc_check_constraints(cpuc->event, cpuc->events, n)) 1138 if (sparc_check_constraints(cpuc->event, cpuc->events, n))
1139 return -EAGAIN; 1139 return -EAGAIN;
1140 1140
1141 cpuc->group_flag &= ~PERF_EVENT_TXN;
1141 return 0; 1142 return 0;
1142} 1143}
1143 1144
diff --git a/arch/sparc/kernel/pmc.c b/arch/sparc/kernel/pmc.c
index 9589d8b9b0c1..94536a85f161 100644
--- a/arch/sparc/kernel/pmc.c
+++ b/arch/sparc/kernel/pmc.c
@@ -51,7 +51,7 @@ static void pmc_swift_idle(void)
51#endif 51#endif
52} 52}
53 53
54static int __devinit pmc_probe(struct of_device *op, 54static int __devinit pmc_probe(struct platform_device *op,
55 const struct of_device_id *match) 55 const struct of_device_id *match)
56{ 56{
57 regs = of_ioremap(&op->resource[0], 0, 57 regs = of_ioremap(&op->resource[0], 0,
@@ -89,7 +89,7 @@ static struct of_platform_driver pmc_driver = {
89 89
90static int __init pmc_init(void) 90static int __init pmc_init(void)
91{ 91{
92 return of_register_driver(&pmc_driver, &of_bus_type); 92 return of_register_platform_driver(&pmc_driver);
93} 93}
94 94
95/* This driver is not critical to the boot process 95/* This driver is not critical to the boot process
diff --git a/arch/sparc/kernel/power.c b/arch/sparc/kernel/power.c
index 168d4cb63f5b..2c59f4d387dd 100644
--- a/arch/sparc/kernel/power.c
+++ b/arch/sparc/kernel/power.c
@@ -33,10 +33,10 @@ static int __devinit has_button_interrupt(unsigned int irq, struct device_node *
33 return 1; 33 return 1;
34} 34}
35 35
36static int __devinit power_probe(struct of_device *op, const struct of_device_id *match) 36static int __devinit power_probe(struct platform_device *op, const struct of_device_id *match)
37{ 37{
38 struct resource *res = &op->resource[0]; 38 struct resource *res = &op->resource[0];
39 unsigned int irq= op->irqs[0]; 39 unsigned int irq = op->archdata.irqs[0];
40 40
41 power_reg = of_ioremap(res, 0, 0x4, "power"); 41 power_reg = of_ioremap(res, 0, 0x4, "power");
42 42
@@ -70,7 +70,7 @@ static struct of_platform_driver power_driver = {
70 70
71static int __init power_init(void) 71static int __init power_init(void)
72{ 72{
73 return of_register_driver(&power_driver, &of_platform_bus_type); 73 return of_register_platform_driver(&power_driver);
74} 74}
75 75
76device_initcall(power_init); 76device_initcall(power_init);
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
index 40e29fc8a4d6..17529298c50a 100644
--- a/arch/sparc/kernel/process_32.c
+++ b/arch/sparc/kernel/process_32.c
@@ -633,8 +633,10 @@ asmlinkage int sparc_execve(struct pt_regs *regs)
633 if(IS_ERR(filename)) 633 if(IS_ERR(filename))
634 goto out; 634 goto out;
635 error = do_execve(filename, 635 error = do_execve(filename,
636 (char __user * __user *)regs->u_regs[base + UREG_I1], 636 (const char __user *const __user *)
637 (char __user * __user *)regs->u_regs[base + UREG_I2], 637 regs->u_regs[base + UREG_I1],
638 (const char __user *const __user *)
639 regs->u_regs[base + UREG_I2],
638 regs); 640 regs);
639 putname(filename); 641 putname(filename);
640out: 642out:
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
index dbe81a368b45..c158a95ec664 100644
--- a/arch/sparc/kernel/process_64.c
+++ b/arch/sparc/kernel/process_64.c
@@ -303,7 +303,7 @@ void arch_trigger_all_cpu_backtrace(void)
303 303
304#ifdef CONFIG_MAGIC_SYSRQ 304#ifdef CONFIG_MAGIC_SYSRQ
305 305
306static void sysrq_handle_globreg(int key, struct tty_struct *tty) 306static void sysrq_handle_globreg(int key)
307{ 307{
308 arch_trigger_all_cpu_backtrace(); 308 arch_trigger_all_cpu_backtrace();
309} 309}
@@ -739,9 +739,9 @@ asmlinkage int sparc_execve(struct pt_regs *regs)
739 if (IS_ERR(filename)) 739 if (IS_ERR(filename))
740 goto out; 740 goto out;
741 error = do_execve(filename, 741 error = do_execve(filename,
742 (char __user * __user *) 742 (const char __user *const __user *)
743 regs->u_regs[base + UREG_I1], 743 regs->u_regs[base + UREG_I1],
744 (char __user * __user *) 744 (const char __user *const __user *)
745 regs->u_regs[base + UREG_I2], regs); 745 regs->u_regs[base + UREG_I2], regs);
746 putname(filename); 746 putname(filename);
747 if (!error) { 747 if (!error) {
diff --git a/arch/sparc/kernel/prom.h b/arch/sparc/kernel/prom.h
index a8591ef2636d..eeb04a782ec8 100644
--- a/arch/sparc/kernel/prom.h
+++ b/arch/sparc/kernel/prom.h
@@ -9,14 +9,6 @@ extern void irq_trans_init(struct device_node *dp);
9 9
10extern unsigned int prom_unique_id; 10extern unsigned int prom_unique_id;
11 11
12static inline int is_root_node(const struct device_node *dp)
13{
14 if (!dp)
15 return 0;
16
17 return (dp->parent == NULL);
18}
19
20extern char *build_path_component(struct device_node *dp); 12extern char *build_path_component(struct device_node *dp);
21extern void of_console_init(void); 13extern void of_console_init(void);
22 14
diff --git a/arch/sparc/kernel/prom_64.c b/arch/sparc/kernel/prom_64.c
index 466a32763ea8..86597d9867fd 100644
--- a/arch/sparc/kernel/prom_64.c
+++ b/arch/sparc/kernel/prom_64.c
@@ -21,7 +21,7 @@
21#include <linux/mm.h> 21#include <linux/mm.h>
22#include <linux/module.h> 22#include <linux/module.h>
23#include <linux/memblock.h> 23#include <linux/memblock.h>
24#include <linux/of_device.h> 24#include <linux/of.h>
25 25
26#include <asm/prom.h> 26#include <asm/prom.h>
27#include <asm/oplib.h> 27#include <asm/oplib.h>
@@ -81,7 +81,7 @@ static void __init sun4v_path_component(struct device_node *dp, char *tmp_buf)
81 return; 81 return;
82 82
83 regs = rprop->value; 83 regs = rprop->value;
84 if (!is_root_node(dp->parent)) { 84 if (!of_node_is_root(dp->parent)) {
85 sprintf(tmp_buf, "%s@%x,%x", 85 sprintf(tmp_buf, "%s@%x,%x",
86 dp->name, 86 dp->name,
87 (unsigned int) (regs->phys_addr >> 32UL), 87 (unsigned int) (regs->phys_addr >> 32UL),
@@ -121,7 +121,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf)
121 return; 121 return;
122 122
123 regs = prop->value; 123 regs = prop->value;
124 if (!is_root_node(dp->parent)) { 124 if (!of_node_is_root(dp->parent)) {
125 sprintf(tmp_buf, "%s@%x,%x", 125 sprintf(tmp_buf, "%s@%x,%x",
126 dp->name, 126 dp->name,
127 (unsigned int) (regs->phys_addr >> 32UL), 127 (unsigned int) (regs->phys_addr >> 32UL),
diff --git a/arch/sparc/kernel/prom_common.c b/arch/sparc/kernel/prom_common.c
index 57ac9e28be0c..1f830da2ddf2 100644
--- a/arch/sparc/kernel/prom_common.c
+++ b/arch/sparc/kernel/prom_common.c
@@ -244,7 +244,7 @@ char * __init build_full_name(struct device_node *dp)
244 244
245 n = prom_early_alloc(len); 245 n = prom_early_alloc(len);
246 strcpy(n, dp->parent->full_name); 246 strcpy(n, dp->parent->full_name);
247 if (!is_root_node(dp->parent)) { 247 if (!of_node_is_root(dp->parent)) {
248 strcpy(n + plen, "/"); 248 strcpy(n + plen, "/");
249 plen++; 249 plen++;
250 } 250 }
diff --git a/arch/sparc/kernel/prom_irqtrans.c b/arch/sparc/kernel/prom_irqtrans.c
index 5702ad4710cb..ce651147fabc 100644
--- a/arch/sparc/kernel/prom_irqtrans.c
+++ b/arch/sparc/kernel/prom_irqtrans.c
@@ -719,7 +719,7 @@ static unsigned int central_build_irq(struct device_node *dp,
719 void *_data) 719 void *_data)
720{ 720{
721 struct device_node *central_dp = _data; 721 struct device_node *central_dp = _data;
722 struct of_device *central_op = of_find_device_by_node(central_dp); 722 struct platform_device *central_op = of_find_device_by_node(central_dp);
723 struct resource *res; 723 struct resource *res;
724 unsigned long imap, iclr; 724 unsigned long imap, iclr;
725 u32 tmp; 725 u32 tmp;
diff --git a/arch/sparc/kernel/psycho_common.c b/arch/sparc/kernel/psycho_common.c
index 3f34ac853931..fe2af66bb198 100644
--- a/arch/sparc/kernel/psycho_common.c
+++ b/arch/sparc/kernel/psycho_common.c
@@ -447,7 +447,7 @@ int psycho_iommu_init(struct pci_pbm_info *pbm, int tsbsize,
447 447
448} 448}
449 449
450void psycho_pbm_init_common(struct pci_pbm_info *pbm, struct of_device *op, 450void psycho_pbm_init_common(struct pci_pbm_info *pbm, struct platform_device *op,
451 const char *chip_name, int chip_type) 451 const char *chip_name, int chip_type)
452{ 452{
453 struct device_node *dp = op->dev.of_node; 453 struct device_node *dp = op->dev.of_node;
diff --git a/arch/sparc/kernel/psycho_common.h b/arch/sparc/kernel/psycho_common.h
index 092c278ef28d..590b4ed8ab5e 100644
--- a/arch/sparc/kernel/psycho_common.h
+++ b/arch/sparc/kernel/psycho_common.h
@@ -42,7 +42,7 @@ extern int psycho_iommu_init(struct pci_pbm_info *pbm, int tsbsize,
42 unsigned long write_complete_offset); 42 unsigned long write_complete_offset);
43 43
44extern void psycho_pbm_init_common(struct pci_pbm_info *pbm, 44extern void psycho_pbm_init_common(struct pci_pbm_info *pbm,
45 struct of_device *op, 45 struct platform_device *op,
46 const char *chip_name, int chip_type); 46 const char *chip_name, int chip_type);
47 47
48#endif /* _PSYCHO_COMMON_H */ 48#endif /* _PSYCHO_COMMON_H */
diff --git a/arch/sparc/kernel/sbus.c b/arch/sparc/kernel/sbus.c
index cfeaf04b9cdf..2ca32d13abcf 100644
--- a/arch/sparc/kernel/sbus.c
+++ b/arch/sparc/kernel/sbus.c
@@ -57,7 +57,7 @@
57void sbus_set_sbus64(struct device *dev, int bursts) 57void sbus_set_sbus64(struct device *dev, int bursts)
58{ 58{
59 struct iommu *iommu = dev->archdata.iommu; 59 struct iommu *iommu = dev->archdata.iommu;
60 struct of_device *op = to_of_device(dev); 60 struct platform_device *op = to_platform_device(dev);
61 const struct linux_prom_registers *regs; 61 const struct linux_prom_registers *regs;
62 unsigned long cfg_reg; 62 unsigned long cfg_reg;
63 int slot; 63 int slot;
@@ -204,7 +204,7 @@ static unsigned long sysio_imap_to_iclr(unsigned long imap)
204 return imap + diff; 204 return imap + diff;
205} 205}
206 206
207static unsigned int sbus_build_irq(struct of_device *op, unsigned int ino) 207static unsigned int sbus_build_irq(struct platform_device *op, unsigned int ino)
208{ 208{
209 struct iommu *iommu = op->dev.archdata.iommu; 209 struct iommu *iommu = op->dev.archdata.iommu;
210 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL; 210 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL;
@@ -267,7 +267,7 @@ static unsigned int sbus_build_irq(struct of_device *op, unsigned int ino)
267#define SYSIO_UEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ 267#define SYSIO_UEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */
268static irqreturn_t sysio_ue_handler(int irq, void *dev_id) 268static irqreturn_t sysio_ue_handler(int irq, void *dev_id)
269{ 269{
270 struct of_device *op = dev_id; 270 struct platform_device *op = dev_id;
271 struct iommu *iommu = op->dev.archdata.iommu; 271 struct iommu *iommu = op->dev.archdata.iommu;
272 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL; 272 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL;
273 unsigned long afsr_reg, afar_reg; 273 unsigned long afsr_reg, afar_reg;
@@ -341,7 +341,7 @@ static irqreturn_t sysio_ue_handler(int irq, void *dev_id)
341#define SYSIO_CEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ 341#define SYSIO_CEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */
342static irqreturn_t sysio_ce_handler(int irq, void *dev_id) 342static irqreturn_t sysio_ce_handler(int irq, void *dev_id)
343{ 343{
344 struct of_device *op = dev_id; 344 struct platform_device *op = dev_id;
345 struct iommu *iommu = op->dev.archdata.iommu; 345 struct iommu *iommu = op->dev.archdata.iommu;
346 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL; 346 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL;
347 unsigned long afsr_reg, afar_reg; 347 unsigned long afsr_reg, afar_reg;
@@ -420,7 +420,7 @@ static irqreturn_t sysio_ce_handler(int irq, void *dev_id)
420#define SYSIO_SBAFSR_RESV3 0x0000001fffffffffUL /* Reserved */ 420#define SYSIO_SBAFSR_RESV3 0x0000001fffffffffUL /* Reserved */
421static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id) 421static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id)
422{ 422{
423 struct of_device *op = dev_id; 423 struct platform_device *op = dev_id;
424 struct iommu *iommu = op->dev.archdata.iommu; 424 struct iommu *iommu = op->dev.archdata.iommu;
425 unsigned long afsr_reg, afar_reg, reg_base; 425 unsigned long afsr_reg, afar_reg, reg_base;
426 unsigned long afsr, afar, error_bits; 426 unsigned long afsr, afar, error_bits;
@@ -488,7 +488,7 @@ static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id)
488#define SYSIO_CE_INO 0x35 488#define SYSIO_CE_INO 0x35
489#define SYSIO_SBUSERR_INO 0x36 489#define SYSIO_SBUSERR_INO 0x36
490 490
491static void __init sysio_register_error_handlers(struct of_device *op) 491static void __init sysio_register_error_handlers(struct platform_device *op)
492{ 492{
493 struct iommu *iommu = op->dev.archdata.iommu; 493 struct iommu *iommu = op->dev.archdata.iommu;
494 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL; 494 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL;
@@ -534,7 +534,7 @@ static void __init sysio_register_error_handlers(struct of_device *op)
534} 534}
535 535
536/* Boot time initialization. */ 536/* Boot time initialization. */
537static void __init sbus_iommu_init(struct of_device *op) 537static void __init sbus_iommu_init(struct platform_device *op)
538{ 538{
539 const struct linux_prom64_registers *pr; 539 const struct linux_prom64_registers *pr;
540 struct device_node *dp = op->dev.of_node; 540 struct device_node *dp = op->dev.of_node;
@@ -663,7 +663,7 @@ static int __init sbus_init(void)
663 struct device_node *dp; 663 struct device_node *dp;
664 664
665 for_each_node_by_name(dp, "sbus") { 665 for_each_node_by_name(dp, "sbus") {
666 struct of_device *op = of_find_device_by_node(dp); 666 struct platform_device *op = of_find_device_by_node(dp);
667 667
668 sbus_iommu_init(op); 668 sbus_iommu_init(op);
669 of_propagate_archdata(op); 669 of_propagate_archdata(op);
diff --git a/arch/sparc/kernel/sys32.S b/arch/sparc/kernel/sys32.S
index 46a76ba3fb4b..44e5faf1ad5f 100644
--- a/arch/sparc/kernel/sys32.S
+++ b/arch/sparc/kernel/sys32.S
@@ -330,6 +330,15 @@ do_sys_accept4: /* sys_accept4(int, struct sockaddr *, int *, int) */
330 nop 330 nop
331 nop 331 nop
332 332
333 .globl sys32_fanotify_mark
334sys32_fanotify_mark:
335 sethi %hi(sys_fanotify_mark), %g1
336 sllx %o2, 32, %o2
337 or %o2, %o3, %o2
338 mov %o4, %o3
339 jmpl %g1 + %lo(sys_fanotify_mark), %g0
340 mov %o5, %o4
341
333 .section __ex_table,"a" 342 .section __ex_table,"a"
334 .align 4 343 .align 4
335 .word 1b, __retl_efault, 2b, __retl_efault 344 .word 1b, __retl_efault, 2b, __retl_efault
diff --git a/arch/sparc/kernel/sys_sparc32.c b/arch/sparc/kernel/sys_sparc32.c
index c0ca87553e1c..e6375a750d9a 100644
--- a/arch/sparc/kernel/sys_sparc32.c
+++ b/arch/sparc/kernel/sys_sparc32.c
@@ -162,7 +162,7 @@ static int cp_compat_stat64(struct kstat *stat,
162 return err; 162 return err;
163} 163}
164 164
165asmlinkage long compat_sys_stat64(char __user * filename, 165asmlinkage long compat_sys_stat64(const char __user * filename,
166 struct compat_stat64 __user *statbuf) 166 struct compat_stat64 __user *statbuf)
167{ 167{
168 struct kstat stat; 168 struct kstat stat;
@@ -173,7 +173,7 @@ asmlinkage long compat_sys_stat64(char __user * filename,
173 return error; 173 return error;
174} 174}
175 175
176asmlinkage long compat_sys_lstat64(char __user * filename, 176asmlinkage long compat_sys_lstat64(const char __user * filename,
177 struct compat_stat64 __user *statbuf) 177 struct compat_stat64 __user *statbuf)
178{ 178{
179 struct kstat stat; 179 struct kstat stat;
@@ -195,7 +195,8 @@ asmlinkage long compat_sys_fstat64(unsigned int fd,
195 return error; 195 return error;
196} 196}
197 197
198asmlinkage long compat_sys_fstatat64(unsigned int dfd, char __user *filename, 198asmlinkage long compat_sys_fstatat64(unsigned int dfd,
199 const char __user *filename,
199 struct compat_stat64 __user * statbuf, int flag) 200 struct compat_stat64 __user * statbuf, int flag)
200{ 201{
201 struct kstat stat; 202 struct kstat stat;
diff --git a/arch/sparc/kernel/sys_sparc_32.c b/arch/sparc/kernel/sys_sparc_32.c
index ee995b7dae7e..50794137d710 100644
--- a/arch/sparc/kernel/sys_sparc_32.c
+++ b/arch/sparc/kernel/sys_sparc_32.c
@@ -282,7 +282,9 @@ out:
282 * Do a system call from kernel instead of calling sys_execve so we 282 * Do a system call from kernel instead of calling sys_execve so we
283 * end up with proper pt_regs. 283 * end up with proper pt_regs.
284 */ 284 */
285int kernel_execve(const char *filename, char *const argv[], char *const envp[]) 285int kernel_execve(const char *filename,
286 const char *const argv[],
287 const char *const envp[])
286{ 288{
287 long __res; 289 long __res;
288 register long __g1 __asm__ ("g1") = __NR_execve; 290 register long __g1 __asm__ ("g1") = __NR_execve;
diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c
index 3d435c42e6db..f836f4e93afe 100644
--- a/arch/sparc/kernel/sys_sparc_64.c
+++ b/arch/sparc/kernel/sys_sparc_64.c
@@ -758,7 +758,9 @@ SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act,
758 * Do a system call from kernel instead of calling sys_execve so we 758 * Do a system call from kernel instead of calling sys_execve so we
759 * end up with proper pt_regs. 759 * end up with proper pt_regs.
760 */ 760 */
761int kernel_execve(const char *filename, char *const argv[], char *const envp[]) 761int kernel_execve(const char *filename,
762 const char *const argv[],
763 const char *const envp[])
762{ 764{
763 long __res; 765 long __res;
764 register long __g1 __asm__ ("g1") = __NR_execve; 766 register long __g1 __asm__ ("g1") = __NR_execve;
diff --git a/arch/sparc/kernel/systbls_32.S b/arch/sparc/kernel/systbls_32.S
index 801fc8e5a0e8..ec396e1916b9 100644
--- a/arch/sparc/kernel/systbls_32.S
+++ b/arch/sparc/kernel/systbls_32.S
@@ -82,5 +82,6 @@ sys_call_table:
82/*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate 82/*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
83/*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 83/*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
84/*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv 84/*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv
85/*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg 85/*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init
86/*330*/ .long sys_fanotify_mark, sys_prlimit64
86 87
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S
index 9db058dd039e..8cfcaa549580 100644
--- a/arch/sparc/kernel/systbls_64.S
+++ b/arch/sparc/kernel/systbls_64.S
@@ -83,7 +83,8 @@ sys_call_table32:
83/*310*/ .word compat_sys_utimensat, compat_sys_signalfd, sys_timerfd_create, sys_eventfd, compat_sys_fallocate 83/*310*/ .word compat_sys_utimensat, compat_sys_signalfd, sys_timerfd_create, sys_eventfd, compat_sys_fallocate
84 .word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1 84 .word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1
85/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, compat_sys_preadv 85/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, compat_sys_preadv
86 .word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg 86 .word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg, sys_fanotify_init
87/*330*/ .word sys32_fanotify_mark, sys_prlimit64
87 88
88#endif /* CONFIG_COMPAT */ 89#endif /* CONFIG_COMPAT */
89 90
@@ -158,4 +159,5 @@ sys_call_table:
158/*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate 159/*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
159 .word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 160 .word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
160/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv 161/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv
161 .word sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg 162 .word sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init
163/*330*/ .word sys_fanotify_mark, sys_prlimit64
diff --git a/arch/sparc/kernel/time_32.c b/arch/sparc/kernel/time_32.c
index e404b063be2c..9c743b1886ff 100644
--- a/arch/sparc/kernel/time_32.c
+++ b/arch/sparc/kernel/time_32.c
@@ -142,7 +142,7 @@ static struct platform_device m48t59_rtc = {
142 }, 142 },
143}; 143};
144 144
145static int __devinit clock_probe(struct of_device *op, const struct of_device_id *match) 145static int __devinit clock_probe(struct platform_device *op, const struct of_device_id *match)
146{ 146{
147 struct device_node *dp = op->dev.of_node; 147 struct device_node *dp = op->dev.of_node;
148 const char *model = of_get_property(dp, "model", NULL); 148 const char *model = of_get_property(dp, "model", NULL);
@@ -189,7 +189,7 @@ static struct of_platform_driver clock_driver = {
189/* Probe for the mostek real time clock chip. */ 189/* Probe for the mostek real time clock chip. */
190static int __init clock_init(void) 190static int __init clock_init(void)
191{ 191{
192 return of_register_driver(&clock_driver, &of_platform_bus_type); 192 return of_register_platform_driver(&clock_driver);
193} 193}
194/* Must be after subsys_initcall() so that busses are probed. Must 194/* Must be after subsys_initcall() so that busses are probed. Must
195 * be before device_initcall() because things like the RTC driver 195 * be before device_initcall() because things like the RTC driver
diff --git a/arch/sparc/kernel/time_64.c b/arch/sparc/kernel/time_64.c
index 21e9fcae0668..3bc9c9979b92 100644
--- a/arch/sparc/kernel/time_64.c
+++ b/arch/sparc/kernel/time_64.c
@@ -419,7 +419,7 @@ static struct platform_device rtc_cmos_device = {
419 .num_resources = 1, 419 .num_resources = 1,
420}; 420};
421 421
422static int __devinit rtc_probe(struct of_device *op, const struct of_device_id *match) 422static int __devinit rtc_probe(struct platform_device *op, const struct of_device_id *match)
423{ 423{
424 struct resource *r; 424 struct resource *r;
425 425
@@ -477,7 +477,7 @@ static struct platform_device rtc_bq4802_device = {
477 .num_resources = 1, 477 .num_resources = 1,
478}; 478};
479 479
480static int __devinit bq4802_probe(struct of_device *op, const struct of_device_id *match) 480static int __devinit bq4802_probe(struct platform_device *op, const struct of_device_id *match)
481{ 481{
482 482
483 printk(KERN_INFO "%s: BQ4802 regs at 0x%llx\n", 483 printk(KERN_INFO "%s: BQ4802 regs at 0x%llx\n",
@@ -534,7 +534,7 @@ static struct platform_device m48t59_rtc = {
534 }, 534 },
535}; 535};
536 536
537static int __devinit mostek_probe(struct of_device *op, const struct of_device_id *match) 537static int __devinit mostek_probe(struct platform_device *op, const struct of_device_id *match)
538{ 538{
539 struct device_node *dp = op->dev.of_node; 539 struct device_node *dp = op->dev.of_node;
540 540
@@ -586,9 +586,9 @@ static int __init clock_init(void)
586 if (tlb_type == hypervisor) 586 if (tlb_type == hypervisor)
587 return platform_device_register(&rtc_sun4v_device); 587 return platform_device_register(&rtc_sun4v_device);
588 588
589 (void) of_register_driver(&rtc_driver, &of_platform_bus_type); 589 (void) of_register_platform_driver(&rtc_driver);
590 (void) of_register_driver(&mostek_driver, &of_platform_bus_type); 590 (void) of_register_platform_driver(&mostek_driver);
591 (void) of_register_driver(&bq4802_driver, &of_platform_bus_type); 591 (void) of_register_platform_driver(&bq4802_driver);
592 592
593 return 0; 593 return 0;
594} 594}
diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile
index c4b5e03af115..846d1c4374ea 100644
--- a/arch/sparc/lib/Makefile
+++ b/arch/sparc/lib/Makefile
@@ -15,7 +15,7 @@ lib-$(CONFIG_SPARC32) += divdi3.o udivdi3.o
15lib-$(CONFIG_SPARC32) += copy_user.o locks.o 15lib-$(CONFIG_SPARC32) += copy_user.o locks.o
16lib-y += atomic_$(BITS).o 16lib-y += atomic_$(BITS).o
17lib-$(CONFIG_SPARC32) += lshrdi3.o ashldi3.o 17lib-$(CONFIG_SPARC32) += lshrdi3.o ashldi3.o
18lib-y += rwsem_$(BITS).o 18lib-$(CONFIG_SPARC32) += rwsem_32.o
19lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o 19lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o
20 20
21lib-$(CONFIG_SPARC64) += copy_page.o clear_page.o bzero.o 21lib-$(CONFIG_SPARC64) += copy_page.o clear_page.o bzero.o
diff --git a/arch/sparc/lib/atomic_64.S b/arch/sparc/lib/atomic_64.S
index 0268210ca168..59186e0fcf39 100644
--- a/arch/sparc/lib/atomic_64.S
+++ b/arch/sparc/lib/atomic_64.S
@@ -21,7 +21,7 @@ atomic_add: /* %o0 = increment, %o1 = atomic_ptr */
21 add %g1, %o0, %g7 21 add %g1, %o0, %g7
22 cas [%o1], %g1, %g7 22 cas [%o1], %g1, %g7
23 cmp %g1, %g7 23 cmp %g1, %g7
24 bne,pn %icc, 2f 24 bne,pn %icc, BACKOFF_LABEL(2f, 1b)
25 nop 25 nop
26 retl 26 retl
27 nop 27 nop
@@ -36,7 +36,7 @@ atomic_sub: /* %o0 = decrement, %o1 = atomic_ptr */
36 sub %g1, %o0, %g7 36 sub %g1, %o0, %g7
37 cas [%o1], %g1, %g7 37 cas [%o1], %g1, %g7
38 cmp %g1, %g7 38 cmp %g1, %g7
39 bne,pn %icc, 2f 39 bne,pn %icc, BACKOFF_LABEL(2f, 1b)
40 nop 40 nop
41 retl 41 retl
42 nop 42 nop
@@ -51,11 +51,10 @@ atomic_add_ret: /* %o0 = increment, %o1 = atomic_ptr */
51 add %g1, %o0, %g7 51 add %g1, %o0, %g7
52 cas [%o1], %g1, %g7 52 cas [%o1], %g1, %g7
53 cmp %g1, %g7 53 cmp %g1, %g7
54 bne,pn %icc, 2f 54 bne,pn %icc, BACKOFF_LABEL(2f, 1b)
55 add %g7, %o0, %g7 55 add %g1, %o0, %g1
56 sra %g7, 0, %o0
57 retl 56 retl
58 nop 57 sra %g1, 0, %o0
592: BACKOFF_SPIN(%o2, %o3, 1b) 582: BACKOFF_SPIN(%o2, %o3, 1b)
60 .size atomic_add_ret, .-atomic_add_ret 59 .size atomic_add_ret, .-atomic_add_ret
61 60
@@ -67,11 +66,10 @@ atomic_sub_ret: /* %o0 = decrement, %o1 = atomic_ptr */
67 sub %g1, %o0, %g7 66 sub %g1, %o0, %g7
68 cas [%o1], %g1, %g7 67 cas [%o1], %g1, %g7
69 cmp %g1, %g7 68 cmp %g1, %g7
70 bne,pn %icc, 2f 69 bne,pn %icc, BACKOFF_LABEL(2f, 1b)
71 sub %g7, %o0, %g7 70 sub %g1, %o0, %g1
72 sra %g7, 0, %o0
73 retl 71 retl
74 nop 72 sra %g1, 0, %o0
752: BACKOFF_SPIN(%o2, %o3, 1b) 732: BACKOFF_SPIN(%o2, %o3, 1b)
76 .size atomic_sub_ret, .-atomic_sub_ret 74 .size atomic_sub_ret, .-atomic_sub_ret
77 75
@@ -83,7 +81,7 @@ atomic64_add: /* %o0 = increment, %o1 = atomic_ptr */
83 add %g1, %o0, %g7 81 add %g1, %o0, %g7
84 casx [%o1], %g1, %g7 82 casx [%o1], %g1, %g7
85 cmp %g1, %g7 83 cmp %g1, %g7
86 bne,pn %xcc, 2f 84 bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
87 nop 85 nop
88 retl 86 retl
89 nop 87 nop
@@ -98,7 +96,7 @@ atomic64_sub: /* %o0 = decrement, %o1 = atomic_ptr */
98 sub %g1, %o0, %g7 96 sub %g1, %o0, %g7
99 casx [%o1], %g1, %g7 97 casx [%o1], %g1, %g7
100 cmp %g1, %g7 98 cmp %g1, %g7
101 bne,pn %xcc, 2f 99 bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
102 nop 100 nop
103 retl 101 retl
104 nop 102 nop
@@ -113,11 +111,10 @@ atomic64_add_ret: /* %o0 = increment, %o1 = atomic_ptr */
113 add %g1, %o0, %g7 111 add %g1, %o0, %g7
114 casx [%o1], %g1, %g7 112 casx [%o1], %g1, %g7
115 cmp %g1, %g7 113 cmp %g1, %g7
116 bne,pn %xcc, 2f 114 bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
117 add %g7, %o0, %g7
118 mov %g7, %o0
119 retl
120 nop 115 nop
116 retl
117 add %g1, %o0, %o0
1212: BACKOFF_SPIN(%o2, %o3, 1b) 1182: BACKOFF_SPIN(%o2, %o3, 1b)
122 .size atomic64_add_ret, .-atomic64_add_ret 119 .size atomic64_add_ret, .-atomic64_add_ret
123 120
@@ -129,10 +126,9 @@ atomic64_sub_ret: /* %o0 = decrement, %o1 = atomic_ptr */
129 sub %g1, %o0, %g7 126 sub %g1, %o0, %g7
130 casx [%o1], %g1, %g7 127 casx [%o1], %g1, %g7
131 cmp %g1, %g7 128 cmp %g1, %g7
132 bne,pn %xcc, 2f 129 bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
133 sub %g7, %o0, %g7
134 mov %g7, %o0
135 retl
136 nop 130 nop
131 retl
132 sub %g1, %o0, %o0
1372: BACKOFF_SPIN(%o2, %o3, 1b) 1332: BACKOFF_SPIN(%o2, %o3, 1b)
138 .size atomic64_sub_ret, .-atomic64_sub_ret 134 .size atomic64_sub_ret, .-atomic64_sub_ret
diff --git a/arch/sparc/lib/bitops.S b/arch/sparc/lib/bitops.S
index 2b7228cb8c22..3dc61d5537c0 100644
--- a/arch/sparc/lib/bitops.S
+++ b/arch/sparc/lib/bitops.S
@@ -22,7 +22,7 @@ test_and_set_bit: /* %o0=nr, %o1=addr */
22 or %g7, %o2, %g1 22 or %g7, %o2, %g1
23 casx [%o1], %g7, %g1 23 casx [%o1], %g7, %g1
24 cmp %g7, %g1 24 cmp %g7, %g1
25 bne,pn %xcc, 2f 25 bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
26 and %g7, %o2, %g2 26 and %g7, %o2, %g2
27 clr %o0 27 clr %o0
28 movrne %g2, 1, %o0 28 movrne %g2, 1, %o0
@@ -45,7 +45,7 @@ test_and_clear_bit: /* %o0=nr, %o1=addr */
45 andn %g7, %o2, %g1 45 andn %g7, %o2, %g1
46 casx [%o1], %g7, %g1 46 casx [%o1], %g7, %g1
47 cmp %g7, %g1 47 cmp %g7, %g1
48 bne,pn %xcc, 2f 48 bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
49 and %g7, %o2, %g2 49 and %g7, %o2, %g2
50 clr %o0 50 clr %o0
51 movrne %g2, 1, %o0 51 movrne %g2, 1, %o0
@@ -68,7 +68,7 @@ test_and_change_bit: /* %o0=nr, %o1=addr */
68 xor %g7, %o2, %g1 68 xor %g7, %o2, %g1
69 casx [%o1], %g7, %g1 69 casx [%o1], %g7, %g1
70 cmp %g7, %g1 70 cmp %g7, %g1
71 bne,pn %xcc, 2f 71 bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
72 and %g7, %o2, %g2 72 and %g7, %o2, %g2
73 clr %o0 73 clr %o0
74 movrne %g2, 1, %o0 74 movrne %g2, 1, %o0
@@ -91,7 +91,7 @@ set_bit: /* %o0=nr, %o1=addr */
91 or %g7, %o2, %g1 91 or %g7, %o2, %g1
92 casx [%o1], %g7, %g1 92 casx [%o1], %g7, %g1
93 cmp %g7, %g1 93 cmp %g7, %g1
94 bne,pn %xcc, 2f 94 bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
95 nop 95 nop
96 retl 96 retl
97 nop 97 nop
@@ -112,7 +112,7 @@ clear_bit: /* %o0=nr, %o1=addr */
112 andn %g7, %o2, %g1 112 andn %g7, %o2, %g1
113 casx [%o1], %g7, %g1 113 casx [%o1], %g7, %g1
114 cmp %g7, %g1 114 cmp %g7, %g1
115 bne,pn %xcc, 2f 115 bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
116 nop 116 nop
117 retl 117 retl
118 nop 118 nop
@@ -133,7 +133,7 @@ change_bit: /* %o0=nr, %o1=addr */
133 xor %g7, %o2, %g1 133 xor %g7, %o2, %g1
134 casx [%o1], %g7, %g1 134 casx [%o1], %g7, %g1
135 cmp %g7, %g1 135 cmp %g7, %g1
136 bne,pn %xcc, 2f 136 bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
137 nop 137 nop
138 retl 138 retl
139 nop 139 nop
diff --git a/arch/sparc/lib/rwsem_64.S b/arch/sparc/lib/rwsem_64.S
deleted file mode 100644
index 91a7d29a79d5..000000000000
--- a/arch/sparc/lib/rwsem_64.S
+++ /dev/null
@@ -1,163 +0,0 @@
1/* rwsem.S: RW semaphore assembler.
2 *
3 * Written by David S. Miller (davem@redhat.com), 2001.
4 * Derived from asm-i386/rwsem.h
5 */
6
7#include <asm/rwsem-const.h>
8
9 .section .sched.text, "ax"
10
11 .globl __down_read
12__down_read:
131: lduw [%o0], %g1
14 add %g1, 1, %g7
15 cas [%o0], %g1, %g7
16 cmp %g1, %g7
17 bne,pn %icc, 1b
18 add %g7, 1, %g7
19 cmp %g7, 0
20 bl,pn %icc, 3f
21 nop
222:
23 retl
24 nop
253:
26 save %sp, -192, %sp
27 call rwsem_down_read_failed
28 mov %i0, %o0
29 ret
30 restore
31 .size __down_read, .-__down_read
32
33 .globl __down_read_trylock
34__down_read_trylock:
351: lduw [%o0], %g1
36 add %g1, 1, %g7
37 cmp %g7, 0
38 bl,pn %icc, 2f
39 mov 0, %o1
40 cas [%o0], %g1, %g7
41 cmp %g1, %g7
42 bne,pn %icc, 1b
43 mov 1, %o1
442: retl
45 mov %o1, %o0
46 .size __down_read_trylock, .-__down_read_trylock
47
48 .globl __down_write
49__down_write:
50 sethi %hi(RWSEM_ACTIVE_WRITE_BIAS), %g1
51 or %g1, %lo(RWSEM_ACTIVE_WRITE_BIAS), %g1
521:
53 lduw [%o0], %g3
54 add %g3, %g1, %g7
55 cas [%o0], %g3, %g7
56 cmp %g3, %g7
57 bne,pn %icc, 1b
58 cmp %g7, 0
59 bne,pn %icc, 3f
60 nop
612: retl
62 nop
633:
64 save %sp, -192, %sp
65 call rwsem_down_write_failed
66 mov %i0, %o0
67 ret
68 restore
69 .size __down_write, .-__down_write
70
71 .globl __down_write_trylock
72__down_write_trylock:
73 sethi %hi(RWSEM_ACTIVE_WRITE_BIAS), %g1
74 or %g1, %lo(RWSEM_ACTIVE_WRITE_BIAS), %g1
751:
76 lduw [%o0], %g3
77 cmp %g3, 0
78 bne,pn %icc, 2f
79 mov 0, %o1
80 add %g3, %g1, %g7
81 cas [%o0], %g3, %g7
82 cmp %g3, %g7
83 bne,pn %icc, 1b
84 mov 1, %o1
852: retl
86 mov %o1, %o0
87 .size __down_write_trylock, .-__down_write_trylock
88
89 .globl __up_read
90__up_read:
911:
92 lduw [%o0], %g1
93 sub %g1, 1, %g7
94 cas [%o0], %g1, %g7
95 cmp %g1, %g7
96 bne,pn %icc, 1b
97 cmp %g7, 0
98 bl,pn %icc, 3f
99 nop
1002: retl
101 nop
1023: sethi %hi(RWSEM_ACTIVE_MASK), %g1
103 sub %g7, 1, %g7
104 or %g1, %lo(RWSEM_ACTIVE_MASK), %g1
105 andcc %g7, %g1, %g0
106 bne,pn %icc, 2b
107 nop
108 save %sp, -192, %sp
109 call rwsem_wake
110 mov %i0, %o0
111 ret
112 restore
113 .size __up_read, .-__up_read
114
115 .globl __up_write
116__up_write:
117 sethi %hi(RWSEM_ACTIVE_WRITE_BIAS), %g1
118 or %g1, %lo(RWSEM_ACTIVE_WRITE_BIAS), %g1
1191:
120 lduw [%o0], %g3
121 sub %g3, %g1, %g7
122 cas [%o0], %g3, %g7
123 cmp %g3, %g7
124 bne,pn %icc, 1b
125 sub %g7, %g1, %g7
126 cmp %g7, 0
127 bl,pn %icc, 3f
128 nop
1292:
130 retl
131 nop
1323:
133 save %sp, -192, %sp
134 call rwsem_wake
135 mov %i0, %o0
136 ret
137 restore
138 .size __up_write, .-__up_write
139
140 .globl __downgrade_write
141__downgrade_write:
142 sethi %hi(RWSEM_WAITING_BIAS), %g1
143 or %g1, %lo(RWSEM_WAITING_BIAS), %g1
1441:
145 lduw [%o0], %g3
146 sub %g3, %g1, %g7
147 cas [%o0], %g3, %g7
148 cmp %g3, %g7
149 bne,pn %icc, 1b
150 sub %g7, %g1, %g7
151 cmp %g7, 0
152 bl,pn %icc, 3f
153 nop
1542:
155 retl
156 nop
1573:
158 save %sp, -192, %sp
159 call rwsem_downgrade_wake
160 mov %i0, %o0
161 ret
162 restore
163 .size __downgrade_write, .-__downgrade_write
diff --git a/arch/sparc/mm/highmem.c b/arch/sparc/mm/highmem.c
index 7916feba6e4a..e139e9cbf5f7 100644
--- a/arch/sparc/mm/highmem.c
+++ b/arch/sparc/mm/highmem.c
@@ -65,7 +65,7 @@ void *kmap_atomic(struct page *page, enum km_type type)
65} 65}
66EXPORT_SYMBOL(kmap_atomic); 66EXPORT_SYMBOL(kmap_atomic);
67 67
68void kunmap_atomic(void *kvaddr, enum km_type type) 68void kunmap_atomic_notypecheck(void *kvaddr, enum km_type type)
69{ 69{
70#ifdef CONFIG_DEBUG_HIGHMEM 70#ifdef CONFIG_DEBUG_HIGHMEM
71 unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK; 71 unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK;
@@ -100,7 +100,7 @@ void kunmap_atomic(void *kvaddr, enum km_type type)
100 100
101 pagefault_enable(); 101 pagefault_enable();
102} 102}
103EXPORT_SYMBOL(kunmap_atomic); 103EXPORT_SYMBOL(kunmap_atomic_notypecheck);
104 104
105/* We may be fed a pagetable here by ptep_to_xxx and others. */ 105/* We may be fed a pagetable here by ptep_to_xxx and others. */
106struct page *kmap_atomic_to_page(void *ptr) 106struct page *kmap_atomic_to_page(void *ptr)
diff --git a/arch/sparc/mm/io-unit.c b/arch/sparc/mm/io-unit.c
index 005e758a4db7..fc58c3e917df 100644
--- a/arch/sparc/mm/io-unit.c
+++ b/arch/sparc/mm/io-unit.c
@@ -35,7 +35,7 @@
35#define IOPERM (IOUPTE_CACHE | IOUPTE_WRITE | IOUPTE_VALID) 35#define IOPERM (IOUPTE_CACHE | IOUPTE_WRITE | IOUPTE_VALID)
36#define MKIOPTE(phys) __iopte((((phys)>>4) & IOUPTE_PAGE) | IOPERM) 36#define MKIOPTE(phys) __iopte((((phys)>>4) & IOUPTE_PAGE) | IOPERM)
37 37
38static void __init iounit_iommu_init(struct of_device *op) 38static void __init iounit_iommu_init(struct platform_device *op)
39{ 39{
40 struct iounit_struct *iounit; 40 struct iounit_struct *iounit;
41 iopte_t *xpt, *xptend; 41 iopte_t *xpt, *xptend;
@@ -74,7 +74,7 @@ static int __init iounit_init(void)
74 struct device_node *dp; 74 struct device_node *dp;
75 75
76 for_each_node_by_name(dp, "sbi") { 76 for_each_node_by_name(dp, "sbi") {
77 struct of_device *op = of_find_device_by_node(dp); 77 struct platform_device *op = of_find_device_by_node(dp);
78 78
79 iounit_iommu_init(op); 79 iounit_iommu_init(op);
80 of_propagate_archdata(op); 80 of_propagate_archdata(op);
diff --git a/arch/sparc/mm/iommu.c b/arch/sparc/mm/iommu.c
index b2e6e73888b5..07fc6a65d9b6 100644
--- a/arch/sparc/mm/iommu.c
+++ b/arch/sparc/mm/iommu.c
@@ -56,14 +56,14 @@ static pgprot_t dvma_prot; /* Consistent mapping pte flags */
56#define IOPERM (IOPTE_CACHE | IOPTE_WRITE | IOPTE_VALID) 56#define IOPERM (IOPTE_CACHE | IOPTE_WRITE | IOPTE_VALID)
57#define MKIOPTE(pfn, perm) (((((pfn)<<8) & IOPTE_PAGE) | (perm)) & ~IOPTE_WAZ) 57#define MKIOPTE(pfn, perm) (((((pfn)<<8) & IOPTE_PAGE) | (perm)) & ~IOPTE_WAZ)
58 58
59static void __init sbus_iommu_init(struct of_device *op) 59static void __init sbus_iommu_init(struct platform_device *op)
60{ 60{
61 struct iommu_struct *iommu; 61 struct iommu_struct *iommu;
62 unsigned int impl, vers; 62 unsigned int impl, vers;
63 unsigned long *bitmap; 63 unsigned long *bitmap;
64 unsigned long tmp; 64 unsigned long tmp;
65 65
66 iommu = kmalloc(sizeof(struct iommu_struct), GFP_ATOMIC); 66 iommu = kmalloc(sizeof(struct iommu_struct), GFP_KERNEL);
67 if (!iommu) { 67 if (!iommu) {
68 prom_printf("Unable to allocate iommu structure\n"); 68 prom_printf("Unable to allocate iommu structure\n");
69 prom_halt(); 69 prom_halt();
@@ -132,7 +132,7 @@ static int __init iommu_init(void)
132 struct device_node *dp; 132 struct device_node *dp;
133 133
134 for_each_node_by_name(dp, "iommu") { 134 for_each_node_by_name(dp, "iommu") {
135 struct of_device *op = of_find_device_by_node(dp); 135 struct platform_device *op = of_find_device_by_node(dp);
136 136
137 sbus_iommu_init(op); 137 sbus_iommu_init(op);
138 of_propagate_archdata(op); 138 of_propagate_archdata(op);
diff --git a/arch/sparc/prom/cif.S b/arch/sparc/prom/cif.S
index 5f27ad779c0c..9c86b4b7d429 100644
--- a/arch/sparc/prom/cif.S
+++ b/arch/sparc/prom/cif.S
@@ -9,18 +9,18 @@
9#include <asm/thread_info.h> 9#include <asm/thread_info.h>
10 10
11 .text 11 .text
12 .globl prom_cif_interface 12 .globl prom_cif_direct
13prom_cif_interface: 13prom_cif_direct:
14 sethi %hi(p1275buf), %o0 14 sethi %hi(p1275buf), %o1
15 or %o0, %lo(p1275buf), %o0 15 or %o1, %lo(p1275buf), %o1
16 ldx [%o0 + 0x010], %o1 ! prom_cif_stack 16 ldx [%o1 + 0x0010], %o2 ! prom_cif_stack
17 save %o1, -192, %sp 17 save %o2, -192, %sp
18 ldx [%i0 + 0x008], %l2 ! prom_cif_handler 18 ldx [%i1 + 0x0008], %l2 ! prom_cif_handler
19 mov %g4, %l0 19 mov %g4, %l0
20 mov %g5, %l1 20 mov %g5, %l1
21 mov %g6, %l3 21 mov %g6, %l3
22 call %l2 22 call %l2
23 add %i0, 0x018, %o0 ! prom_args 23 mov %i0, %o0 ! prom_args
24 mov %l0, %g4 24 mov %l0, %g4
25 mov %l1, %g5 25 mov %l1, %g5
26 mov %l3, %g6 26 mov %l3, %g6
diff --git a/arch/sparc/prom/console_64.c b/arch/sparc/prom/console_64.c
index f55d58a8a156..10322dc2f557 100644
--- a/arch/sparc/prom/console_64.c
+++ b/arch/sparc/prom/console_64.c
@@ -21,14 +21,22 @@ extern int prom_stdin, prom_stdout;
21inline int 21inline int
22prom_nbgetchar(void) 22prom_nbgetchar(void)
23{ 23{
24 unsigned long args[7];
24 char inc; 25 char inc;
25 26
26 if (p1275_cmd("read", P1275_ARG(1,P1275_ARG_OUT_BUF)| 27 args[0] = (unsigned long) "read";
27 P1275_INOUT(3,1), 28 args[1] = 3;
28 prom_stdin, &inc, P1275_SIZE(1)) == 1) 29 args[2] = 1;
30 args[3] = (unsigned int) prom_stdin;
31 args[4] = (unsigned long) &inc;
32 args[5] = 1;
33 args[6] = (unsigned long) -1;
34
35 p1275_cmd_direct(args);
36
37 if (args[6] == 1)
29 return inc; 38 return inc;
30 else 39 return -1;
31 return -1;
32} 40}
33 41
34/* Non blocking put character to console device, returns -1 if 42/* Non blocking put character to console device, returns -1 if
@@ -37,12 +45,22 @@ prom_nbgetchar(void)
37inline int 45inline int
38prom_nbputchar(char c) 46prom_nbputchar(char c)
39{ 47{
48 unsigned long args[7];
40 char outc; 49 char outc;
41 50
42 outc = c; 51 outc = c;
43 if (p1275_cmd("write", P1275_ARG(1,P1275_ARG_IN_BUF)| 52
44 P1275_INOUT(3,1), 53 args[0] = (unsigned long) "write";
45 prom_stdout, &outc, P1275_SIZE(1)) == 1) 54 args[1] = 3;
55 args[2] = 1;
56 args[3] = (unsigned int) prom_stdout;
57 args[4] = (unsigned long) &outc;
58 args[5] = 1;
59 args[6] = (unsigned long) -1;
60
61 p1275_cmd_direct(args);
62
63 if (args[6] == 1)
46 return 0; 64 return 0;
47 else 65 else
48 return -1; 66 return -1;
@@ -67,7 +85,15 @@ prom_putchar(char c)
67void 85void
68prom_puts(const char *s, int len) 86prom_puts(const char *s, int len)
69{ 87{
70 p1275_cmd("write", P1275_ARG(1,P1275_ARG_IN_BUF)| 88 unsigned long args[7];
71 P1275_INOUT(3,1), 89
72 prom_stdout, s, P1275_SIZE(len)); 90 args[0] = (unsigned long) "write";
91 args[1] = 3;
92 args[2] = 1;
93 args[3] = (unsigned int) prom_stdout;
94 args[4] = (unsigned long) s;
95 args[5] = len;
96 args[6] = (unsigned long) -1;
97
98 p1275_cmd_direct(args);
73} 99}
diff --git a/arch/sparc/prom/devops_64.c b/arch/sparc/prom/devops_64.c
index 9dbd803e46e1..a017119e7ef1 100644
--- a/arch/sparc/prom/devops_64.c
+++ b/arch/sparc/prom/devops_64.c
@@ -18,16 +18,32 @@
18int 18int
19prom_devopen(const char *dstr) 19prom_devopen(const char *dstr)
20{ 20{
21 return p1275_cmd ("open", P1275_ARG(0,P1275_ARG_IN_STRING)| 21 unsigned long args[5];
22 P1275_INOUT(1,1), 22
23 dstr); 23 args[0] = (unsigned long) "open";
24 args[1] = 1;
25 args[2] = 1;
26 args[3] = (unsigned long) dstr;
27 args[4] = (unsigned long) -1;
28
29 p1275_cmd_direct(args);
30
31 return (int) args[4];
24} 32}
25 33
26/* Close the device described by device handle 'dhandle'. */ 34/* Close the device described by device handle 'dhandle'. */
27int 35int
28prom_devclose(int dhandle) 36prom_devclose(int dhandle)
29{ 37{
30 p1275_cmd ("close", P1275_INOUT(1,0), dhandle); 38 unsigned long args[4];
39
40 args[0] = (unsigned long) "close";
41 args[1] = 1;
42 args[2] = 0;
43 args[3] = (unsigned int) dhandle;
44
45 p1275_cmd_direct(args);
46
31 return 0; 47 return 0;
32} 48}
33 49
@@ -37,5 +53,15 @@ prom_devclose(int dhandle)
37void 53void
38prom_seek(int dhandle, unsigned int seekhi, unsigned int seeklo) 54prom_seek(int dhandle, unsigned int seekhi, unsigned int seeklo)
39{ 55{
40 p1275_cmd ("seek", P1275_INOUT(3,1), dhandle, seekhi, seeklo); 56 unsigned long args[7];
57
58 args[0] = (unsigned long) "seek";
59 args[1] = 3;
60 args[2] = 1;
61 args[3] = (unsigned int) dhandle;
62 args[4] = seekhi;
63 args[5] = seeklo;
64 args[6] = (unsigned long) -1;
65
66 p1275_cmd_direct(args);
41} 67}
diff --git a/arch/sparc/prom/misc_64.c b/arch/sparc/prom/misc_64.c
index 39fc6af21b7c..6cb1581d6aef 100644
--- a/arch/sparc/prom/misc_64.c
+++ b/arch/sparc/prom/misc_64.c
@@ -20,10 +20,17 @@
20 20
21int prom_service_exists(const char *service_name) 21int prom_service_exists(const char *service_name)
22{ 22{
23 int err = p1275_cmd("test", P1275_ARG(0, P1275_ARG_IN_STRING) | 23 unsigned long args[5];
24 P1275_INOUT(1, 1), service_name);
25 24
26 if (err) 25 args[0] = (unsigned long) "test";
26 args[1] = 1;
27 args[2] = 1;
28 args[3] = (unsigned long) service_name;
29 args[4] = (unsigned long) -1;
30
31 p1275_cmd_direct(args);
32
33 if (args[4])
27 return 0; 34 return 0;
28 return 1; 35 return 1;
29} 36}
@@ -31,30 +38,47 @@ int prom_service_exists(const char *service_name)
31void prom_sun4v_guest_soft_state(void) 38void prom_sun4v_guest_soft_state(void)
32{ 39{
33 const char *svc = "SUNW,soft-state-supported"; 40 const char *svc = "SUNW,soft-state-supported";
41 unsigned long args[3];
34 42
35 if (!prom_service_exists(svc)) 43 if (!prom_service_exists(svc))
36 return; 44 return;
37 p1275_cmd(svc, P1275_INOUT(0, 0)); 45 args[0] = (unsigned long) svc;
46 args[1] = 0;
47 args[2] = 0;
48 p1275_cmd_direct(args);
38} 49}
39 50
40/* Reset and reboot the machine with the command 'bcommand'. */ 51/* Reset and reboot the machine with the command 'bcommand'. */
41void prom_reboot(const char *bcommand) 52void prom_reboot(const char *bcommand)
42{ 53{
54 unsigned long args[4];
55
43#ifdef CONFIG_SUN_LDOMS 56#ifdef CONFIG_SUN_LDOMS
44 if (ldom_domaining_enabled) 57 if (ldom_domaining_enabled)
45 ldom_reboot(bcommand); 58 ldom_reboot(bcommand);
46#endif 59#endif
47 p1275_cmd("boot", P1275_ARG(0, P1275_ARG_IN_STRING) | 60 args[0] = (unsigned long) "boot";
48 P1275_INOUT(1, 0), bcommand); 61 args[1] = 1;
62 args[2] = 0;
63 args[3] = (unsigned long) bcommand;
64
65 p1275_cmd_direct(args);
49} 66}
50 67
51/* Forth evaluate the expression contained in 'fstring'. */ 68/* Forth evaluate the expression contained in 'fstring'. */
52void prom_feval(const char *fstring) 69void prom_feval(const char *fstring)
53{ 70{
71 unsigned long args[5];
72
54 if (!fstring || fstring[0] == 0) 73 if (!fstring || fstring[0] == 0)
55 return; 74 return;
56 p1275_cmd("interpret", P1275_ARG(0, P1275_ARG_IN_STRING) | 75 args[0] = (unsigned long) "interpret";
57 P1275_INOUT(1, 1), fstring); 76 args[1] = 1;
77 args[2] = 1;
78 args[3] = (unsigned long) fstring;
79 args[4] = (unsigned long) -1;
80
81 p1275_cmd_direct(args);
58} 82}
59EXPORT_SYMBOL(prom_feval); 83EXPORT_SYMBOL(prom_feval);
60 84
@@ -68,6 +92,7 @@ extern void smp_release(void);
68 */ 92 */
69void prom_cmdline(void) 93void prom_cmdline(void)
70{ 94{
95 unsigned long args[3];
71 unsigned long flags; 96 unsigned long flags;
72 97
73 local_irq_save(flags); 98 local_irq_save(flags);
@@ -76,7 +101,11 @@ void prom_cmdline(void)
76 smp_capture(); 101 smp_capture();
77#endif 102#endif
78 103
79 p1275_cmd("enter", P1275_INOUT(0, 0)); 104 args[0] = (unsigned long) "enter";
105 args[1] = 0;
106 args[2] = 0;
107
108 p1275_cmd_direct(args);
80 109
81#ifdef CONFIG_SMP 110#ifdef CONFIG_SMP
82 smp_release(); 111 smp_release();
@@ -90,22 +119,32 @@ void prom_cmdline(void)
90 */ 119 */
91void notrace prom_halt(void) 120void notrace prom_halt(void)
92{ 121{
122 unsigned long args[3];
123
93#ifdef CONFIG_SUN_LDOMS 124#ifdef CONFIG_SUN_LDOMS
94 if (ldom_domaining_enabled) 125 if (ldom_domaining_enabled)
95 ldom_power_off(); 126 ldom_power_off();
96#endif 127#endif
97again: 128again:
98 p1275_cmd("exit", P1275_INOUT(0, 0)); 129 args[0] = (unsigned long) "exit";
130 args[1] = 0;
131 args[2] = 0;
132 p1275_cmd_direct(args);
99 goto again; /* PROM is out to get me -DaveM */ 133 goto again; /* PROM is out to get me -DaveM */
100} 134}
101 135
102void prom_halt_power_off(void) 136void prom_halt_power_off(void)
103{ 137{
138 unsigned long args[3];
139
104#ifdef CONFIG_SUN_LDOMS 140#ifdef CONFIG_SUN_LDOMS
105 if (ldom_domaining_enabled) 141 if (ldom_domaining_enabled)
106 ldom_power_off(); 142 ldom_power_off();
107#endif 143#endif
108 p1275_cmd("SUNW,power-off", P1275_INOUT(0, 0)); 144 args[0] = (unsigned long) "SUNW,power-off";
145 args[1] = 0;
146 args[2] = 0;
147 p1275_cmd_direct(args);
109 148
110 /* if nothing else helps, we just halt */ 149 /* if nothing else helps, we just halt */
111 prom_halt(); 150 prom_halt();
@@ -114,10 +153,15 @@ void prom_halt_power_off(void)
114/* Set prom sync handler to call function 'funcp'. */ 153/* Set prom sync handler to call function 'funcp'. */
115void prom_setcallback(callback_func_t funcp) 154void prom_setcallback(callback_func_t funcp)
116{ 155{
156 unsigned long args[5];
117 if (!funcp) 157 if (!funcp)
118 return; 158 return;
119 p1275_cmd("set-callback", P1275_ARG(0, P1275_ARG_IN_FUNCTION) | 159 args[0] = (unsigned long) "set-callback";
120 P1275_INOUT(1, 1), funcp); 160 args[1] = 1;
161 args[2] = 1;
162 args[3] = (unsigned long) funcp;
163 args[4] = (unsigned long) -1;
164 p1275_cmd_direct(args);
121} 165}
122 166
123/* Get the idprom and stuff it into buffer 'idbuf'. Returns the 167/* Get the idprom and stuff it into buffer 'idbuf'. Returns the
@@ -173,57 +217,61 @@ static int prom_get_memory_ihandle(void)
173} 217}
174 218
175/* Load explicit I/D TLB entries. */ 219/* Load explicit I/D TLB entries. */
220static long tlb_load(const char *type, unsigned long index,
221 unsigned long tte_data, unsigned long vaddr)
222{
223 unsigned long args[9];
224
225 args[0] = (unsigned long) prom_callmethod_name;
226 args[1] = 5;
227 args[2] = 1;
228 args[3] = (unsigned long) type;
229 args[4] = (unsigned int) prom_get_mmu_ihandle();
230 args[5] = vaddr;
231 args[6] = tte_data;
232 args[7] = index;
233 args[8] = (unsigned long) -1;
234
235 p1275_cmd_direct(args);
236
237 return (long) args[8];
238}
239
176long prom_itlb_load(unsigned long index, 240long prom_itlb_load(unsigned long index,
177 unsigned long tte_data, 241 unsigned long tte_data,
178 unsigned long vaddr) 242 unsigned long vaddr)
179{ 243{
180 return p1275_cmd(prom_callmethod_name, 244 return tlb_load("SUNW,itlb-load", index, tte_data, vaddr);
181 (P1275_ARG(0, P1275_ARG_IN_STRING) |
182 P1275_ARG(2, P1275_ARG_IN_64B) |
183 P1275_ARG(3, P1275_ARG_IN_64B) |
184 P1275_INOUT(5, 1)),
185 "SUNW,itlb-load",
186 prom_get_mmu_ihandle(),
187 /* And then our actual args are pushed backwards. */
188 vaddr,
189 tte_data,
190 index);
191} 245}
192 246
193long prom_dtlb_load(unsigned long index, 247long prom_dtlb_load(unsigned long index,
194 unsigned long tte_data, 248 unsigned long tte_data,
195 unsigned long vaddr) 249 unsigned long vaddr)
196{ 250{
197 return p1275_cmd(prom_callmethod_name, 251 return tlb_load("SUNW,dtlb-load", index, tte_data, vaddr);
198 (P1275_ARG(0, P1275_ARG_IN_STRING) |
199 P1275_ARG(2, P1275_ARG_IN_64B) |
200 P1275_ARG(3, P1275_ARG_IN_64B) |
201 P1275_INOUT(5, 1)),
202 "SUNW,dtlb-load",
203 prom_get_mmu_ihandle(),
204 /* And then our actual args are pushed backwards. */
205 vaddr,
206 tte_data,
207 index);
208} 252}
209 253
210int prom_map(int mode, unsigned long size, 254int prom_map(int mode, unsigned long size,
211 unsigned long vaddr, unsigned long paddr) 255 unsigned long vaddr, unsigned long paddr)
212{ 256{
213 int ret = p1275_cmd(prom_callmethod_name, 257 unsigned long args[11];
214 (P1275_ARG(0, P1275_ARG_IN_STRING) | 258 int ret;
215 P1275_ARG(3, P1275_ARG_IN_64B) | 259
216 P1275_ARG(4, P1275_ARG_IN_64B) | 260 args[0] = (unsigned long) prom_callmethod_name;
217 P1275_ARG(6, P1275_ARG_IN_64B) | 261 args[1] = 7;
218 P1275_INOUT(7, 1)), 262 args[2] = 1;
219 prom_map_name, 263 args[3] = (unsigned long) prom_map_name;
220 prom_get_mmu_ihandle(), 264 args[4] = (unsigned int) prom_get_mmu_ihandle();
221 mode, 265 args[5] = (unsigned int) mode;
222 size, 266 args[6] = size;
223 vaddr, 267 args[7] = vaddr;
224 0, 268 args[8] = 0;
225 paddr); 269 args[9] = paddr;
226 270 args[10] = (unsigned long) -1;
271
272 p1275_cmd_direct(args);
273
274 ret = (int) args[10];
227 if (ret == 0) 275 if (ret == 0)
228 ret = -1; 276 ret = -1;
229 return ret; 277 return ret;
@@ -231,40 +279,51 @@ int prom_map(int mode, unsigned long size,
231 279
232void prom_unmap(unsigned long size, unsigned long vaddr) 280void prom_unmap(unsigned long size, unsigned long vaddr)
233{ 281{
234 p1275_cmd(prom_callmethod_name, 282 unsigned long args[7];
235 (P1275_ARG(0, P1275_ARG_IN_STRING) | 283
236 P1275_ARG(2, P1275_ARG_IN_64B) | 284 args[0] = (unsigned long) prom_callmethod_name;
237 P1275_ARG(3, P1275_ARG_IN_64B) | 285 args[1] = 4;
238 P1275_INOUT(4, 0)), 286 args[2] = 0;
239 prom_unmap_name, 287 args[3] = (unsigned long) prom_unmap_name;
240 prom_get_mmu_ihandle(), 288 args[4] = (unsigned int) prom_get_mmu_ihandle();
241 size, 289 args[5] = size;
242 vaddr); 290 args[6] = vaddr;
291
292 p1275_cmd_direct(args);
243} 293}
244 294
245/* Set aside physical memory which is not touched or modified 295/* Set aside physical memory which is not touched or modified
246 * across soft resets. 296 * across soft resets.
247 */ 297 */
248unsigned long prom_retain(const char *name, 298int prom_retain(const char *name, unsigned long size,
249 unsigned long pa_low, unsigned long pa_high, 299 unsigned long align, unsigned long *paddr)
250 long size, long align)
251{ 300{
252 /* XXX I don't think we return multiple values correctly. 301 unsigned long args[11];
253 * XXX OBP supposedly returns pa_low/pa_high here, how does 302
254 * XXX it work? 303 args[0] = (unsigned long) prom_callmethod_name;
304 args[1] = 5;
305 args[2] = 3;
306 args[3] = (unsigned long) "SUNW,retain";
307 args[4] = (unsigned int) prom_get_memory_ihandle();
308 args[5] = align;
309 args[6] = size;
310 args[7] = (unsigned long) name;
311 args[8] = (unsigned long) -1;
312 args[9] = (unsigned long) -1;
313 args[10] = (unsigned long) -1;
314
315 p1275_cmd_direct(args);
316
317 if (args[8])
318 return (int) args[8];
319
320 /* Next we get "phys_high" then "phys_low". On 64-bit
321 * the phys_high cell is don't care since the phys_low
322 * cell has the full value.
255 */ 323 */
324 *paddr = args[10];
256 325
257 /* If align is zero, the pa_low/pa_high args are passed, 326 return 0;
258 * else they are not.
259 */
260 if (align == 0)
261 return p1275_cmd("SUNW,retain",
262 (P1275_ARG(0, P1275_ARG_IN_BUF) | P1275_INOUT(5, 2)),
263 name, pa_low, pa_high, size, align);
264 else
265 return p1275_cmd("SUNW,retain",
266 (P1275_ARG(0, P1275_ARG_IN_BUF) | P1275_INOUT(3, 2)),
267 name, size, align);
268} 327}
269 328
270/* Get "Unumber" string for the SIMM at the given 329/* Get "Unumber" string for the SIMM at the given
@@ -277,62 +336,129 @@ int prom_getunumber(int syndrome_code,
277 unsigned long phys_addr, 336 unsigned long phys_addr,
278 char *buf, int buflen) 337 char *buf, int buflen)
279{ 338{
280 return p1275_cmd(prom_callmethod_name, 339 unsigned long args[12];
281 (P1275_ARG(0, P1275_ARG_IN_STRING) | 340
282 P1275_ARG(3, P1275_ARG_OUT_BUF) | 341 args[0] = (unsigned long) prom_callmethod_name;
283 P1275_ARG(6, P1275_ARG_IN_64B) | 342 args[1] = 7;
284 P1275_INOUT(8, 2)), 343 args[2] = 2;
285 "SUNW,get-unumber", prom_get_memory_ihandle(), 344 args[3] = (unsigned long) "SUNW,get-unumber";
286 buflen, buf, P1275_SIZE(buflen), 345 args[4] = (unsigned int) prom_get_memory_ihandle();
287 0, phys_addr, syndrome_code); 346 args[5] = buflen;
347 args[6] = (unsigned long) buf;
348 args[7] = 0;
349 args[8] = phys_addr;
350 args[9] = (unsigned int) syndrome_code;
351 args[10] = (unsigned long) -1;
352 args[11] = (unsigned long) -1;
353
354 p1275_cmd_direct(args);
355
356 return (int) args[10];
288} 357}
289 358
290/* Power management extensions. */ 359/* Power management extensions. */
291void prom_sleepself(void) 360void prom_sleepself(void)
292{ 361{
293 p1275_cmd("SUNW,sleep-self", P1275_INOUT(0, 0)); 362 unsigned long args[3];
363
364 args[0] = (unsigned long) "SUNW,sleep-self";
365 args[1] = 0;
366 args[2] = 0;
367 p1275_cmd_direct(args);
294} 368}
295 369
296int prom_sleepsystem(void) 370int prom_sleepsystem(void)
297{ 371{
298 return p1275_cmd("SUNW,sleep-system", P1275_INOUT(0, 1)); 372 unsigned long args[4];
373
374 args[0] = (unsigned long) "SUNW,sleep-system";
375 args[1] = 0;
376 args[2] = 1;
377 args[3] = (unsigned long) -1;
378 p1275_cmd_direct(args);
379
380 return (int) args[3];
299} 381}
300 382
301int prom_wakeupsystem(void) 383int prom_wakeupsystem(void)
302{ 384{
303 return p1275_cmd("SUNW,wakeup-system", P1275_INOUT(0, 1)); 385 unsigned long args[4];
386
387 args[0] = (unsigned long) "SUNW,wakeup-system";
388 args[1] = 0;
389 args[2] = 1;
390 args[3] = (unsigned long) -1;
391 p1275_cmd_direct(args);
392
393 return (int) args[3];
304} 394}
305 395
306#ifdef CONFIG_SMP 396#ifdef CONFIG_SMP
307void prom_startcpu(int cpunode, unsigned long pc, unsigned long arg) 397void prom_startcpu(int cpunode, unsigned long pc, unsigned long arg)
308{ 398{
309 p1275_cmd("SUNW,start-cpu", P1275_INOUT(3, 0), cpunode, pc, arg); 399 unsigned long args[6];
400
401 args[0] = (unsigned long) "SUNW,start-cpu";
402 args[1] = 3;
403 args[2] = 0;
404 args[3] = (unsigned int) cpunode;
405 args[4] = pc;
406 args[5] = arg;
407 p1275_cmd_direct(args);
310} 408}
311 409
312void prom_startcpu_cpuid(int cpuid, unsigned long pc, unsigned long arg) 410void prom_startcpu_cpuid(int cpuid, unsigned long pc, unsigned long arg)
313{ 411{
314 p1275_cmd("SUNW,start-cpu-by-cpuid", P1275_INOUT(3, 0), 412 unsigned long args[6];
315 cpuid, pc, arg); 413
414 args[0] = (unsigned long) "SUNW,start-cpu-by-cpuid";
415 args[1] = 3;
416 args[2] = 0;
417 args[3] = (unsigned int) cpuid;
418 args[4] = pc;
419 args[5] = arg;
420 p1275_cmd_direct(args);
316} 421}
317 422
318void prom_stopcpu_cpuid(int cpuid) 423void prom_stopcpu_cpuid(int cpuid)
319{ 424{
320 p1275_cmd("SUNW,stop-cpu-by-cpuid", P1275_INOUT(1, 0), 425 unsigned long args[4];
321 cpuid); 426
427 args[0] = (unsigned long) "SUNW,stop-cpu-by-cpuid";
428 args[1] = 1;
429 args[2] = 0;
430 args[3] = (unsigned int) cpuid;
431 p1275_cmd_direct(args);
322} 432}
323 433
324void prom_stopself(void) 434void prom_stopself(void)
325{ 435{
326 p1275_cmd("SUNW,stop-self", P1275_INOUT(0, 0)); 436 unsigned long args[3];
437
438 args[0] = (unsigned long) "SUNW,stop-self";
439 args[1] = 0;
440 args[2] = 0;
441 p1275_cmd_direct(args);
327} 442}
328 443
329void prom_idleself(void) 444void prom_idleself(void)
330{ 445{
331 p1275_cmd("SUNW,idle-self", P1275_INOUT(0, 0)); 446 unsigned long args[3];
447
448 args[0] = (unsigned long) "SUNW,idle-self";
449 args[1] = 0;
450 args[2] = 0;
451 p1275_cmd_direct(args);
332} 452}
333 453
334void prom_resumecpu(int cpunode) 454void prom_resumecpu(int cpunode)
335{ 455{
336 p1275_cmd("SUNW,resume-cpu", P1275_INOUT(1, 0), cpunode); 456 unsigned long args[4];
457
458 args[0] = (unsigned long) "SUNW,resume-cpu";
459 args[1] = 1;
460 args[2] = 0;
461 args[3] = (unsigned int) cpunode;
462 p1275_cmd_direct(args);
337} 463}
338#endif 464#endif
diff --git a/arch/sparc/prom/p1275.c b/arch/sparc/prom/p1275.c
index 2d8b70d397f1..fa6e4e219b9c 100644
--- a/arch/sparc/prom/p1275.c
+++ b/arch/sparc/prom/p1275.c
@@ -22,13 +22,11 @@ struct {
22 long prom_callback; /* 0x00 */ 22 long prom_callback; /* 0x00 */
23 void (*prom_cif_handler)(long *); /* 0x08 */ 23 void (*prom_cif_handler)(long *); /* 0x08 */
24 unsigned long prom_cif_stack; /* 0x10 */ 24 unsigned long prom_cif_stack; /* 0x10 */
25 unsigned long prom_args [23]; /* 0x18 */
26 char prom_buffer [3000];
27} p1275buf; 25} p1275buf;
28 26
29extern void prom_world(int); 27extern void prom_world(int);
30 28
31extern void prom_cif_interface(void); 29extern void prom_cif_direct(unsigned long *args);
32extern void prom_cif_callback(void); 30extern void prom_cif_callback(void);
33 31
34/* 32/*
@@ -36,114 +34,20 @@ extern void prom_cif_callback(void);
36 */ 34 */
37DEFINE_RAW_SPINLOCK(prom_entry_lock); 35DEFINE_RAW_SPINLOCK(prom_entry_lock);
38 36
39long p1275_cmd(const char *service, long fmt, ...) 37void p1275_cmd_direct(unsigned long *args)
40{ 38{
41 char *p, *q;
42 unsigned long flags; 39 unsigned long flags;
43 int nargs, nrets, i;
44 va_list list;
45 long attrs, x;
46
47 p = p1275buf.prom_buffer;
48 40
49 raw_local_save_flags(flags); 41 raw_local_save_flags(flags);
50 raw_local_irq_restore(PIL_NMI); 42 raw_local_irq_restore(PIL_NMI);
51 raw_spin_lock(&prom_entry_lock); 43 raw_spin_lock(&prom_entry_lock);
52 44
53 p1275buf.prom_args[0] = (unsigned long)p; /* service */
54 strcpy (p, service);
55 p = (char *)(((long)(strchr (p, 0) + 8)) & ~7);
56 p1275buf.prom_args[1] = nargs = (fmt & 0x0f); /* nargs */
57 p1275buf.prom_args[2] = nrets = ((fmt & 0xf0) >> 4); /* nrets */
58 attrs = fmt >> 8;
59 va_start(list, fmt);
60 for (i = 0; i < nargs; i++, attrs >>= 3) {
61 switch (attrs & 0x7) {
62 case P1275_ARG_NUMBER:
63 p1275buf.prom_args[i + 3] =
64 (unsigned)va_arg(list, long);
65 break;
66 case P1275_ARG_IN_64B:
67 p1275buf.prom_args[i + 3] =
68 va_arg(list, unsigned long);
69 break;
70 case P1275_ARG_IN_STRING:
71 strcpy (p, va_arg(list, char *));
72 p1275buf.prom_args[i + 3] = (unsigned long)p;
73 p = (char *)(((long)(strchr (p, 0) + 8)) & ~7);
74 break;
75 case P1275_ARG_OUT_BUF:
76 (void) va_arg(list, char *);
77 p1275buf.prom_args[i + 3] = (unsigned long)p;
78 x = va_arg(list, long);
79 i++; attrs >>= 3;
80 p = (char *)(((long)(p + (int)x + 7)) & ~7);
81 p1275buf.prom_args[i + 3] = x;
82 break;
83 case P1275_ARG_IN_BUF:
84 q = va_arg(list, char *);
85 p1275buf.prom_args[i + 3] = (unsigned long)p;
86 x = va_arg(list, long);
87 i++; attrs >>= 3;
88 memcpy (p, q, (int)x);
89 p = (char *)(((long)(p + (int)x + 7)) & ~7);
90 p1275buf.prom_args[i + 3] = x;
91 break;
92 case P1275_ARG_OUT_32B:
93 (void) va_arg(list, char *);
94 p1275buf.prom_args[i + 3] = (unsigned long)p;
95 p += 32;
96 break;
97 case P1275_ARG_IN_FUNCTION:
98 p1275buf.prom_args[i + 3] =
99 (unsigned long)prom_cif_callback;
100 p1275buf.prom_callback = va_arg(list, long);
101 break;
102 }
103 }
104 va_end(list);
105
106 prom_world(1); 45 prom_world(1);
107 prom_cif_interface(); 46 prom_cif_direct(args);
108 prom_world(0); 47 prom_world(0);
109 48
110 attrs = fmt >> 8;
111 va_start(list, fmt);
112 for (i = 0; i < nargs; i++, attrs >>= 3) {
113 switch (attrs & 0x7) {
114 case P1275_ARG_NUMBER:
115 (void) va_arg(list, long);
116 break;
117 case P1275_ARG_IN_STRING:
118 (void) va_arg(list, char *);
119 break;
120 case P1275_ARG_IN_FUNCTION:
121 (void) va_arg(list, long);
122 break;
123 case P1275_ARG_IN_BUF:
124 (void) va_arg(list, char *);
125 (void) va_arg(list, long);
126 i++; attrs >>= 3;
127 break;
128 case P1275_ARG_OUT_BUF:
129 p = va_arg(list, char *);
130 x = va_arg(list, long);
131 memcpy (p, (char *)(p1275buf.prom_args[i + 3]), (int)x);
132 i++; attrs >>= 3;
133 break;
134 case P1275_ARG_OUT_32B:
135 p = va_arg(list, char *);
136 memcpy (p, (char *)(p1275buf.prom_args[i + 3]), 32);
137 break;
138 }
139 }
140 va_end(list);
141 x = p1275buf.prom_args [nargs + 3];
142
143 raw_spin_unlock(&prom_entry_lock); 49 raw_spin_unlock(&prom_entry_lock);
144 raw_local_irq_restore(flags); 50 raw_local_irq_restore(flags);
145
146 return x;
147} 51}
148 52
149void prom_cif_init(void *cif_handler, void *cif_stack) 53void prom_cif_init(void *cif_handler, void *cif_stack)
diff --git a/arch/sparc/prom/tree_64.c b/arch/sparc/prom/tree_64.c
index 3c0d2dd9f693..9d3f9137a43a 100644
--- a/arch/sparc/prom/tree_64.c
+++ b/arch/sparc/prom/tree_64.c
@@ -16,22 +16,39 @@
16#include <asm/oplib.h> 16#include <asm/oplib.h>
17#include <asm/ldc.h> 17#include <asm/ldc.h>
18 18
19static int prom_node_to_node(const char *type, int node)
20{
21 unsigned long args[5];
22
23 args[0] = (unsigned long) type;
24 args[1] = 1;
25 args[2] = 1;
26 args[3] = (unsigned int) node;
27 args[4] = (unsigned long) -1;
28
29 p1275_cmd_direct(args);
30
31 return (int) args[4];
32}
33
19/* Return the child of node 'node' or zero if no this node has no 34/* Return the child of node 'node' or zero if no this node has no
20 * direct descendent. 35 * direct descendent.
21 */ 36 */
22inline int __prom_getchild(int node) 37inline int __prom_getchild(int node)
23{ 38{
24 return p1275_cmd ("child", P1275_INOUT(1, 1), node); 39 return prom_node_to_node("child", node);
25} 40}
26 41
27inline int prom_getchild(int node) 42inline int prom_getchild(int node)
28{ 43{
29 int cnode; 44 int cnode;
30 45
31 if(node == -1) return 0; 46 if (node == -1)
47 return 0;
32 cnode = __prom_getchild(node); 48 cnode = __prom_getchild(node);
33 if(cnode == -1) return 0; 49 if (cnode == -1)
34 return (int)cnode; 50 return 0;
51 return cnode;
35} 52}
36EXPORT_SYMBOL(prom_getchild); 53EXPORT_SYMBOL(prom_getchild);
37 54
@@ -39,10 +56,12 @@ inline int prom_getparent(int node)
39{ 56{
40 int cnode; 57 int cnode;
41 58
42 if(node == -1) return 0; 59 if (node == -1)
43 cnode = p1275_cmd ("parent", P1275_INOUT(1, 1), node); 60 return 0;
44 if(cnode == -1) return 0; 61 cnode = prom_node_to_node("parent", node);
45 return (int)cnode; 62 if (cnode == -1)
63 return 0;
64 return cnode;
46} 65}
47 66
48/* Return the next sibling of node 'node' or zero if no more siblings 67/* Return the next sibling of node 'node' or zero if no more siblings
@@ -50,7 +69,7 @@ inline int prom_getparent(int node)
50 */ 69 */
51inline int __prom_getsibling(int node) 70inline int __prom_getsibling(int node)
52{ 71{
53 return p1275_cmd(prom_peer_name, P1275_INOUT(1, 1), node); 72 return prom_node_to_node(prom_peer_name, node);
54} 73}
55 74
56inline int prom_getsibling(int node) 75inline int prom_getsibling(int node)
@@ -72,11 +91,21 @@ EXPORT_SYMBOL(prom_getsibling);
72 */ 91 */
73inline int prom_getproplen(int node, const char *prop) 92inline int prom_getproplen(int node, const char *prop)
74{ 93{
75 if((!node) || (!prop)) return -1; 94 unsigned long args[6];
76 return p1275_cmd ("getproplen", 95
77 P1275_ARG(1,P1275_ARG_IN_STRING)| 96 if (!node || !prop)
78 P1275_INOUT(2, 1), 97 return -1;
79 node, prop); 98
99 args[0] = (unsigned long) "getproplen";
100 args[1] = 2;
101 args[2] = 1;
102 args[3] = (unsigned int) node;
103 args[4] = (unsigned long) prop;
104 args[5] = (unsigned long) -1;
105
106 p1275_cmd_direct(args);
107
108 return (int) args[5];
80} 109}
81EXPORT_SYMBOL(prom_getproplen); 110EXPORT_SYMBOL(prom_getproplen);
82 111
@@ -87,19 +116,25 @@ EXPORT_SYMBOL(prom_getproplen);
87inline int prom_getproperty(int node, const char *prop, 116inline int prom_getproperty(int node, const char *prop,
88 char *buffer, int bufsize) 117 char *buffer, int bufsize)
89{ 118{
119 unsigned long args[8];
90 int plen; 120 int plen;
91 121
92 plen = prom_getproplen(node, prop); 122 plen = prom_getproplen(node, prop);
93 if ((plen > bufsize) || (plen == 0) || (plen == -1)) { 123 if ((plen > bufsize) || (plen == 0) || (plen == -1))
94 return -1; 124 return -1;
95 } else { 125
96 /* Ok, things seem all right. */ 126 args[0] = (unsigned long) prom_getprop_name;
97 return p1275_cmd(prom_getprop_name, 127 args[1] = 4;
98 P1275_ARG(1,P1275_ARG_IN_STRING)| 128 args[2] = 1;
99 P1275_ARG(2,P1275_ARG_OUT_BUF)| 129 args[3] = (unsigned int) node;
100 P1275_INOUT(4, 1), 130 args[4] = (unsigned long) prop;
101 node, prop, buffer, P1275_SIZE(plen)); 131 args[5] = (unsigned long) buffer;
102 } 132 args[6] = bufsize;
133 args[7] = (unsigned long) -1;
134
135 p1275_cmd_direct(args);
136
137 return (int) args[7];
103} 138}
104EXPORT_SYMBOL(prom_getproperty); 139EXPORT_SYMBOL(prom_getproperty);
105 140
@@ -110,7 +145,7 @@ inline int prom_getint(int node, const char *prop)
110{ 145{
111 int intprop; 146 int intprop;
112 147
113 if(prom_getproperty(node, prop, (char *) &intprop, sizeof(int)) != -1) 148 if (prom_getproperty(node, prop, (char *) &intprop, sizeof(int)) != -1)
114 return intprop; 149 return intprop;
115 150
116 return -1; 151 return -1;
@@ -126,7 +161,8 @@ int prom_getintdefault(int node, const char *property, int deflt)
126 int retval; 161 int retval;
127 162
128 retval = prom_getint(node, property); 163 retval = prom_getint(node, property);
129 if(retval == -1) return deflt; 164 if (retval == -1)
165 return deflt;
130 166
131 return retval; 167 return retval;
132} 168}
@@ -138,7 +174,8 @@ int prom_getbool(int node, const char *prop)
138 int retval; 174 int retval;
139 175
140 retval = prom_getproplen(node, prop); 176 retval = prom_getproplen(node, prop);
141 if(retval == -1) return 0; 177 if (retval == -1)
178 return 0;
142 return 1; 179 return 1;
143} 180}
144EXPORT_SYMBOL(prom_getbool); 181EXPORT_SYMBOL(prom_getbool);
@@ -152,7 +189,8 @@ void prom_getstring(int node, const char *prop, char *user_buf, int ubuf_size)
152 int len; 189 int len;
153 190
154 len = prom_getproperty(node, prop, user_buf, ubuf_size); 191 len = prom_getproperty(node, prop, user_buf, ubuf_size);
155 if(len != -1) return; 192 if (len != -1)
193 return;
156 user_buf[0] = 0; 194 user_buf[0] = 0;
157} 195}
158EXPORT_SYMBOL(prom_getstring); 196EXPORT_SYMBOL(prom_getstring);
@@ -164,7 +202,8 @@ int prom_nodematch(int node, const char *name)
164{ 202{
165 char namebuf[128]; 203 char namebuf[128];
166 prom_getproperty(node, "name", namebuf, sizeof(namebuf)); 204 prom_getproperty(node, "name", namebuf, sizeof(namebuf));
167 if(strcmp(namebuf, name) == 0) return 1; 205 if (strcmp(namebuf, name) == 0)
206 return 1;
168 return 0; 207 return 0;
169} 208}
170 209
@@ -190,16 +229,29 @@ int prom_searchsiblings(int node_start, const char *nodename)
190} 229}
191EXPORT_SYMBOL(prom_searchsiblings); 230EXPORT_SYMBOL(prom_searchsiblings);
192 231
232static const char *prom_nextprop_name = "nextprop";
233
193/* Return the first property type for node 'node'. 234/* Return the first property type for node 'node'.
194 * buffer should be at least 32B in length 235 * buffer should be at least 32B in length
195 */ 236 */
196inline char *prom_firstprop(int node, char *buffer) 237inline char *prom_firstprop(int node, char *buffer)
197{ 238{
239 unsigned long args[7];
240
198 *buffer = 0; 241 *buffer = 0;
199 if(node == -1) return buffer; 242 if (node == -1)
200 p1275_cmd ("nextprop", P1275_ARG(2,P1275_ARG_OUT_32B)| 243 return buffer;
201 P1275_INOUT(3, 0), 244
202 node, (char *) 0x0, buffer); 245 args[0] = (unsigned long) prom_nextprop_name;
246 args[1] = 3;
247 args[2] = 1;
248 args[3] = (unsigned int) node;
249 args[4] = 0;
250 args[5] = (unsigned long) buffer;
251 args[6] = (unsigned long) -1;
252
253 p1275_cmd_direct(args);
254
203 return buffer; 255 return buffer;
204} 256}
205EXPORT_SYMBOL(prom_firstprop); 257EXPORT_SYMBOL(prom_firstprop);
@@ -210,9 +262,10 @@ EXPORT_SYMBOL(prom_firstprop);
210 */ 262 */
211inline char *prom_nextprop(int node, const char *oprop, char *buffer) 263inline char *prom_nextprop(int node, const char *oprop, char *buffer)
212{ 264{
265 unsigned long args[7];
213 char buf[32]; 266 char buf[32];
214 267
215 if(node == -1) { 268 if (node == -1) {
216 *buffer = 0; 269 *buffer = 0;
217 return buffer; 270 return buffer;
218 } 271 }
@@ -220,10 +273,17 @@ inline char *prom_nextprop(int node, const char *oprop, char *buffer)
220 strcpy (buf, oprop); 273 strcpy (buf, oprop);
221 oprop = buf; 274 oprop = buf;
222 } 275 }
223 p1275_cmd ("nextprop", P1275_ARG(1,P1275_ARG_IN_STRING)| 276
224 P1275_ARG(2,P1275_ARG_OUT_32B)| 277 args[0] = (unsigned long) prom_nextprop_name;
225 P1275_INOUT(3, 0), 278 args[1] = 3;
226 node, oprop, buffer); 279 args[2] = 1;
280 args[3] = (unsigned int) node;
281 args[4] = (unsigned long) oprop;
282 args[5] = (unsigned long) buffer;
283 args[6] = (unsigned long) -1;
284
285 p1275_cmd_direct(args);
286
227 return buffer; 287 return buffer;
228} 288}
229EXPORT_SYMBOL(prom_nextprop); 289EXPORT_SYMBOL(prom_nextprop);
@@ -231,12 +291,19 @@ EXPORT_SYMBOL(prom_nextprop);
231int 291int
232prom_finddevice(const char *name) 292prom_finddevice(const char *name)
233{ 293{
294 unsigned long args[5];
295
234 if (!name) 296 if (!name)
235 return 0; 297 return 0;
236 return p1275_cmd(prom_finddev_name, 298 args[0] = (unsigned long) "finddevice";
237 P1275_ARG(0,P1275_ARG_IN_STRING)| 299 args[1] = 1;
238 P1275_INOUT(1, 1), 300 args[2] = 1;
239 name); 301 args[3] = (unsigned long) name;
302 args[4] = (unsigned long) -1;
303
304 p1275_cmd_direct(args);
305
306 return (int) args[4];
240} 307}
241EXPORT_SYMBOL(prom_finddevice); 308EXPORT_SYMBOL(prom_finddevice);
242 309
@@ -247,7 +314,7 @@ int prom_node_has_property(int node, const char *prop)
247 *buf = 0; 314 *buf = 0;
248 do { 315 do {
249 prom_nextprop(node, buf, buf); 316 prom_nextprop(node, buf, buf);
250 if(!strcmp(buf, prop)) 317 if (!strcmp(buf, prop))
251 return 1; 318 return 1;
252 } while (*buf); 319 } while (*buf);
253 return 0; 320 return 0;
@@ -260,6 +327,8 @@ EXPORT_SYMBOL(prom_node_has_property);
260int 327int
261prom_setprop(int node, const char *pname, char *value, int size) 328prom_setprop(int node, const char *pname, char *value, int size)
262{ 329{
330 unsigned long args[8];
331
263 if (size == 0) 332 if (size == 0)
264 return 0; 333 return 0;
265 if ((pname == 0) || (value == 0)) 334 if ((pname == 0) || (value == 0))
@@ -271,19 +340,37 @@ prom_setprop(int node, const char *pname, char *value, int size)
271 return 0; 340 return 0;
272 } 341 }
273#endif 342#endif
274 return p1275_cmd ("setprop", P1275_ARG(1,P1275_ARG_IN_STRING)| 343 args[0] = (unsigned long) "setprop";
275 P1275_ARG(2,P1275_ARG_IN_BUF)| 344 args[1] = 4;
276 P1275_INOUT(4, 1), 345 args[2] = 1;
277 node, pname, value, P1275_SIZE(size)); 346 args[3] = (unsigned int) node;
347 args[4] = (unsigned long) pname;
348 args[5] = (unsigned long) value;
349 args[6] = size;
350 args[7] = (unsigned long) -1;
351
352 p1275_cmd_direct(args);
353
354 return (int) args[7];
278} 355}
279EXPORT_SYMBOL(prom_setprop); 356EXPORT_SYMBOL(prom_setprop);
280 357
281inline int prom_inst2pkg(int inst) 358inline int prom_inst2pkg(int inst)
282{ 359{
360 unsigned long args[5];
283 int node; 361 int node;
284 362
285 node = p1275_cmd ("instance-to-package", P1275_INOUT(1, 1), inst); 363 args[0] = (unsigned long) "instance-to-package";
286 if (node == -1) return 0; 364 args[1] = 1;
365 args[2] = 1;
366 args[3] = (unsigned int) inst;
367 args[4] = (unsigned long) -1;
368
369 p1275_cmd_direct(args);
370
371 node = (int) args[4];
372 if (node == -1)
373 return 0;
287 return node; 374 return node;
288} 375}
289 376
@@ -296,17 +383,28 @@ prom_pathtoinode(const char *path)
296 int node, inst; 383 int node, inst;
297 384
298 inst = prom_devopen (path); 385 inst = prom_devopen (path);
299 if (inst == 0) return 0; 386 if (inst == 0)
300 node = prom_inst2pkg (inst); 387 return 0;
301 prom_devclose (inst); 388 node = prom_inst2pkg(inst);
302 if (node == -1) return 0; 389 prom_devclose(inst);
390 if (node == -1)
391 return 0;
303 return node; 392 return node;
304} 393}
305 394
306int prom_ihandle2path(int handle, char *buffer, int bufsize) 395int prom_ihandle2path(int handle, char *buffer, int bufsize)
307{ 396{
308 return p1275_cmd("instance-to-path", 397 unsigned long args[7];
309 P1275_ARG(1,P1275_ARG_OUT_BUF)| 398
310 P1275_INOUT(3, 1), 399 args[0] = (unsigned long) "instance-to-path";
311 handle, buffer, P1275_SIZE(bufsize)); 400 args[1] = 3;
401 args[2] = 1;
402 args[3] = (unsigned int) handle;
403 args[4] = (unsigned long) buffer;
404 args[5] = bufsize;
405 args[6] = (unsigned long) -1;
406
407 p1275_cmd_direct(args);
408
409 return (int) args[6];
312} 410}