aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mn10300
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mn10300')
-rw-r--r--arch/mn10300/Makefile2
-rw-r--r--arch/mn10300/configs/asb2303_defconfig107
-rw-r--r--arch/mn10300/include/asm/bitops.h4
-rw-r--r--arch/mn10300/include/asm/div64.h2
-rw-r--r--arch/mn10300/include/asm/system.h1
-rw-r--r--arch/mn10300/include/asm/tlbflush.h2
-rw-r--r--arch/mn10300/include/asm/uaccess.h4
-rw-r--r--arch/mn10300/include/asm/unistd.h3
-rw-r--r--arch/mn10300/kernel/entry.S1
-rw-r--r--arch/mn10300/kernel/mn10300-serial.c3
-rw-r--r--arch/mn10300/kernel/signal.c2
-rw-r--r--arch/mn10300/lib/checksum.c1
-rw-r--r--arch/mn10300/lib/delay.c3
-rw-r--r--arch/mn10300/lib/usercopy.c6
-rw-r--r--arch/mn10300/mm/dma-alloc.c17
-rw-r--r--arch/mn10300/mm/init.c3
-rw-r--r--arch/mn10300/mm/misalignment.c4
-rw-r--r--arch/mn10300/unit-asb2305/include/unit/serial.h2
-rw-r--r--arch/mn10300/unit-asb2305/include/unit/timex.h2
-rw-r--r--arch/mn10300/unit-asb2305/leds.c4
-rw-r--r--arch/mn10300/unit-asb2305/pci-asb2305.c39
-rw-r--r--arch/mn10300/unit-asb2305/pci-asb2305.h1
-rw-r--r--arch/mn10300/unit-asb2305/pci.c62
-rw-r--r--arch/mn10300/unit-asb2305/unit-init.c5
24 files changed, 155 insertions, 125 deletions
diff --git a/arch/mn10300/Makefile b/arch/mn10300/Makefile
index dd0c8ff52a68..ac5c6bdb2f05 100644
--- a/arch/mn10300/Makefile
+++ b/arch/mn10300/Makefile
@@ -19,7 +19,7 @@ CCDIR := $(strip $(patsubst %/specs,%,$(CCSPECS)))
19KBUILD_CPPFLAGS += -nostdinc -I$(CCDIR)/include 19KBUILD_CPPFLAGS += -nostdinc -I$(CCDIR)/include
20 20
21LDFLAGS := 21LDFLAGS :=
22OBJCOPYFLAGS := -O binary -R .note -R .comment -S 22OBJCOPYFLAGS := -O binary -R .note -R .comment -R .GCC-command-line -R .note.gnu.build-id -S
23#LDFLAGS_vmlinux := -Map linkmap.txt 23#LDFLAGS_vmlinux := -Map linkmap.txt
24CHECKFLAGS += 24CHECKFLAGS +=
25 25
diff --git a/arch/mn10300/configs/asb2303_defconfig b/arch/mn10300/configs/asb2303_defconfig
index 3acce23708b0..441920d8ff58 100644
--- a/arch/mn10300/configs/asb2303_defconfig
+++ b/arch/mn10300/configs/asb2303_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.30-rc2 3# Linux kernel version: 2.6.33-rc1
4# Sat Apr 18 11:13:22 2009 4# Tue Dec 22 19:26:25 2009
5# 5#
6CONFIG_MN10300=y 6CONFIG_MN10300=y
7CONFIG_AM33=y 7CONFIG_AM33=y
@@ -22,6 +22,7 @@ CONFIG_GENERIC_HARDIRQS=y
22# CONFIG_HOTPLUG_CPU is not set 22# CONFIG_HOTPLUG_CPU is not set
23CONFIG_HZ=1000 23CONFIG_HZ=1000
24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
25CONFIG_CONSTRUCTORS=y
25 26
26# 27#
27# General setup 28# General setup
@@ -43,11 +44,10 @@ CONFIG_BSD_PROCESS_ACCT=y
43# 44#
44# RCU Subsystem 45# RCU Subsystem
45# 46#
46CONFIG_CLASSIC_RCU=y
47# CONFIG_TREE_RCU is not set 47# CONFIG_TREE_RCU is not set
48# CONFIG_PREEMPT_RCU is not set 48# CONFIG_TREE_PREEMPT_RCU is not set
49CONFIG_TINY_RCU=y
49# CONFIG_TREE_RCU_TRACE is not set 50# CONFIG_TREE_RCU_TRACE is not set
50# CONFIG_PREEMPT_RCU_TRACE is not set
51# CONFIG_IKCONFIG is not set 51# CONFIG_IKCONFIG is not set
52CONFIG_LOG_BUF_SHIFT=14 52CONFIG_LOG_BUF_SHIFT=14
53# CONFIG_GROUP_SCHED is not set 53# CONFIG_GROUP_SCHED is not set
@@ -62,7 +62,6 @@ CONFIG_ANON_INODES=y
62CONFIG_EMBEDDED=y 62CONFIG_EMBEDDED=y
63CONFIG_SYSCTL_SYSCALL=y 63CONFIG_SYSCTL_SYSCALL=y
64# CONFIG_KALLSYMS is not set 64# CONFIG_KALLSYMS is not set
65CONFIG_STRIP_ASM_SYMS=y
66# CONFIG_HOTPLUG is not set 65# CONFIG_HOTPLUG is not set
67CONFIG_PRINTK=y 66CONFIG_PRINTK=y
68CONFIG_BUG=y 67CONFIG_BUG=y
@@ -75,14 +74,22 @@ CONFIG_TIMERFD=y
75CONFIG_EVENTFD=y 74CONFIG_EVENTFD=y
76CONFIG_SHMEM=y 75CONFIG_SHMEM=y
77CONFIG_AIO=y 76CONFIG_AIO=y
77
78#
79# Kernel Performance Events And Counters
80#
78# CONFIG_VM_EVENT_COUNTERS is not set 81# CONFIG_VM_EVENT_COUNTERS is not set
79CONFIG_COMPAT_BRK=y 82CONFIG_COMPAT_BRK=y
80CONFIG_SLAB=y 83CONFIG_SLAB=y
81# CONFIG_SLUB is not set 84# CONFIG_SLUB is not set
82# CONFIG_SLOB is not set 85# CONFIG_SLOB is not set
83CONFIG_PROFILING=y 86CONFIG_PROFILING=y
84# CONFIG_MARKERS is not set
85CONFIG_HAVE_OPROFILE=y 87CONFIG_HAVE_OPROFILE=y
88CONFIG_HAVE_ARCH_TRACEHOOK=y
89
90#
91# GCOV-based kernel profiling
92#
86# CONFIG_SLOW_WORK is not set 93# CONFIG_SLOW_WORK is not set
87# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 94# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
88CONFIG_SLABINFO=y 95CONFIG_SLABINFO=y
@@ -90,6 +97,35 @@ CONFIG_RT_MUTEXES=y
90CONFIG_BASE_SMALL=0 97CONFIG_BASE_SMALL=0
91# CONFIG_MODULES is not set 98# CONFIG_MODULES is not set
92# CONFIG_BLOCK is not set 99# CONFIG_BLOCK is not set
100# CONFIG_INLINE_SPIN_TRYLOCK is not set
101# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
102# CONFIG_INLINE_SPIN_LOCK is not set
103# CONFIG_INLINE_SPIN_LOCK_BH is not set
104# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
105# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
106# CONFIG_INLINE_SPIN_UNLOCK is not set
107# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
108# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
109# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
110# CONFIG_INLINE_READ_TRYLOCK is not set
111# CONFIG_INLINE_READ_LOCK is not set
112# CONFIG_INLINE_READ_LOCK_BH is not set
113# CONFIG_INLINE_READ_LOCK_IRQ is not set
114# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
115# CONFIG_INLINE_READ_UNLOCK is not set
116# CONFIG_INLINE_READ_UNLOCK_BH is not set
117# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
118# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
119# CONFIG_INLINE_WRITE_TRYLOCK is not set
120# CONFIG_INLINE_WRITE_LOCK is not set
121# CONFIG_INLINE_WRITE_LOCK_BH is not set
122# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
123# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
124# CONFIG_INLINE_WRITE_UNLOCK is not set
125# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
126# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
127# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
128# CONFIG_MUTEX_SPIN_ON_OWNER is not set
93# CONFIG_FREEZER is not set 129# CONFIG_FREEZER is not set
94 130
95# 131#
@@ -145,9 +181,8 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
145CONFIG_ZONE_DMA_FLAG=0 181CONFIG_ZONE_DMA_FLAG=0
146CONFIG_NR_QUICK=1 182CONFIG_NR_QUICK=1
147CONFIG_VIRT_TO_BUS=y 183CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y 184# CONFIG_KSM is not set
149CONFIG_HAVE_MLOCK=y 185CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
150CONFIG_HAVE_MLOCKED_PAGE_BIT=y
151 186
152# 187#
153# Power management options 188# Power management options
@@ -202,6 +237,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
202# CONFIG_NETFILTER is not set 237# CONFIG_NETFILTER is not set
203# CONFIG_IP_DCCP is not set 238# CONFIG_IP_DCCP is not set
204# CONFIG_IP_SCTP is not set 239# CONFIG_IP_SCTP is not set
240# CONFIG_RDS is not set
205# CONFIG_TIPC is not set 241# CONFIG_TIPC is not set
206# CONFIG_ATM is not set 242# CONFIG_ATM is not set
207# CONFIG_BRIDGE is not set 243# CONFIG_BRIDGE is not set
@@ -216,6 +252,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
216# CONFIG_ECONET is not set 252# CONFIG_ECONET is not set
217# CONFIG_WAN_ROUTER is not set 253# CONFIG_WAN_ROUTER is not set
218# CONFIG_PHONET is not set 254# CONFIG_PHONET is not set
255# CONFIG_IEEE802154 is not set
219# CONFIG_NET_SCHED is not set 256# CONFIG_NET_SCHED is not set
220# CONFIG_DCB is not set 257# CONFIG_DCB is not set
221 258
@@ -341,7 +378,6 @@ CONFIG_MISC_DEVICES=y
341# CONFIG_SCSI_DMA is not set 378# CONFIG_SCSI_DMA is not set
342# CONFIG_SCSI_NETLINK is not set 379# CONFIG_SCSI_NETLINK is not set
343CONFIG_NETDEVICES=y 380CONFIG_NETDEVICES=y
344CONFIG_COMPAT_NET_DEV_OPS=y
345# CONFIG_DUMMY is not set 381# CONFIG_DUMMY is not set
346# CONFIG_BONDING is not set 382# CONFIG_BONDING is not set
347# CONFIG_MACVLAN is not set 383# CONFIG_MACVLAN is not set
@@ -362,14 +398,11 @@ CONFIG_SMC91X=y
362# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 398# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
363# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 399# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
364# CONFIG_B44 is not set 400# CONFIG_B44 is not set
401# CONFIG_KS8842 is not set
402# CONFIG_KS8851_MLL is not set
365# CONFIG_NETDEV_1000 is not set 403# CONFIG_NETDEV_1000 is not set
366# CONFIG_NETDEV_10000 is not set 404# CONFIG_NETDEV_10000 is not set
367 405# CONFIG_WLAN is not set
368#
369# Wireless LAN
370#
371# CONFIG_WLAN_PRE80211 is not set
372# CONFIG_WLAN_80211 is not set
373 406
374# 407#
375# Enable WiMAX (Networking options) to see the WiMAX drivers 408# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -430,11 +463,15 @@ CONFIG_RTC=y
430# CONFIG_TCG_TPM is not set 463# CONFIG_TCG_TPM is not set
431# CONFIG_I2C is not set 464# CONFIG_I2C is not set
432# CONFIG_SPI is not set 465# CONFIG_SPI is not set
466
467#
468# PPS support
469#
470# CONFIG_PPS is not set
433# CONFIG_W1 is not set 471# CONFIG_W1 is not set
434# CONFIG_POWER_SUPPLY is not set 472# CONFIG_POWER_SUPPLY is not set
435# CONFIG_HWMON is not set 473# CONFIG_HWMON is not set
436# CONFIG_THERMAL is not set 474# CONFIG_THERMAL is not set
437# CONFIG_THERMAL_HWMON is not set
438# CONFIG_WATCHDOG is not set 475# CONFIG_WATCHDOG is not set
439CONFIG_SSB_POSSIBLE=y 476CONFIG_SSB_POSSIBLE=y
440 477
@@ -451,22 +488,7 @@ CONFIG_SSB_POSSIBLE=y
451# CONFIG_HTC_PASIC3 is not set 488# CONFIG_HTC_PASIC3 is not set
452# CONFIG_MFD_TMIO is not set 489# CONFIG_MFD_TMIO is not set
453# CONFIG_REGULATOR is not set 490# CONFIG_REGULATOR is not set
454 491# CONFIG_MEDIA_SUPPORT is not set
455#
456# Multimedia devices
457#
458
459#
460# Multimedia core support
461#
462# CONFIG_VIDEO_DEV is not set
463# CONFIG_DVB_CORE is not set
464# CONFIG_VIDEO_MEDIA is not set
465
466#
467# Multimedia drivers
468#
469# CONFIG_DAB is not set
470 492
471# 493#
472# Graphics support 494# Graphics support
@@ -490,11 +512,17 @@ CONFIG_SSB_POSSIBLE=y
490# CONFIG_DMADEVICES is not set 512# CONFIG_DMADEVICES is not set
491# CONFIG_AUXDISPLAY is not set 513# CONFIG_AUXDISPLAY is not set
492# CONFIG_UIO is not set 514# CONFIG_UIO is not set
515
516#
517# TI VLYNQ
518#
493# CONFIG_STAGING is not set 519# CONFIG_STAGING is not set
494 520
495# 521#
496# File systems 522# File systems
497# 523#
524CONFIG_FILE_LOCKING=y
525CONFIG_FSNOTIFY=y
498CONFIG_DNOTIFY=y 526CONFIG_DNOTIFY=y
499CONFIG_INOTIFY=y 527CONFIG_INOTIFY=y
500CONFIG_INOTIFY_USER=y 528CONFIG_INOTIFY_USER=y
@@ -539,6 +567,7 @@ CONFIG_NFS_V3=y
539# CONFIG_NFS_V3_ACL is not set 567# CONFIG_NFS_V3_ACL is not set
540# CONFIG_NFS_V4 is not set 568# CONFIG_NFS_V4 is not set
541CONFIG_ROOT_NFS=y 569CONFIG_ROOT_NFS=y
570# CONFIG_NFSD is not set
542CONFIG_LOCKD=y 571CONFIG_LOCKD=y
543CONFIG_LOCKD_V4=y 572CONFIG_LOCKD_V4=y
544CONFIG_NFS_COMMON=y 573CONFIG_NFS_COMMON=y
@@ -561,13 +590,13 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
561CONFIG_ENABLE_MUST_CHECK=y 590CONFIG_ENABLE_MUST_CHECK=y
562CONFIG_FRAME_WARN=1024 591CONFIG_FRAME_WARN=1024
563CONFIG_MAGIC_SYSRQ=y 592CONFIG_MAGIC_SYSRQ=y
593CONFIG_STRIP_ASM_SYMS=y
564# CONFIG_UNUSED_SYMBOLS is not set 594# CONFIG_UNUSED_SYMBOLS is not set
565# CONFIG_DEBUG_FS is not set 595# CONFIG_DEBUG_FS is not set
566# CONFIG_HEADERS_CHECK is not set 596# CONFIG_HEADERS_CHECK is not set
567# CONFIG_DEBUG_KERNEL is not set 597# CONFIG_DEBUG_KERNEL is not set
568# CONFIG_DEBUG_BUGVERBOSE is not set 598CONFIG_DEBUG_BUGVERBOSE=y
569# CONFIG_DEBUG_MEMORY_INIT is not set 599# CONFIG_DEBUG_MEMORY_INIT is not set
570# CONFIG_RCU_CPU_STALL_DETECTOR is not set
571# CONFIG_SYSCTL_SYSCALL_CHECK is not set 600# CONFIG_SYSCTL_SYSCALL_CHECK is not set
572# CONFIG_SAMPLES is not set 601# CONFIG_SAMPLES is not set
573 602
@@ -577,7 +606,11 @@ CONFIG_MAGIC_SYSRQ=y
577# CONFIG_KEYS is not set 606# CONFIG_KEYS is not set
578# CONFIG_SECURITY is not set 607# CONFIG_SECURITY is not set
579# CONFIG_SECURITYFS is not set 608# CONFIG_SECURITYFS is not set
580# CONFIG_SECURITY_FILE_CAPABILITIES is not set 609# CONFIG_DEFAULT_SECURITY_SELINUX is not set
610# CONFIG_DEFAULT_SECURITY_SMACK is not set
611# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
612CONFIG_DEFAULT_SECURITY_DAC=y
613CONFIG_DEFAULT_SECURITY=""
581# CONFIG_CRYPTO is not set 614# CONFIG_CRYPTO is not set
582# CONFIG_BINARY_PRINTF is not set 615# CONFIG_BINARY_PRINTF is not set
583 616
diff --git a/arch/mn10300/include/asm/bitops.h b/arch/mn10300/include/asm/bitops.h
index 0b610f482abb..f49ac49e09ad 100644
--- a/arch/mn10300/include/asm/bitops.h
+++ b/arch/mn10300/include/asm/bitops.h
@@ -165,7 +165,7 @@ static inline __attribute__((const))
165unsigned long __ffs(unsigned long x) 165unsigned long __ffs(unsigned long x)
166{ 166{
167 int bit; 167 int bit;
168 asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(x & -x)); 168 asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(x & -x) : "cc");
169 return bit; 169 return bit;
170} 170}
171 171
@@ -177,7 +177,7 @@ static inline __attribute__((const))
177int __ilog2_u32(u32 n) 177int __ilog2_u32(u32 n)
178{ 178{
179 int bit; 179 int bit;
180 asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(n)); 180 asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(n) : "cc");
181 return bit; 181 return bit;
182} 182}
183 183
diff --git a/arch/mn10300/include/asm/div64.h b/arch/mn10300/include/asm/div64.h
index 3a8329b3e869..34dcb8e68309 100644
--- a/arch/mn10300/include/asm/div64.h
+++ b/arch/mn10300/include/asm/div64.h
@@ -72,6 +72,7 @@ unsigned __muldiv64u(unsigned val, unsigned mult, unsigned div)
72 * MDR = MDR:val%div */ 72 * MDR = MDR:val%div */
73 : "=r"(result) 73 : "=r"(result)
74 : "0"(val), "ir"(mult), "r"(div) 74 : "0"(val), "ir"(mult), "r"(div)
75 : "cc"
75 ); 76 );
76 77
77 return result; 78 return result;
@@ -92,6 +93,7 @@ signed __muldiv64s(signed val, signed mult, signed div)
92 * MDR = MDR:val%div */ 93 * MDR = MDR:val%div */
93 : "=r"(result) 94 : "=r"(result)
94 : "0"(val), "ir"(mult), "r"(div) 95 : "0"(val), "ir"(mult), "r"(div)
96 : "cc"
95 ); 97 );
96 98
97 return result; 99 return result;
diff --git a/arch/mn10300/include/asm/system.h b/arch/mn10300/include/asm/system.h
index 8214fb7e7fe4..3636c054dcd5 100644
--- a/arch/mn10300/include/asm/system.h
+++ b/arch/mn10300/include/asm/system.h
@@ -143,6 +143,7 @@ do { \
143 " mov %0,epsw \n" \ 143 " mov %0,epsw \n" \
144 : "=&d"(tmp) \ 144 : "=&d"(tmp) \
145 : "i"(~EPSW_IM), "r"(__mn10300_irq_enabled_epsw) \ 145 : "i"(~EPSW_IM), "r"(__mn10300_irq_enabled_epsw) \
146 : "cc" \
146 ); \ 147 ); \
147} while (0) 148} while (0)
148 149
diff --git a/arch/mn10300/include/asm/tlbflush.h b/arch/mn10300/include/asm/tlbflush.h
index e0239865abcb..1a7e29281c5d 100644
--- a/arch/mn10300/include/asm/tlbflush.h
+++ b/arch/mn10300/include/asm/tlbflush.h
@@ -22,7 +22,7 @@ do { \
22 " mov %0,%1 \n" \ 22 " mov %0,%1 \n" \
23 : "=d"(w) \ 23 : "=d"(w) \
24 : "m"(MMUCTR), "i"(MMUCTR_IIV|MMUCTR_DIV) \ 24 : "m"(MMUCTR), "i"(MMUCTR_IIV|MMUCTR_DIV) \
25 : "memory" \ 25 : "cc", "memory" \
26 ); \ 26 ); \
27} while (0) 27} while (0)
28 28
diff --git a/arch/mn10300/include/asm/uaccess.h b/arch/mn10300/include/asm/uaccess.h
index 167e10ff06d9..197a7af3dd8a 100644
--- a/arch/mn10300/include/asm/uaccess.h
+++ b/arch/mn10300/include/asm/uaccess.h
@@ -316,7 +316,7 @@ do { \
316 " .previous\n" \ 316 " .previous\n" \
317 : "=a"(__from), "=a"(__to), "=r"(size), "=&r"(w)\ 317 : "=a"(__from), "=a"(__to), "=r"(size), "=&r"(w)\
318 : "0"(__from), "1"(__to), "2"(size) \ 318 : "0"(__from), "1"(__to), "2"(size) \
319 : "memory"); \ 319 : "cc", "memory"); \
320 } \ 320 } \
321} while (0) 321} while (0)
322 322
@@ -352,7 +352,7 @@ do { \
352 " .previous\n" \ 352 " .previous\n" \
353 : "=a"(__from), "=a"(__to), "=r"(size), "=&r"(w)\ 353 : "=a"(__from), "=a"(__to), "=r"(size), "=&r"(w)\
354 : "0"(__from), "1"(__to), "2"(size) \ 354 : "0"(__from), "1"(__to), "2"(size) \
355 : "memory"); \ 355 : "cc", "memory"); \
356 } \ 356 } \
357} while (0) 357} while (0)
358 358
diff --git a/arch/mn10300/include/asm/unistd.h b/arch/mn10300/include/asm/unistd.h
index 2a983931c11f..c05acb95c2a9 100644
--- a/arch/mn10300/include/asm/unistd.h
+++ b/arch/mn10300/include/asm/unistd.h
@@ -348,10 +348,11 @@
348#define __NR_pwritev 335 348#define __NR_pwritev 335
349#define __NR_rt_tgsigqueueinfo 336 349#define __NR_rt_tgsigqueueinfo 336
350#define __NR_perf_event_open 337 350#define __NR_perf_event_open 337
351#define __NR_recvmmsg 338
351 352
352#ifdef __KERNEL__ 353#ifdef __KERNEL__
353 354
354#define NR_syscalls 338 355#define NR_syscalls 339
355 356
356/* 357/*
357 * specify the deprecated syscalls we want to support on this arch 358 * specify the deprecated syscalls we want to support on this arch
diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S
index c9ee6c009d79..88e3e1c3cc21 100644
--- a/arch/mn10300/kernel/entry.S
+++ b/arch/mn10300/kernel/entry.S
@@ -724,6 +724,7 @@ ENTRY(sys_call_table)
724 .long sys_pwritev /* 335 */ 724 .long sys_pwritev /* 335 */
725 .long sys_rt_tgsigqueueinfo 725 .long sys_rt_tgsigqueueinfo
726 .long sys_perf_event_open 726 .long sys_perf_event_open
727 .long sys_recvmmsg
727 728
728 729
729nr_syscalls=(.-sys_call_table)/4 730nr_syscalls=(.-sys_call_table)/4
diff --git a/arch/mn10300/kernel/mn10300-serial.c b/arch/mn10300/kernel/mn10300-serial.c
index 229b710fc5d5..ef34d5a0f8bd 100644
--- a/arch/mn10300/kernel/mn10300-serial.c
+++ b/arch/mn10300/kernel/mn10300-serial.c
@@ -380,7 +380,8 @@ static int mask_test_and_clear(volatile u8 *ptr, u8 mask)
380 u32 epsw; 380 u32 epsw;
381 asm volatile(" bclr %1,(%2) \n" 381 asm volatile(" bclr %1,(%2) \n"
382 " mov epsw,%0 \n" 382 " mov epsw,%0 \n"
383 : "=d"(epsw) : "d"(mask), "a"(ptr)); 383 : "=d"(epsw) : "d"(mask), "a"(ptr)
384 : "cc", "memory");
384 return !(epsw & EPSW_FLAG_Z); 385 return !(epsw & EPSW_FLAG_Z);
385} 386}
386 387
diff --git a/arch/mn10300/kernel/signal.c b/arch/mn10300/kernel/signal.c
index a21f43bc68e2..717db14c2cc3 100644
--- a/arch/mn10300/kernel/signal.c
+++ b/arch/mn10300/kernel/signal.c
@@ -264,7 +264,7 @@ static inline void __user *get_sigframe(struct k_sigaction *ka,
264 264
265 /* this is the X/Open sanctioned signal stack switching. */ 265 /* this is the X/Open sanctioned signal stack switching. */
266 if (ka->sa.sa_flags & SA_ONSTACK) { 266 if (ka->sa.sa_flags & SA_ONSTACK) {
267 if (!on_sig_stack(sp)) 267 if (sas_ss_flags(sp) == 0)
268 sp = current->sas_ss_sp + current->sas_ss_size; 268 sp = current->sas_ss_sp + current->sas_ss_size;
269 } 269 }
270 270
diff --git a/arch/mn10300/lib/checksum.c b/arch/mn10300/lib/checksum.c
index 274f29ec33c1..b6580f5d89ee 100644
--- a/arch/mn10300/lib/checksum.c
+++ b/arch/mn10300/lib/checksum.c
@@ -22,6 +22,7 @@ static inline unsigned short from32to16(__wsum sum)
22 " addc 0xffff,%0 \n" 22 " addc 0xffff,%0 \n"
23 : "=r" (sum) 23 : "=r" (sum)
24 : "r" (sum << 16), "0" (sum & 0xffff0000) 24 : "r" (sum << 16), "0" (sum & 0xffff0000)
25 : "cc"
25 ); 26 );
26 return sum >> 16; 27 return sum >> 16;
27} 28}
diff --git a/arch/mn10300/lib/delay.c b/arch/mn10300/lib/delay.c
index cce66bc0822d..fdf6f710f94e 100644
--- a/arch/mn10300/lib/delay.c
+++ b/arch/mn10300/lib/delay.c
@@ -28,7 +28,8 @@ void __delay(unsigned long loops)
28 "2: add -1,%0 \n" 28 "2: add -1,%0 \n"
29 " bne 2b \n" 29 " bne 2b \n"
30 : "=&d" (d0) 30 : "=&d" (d0)
31 : "0" (loops)); 31 : "0" (loops)
32 : "cc");
32} 33}
33EXPORT_SYMBOL(__delay); 34EXPORT_SYMBOL(__delay);
34 35
diff --git a/arch/mn10300/lib/usercopy.c b/arch/mn10300/lib/usercopy.c
index a75b203059c1..7826e6c364e7 100644
--- a/arch/mn10300/lib/usercopy.c
+++ b/arch/mn10300/lib/usercopy.c
@@ -62,7 +62,7 @@ do { \
62 " .previous" \ 62 " .previous" \
63 :"=&r"(res), "=r"(count), "=&r"(w) \ 63 :"=&r"(res), "=r"(count), "=&r"(w) \
64 :"i"(-EFAULT), "1"(count), "a"(src), "a"(dst) \ 64 :"i"(-EFAULT), "1"(count), "a"(src), "a"(dst) \
65 :"memory"); \ 65 : "memory", "cc"); \
66} while (0) 66} while (0)
67 67
68long 68long
@@ -109,7 +109,7 @@ do { \
109 ".previous\n" \ 109 ".previous\n" \
110 : "+r"(size), "=&r"(w) \ 110 : "+r"(size), "=&r"(w) \
111 : "a"(addr), "d"(0) \ 111 : "a"(addr), "d"(0) \
112 : "memory"); \ 112 : "memory", "cc"); \
113} while (0) 113} while (0)
114 114
115unsigned long 115unsigned long
@@ -161,6 +161,6 @@ long strnlen_user(const char *s, long n)
161 ".previous\n" 161 ".previous\n"
162 :"=d"(res), "=&r"(w) 162 :"=d"(res), "=&r"(w)
163 :"0"(0), "a"(s), "r"(n) 163 :"0"(0), "a"(s), "r"(n)
164 :"memory"); 164 : "memory", "cc");
165 return res; 165 return res;
166} 166}
diff --git a/arch/mn10300/mm/dma-alloc.c b/arch/mn10300/mm/dma-alloc.c
index f3649d8f50e3..ee82d624b3c6 100644
--- a/arch/mn10300/mm/dma-alloc.c
+++ b/arch/mn10300/mm/dma-alloc.c
@@ -16,12 +16,24 @@
16#include <linux/pci.h> 16#include <linux/pci.h>
17#include <asm/io.h> 17#include <asm/io.h>
18 18
19static unsigned long pci_sram_allocated = 0xbc000000;
20
19void *dma_alloc_coherent(struct device *dev, size_t size, 21void *dma_alloc_coherent(struct device *dev, size_t size,
20 dma_addr_t *dma_handle, int gfp) 22 dma_addr_t *dma_handle, int gfp)
21{ 23{
22 unsigned long addr; 24 unsigned long addr;
23 void *ret; 25 void *ret;
24 26
27 printk("dma_alloc_coherent(%s,%zu,,%x)\n", dev_name(dev), size, gfp);
28
29 if (0xbe000000 - pci_sram_allocated >= size) {
30 size = (size + 255) & ~255;
31 addr = pci_sram_allocated;
32 pci_sram_allocated += size;
33 ret = (void *) addr;
34 goto done;
35 }
36
25 /* ignore region specifiers */ 37 /* ignore region specifiers */
26 gfp &= ~(__GFP_DMA | __GFP_HIGHMEM); 38 gfp &= ~(__GFP_DMA | __GFP_HIGHMEM);
27 39
@@ -41,7 +53,9 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
41 /* write back and evict all cache lines covering this region */ 53 /* write back and evict all cache lines covering this region */
42 mn10300_dcache_flush_inv_range2(virt_to_phys((void *) addr), PAGE_SIZE); 54 mn10300_dcache_flush_inv_range2(virt_to_phys((void *) addr), PAGE_SIZE);
43 55
56done:
44 *dma_handle = virt_to_bus((void *) addr); 57 *dma_handle = virt_to_bus((void *) addr);
58 printk("dma_alloc_coherent() = %p [%x]\n", ret, *dma_handle);
45 return ret; 59 return ret;
46} 60}
47EXPORT_SYMBOL(dma_alloc_coherent); 61EXPORT_SYMBOL(dma_alloc_coherent);
@@ -51,6 +65,9 @@ void dma_free_coherent(struct device *dev, size_t size, void *vaddr,
51{ 65{
52 unsigned long addr = (unsigned long) vaddr & ~0x20000000; 66 unsigned long addr = (unsigned long) vaddr & ~0x20000000;
53 67
68 if (addr >= 0x9c000000)
69 return;
70
54 free_pages(addr, get_order(size)); 71 free_pages(addr, get_order(size));
55} 72}
56EXPORT_SYMBOL(dma_free_coherent); 73EXPORT_SYMBOL(dma_free_coherent);
diff --git a/arch/mn10300/mm/init.c b/arch/mn10300/mm/init.c
index ec1420562dc7..dd27a9a35152 100644
--- a/arch/mn10300/mm/init.c
+++ b/arch/mn10300/mm/init.c
@@ -118,8 +118,7 @@ void __init mem_init(void)
118 reservedpages << (PAGE_SHIFT - 10), 118 reservedpages << (PAGE_SHIFT - 10),
119 datasize >> 10, 119 datasize >> 10,
120 initsize >> 10, 120 initsize >> 10,
121 (unsigned long) (totalhigh_pages << (PAGE_SHIFT - 10)) 121 totalhigh_pages << (PAGE_SHIFT - 10));
122 );
123} 122}
124 123
125/* 124/*
diff --git a/arch/mn10300/mm/misalignment.c b/arch/mn10300/mm/misalignment.c
index 30016251f658..6dffbf97ac26 100644
--- a/arch/mn10300/mm/misalignment.c
+++ b/arch/mn10300/mm/misalignment.c
@@ -633,13 +633,13 @@ static int misalignment_addr(unsigned long *registers, unsigned long sp,
633 goto displace_or_inc; 633 goto displace_or_inc;
634 case SD24: 634 case SD24:
635 tmp = disp << 8; 635 tmp = disp << 8;
636 asm("asr 8,%0" : "=r"(tmp) : "0"(tmp)); 636 asm("asr 8,%0" : "=r"(tmp) : "0"(tmp) : "cc");
637 disp = (long) tmp; 637 disp = (long) tmp;
638 goto displace_or_inc; 638 goto displace_or_inc;
639 case SIMM4_2: 639 case SIMM4_2:
640 tmp = opcode >> 4 & 0x0f; 640 tmp = opcode >> 4 & 0x0f;
641 tmp <<= 28; 641 tmp <<= 28;
642 asm("asr 28,%0" : "=r"(tmp) : "0"(tmp)); 642 asm("asr 28,%0" : "=r"(tmp) : "0"(tmp) : "cc");
643 disp = (long) tmp; 643 disp = (long) tmp;
644 goto displace_or_inc; 644 goto displace_or_inc;
645 case IMM8: 645 case IMM8:
diff --git a/arch/mn10300/unit-asb2305/include/unit/serial.h b/arch/mn10300/unit-asb2305/include/unit/serial.h
index 3bfc90938787..8086cc092cec 100644
--- a/arch/mn10300/unit-asb2305/include/unit/serial.h
+++ b/arch/mn10300/unit-asb2305/include/unit/serial.h
@@ -11,7 +11,7 @@
11#ifndef _ASM_UNIT_SERIAL_H 11#ifndef _ASM_UNIT_SERIAL_H
12#define _ASM_UNIT_SERIAL_H 12#define _ASM_UNIT_SERIAL_H
13 13
14#include <asm/cpu/cpu-regs.h> 14#include <asm/cpu-regs.h>
15#include <proc/irq.h> 15#include <proc/irq.h>
16#include <linux/serial_reg.h> 16#include <linux/serial_reg.h>
17 17
diff --git a/arch/mn10300/unit-asb2305/include/unit/timex.h b/arch/mn10300/unit-asb2305/include/unit/timex.h
index a71c49aa85eb..d1c72d59fa9f 100644
--- a/arch/mn10300/unit-asb2305/include/unit/timex.h
+++ b/arch/mn10300/unit-asb2305/include/unit/timex.h
@@ -15,7 +15,7 @@
15#include <linux/irq.h> 15#include <linux/irq.h>
16#endif /* __ASSEMBLY__ */ 16#endif /* __ASSEMBLY__ */
17 17
18#include <asm/cpu/timer-regs.h> 18#include <asm/timer-regs.h>
19#include <unit/clock.h> 19#include <unit/clock.h>
20 20
21/* 21/*
diff --git a/arch/mn10300/unit-asb2305/leds.c b/arch/mn10300/unit-asb2305/leds.c
index d345ff9042d5..6f8de9954026 100644
--- a/arch/mn10300/unit-asb2305/leds.c
+++ b/arch/mn10300/unit-asb2305/leds.c
@@ -13,8 +13,8 @@
13#include <linux/init.h> 13#include <linux/init.h>
14#include <asm/io.h> 14#include <asm/io.h>
15#include <asm/processor.h> 15#include <asm/processor.h>
16#include <asm/cpu/intctl-regs.h> 16#include <asm/intctl-regs.h>
17#include <asm/cpu/rtc-regs.h> 17#include <asm/rtc-regs.h>
18#include <unit/leds.h> 18#include <unit/leds.h>
19 19
20static const u8 asb2305_led_hex_tbl[16] = { 20static const u8 asb2305_led_hex_tbl[16] = {
diff --git a/arch/mn10300/unit-asb2305/pci-asb2305.c b/arch/mn10300/unit-asb2305/pci-asb2305.c
index d100ca788468..78cd134ddf7d 100644
--- a/arch/mn10300/unit-asb2305/pci-asb2305.c
+++ b/arch/mn10300/unit-asb2305/pci-asb2305.c
@@ -218,45 +218,6 @@ void __init pcibios_resource_survey(void)
218 pcibios_allocate_resources(1); 218 pcibios_allocate_resources(1);
219} 219}
220 220
221int pcibios_enable_resources(struct pci_dev *dev, int mask)
222{
223 u16 cmd, old_cmd;
224 int idx;
225 struct resource *r;
226
227 pci_read_config_word(dev, PCI_COMMAND, &cmd);
228 old_cmd = cmd;
229
230 for (idx = 0; idx < 6; idx++) {
231 /* Only set up the requested stuff */
232 if (!(mask & (1 << idx)))
233 continue;
234
235 r = &dev->resource[idx];
236
237 if (!r->start && r->end) {
238 printk(KERN_ERR
239 "PCI: Device %s not available because of"
240 " resource collisions\n",
241 pci_name(dev));
242 return -EINVAL;
243 }
244
245 if (r->flags & IORESOURCE_IO)
246 cmd |= PCI_COMMAND_IO;
247 if (r->flags & IORESOURCE_MEM)
248 cmd |= PCI_COMMAND_MEMORY;
249 }
250
251 if (dev->resource[PCI_ROM_RESOURCE].start)
252 cmd |= PCI_COMMAND_MEMORY;
253
254 if (cmd != old_cmd)
255 pci_write_config_word(dev, PCI_COMMAND, cmd);
256
257 return 0;
258}
259
260/* 221/*
261 * If we set up a device for bus mastering, we need to check the latency 222 * If we set up a device for bus mastering, we need to check the latency
262 * timer as certain crappy BIOSes forget to set it properly. 223 * timer as certain crappy BIOSes forget to set it properly.
diff --git a/arch/mn10300/unit-asb2305/pci-asb2305.h b/arch/mn10300/unit-asb2305/pci-asb2305.h
index 9763d1ce343a..c3fa294b6e28 100644
--- a/arch/mn10300/unit-asb2305/pci-asb2305.h
+++ b/arch/mn10300/unit-asb2305/pci-asb2305.h
@@ -34,7 +34,6 @@ extern unsigned int pci_probe;
34extern unsigned int pcibios_max_latency; 34extern unsigned int pcibios_max_latency;
35 35
36extern void pcibios_resource_survey(void); 36extern void pcibios_resource_survey(void);
37extern int pcibios_enable_resources(struct pci_dev *dev, int mask);
38 37
39/* pci.c */ 38/* pci.c */
40 39
diff --git a/arch/mn10300/unit-asb2305/pci.c b/arch/mn10300/unit-asb2305/pci.c
index 07dbbcda3b2e..2cb7e75ba1c0 100644
--- a/arch/mn10300/unit-asb2305/pci.c
+++ b/arch/mn10300/unit-asb2305/pci.c
@@ -27,6 +27,29 @@ struct pci_bus *pci_root_bus;
27struct pci_ops *pci_root_ops; 27struct pci_ops *pci_root_ops;
28 28
29/* 29/*
30 * The accessible PCI window does not cover the entire CPU address space, but
31 * there are devices we want to access outside of that window, so we need to
32 * insert specific PCI bus resources instead of using the platform-level bus
33 * resources directly for the PCI root bus.
34 *
35 * These are configured and inserted by pcibios_init() and are attached to the
36 * root bus by pcibios_fixup_bus().
37 */
38static struct resource pci_ioport_resource = {
39 .name = "PCI IO",
40 .start = 0xbe000000,
41 .end = 0xbe03ffff,
42 .flags = IORESOURCE_IO,
43};
44
45static struct resource pci_iomem_resource = {
46 .name = "PCI mem",
47 .start = 0xb8000000,
48 .end = 0xbbffffff,
49 .flags = IORESOURCE_MEM,
50};
51
52/*
30 * Functions for accessing PCI configuration space 53 * Functions for accessing PCI configuration space
31 */ 54 */
32 55
@@ -279,7 +302,7 @@ static int __init pci_sanity_check(struct pci_ops *o)
279 (x == PCI_VENDOR_ID_INTEL || x == PCI_VENDOR_ID_COMPAQ))) 302 (x == PCI_VENDOR_ID_INTEL || x == PCI_VENDOR_ID_COMPAQ)))
280 return 1; 303 return 1;
281 304
282 printk(KERN_ERROR "PCI: Sanity check failed\n"); 305 printk(KERN_ERR "PCI: Sanity check failed\n");
283 return 0; 306 return 0;
284} 307}
285 308
@@ -297,6 +320,7 @@ static int __init pci_check_direct(void)
297 printk(KERN_INFO "PCI: Using configuration ampci\n"); 320 printk(KERN_INFO "PCI: Using configuration ampci\n");
298 request_mem_region(0xBE040000, 256, "AMPCI bridge"); 321 request_mem_region(0xBE040000, 256, "AMPCI bridge");
299 request_mem_region(0xBFFFFFF4, 12, "PCI ampci"); 322 request_mem_region(0xBFFFFFF4, 12, "PCI ampci");
323 request_mem_region(0xBC000000, 32 * 1024 * 1024, "PCI SRAM");
300 return 0; 324 return 0;
301 } 325 }
302 326
@@ -358,6 +382,11 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus)
358{ 382{
359 struct pci_dev *dev; 383 struct pci_dev *dev;
360 384
385 if (bus->number == 0) {
386 bus->resource[0] = &pci_ioport_resource;
387 bus->resource[1] = &pci_iomem_resource;
388 }
389
361 if (bus->self) { 390 if (bus->self) {
362 pci_read_bridge_bases(bus); 391 pci_read_bridge_bases(bus);
363 pcibios_fixup_device_resources(bus->self); 392 pcibios_fixup_device_resources(bus->self);
@@ -380,6 +409,11 @@ static int __init pcibios_init(void)
380 iomem_resource.start = 0xA0000000; 409 iomem_resource.start = 0xA0000000;
381 iomem_resource.end = 0xDFFFFFFF; 410 iomem_resource.end = 0xDFFFFFFF;
382 411
412 if (insert_resource(&iomem_resource, &pci_iomem_resource) < 0)
413 panic("Unable to insert PCI IOMEM resource\n");
414 if (insert_resource(&ioport_resource, &pci_ioport_resource) < 0)
415 panic("Unable to insert PCI IOPORT resource\n");
416
383 if (!pci_probe) 417 if (!pci_probe)
384 return 0; 418 return 0;
385 419
@@ -391,32 +425,11 @@ static int __init pcibios_init(void)
391 printk(KERN_INFO "PCI: Probing PCI hardware [mempage %08x]\n", 425 printk(KERN_INFO "PCI: Probing PCI hardware [mempage %08x]\n",
392 MEM_PAGING_REG); 426 MEM_PAGING_REG);
393 427
394 { 428 pci_root_bus = pci_scan_bus(0, &pci_direct_ampci, NULL);
395#if 0
396 static struct pci_bus am33_root_bus = {
397 .children = LIST_HEAD_INIT(am33_root_bus.children),
398 .devices = LIST_HEAD_INIT(am33_root_bus.devices),
399 .number = 0,
400 .secondary = 0,
401 .resource = { &ioport_resource, &iomem_resource },
402 };
403
404 am33_root_bus.ops = pci_root_ops;
405 list_add_tail(&am33_root_bus.node, &pci_root_buses);
406
407 am33_root_bus.subordinate = pci_do_scan_bus(0);
408
409 pci_root_bus = &am33_root_bus;
410#else
411 pci_root_bus = pci_scan_bus(0, &pci_direct_ampci, NULL);
412#endif
413 }
414 429
415 pcibios_irq_init(); 430 pcibios_irq_init();
416 pcibios_fixup_irqs(); 431 pcibios_fixup_irqs();
417#if 0
418 pcibios_resource_survey(); 432 pcibios_resource_survey();
419#endif
420 return 0; 433 return 0;
421} 434}
422 435
@@ -440,7 +453,7 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
440{ 453{
441 int err; 454 int err;
442 455
443 err = pcibios_enable_resources(dev, mask); 456 err = pci_enable_resources(dev, mask);
444 if (err == 0) 457 if (err == 0)
445 pcibios_enable_irq(dev); 458 pcibios_enable_irq(dev);
446 return err; 459 return err;
@@ -455,6 +468,7 @@ static void __init unit_disable_pcnet(struct pci_bus *bus, struct pci_ops *o)
455 468
456 bus->number = 0; 469 bus->number = 0;
457 470
471 o->read (bus, PCI_DEVFN(2, 0), PCI_VENDOR_ID, 4, &x);
458 o->read (bus, PCI_DEVFN(2, 0), PCI_COMMAND, 2, &x); 472 o->read (bus, PCI_DEVFN(2, 0), PCI_COMMAND, 2, &x);
459 x |= PCI_COMMAND_MASTER | 473 x |= PCI_COMMAND_MASTER |
460 PCI_COMMAND_IO | PCI_COMMAND_MEMORY | 474 PCI_COMMAND_IO | PCI_COMMAND_MEMORY |
diff --git a/arch/mn10300/unit-asb2305/unit-init.c b/arch/mn10300/unit-asb2305/unit-init.c
index 1c452cc3f6e9..a76c8e0ab90f 100644
--- a/arch/mn10300/unit-asb2305/unit-init.c
+++ b/arch/mn10300/unit-asb2305/unit-init.c
@@ -15,9 +15,8 @@
15#include <asm/io.h> 15#include <asm/io.h>
16#include <asm/setup.h> 16#include <asm/setup.h>
17#include <asm/processor.h> 17#include <asm/processor.h>
18#include <asm/cpu/intctl-regs.h> 18#include <asm/intctl-regs.h>
19#include <asm/cpu/rtc-regs.h> 19#include <asm/serial-regs.h>
20#include <asm/cpu/serial-regs.h>
21#include <unit/serial.h> 20#include <unit/serial.h>
22 21
23/* 22/*