aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2007-09-21 06:16:05 -0400
committerPaul Mundt <lethal@linux-sh.org>2007-09-21 06:16:05 -0400
commit1a442fe02d205d6980202b07f799ab9336e72ad7 (patch)
tree0901be4f71fc177340f3a718cf3336389f051bd9 /arch/sh
parent0016a126accb32f1663eaeba966eb76c98f8929b (diff)
sh: Initial SH-X3 SMP support.
This adds basic support for SH-X3 SMP (4 CPUs). More IPI and cache debugging is necessary, mostly interfacing the d-cache coherency and the I-cache broadcast invalidates. Only for testing at present! Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r--arch/sh/configs/shx3_defconfig456
-rw-r--r--arch/sh/kernel/cpu/sh4a/Makefile6
-rw-r--r--arch/sh/kernel/cpu/sh4a/smp-shx3.c120
-rw-r--r--arch/sh/mm/Kconfig1
4 files changed, 375 insertions, 208 deletions
diff --git a/arch/sh/configs/shx3_defconfig b/arch/sh/configs/shx3_defconfig
index 219bad558b10..a794c082709b 100644
--- a/arch/sh/configs/shx3_defconfig
+++ b/arch/sh/configs/shx3_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22-rc4 3# Linux kernel version: 2.6.23-rc7
4# Wed Jun 20 14:09:27 2007 4# Fri Sep 21 19:07:30 2007
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
@@ -13,32 +13,33 @@ CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 13CONFIG_GENERIC_CALIBRATE_DELAY=y
14CONFIG_GENERIC_TIME=y 14CONFIG_GENERIC_TIME=y
15CONFIG_GENERIC_CLOCKEVENTS=y 15CONFIG_GENERIC_CLOCKEVENTS=y
16CONFIG_SYS_SUPPORTS_SMP=y
17CONFIG_SYS_SUPPORTS_NUMA=y
16CONFIG_STACKTRACE_SUPPORT=y 18CONFIG_STACKTRACE_SUPPORT=y
17CONFIG_LOCKDEP_SUPPORT=y 19CONFIG_LOCKDEP_SUPPORT=y
18# CONFIG_ARCH_HAS_ILOG2_U32 is not set 20# CONFIG_ARCH_HAS_ILOG2_U32 is not set
19# CONFIG_ARCH_HAS_ILOG2_U64 is not set 21# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_ARCH_NO_VIRT_TO_BUS=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
21 24
22# 25#
23# Code maturity level options 26# General setup
24# 27#
25CONFIG_EXPERIMENTAL=y 28CONFIG_EXPERIMENTAL=y
26CONFIG_BROKEN_ON_SMP=y 29CONFIG_BROKEN_ON_SMP=y
27CONFIG_LOCK_KERNEL=y 30CONFIG_LOCK_KERNEL=y
28CONFIG_INIT_ENV_ARG_LIMIT=32 31CONFIG_INIT_ENV_ARG_LIMIT=32
29
30#
31# General setup
32#
33CONFIG_LOCALVERSION="" 32CONFIG_LOCALVERSION=""
34CONFIG_LOCALVERSION_AUTO=y 33CONFIG_LOCALVERSION_AUTO=y
35CONFIG_SWAP=y 34CONFIG_SWAP=y
36CONFIG_SYSVIPC=y 35CONFIG_SYSVIPC=y
37# CONFIG_IPC_NS is not set
38CONFIG_SYSVIPC_SYSCTL=y 36CONFIG_SYSVIPC_SYSCTL=y
37# CONFIG_POSIX_MQUEUE is not set
39CONFIG_BSD_PROCESS_ACCT=y 38CONFIG_BSD_PROCESS_ACCT=y
40# CONFIG_BSD_PROCESS_ACCT_V3 is not set 39# CONFIG_BSD_PROCESS_ACCT_V3 is not set
41# CONFIG_UTS_NS is not set 40# CONFIG_TASKSTATS is not set
41# CONFIG_USER_NS is not set
42# CONFIG_AUDIT is not set
42CONFIG_IKCONFIG=y 43CONFIG_IKCONFIG=y
43CONFIG_IKCONFIG_PROC=y 44CONFIG_IKCONFIG_PROC=y
44CONFIG_LOG_BUF_SHIFT=14 45CONFIG_LOG_BUF_SHIFT=14
@@ -63,34 +64,26 @@ CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y 64CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 65CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 66CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y
67CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_VM_EVENT_COUNTERS=y 69CONFIG_VM_EVENT_COUNTERS=y
70CONFIG_SLAB=y 70# CONFIG_SLAB is not set
71# CONFIG_SLUB is not set 71# CONFIG_SLUB is not set
72# CONFIG_SLOB is not set 72CONFIG_SLOB=y
73CONFIG_RT_MUTEXES=y 73CONFIG_RT_MUTEXES=y
74# CONFIG_TINY_SHMEM is not set 74# CONFIG_TINY_SHMEM is not set
75CONFIG_BASE_SMALL=0 75CONFIG_BASE_SMALL=0
76
77#
78# Loadable module support
79#
80CONFIG_MODULES=y 76CONFIG_MODULES=y
81CONFIG_MODULE_UNLOAD=y 77CONFIG_MODULE_UNLOAD=y
82# CONFIG_MODULE_FORCE_UNLOAD is not set 78# CONFIG_MODULE_FORCE_UNLOAD is not set
83# CONFIG_MODVERSIONS is not set 79# CONFIG_MODVERSIONS is not set
84# CONFIG_MODULE_SRCVERSION_ALL is not set 80# CONFIG_MODULE_SRCVERSION_ALL is not set
85CONFIG_KMOD=y 81CONFIG_KMOD=y
86
87#
88# Block layer
89#
90CONFIG_BLOCK=y 82CONFIG_BLOCK=y
91# CONFIG_LBD is not set 83# CONFIG_LBD is not set
92# CONFIG_BLK_DEV_IO_TRACE is not set 84# CONFIG_BLK_DEV_IO_TRACE is not set
93# CONFIG_LSF is not set 85# CONFIG_LSF is not set
86# CONFIG_BLK_DEV_BSG is not set
94 87
95# 88#
96# IO Schedulers 89# IO Schedulers
@@ -113,7 +106,6 @@ CONFIG_CPU_SH4A=y
113CONFIG_CPU_SHX3=y 106CONFIG_CPU_SHX3=y
114# CONFIG_CPU_SUBTYPE_SH7619 is not set 107# CONFIG_CPU_SUBTYPE_SH7619 is not set
115# CONFIG_CPU_SUBTYPE_SH7206 is not set 108# CONFIG_CPU_SUBTYPE_SH7206 is not set
116# CONFIG_CPU_SUBTYPE_SH7300 is not set
117# CONFIG_CPU_SUBTYPE_SH7705 is not set 109# CONFIG_CPU_SUBTYPE_SH7705 is not set
118# CONFIG_CPU_SUBTYPE_SH7706 is not set 110# CONFIG_CPU_SUBTYPE_SH7706 is not set
119# CONFIG_CPU_SUBTYPE_SH7707 is not set 111# CONFIG_CPU_SUBTYPE_SH7707 is not set
@@ -121,6 +113,7 @@ CONFIG_CPU_SHX3=y
121# CONFIG_CPU_SUBTYPE_SH7709 is not set 113# CONFIG_CPU_SUBTYPE_SH7709 is not set
122# CONFIG_CPU_SUBTYPE_SH7710 is not set 114# CONFIG_CPU_SUBTYPE_SH7710 is not set
123# CONFIG_CPU_SUBTYPE_SH7712 is not set 115# CONFIG_CPU_SUBTYPE_SH7712 is not set
116# CONFIG_CPU_SUBTYPE_SH7720 is not set
124# CONFIG_CPU_SUBTYPE_SH7750 is not set 117# CONFIG_CPU_SUBTYPE_SH7750 is not set
125# CONFIG_CPU_SUBTYPE_SH7091 is not set 118# CONFIG_CPU_SUBTYPE_SH7091 is not set
126# CONFIG_CPU_SUBTYPE_SH7750R is not set 119# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -135,7 +128,6 @@ CONFIG_CPU_SHX3=y
135# CONFIG_CPU_SUBTYPE_SH7780 is not set 128# CONFIG_CPU_SUBTYPE_SH7780 is not set
136# CONFIG_CPU_SUBTYPE_SH7785 is not set 129# CONFIG_CPU_SUBTYPE_SH7785 is not set
137CONFIG_CPU_SUBTYPE_SHX3=y 130CONFIG_CPU_SUBTYPE_SHX3=y
138# CONFIG_CPU_SUBTYPE_SH73180 is not set
139# CONFIG_CPU_SUBTYPE_SH7343 is not set 131# CONFIG_CPU_SUBTYPE_SH7343 is not set
140# CONFIG_CPU_SUBTYPE_SH7722 is not set 132# CONFIG_CPU_SUBTYPE_SH7722 is not set
141 133
@@ -148,12 +140,15 @@ CONFIG_PAGE_OFFSET=0x80000000
148CONFIG_MEMORY_START=0x0c000000 140CONFIG_MEMORY_START=0x0c000000
149CONFIG_MEMORY_SIZE=0x04000000 141CONFIG_MEMORY_SIZE=0x04000000
150CONFIG_VSYSCALL=y 142CONFIG_VSYSCALL=y
143# CONFIG_NUMA is not set
151CONFIG_ARCH_FLATMEM_ENABLE=y 144CONFIG_ARCH_FLATMEM_ENABLE=y
152CONFIG_ARCH_SPARSEMEM_ENABLE=y 145CONFIG_ARCH_SPARSEMEM_ENABLE=y
153CONFIG_ARCH_SPARSEMEM_DEFAULT=y 146CONFIG_ARCH_SPARSEMEM_DEFAULT=y
154CONFIG_MAX_ACTIVE_REGIONS=1 147CONFIG_MAX_ACTIVE_REGIONS=6
155CONFIG_ARCH_POPULATES_NODE_MAP=y 148CONFIG_ARCH_POPULATES_NODE_MAP=y
156CONFIG_ARCH_SELECT_MEMORY_MODEL=y 149CONFIG_ARCH_SELECT_MEMORY_MODEL=y
150CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
151CONFIG_ARCH_MEMORY_PROBE=y
157CONFIG_PAGE_SIZE_4KB=y 152CONFIG_PAGE_SIZE_4KB=y
158# CONFIG_PAGE_SIZE_8KB is not set 153# CONFIG_PAGE_SIZE_8KB is not set
159# CONFIG_PAGE_SIZE_64KB is not set 154# CONFIG_PAGE_SIZE_64KB is not set
@@ -163,12 +158,14 @@ CONFIG_HUGETLB_PAGE_SIZE_64K=y
163# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set 158# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
164# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set 159# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set
165CONFIG_SELECT_MEMORY_MODEL=y 160CONFIG_SELECT_MEMORY_MODEL=y
166CONFIG_FLATMEM_MANUAL=y 161# CONFIG_FLATMEM_MANUAL is not set
167# CONFIG_DISCONTIGMEM_MANUAL is not set 162# CONFIG_DISCONTIGMEM_MANUAL is not set
168# CONFIG_SPARSEMEM_MANUAL is not set 163CONFIG_SPARSEMEM_MANUAL=y
169CONFIG_FLATMEM=y 164CONFIG_SPARSEMEM=y
170CONFIG_FLAT_NODE_MEM_MAP=y 165CONFIG_HAVE_MEMORY_PRESENT=y
171CONFIG_SPARSEMEM_STATIC=y 166CONFIG_SPARSEMEM_STATIC=y
167CONFIG_MEMORY_HOTPLUG=y
168CONFIG_MEMORY_HOTPLUG_SPARSE=y
172CONFIG_SPLIT_PTLOCK_CPUS=4 169CONFIG_SPLIT_PTLOCK_CPUS=4
173# CONFIG_RESOURCES_64BIT is not set 170# CONFIG_RESOURCES_64BIT is not set
174CONFIG_ZONE_DMA_FLAG=0 171CONFIG_ZONE_DMA_FLAG=0
@@ -178,24 +175,25 @@ CONFIG_NR_QUICK=2
178# Cache configuration 175# Cache configuration
179# 176#
180# CONFIG_SH_DIRECT_MAPPED is not set 177# CONFIG_SH_DIRECT_MAPPED is not set
181# CONFIG_SH_WRITETHROUGH is not set 178# CONFIG_CACHE_WRITEBACK is not set
179# CONFIG_CACHE_WRITETHROUGH is not set
180CONFIG_CACHE_OFF=y
182 181
183# 182#
184# Processor features 183# Processor features
185# 184#
186CONFIG_CPU_LITTLE_ENDIAN=y 185CONFIG_CPU_LITTLE_ENDIAN=y
187# CONFIG_CPU_BIG_ENDIAN is not set 186# CONFIG_CPU_BIG_ENDIAN is not set
188# CONFIG_SH_FPU is not set 187CONFIG_SH_FPU=y
189# CONFIG_SH_FPU_EMU is not set
190CONFIG_SH_DSP=y
191CONFIG_SH_STORE_QUEUES=y 188CONFIG_SH_STORE_QUEUES=y
192CONFIG_CPU_HAS_INTEVT=y 189CONFIG_CPU_HAS_INTEVT=y
193CONFIG_CPU_HAS_INTC2_IRQ=y
194CONFIG_CPU_HAS_SR_RB=y 190CONFIG_CPU_HAS_SR_RB=y
191CONFIG_CPU_HAS_FPU=y
195 192
196# 193#
197# Board support 194# Board support
198# 195#
196CONFIG_SH_X3PROTO=y
199 197
200# 198#
201# Timer and clock configuration 199# Timer and clock configuration
@@ -204,13 +202,25 @@ CONFIG_SH_TMU=y
204CONFIG_SH_TIMER_IRQ=16 202CONFIG_SH_TIMER_IRQ=16
205CONFIG_SH_PCLK_FREQ=50000000 203CONFIG_SH_PCLK_FREQ=50000000
206CONFIG_TICK_ONESHOT=y 204CONFIG_TICK_ONESHOT=y
207CONFIG_NO_HZ=y 205# CONFIG_NO_HZ is not set
208CONFIG_HIGH_RES_TIMERS=y 206CONFIG_HIGH_RES_TIMERS=y
209 207
210# 208#
211# CPU Frequency scaling 209# CPU Frequency scaling
212# 210#
213# CONFIG_CPU_FREQ is not set 211CONFIG_CPU_FREQ=y
212CONFIG_CPU_FREQ_TABLE=y
213# CONFIG_CPU_FREQ_DEBUG is not set
214CONFIG_CPU_FREQ_STAT=y
215# CONFIG_CPU_FREQ_STAT_DETAILS is not set
216CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
217# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
218CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
219CONFIG_CPU_FREQ_GOV_POWERSAVE=m
220CONFIG_CPU_FREQ_GOV_USERSPACE=m
221CONFIG_CPU_FREQ_GOV_ONDEMAND=m
222CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
223CONFIG_SH_CPU_FREQ=y
214 224
215# 225#
216# DMA support 226# DMA support
@@ -237,6 +247,7 @@ CONFIG_HZ_250=y
237CONFIG_HZ=250 247CONFIG_HZ=250
238CONFIG_KEXEC=y 248CONFIG_KEXEC=y
239# CONFIG_CRASH_DUMP is not set 249# CONFIG_CRASH_DUMP is not set
250# CONFIG_SMP is not set
240# CONFIG_PREEMPT_NONE is not set 251# CONFIG_PREEMPT_NONE is not set
241# CONFIG_PREEMPT_VOLUNTARY is not set 252# CONFIG_PREEMPT_VOLUNTARY is not set
242CONFIG_PREEMPT=y 253CONFIG_PREEMPT=y
@@ -249,7 +260,7 @@ CONFIG_ZERO_PAGE_OFFSET=0x00001000
249CONFIG_BOOT_LINK_OFFSET=0x00800000 260CONFIG_BOOT_LINK_OFFSET=0x00800000
250# CONFIG_UBC_WAKEUP is not set 261# CONFIG_UBC_WAKEUP is not set
251CONFIG_CMDLINE_BOOL=y 262CONFIG_CMDLINE_BOOL=y
252CONFIG_CMDLINE="console=ttySC0,115200 ip=192.168.1.2:::255.255.255.0 root=/dev/nfs nfsroot=192.168.1.1:/exports/devel/rfs/mobiler noaliencache earlyprintk=bios ignore_loglevel" 263CONFIG_CMDLINE="console=ttySC0,115200 earlyprintk=bios ignore_loglevel"
253 264
254# 265#
255# Bus options 266# Bus options
@@ -265,12 +276,106 @@ CONFIG_CMDLINE="console=ttySC0,115200 ip=192.168.1.2:::255.255.255.0 root=/dev/n
265# Executable file formats 276# Executable file formats
266# 277#
267CONFIG_BINFMT_ELF=y 278CONFIG_BINFMT_ELF=y
268# CONFIG_BINFMT_MISC is not set 279CONFIG_BINFMT_MISC=y
269 280
270# 281#
271# Networking 282# Networking
272# 283#
273# CONFIG_NET is not set 284CONFIG_NET=y
285
286#
287# Networking options
288#
289# CONFIG_PACKET is not set
290# CONFIG_UNIX is not set
291CONFIG_XFRM=y
292# CONFIG_XFRM_USER is not set
293# CONFIG_XFRM_SUB_POLICY is not set
294# CONFIG_XFRM_MIGRATE is not set
295# CONFIG_NET_KEY is not set
296CONFIG_INET=y
297# CONFIG_IP_MULTICAST is not set
298# CONFIG_IP_ADVANCED_ROUTER is not set
299CONFIG_IP_FIB_HASH=y
300CONFIG_IP_PNP=y
301CONFIG_IP_PNP_DHCP=y
302# CONFIG_IP_PNP_BOOTP is not set
303# CONFIG_IP_PNP_RARP is not set
304# CONFIG_NET_IPIP is not set
305# CONFIG_NET_IPGRE is not set
306# CONFIG_ARPD is not set
307# CONFIG_SYN_COOKIES is not set
308# CONFIG_INET_AH is not set
309# CONFIG_INET_ESP is not set
310# CONFIG_INET_IPCOMP is not set
311# CONFIG_INET_XFRM_TUNNEL is not set
312CONFIG_INET_TUNNEL=m
313CONFIG_INET_XFRM_MODE_TRANSPORT=y
314CONFIG_INET_XFRM_MODE_TUNNEL=y
315CONFIG_INET_XFRM_MODE_BEET=y
316CONFIG_INET_DIAG=y
317CONFIG_INET_TCP_DIAG=y
318# CONFIG_TCP_CONG_ADVANCED is not set
319CONFIG_TCP_CONG_CUBIC=y
320CONFIG_DEFAULT_TCP_CONG="cubic"
321# CONFIG_TCP_MD5SIG is not set
322CONFIG_IPV6=m
323# CONFIG_IPV6_PRIVACY is not set
324# CONFIG_IPV6_ROUTER_PREF is not set
325# CONFIG_IPV6_OPTIMISTIC_DAD is not set
326# CONFIG_INET6_AH is not set
327# CONFIG_INET6_ESP is not set
328# CONFIG_INET6_IPCOMP is not set
329# CONFIG_IPV6_MIP6 is not set
330# CONFIG_INET6_XFRM_TUNNEL is not set
331# CONFIG_INET6_TUNNEL is not set
332CONFIG_INET6_XFRM_MODE_TRANSPORT=m
333CONFIG_INET6_XFRM_MODE_TUNNEL=m
334CONFIG_INET6_XFRM_MODE_BEET=m
335# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
336CONFIG_IPV6_SIT=m
337# CONFIG_IPV6_TUNNEL is not set
338# CONFIG_IPV6_MULTIPLE_TABLES is not set
339# CONFIG_NETWORK_SECMARK is not set
340# CONFIG_NETFILTER is not set
341# CONFIG_IP_DCCP is not set
342# CONFIG_IP_SCTP is not set
343# CONFIG_TIPC is not set
344# CONFIG_ATM is not set
345# CONFIG_BRIDGE is not set
346# CONFIG_VLAN_8021Q is not set
347# CONFIG_DECNET is not set
348# CONFIG_LLC2 is not set
349# CONFIG_IPX is not set
350# CONFIG_ATALK is not set
351# CONFIG_X25 is not set
352# CONFIG_LAPB is not set
353# CONFIG_ECONET is not set
354# CONFIG_WAN_ROUTER is not set
355
356#
357# QoS and/or fair queueing
358#
359# CONFIG_NET_SCHED is not set
360
361#
362# Network testing
363#
364# CONFIG_NET_PKTGEN is not set
365# CONFIG_HAMRADIO is not set
366# CONFIG_IRDA is not set
367# CONFIG_BT is not set
368# CONFIG_AF_RXRPC is not set
369
370#
371# Wireless
372#
373# CONFIG_CFG80211 is not set
374# CONFIG_WIRELESS_EXT is not set
375# CONFIG_MAC80211 is not set
376# CONFIG_IEEE80211 is not set
377# CONFIG_RFKILL is not set
378# CONFIG_NET_9P is not set
274 379
275# 380#
276# Device Drivers 381# Device Drivers
@@ -285,37 +390,21 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
285# CONFIG_DEBUG_DRIVER is not set 390# CONFIG_DEBUG_DRIVER is not set
286# CONFIG_DEBUG_DEVRES is not set 391# CONFIG_DEBUG_DEVRES is not set
287# CONFIG_SYS_HYPERVISOR is not set 392# CONFIG_SYS_HYPERVISOR is not set
288 393# CONFIG_CONNECTOR is not set
289#
290# Connector - unified userspace <-> kernelspace linker
291#
292# CONFIG_MTD is not set 394# CONFIG_MTD is not set
293
294#
295# Parallel port support
296#
297# CONFIG_PARPORT is not set 395# CONFIG_PARPORT is not set
298 396CONFIG_BLK_DEV=y
299#
300# Plug and Play support
301#
302# CONFIG_PNPACPI is not set
303
304#
305# Block devices
306#
307# CONFIG_BLK_DEV_COW_COMMON is not set 397# CONFIG_BLK_DEV_COW_COMMON is not set
308# CONFIG_BLK_DEV_LOOP is not set 398# CONFIG_BLK_DEV_LOOP is not set
399# CONFIG_BLK_DEV_NBD is not set
309CONFIG_BLK_DEV_RAM=y 400CONFIG_BLK_DEV_RAM=y
310CONFIG_BLK_DEV_RAM_COUNT=16 401CONFIG_BLK_DEV_RAM_COUNT=16
311CONFIG_BLK_DEV_RAM_SIZE=4096 402CONFIG_BLK_DEV_RAM_SIZE=4096
312CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 403CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
313# CONFIG_CDROM_PKTCDVD is not set 404# CONFIG_CDROM_PKTCDVD is not set
314 405# CONFIG_ATA_OVER_ETH is not set
315# 406CONFIG_MISC_DEVICES=y
316# Misc devices 407# CONFIG_EEPROM_93CX6 is not set
317#
318# CONFIG_BLINK is not set
319# CONFIG_IDE is not set 408# CONFIG_IDE is not set
320 409
321# 410#
@@ -323,6 +412,7 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
323# 412#
324# CONFIG_RAID_ATTRS is not set 413# CONFIG_RAID_ATTRS is not set
325CONFIG_SCSI=y 414CONFIG_SCSI=y
415CONFIG_SCSI_DMA=y
326# CONFIG_SCSI_TGT is not set 416# CONFIG_SCSI_TGT is not set
327# CONFIG_SCSI_NETLINK is not set 417# CONFIG_SCSI_NETLINK is not set
328CONFIG_SCSI_PROC_FS=y 418CONFIG_SCSI_PROC_FS=y
@@ -351,73 +441,54 @@ CONFIG_SCSI_WAIT_SCAN=m
351# 441#
352# CONFIG_SCSI_SPI_ATTRS is not set 442# CONFIG_SCSI_SPI_ATTRS is not set
353# CONFIG_SCSI_FC_ATTRS is not set 443# CONFIG_SCSI_FC_ATTRS is not set
354# CONFIG_SCSI_SAS_ATTRS is not set 444# CONFIG_SCSI_ISCSI_ATTRS is not set
355# CONFIG_SCSI_SAS_LIBSAS is not set 445# CONFIG_SCSI_SAS_LIBSAS is not set
356 446CONFIG_SCSI_LOWLEVEL=y
357# 447# CONFIG_ISCSI_TCP is not set
358# SCSI low-level drivers
359#
360# CONFIG_SCSI_DEBUG is not set 448# CONFIG_SCSI_DEBUG is not set
361CONFIG_ATA=y 449CONFIG_ATA=y
362# CONFIG_ATA_NONSTANDARD is not set 450# CONFIG_ATA_NONSTANDARD is not set
363CONFIG_PATA_PLATFORM=y 451CONFIG_PATA_PLATFORM=y
364
365#
366# Multi-device support (RAID and LVM)
367#
368# CONFIG_MD is not set 452# CONFIG_MD is not set
369 453CONFIG_NETDEVICES=y
370# 454# CONFIG_NETDEVICES_MULTIQUEUE is not set
371# ISDN subsystem 455# CONFIG_DUMMY is not set
372# 456# CONFIG_BONDING is not set
373 457# CONFIG_MACVLAN is not set
374# 458# CONFIG_EQUALIZER is not set
375# Telephony Support 459# CONFIG_TUN is not set
376# 460# CONFIG_PHYLIB is not set
461CONFIG_NET_ETHERNET=y
462CONFIG_MII=y
463# CONFIG_STNIC is not set
464CONFIG_SMC91X=y
465# CONFIG_NETDEV_1000 is not set
466# CONFIG_NETDEV_10000 is not set
467
468#
469# Wireless LAN
470#
471# CONFIG_WLAN_PRE80211 is not set
472# CONFIG_WLAN_80211 is not set
473# CONFIG_WAN is not set
474# CONFIG_PPP is not set
475# CONFIG_SLIP is not set
476# CONFIG_SHAPER is not set
477# CONFIG_NETCONSOLE is not set
478# CONFIG_NETPOLL is not set
479# CONFIG_NET_POLL_CONTROLLER is not set
480# CONFIG_ISDN is not set
377# CONFIG_PHONE is not set 481# CONFIG_PHONE is not set
378 482
379# 483#
380# Input device support 484# Input device support
381# 485#
382CONFIG_INPUT=y 486# CONFIG_INPUT is not set
383# CONFIG_INPUT_FF_MEMLESS is not set
384
385#
386# Userland interfaces
387#
388CONFIG_INPUT_MOUSEDEV=y
389# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
390CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
391CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
392# CONFIG_INPUT_JOYDEV is not set
393# CONFIG_INPUT_TSDEV is not set
394# CONFIG_INPUT_EVDEV is not set
395# CONFIG_INPUT_EVBUG is not set
396
397#
398# Input Device Drivers
399#
400CONFIG_INPUT_KEYBOARD=y
401CONFIG_KEYBOARD_ATKBD=y
402# CONFIG_KEYBOARD_SUNKBD is not set
403# CONFIG_KEYBOARD_LKKBD is not set
404# CONFIG_KEYBOARD_XTKBD is not set
405# CONFIG_KEYBOARD_NEWTON is not set
406# CONFIG_KEYBOARD_STOWAWAY is not set
407# CONFIG_INPUT_MOUSE is not set
408# CONFIG_INPUT_JOYSTICK is not set
409# CONFIG_INPUT_TABLET is not set
410# CONFIG_INPUT_TOUCHSCREEN is not set
411# CONFIG_INPUT_MISC is not set
412 487
413# 488#
414# Hardware I/O ports 489# Hardware I/O ports
415# 490#
416CONFIG_SERIO=y 491# CONFIG_SERIO is not set
417# CONFIG_SERIO_I8042 is not set
418# CONFIG_SERIO_SERPORT is not set
419CONFIG_SERIO_LIBPS2=y
420# CONFIG_SERIO_RAW is not set
421# CONFIG_GAMEPORT is not set 492# CONFIG_GAMEPORT is not set
422 493
423# 494#
@@ -442,19 +513,18 @@ CONFIG_SERIAL_CORE_CONSOLE=y
442CONFIG_UNIX98_PTYS=y 513CONFIG_UNIX98_PTYS=y
443CONFIG_LEGACY_PTYS=y 514CONFIG_LEGACY_PTYS=y
444CONFIG_LEGACY_PTY_COUNT=256 515CONFIG_LEGACY_PTY_COUNT=256
516# CONFIG_IPMI_HANDLER is not set
517CONFIG_WATCHDOG=y
518# CONFIG_WATCHDOG_NOWAYOUT is not set
445 519
446# 520#
447# IPMI 521# Watchdog Device Drivers
448# 522#
449# CONFIG_IPMI_HANDLER is not set 523# CONFIG_SOFT_WATCHDOG is not set
450# CONFIG_WATCHDOG is not set 524# CONFIG_SH_WDT is not set
451CONFIG_HW_RANDOM=y 525# CONFIG_HW_RANDOM is not set
452# CONFIG_R3964 is not set 526# CONFIG_R3964 is not set
453# CONFIG_RAW_DRIVER is not set 527# CONFIG_RAW_DRIVER is not set
454
455#
456# TPM devices
457#
458# CONFIG_TCG_TPM is not set 528# CONFIG_TCG_TPM is not set
459# CONFIG_I2C is not set 529# CONFIG_I2C is not set
460 530
@@ -463,11 +533,8 @@ CONFIG_HW_RANDOM=y
463# 533#
464# CONFIG_SPI is not set 534# CONFIG_SPI is not set
465# CONFIG_SPI_MASTER is not set 535# CONFIG_SPI_MASTER is not set
466
467#
468# Dallas's 1-wire bus
469#
470# CONFIG_W1 is not set 536# CONFIG_W1 is not set
537# CONFIG_POWER_SUPPLY is not set
471# CONFIG_HWMON is not set 538# CONFIG_HWMON is not set
472 539
473# 540#
@@ -479,6 +546,7 @@ CONFIG_HW_RANDOM=y
479# Multimedia devices 546# Multimedia devices
480# 547#
481# CONFIG_VIDEO_DEV is not set 548# CONFIG_VIDEO_DEV is not set
549# CONFIG_DVB_CORE is not set
482# CONFIG_DAB is not set 550# CONFIG_DAB is not set
483 551
484# 552#
@@ -491,24 +559,18 @@ CONFIG_HW_RANDOM=y
491# 559#
492# CONFIG_DISPLAY_SUPPORT is not set 560# CONFIG_DISPLAY_SUPPORT is not set
493# CONFIG_VGASTATE is not set 561# CONFIG_VGASTATE is not set
562CONFIG_VIDEO_OUTPUT_CONTROL=m
494# CONFIG_FB is not set 563# CONFIG_FB is not set
495 564
496# 565#
497# Sound 566# Sound
498# 567#
499# CONFIG_SOUND is not set 568# CONFIG_SOUND is not set
500 569CONFIG_USB_SUPPORT=y
501# 570CONFIG_USB_ARCH_HAS_HCD=y
502# HID Devices
503#
504# CONFIG_HID is not set
505
506#
507# USB support
508#
509# CONFIG_USB_ARCH_HAS_HCD is not set
510# CONFIG_USB_ARCH_HAS_OHCI is not set 571# CONFIG_USB_ARCH_HAS_OHCI is not set
511# CONFIG_USB_ARCH_HAS_EHCI is not set 572# CONFIG_USB_ARCH_HAS_EHCI is not set
573# CONFIG_USB is not set
512 574
513# 575#
514# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 576# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -517,68 +579,32 @@ CONFIG_HW_RANDOM=y
517# 579#
518# USB Gadget Support 580# USB Gadget Support
519# 581#
520# CONFIG_USB_GADGET is not set 582CONFIG_USB_GADGET=y
583# CONFIG_USB_GADGET_DEBUG is not set
584# CONFIG_USB_GADGET_DEBUG_FILES is not set
585CONFIG_USB_GADGET_SELECTED=y
586# CONFIG_USB_GADGET_AMD5536UDC is not set
587# CONFIG_USB_GADGET_FSL_USB2 is not set
588# CONFIG_USB_GADGET_NET2280 is not set
589# CONFIG_USB_GADGET_PXA2XX is not set
590CONFIG_USB_GADGET_M66592=y
591CONFIG_USB_M66592=y
592# CONFIG_USB_GADGET_GOKU is not set
593# CONFIG_USB_GADGET_LH7A40X is not set
594# CONFIG_USB_GADGET_OMAP is not set
595# CONFIG_USB_GADGET_S3C2410 is not set
596# CONFIG_USB_GADGET_AT91 is not set
597# CONFIG_USB_GADGET_DUMMY_HCD is not set
598CONFIG_USB_GADGET_DUALSPEED=y
599# CONFIG_USB_ZERO is not set
600# CONFIG_USB_ETH is not set
601# CONFIG_USB_GADGETFS is not set
602# CONFIG_USB_FILE_STORAGE is not set
603# CONFIG_USB_G_SERIAL is not set
604# CONFIG_USB_MIDI_GADGET is not set
521# CONFIG_MMC is not set 605# CONFIG_MMC is not set
522
523#
524# LED devices
525#
526# CONFIG_NEW_LEDS is not set 606# CONFIG_NEW_LEDS is not set
527 607# CONFIG_RTC_CLASS is not set
528#
529# LED drivers
530#
531
532#
533# LED Triggers
534#
535
536#
537# InfiniBand support
538#
539
540#
541# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
542#
543
544#
545# Real Time Clock
546#
547CONFIG_RTC_LIB=y
548CONFIG_RTC_CLASS=y
549CONFIG_RTC_HCTOSYS=y
550CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
551# CONFIG_RTC_DEBUG is not set
552
553#
554# RTC interfaces
555#
556CONFIG_RTC_INTF_SYSFS=y
557CONFIG_RTC_INTF_PROC=y
558CONFIG_RTC_INTF_DEV=y
559# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
560# CONFIG_RTC_DRV_TEST is not set
561
562#
563# I2C RTC drivers
564#
565
566#
567# SPI RTC drivers
568#
569
570#
571# Platform RTC drivers
572#
573# CONFIG_RTC_DRV_DS1553 is not set
574# CONFIG_RTC_DRV_DS1742 is not set
575# CONFIG_RTC_DRV_M48T86 is not set
576# CONFIG_RTC_DRV_V3020 is not set
577
578#
579# on-CPU RTC drivers
580#
581CONFIG_RTC_DRV_SH=y
582 608
583# 609#
584# DMA Engine support 610# DMA Engine support
@@ -594,6 +620,11 @@ CONFIG_RTC_DRV_SH=y
594# 620#
595 621
596# 622#
623# Userspace I/O
624#
625CONFIG_UIO=m
626
627#
597# File systems 628# File systems
598# 629#
599CONFIG_EXT2_FS=y 630CONFIG_EXT2_FS=y
@@ -612,6 +643,7 @@ CONFIG_FS_MBCACHE=y
612# CONFIG_FS_POSIX_ACL is not set 643# CONFIG_FS_POSIX_ACL is not set
613# CONFIG_XFS_FS is not set 644# CONFIG_XFS_FS is not set
614# CONFIG_GFS2_FS is not set 645# CONFIG_GFS2_FS is not set
646# CONFIG_OCFS2_FS is not set
615# CONFIG_MINIX_FS is not set 647# CONFIG_MINIX_FS is not set
616# CONFIG_ROMFS_FS is not set 648# CONFIG_ROMFS_FS is not set
617CONFIG_INOTIFY=y 649CONFIG_INOTIFY=y
@@ -667,6 +699,17 @@ CONFIG_RAMFS=y
667# CONFIG_UFS_FS is not set 699# CONFIG_UFS_FS is not set
668 700
669# 701#
702# Network File Systems
703#
704# CONFIG_NFS_FS is not set
705# CONFIG_NFSD is not set
706# CONFIG_SMB_FS is not set
707# CONFIG_CIFS is not set
708# CONFIG_NCP_FS is not set
709# CONFIG_CODA_FS is not set
710# CONFIG_AFS_FS is not set
711
712#
670# Partition Types 713# Partition Types
671# 714#
672# CONFIG_PARTITION_ADVANCED is not set 715# CONFIG_PARTITION_ADVANCED is not set
@@ -678,6 +721,11 @@ CONFIG_MSDOS_PARTITION=y
678# CONFIG_NLS is not set 721# CONFIG_NLS is not set
679 722
680# 723#
724# Distributed Lock Manager
725#
726# CONFIG_DLM is not set
727
728#
681# Profiling support 729# Profiling support
682# 730#
683CONFIG_PROFILING=y 731CONFIG_PROFILING=y
@@ -687,31 +735,28 @@ CONFIG_PROFILING=y
687# Kernel hacking 735# Kernel hacking
688# 736#
689CONFIG_TRACE_IRQFLAGS_SUPPORT=y 737CONFIG_TRACE_IRQFLAGS_SUPPORT=y
690CONFIG_PRINTK_TIME=y 738# CONFIG_PRINTK_TIME is not set
691# CONFIG_ENABLE_MUST_CHECK is not set 739# CONFIG_ENABLE_MUST_CHECK is not set
692CONFIG_MAGIC_SYSRQ=y 740CONFIG_MAGIC_SYSRQ=y
693# CONFIG_UNUSED_SYMBOLS is not set 741# CONFIG_UNUSED_SYMBOLS is not set
694CONFIG_DEBUG_FS=y 742CONFIG_DEBUG_FS=y
695# CONFIG_HEADERS_CHECK is not set 743# CONFIG_HEADERS_CHECK is not set
696CONFIG_DEBUG_KERNEL=y 744CONFIG_DEBUG_KERNEL=y
697# CONFIG_DEBUG_SHIRQ is not set 745CONFIG_DEBUG_SHIRQ=y
698CONFIG_DETECT_SOFTLOCKUP=y 746CONFIG_DETECT_SOFTLOCKUP=y
747CONFIG_SCHED_DEBUG=y
699# CONFIG_SCHEDSTATS is not set 748# CONFIG_SCHEDSTATS is not set
700# CONFIG_TIMER_STATS is not set 749# CONFIG_TIMER_STATS is not set
701CONFIG_DEBUG_SLAB=y
702CONFIG_DEBUG_SLAB_LEAK=y
703CONFIG_DEBUG_PREEMPT=y 750CONFIG_DEBUG_PREEMPT=y
704# CONFIG_DEBUG_RT_MUTEXES is not set 751# CONFIG_DEBUG_RT_MUTEXES is not set
705# CONFIG_RT_MUTEX_TESTER is not set 752# CONFIG_RT_MUTEX_TESTER is not set
706CONFIG_DEBUG_SPINLOCK=y 753# CONFIG_DEBUG_SPINLOCK is not set
707CONFIG_DEBUG_MUTEXES=y 754# CONFIG_DEBUG_MUTEXES is not set
708CONFIG_DEBUG_LOCK_ALLOC=y 755# CONFIG_DEBUG_LOCK_ALLOC is not set
709# CONFIG_PROVE_LOCKING is not set 756# CONFIG_PROVE_LOCKING is not set
710CONFIG_LOCKDEP=y 757# CONFIG_LOCK_STAT is not set
711CONFIG_DEBUG_LOCKDEP=y
712# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 758# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
713# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 759# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
714CONFIG_STACKTRACE=y
715# CONFIG_DEBUG_KOBJECT is not set 760# CONFIG_DEBUG_KOBJECT is not set
716CONFIG_DEBUG_BUGVERBOSE=y 761CONFIG_DEBUG_BUGVERBOSE=y
717# CONFIG_DEBUG_INFO is not set 762# CONFIG_DEBUG_INFO is not set
@@ -735,10 +780,6 @@ CONFIG_DEBUG_STACK_USAGE=y
735# 780#
736# CONFIG_KEYS is not set 781# CONFIG_KEYS is not set
737# CONFIG_SECURITY is not set 782# CONFIG_SECURITY is not set
738
739#
740# Cryptographic options
741#
742# CONFIG_CRYPTO is not set 783# CONFIG_CRYPTO is not set
743 784
744# 785#
@@ -749,6 +790,7 @@ CONFIG_BITREVERSE=y
749# CONFIG_CRC16 is not set 790# CONFIG_CRC16 is not set
750# CONFIG_CRC_ITU_T is not set 791# CONFIG_CRC_ITU_T is not set
751CONFIG_CRC32=y 792CONFIG_CRC32=y
793# CONFIG_CRC7 is not set
752# CONFIG_LIBCRC32C is not set 794# CONFIG_LIBCRC32C is not set
753CONFIG_PLIST=y 795CONFIG_PLIST=y
754CONFIG_HAS_IOMEM=y 796CONFIG_HAS_IOMEM=y
diff --git a/arch/sh/kernel/cpu/sh4a/Makefile b/arch/sh/kernel/cpu/sh4a/Makefile
index e6a1fb5f8484..24539873943a 100644
--- a/arch/sh/kernel/cpu/sh4a/Makefile
+++ b/arch/sh/kernel/cpu/sh4a/Makefile
@@ -10,6 +10,9 @@ obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o
10obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o 10obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o
11obj-$(CONFIG_CPU_SUBTYPE_SHX3) += setup-shx3.o 11obj-$(CONFIG_CPU_SUBTYPE_SHX3) += setup-shx3.o
12 12
13# SMP setup
14smp-$(CONFIG_CPU_SUBTYPE_SHX3) := smp-shx3.o
15
13# Primary on-chip clocks (common) 16# Primary on-chip clocks (common)
14clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o 17clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o
15clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o 18clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o
@@ -18,4 +21,5 @@ clock-$(CONFIG_CPU_SUBTYPE_SH7343) := clock-sh7343.o
18clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7722.o 21clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7722.o
19clock-$(CONFIG_CPU_SUBTYPE_SHX3) := clock-shx3.o 22clock-$(CONFIG_CPU_SUBTYPE_SHX3) := clock-shx3.o
20 23
21obj-y += $(clock-y) 24obj-y += $(clock-y)
25obj-$(CONFIG_SMP) += $(smp-y)
diff --git a/arch/sh/kernel/cpu/sh4a/smp-shx3.c b/arch/sh/kernel/cpu/sh4a/smp-shx3.c
new file mode 100644
index 000000000000..e5e06845fa43
--- /dev/null
+++ b/arch/sh/kernel/cpu/sh4a/smp-shx3.c
@@ -0,0 +1,120 @@
1/*
2 * SH-X3 SMP
3 *
4 * Copyright (C) 2007 Paul Mundt
5 * Copyright (C) 2007 Magnus Damm
6 *
7 * This file is subject to the terms and conditions of the GNU General Public
8 * License. See the file "COPYING" in the main directory of this archive
9 * for more details.
10 */
11#include <linux/init.h>
12#include <linux/cpumask.h>
13#include <linux/smp.h>
14#include <linux/interrupt.h>
15#include <linux/io.h>
16
17void __init plat_smp_setup(void)
18{
19 unsigned int cpu = 0;
20 int i, num;
21
22 cpus_clear(cpu_possible_map);
23 cpu_set(cpu, cpu_possible_map);
24
25 __cpu_number_map[0] = 0;
26 __cpu_logical_map[0] = 0;
27
28 /*
29 * Do this stupidly for now.. we don't have an easy way to probe
30 * for the total number of cores.
31 */
32 for (i = 1, num = 0; i < NR_CPUS; i++) {
33 cpu_set(i, cpu_possible_map);
34 __cpu_number_map[i] = ++num;
35 __cpu_logical_map[num] = i;
36 }
37
38 printk(KERN_INFO "Detected %i available secondary CPU(s)\n", num);
39}
40
41void __init plat_prepare_cpus(unsigned int max_cpus)
42{
43}
44
45#define STBCR_REG(phys_id) (0xfe400004 | (phys_id << 12))
46#define RESET_REG(phys_id) (0xfe400008 | (phys_id << 12))
47
48#define STBCR_MSTP 0x00000001
49#define STBCR_RESET 0x00000002
50#define STBCR_LTSLP 0x80000000
51
52#define STBCR_AP_VAL (STBCR_RESET | STBCR_LTSLP)
53
54void plat_start_cpu(unsigned int cpu, unsigned long entry_point)
55{
56 ctrl_outl(entry_point, RESET_REG(cpu));
57
58 if (!(ctrl_inl(STBCR_REG(cpu)) & STBCR_MSTP))
59 ctrl_outl(STBCR_MSTP, STBCR_REG(cpu));
60
61 while (!(ctrl_inl(STBCR_REG(cpu)) & STBCR_MSTP))
62 ;
63
64 /* Start up secondary processor by sending a reset */
65 ctrl_outl(STBCR_AP_VAL, STBCR_REG(cpu));
66}
67
68int plat_smp_processor_id(void)
69{
70 return ctrl_inl(0xff000048); /* CPIDR */
71}
72
73void plat_send_ipi(unsigned int cpu, unsigned int message)
74{
75 unsigned long addr = 0xfe410070 + (cpu * 4);
76
77 BUG_ON(cpu >= 4);
78 BUG_ON(message >= SMP_MSG_NR);
79
80 ctrl_outl(1 << (message << 2), addr); /* C0INTICI..CnINTICI */
81}
82
83struct ipi_data {
84 void (*handler)(void *);
85 void *arg;
86 unsigned int message;
87};
88
89static irqreturn_t ipi_interrupt_handler(int irq, void *arg)
90{
91 struct ipi_data *id = arg;
92 unsigned int cpu = hard_smp_processor_id();
93 unsigned int offs = 4 * cpu;
94 unsigned int x;
95
96 x = ctrl_inl(0xfe410070 + offs); /* C0INITICI..CnINTICI */
97 x &= (1 << (id->message << 2));
98 ctrl_outl(x, 0xfe410080 + offs); /* C0INTICICLR..CnINTICICLR */
99
100 id->handler(id->arg);
101
102 return IRQ_HANDLED;
103}
104
105static struct ipi_data ipi_handlers[SMP_MSG_NR];
106
107int plat_register_ipi_handler(unsigned int message,
108 void (*handler)(void *), void *arg)
109{
110 struct ipi_data *id = &ipi_handlers[message];
111
112 BUG_ON(SMP_MSG_NR >= 8);
113 BUG_ON(message >= SMP_MSG_NR);
114
115 id->handler = handler;
116 id->arg = arg;
117 id->message = message;
118
119 return request_irq(104 + message, ipi_interrupt_handler, 0, "IPI", id);
120}
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index 5aaf6248e0aa..a953989ada47 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -190,6 +190,7 @@ config CPU_SUBTYPE_SHX3
190 select CPU_SHX3 190 select CPU_SHX3
191 select ARCH_SPARSEMEM_ENABLE 191 select ARCH_SPARSEMEM_ENABLE
192 select SYS_SUPPORTS_NUMA 192 select SYS_SUPPORTS_NUMA
193 select SYS_SUPPORTS_SMP
193 194
194# SH4AL-DSP Processor Support 195# SH4AL-DSP Processor Support
195 196