aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-07-03 14:11:23 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-07-03 14:11:23 -0400
commit0e97456ab5ba2761892d9e67b7e3b0cac262141c (patch)
tree440d4a2ad18ceae512876aee24866a12ee2ea626
parent76d3f4c27d3c2c85e5cfe731537b6929145bf652 (diff)
parent980f3a7315b4691ec90538352a9e9c5a53ea9d34 (diff)
Merge branch 'for-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
Pull m68k updates from Geert Uytterhoeven. * 'for-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k: m68k/q40: Enable PC parallel port in defconfig m68k/q40: Undefine insl/outsl before redefining them m68k/uaccess: Fix asm constraints for userspace access swim: Release memory region after incorrect return/goto m68k/irq: Vector ints need a valid interrupt handler m68k/math-emu: unsigned issue, 'unsigned long' will never be less than zero m68k: remove CONFIG_EARLY_PRINTK dependency on CONFIG_EMBEDDED, default to n m68k/sun3: remove inline marking of EXPORT_SYMBOL functions [SCSI] a3000: use module_platform_driver_probe() [SCSI] a4000t: use module_platform_driver_probe() m68k: Remove inline strcpy() and strcat() implementations
-rw-r--r--arch/m68k/Kconfig.debug3
-rw-r--r--arch/m68k/configs/multi_defconfig2
-rw-r--r--arch/m68k/configs/q40_defconfig6
-rw-r--r--arch/m68k/include/asm/parport.h2
-rw-r--r--arch/m68k/include/asm/string.h32
-rw-r--r--arch/m68k/include/asm/uaccess_mm.h8
-rw-r--r--arch/m68k/kernel/ints.c2
-rw-r--r--arch/m68k/lib/Makefile2
-rw-r--r--arch/m68k/lib/string.c22
-rw-r--r--arch/m68k/lib/uaccess.c6
-rw-r--r--arch/m68k/math-emu/fp_arith.c2
-rw-r--r--arch/m68k/sun3/sun3dvma.c2
-rw-r--r--drivers/block/swim.c2
-rw-r--r--drivers/scsi/a3000.c13
-rw-r--r--drivers/scsi/a4000t.c15
15 files changed, 25 insertions, 94 deletions
diff --git a/arch/m68k/Kconfig.debug b/arch/m68k/Kconfig.debug
index fa12283d58fc..229682721240 100644
--- a/arch/m68k/Kconfig.debug
+++ b/arch/m68k/Kconfig.debug
@@ -11,9 +11,8 @@ config BOOTPARAM_STRING
11 depends on BOOTPARAM 11 depends on BOOTPARAM
12 12
13config EARLY_PRINTK 13config EARLY_PRINTK
14 bool "Early printk" if EMBEDDED 14 bool "Early printk"
15 depends on MVME16x || MAC 15 depends on MVME16x || MAC
16 default y
17 help 16 help
18 Write kernel log output directly to a serial port. 17 Write kernel log output directly to a serial port.
19 18
diff --git a/arch/m68k/configs/multi_defconfig b/arch/m68k/configs/multi_defconfig
index 0f795d8e65fa..b17a8837f0e1 100644
--- a/arch/m68k/configs/multi_defconfig
+++ b/arch/m68k/configs/multi_defconfig
@@ -214,6 +214,7 @@ CONFIG_DEVTMPFS=y
214# CONFIG_FW_LOADER_USER_HELPER is not set 214# CONFIG_FW_LOADER_USER_HELPER is not set
215CONFIG_CONNECTOR=m 215CONFIG_CONNECTOR=m
216CONFIG_PARPORT=m 216CONFIG_PARPORT=m
217CONFIG_PARPORT_PC=m
217CONFIG_PARPORT_AMIGA=m 218CONFIG_PARPORT_AMIGA=m
218CONFIG_PARPORT_MFC3=m 219CONFIG_PARPORT_MFC3=m
219CONFIG_PARPORT_ATARI=m 220CONFIG_PARPORT_ATARI=m
@@ -325,6 +326,7 @@ CONFIG_ZORRO8390=y
325# CONFIG_NET_VENDOR_SEEQ is not set 326# CONFIG_NET_VENDOR_SEEQ is not set
326# CONFIG_NET_VENDOR_STMICRO is not set 327# CONFIG_NET_VENDOR_STMICRO is not set
327# CONFIG_NET_VENDOR_WIZNET is not set 328# CONFIG_NET_VENDOR_WIZNET is not set
329CONFIG_PLIP=m
328CONFIG_PPP=m 330CONFIG_PPP=m
329CONFIG_PPP_BSDCOMP=m 331CONFIG_PPP_BSDCOMP=m
330CONFIG_PPP_DEFLATE=m 332CONFIG_PPP_DEFLATE=m
diff --git a/arch/m68k/configs/q40_defconfig b/arch/m68k/configs/q40_defconfig
index 8982370e8b42..be1496ed9b66 100644
--- a/arch/m68k/configs/q40_defconfig
+++ b/arch/m68k/configs/q40_defconfig
@@ -199,6 +199,9 @@ CONFIG_DEVTMPFS=y
199# CONFIG_FIRMWARE_IN_KERNEL is not set 199# CONFIG_FIRMWARE_IN_KERNEL is not set
200# CONFIG_FW_LOADER_USER_HELPER is not set 200# CONFIG_FW_LOADER_USER_HELPER is not set
201CONFIG_CONNECTOR=m 201CONFIG_CONNECTOR=m
202CONFIG_PARPORT=m
203CONFIG_PARPORT_PC=m
204CONFIG_PARPORT_1284=y
202CONFIG_BLK_DEV_LOOP=y 205CONFIG_BLK_DEV_LOOP=y
203CONFIG_BLK_DEV_CRYPTOLOOP=m 206CONFIG_BLK_DEV_CRYPTOLOOP=m
204CONFIG_BLK_DEV_DRBD=m 207CONFIG_BLK_DEV_DRBD=m
@@ -267,6 +270,7 @@ CONFIG_NE2000=m
267# CONFIG_NET_VENDOR_SMSC is not set 270# CONFIG_NET_VENDOR_SMSC is not set
268# CONFIG_NET_VENDOR_STMICRO is not set 271# CONFIG_NET_VENDOR_STMICRO is not set
269# CONFIG_NET_VENDOR_WIZNET is not set 272# CONFIG_NET_VENDOR_WIZNET is not set
273CONFIG_PLIP=m
270CONFIG_PPP=m 274CONFIG_PPP=m
271CONFIG_PPP_BSDCOMP=m 275CONFIG_PPP_BSDCOMP=m
272CONFIG_PPP_DEFLATE=m 276CONFIG_PPP_DEFLATE=m
@@ -292,9 +296,11 @@ CONFIG_SERIO_Q40KBD=y
292CONFIG_VT_HW_CONSOLE_BINDING=y 296CONFIG_VT_HW_CONSOLE_BINDING=y
293# CONFIG_LEGACY_PTYS is not set 297# CONFIG_LEGACY_PTYS is not set
294# CONFIG_DEVKMEM is not set 298# CONFIG_DEVKMEM is not set
299CONFIG_PRINTER=m
295# CONFIG_HW_RANDOM is not set 300# CONFIG_HW_RANDOM is not set
296CONFIG_NTP_PPS=y 301CONFIG_NTP_PPS=y
297CONFIG_PPS_CLIENT_LDISC=m 302CONFIG_PPS_CLIENT_LDISC=m
303CONFIG_PPS_CLIENT_PARPORT=m
298CONFIG_PTP_1588_CLOCK=m 304CONFIG_PTP_1588_CLOCK=m
299# CONFIG_HWMON is not set 305# CONFIG_HWMON is not set
300CONFIG_FB=y 306CONFIG_FB=y
diff --git a/arch/m68k/include/asm/parport.h b/arch/m68k/include/asm/parport.h
index 5ea75e6a7399..c85cece778e8 100644
--- a/arch/m68k/include/asm/parport.h
+++ b/arch/m68k/include/asm/parport.h
@@ -11,6 +11,8 @@
11#ifndef _ASM_M68K_PARPORT_H 11#ifndef _ASM_M68K_PARPORT_H
12#define _ASM_M68K_PARPORT_H 1 12#define _ASM_M68K_PARPORT_H 1
13 13
14#undef insl
15#undef outsl
14#define insl(port,buf,len) isa_insb(port,buf,(len)<<2) 16#define insl(port,buf,len) isa_insb(port,buf,(len)<<2)
15#define outsl(port,buf,len) isa_outsb(port,buf,(len)<<2) 17#define outsl(port,buf,len) isa_outsb(port,buf,(len)<<2)
16 18
diff --git a/arch/m68k/include/asm/string.h b/arch/m68k/include/asm/string.h
index 9aea9f11fa25..c30c03d98581 100644
--- a/arch/m68k/include/asm/string.h
+++ b/arch/m68k/include/asm/string.h
@@ -4,20 +4,6 @@
4#include <linux/types.h> 4#include <linux/types.h>
5#include <linux/compiler.h> 5#include <linux/compiler.h>
6 6
7static inline char *__kernel_strcpy(char *dest, const char *src)
8{
9 char *xdest = dest;
10
11 asm volatile ("\n"
12 "1: move.b (%1)+,(%0)+\n"
13 " jne 1b"
14 : "+a" (dest), "+a" (src)
15 : : "memory");
16 return xdest;
17}
18
19#ifndef __IN_STRING_C
20
21#define __HAVE_ARCH_STRNLEN 7#define __HAVE_ARCH_STRNLEN
22static inline size_t strnlen(const char *s, size_t count) 8static inline size_t strnlen(const char *s, size_t count)
23{ 9{
@@ -34,16 +20,6 @@ static inline size_t strnlen(const char *s, size_t count)
34 return sc - s; 20 return sc - s;
35} 21}
36 22
37#define __HAVE_ARCH_STRCPY
38#if __GNUC__ >= 4
39#define strcpy(d, s) (__builtin_constant_p(s) && \
40 __builtin_strlen(s) <= 32 ? \
41 __builtin_strcpy(d, s) : \
42 __kernel_strcpy(d, s))
43#else
44#define strcpy(d, s) __kernel_strcpy(d, s)
45#endif
46
47#define __HAVE_ARCH_STRNCPY 23#define __HAVE_ARCH_STRNCPY
48static inline char *strncpy(char *dest, const char *src, size_t n) 24static inline char *strncpy(char *dest, const char *src, size_t n)
49{ 25{
@@ -61,12 +37,6 @@ static inline char *strncpy(char *dest, const char *src, size_t n)
61 return xdest; 37 return xdest;
62} 38}
63 39
64#define __HAVE_ARCH_STRCAT
65#define strcat(d, s) ({ \
66 char *__d = (d); \
67 strcpy(__d + strlen(__d), (s)); \
68})
69
70#ifndef CONFIG_COLDFIRE 40#ifndef CONFIG_COLDFIRE
71#define __HAVE_ARCH_STRCMP 41#define __HAVE_ARCH_STRCMP
72static inline int strcmp(const char *cs, const char *ct) 42static inline int strcmp(const char *cs, const char *ct)
@@ -100,6 +70,4 @@ extern void *memset(void *, int, __kernel_size_t);
100extern void *memcpy(void *, const void *, __kernel_size_t); 70extern void *memcpy(void *, const void *, __kernel_size_t);
101#define memcpy(d, s, n) __builtin_memcpy(d, s, n) 71#define memcpy(d, s, n) __builtin_memcpy(d, s, n)
102 72
103#endif
104
105#endif /* _M68K_STRING_H_ */ 73#endif /* _M68K_STRING_H_ */
diff --git a/arch/m68k/include/asm/uaccess_mm.h b/arch/m68k/include/asm/uaccess_mm.h
index 472c891a4aee..15901db435b9 100644
--- a/arch/m68k/include/asm/uaccess_mm.h
+++ b/arch/m68k/include/asm/uaccess_mm.h
@@ -90,7 +90,7 @@ asm volatile ("\n" \
90 __put_user_asm(__pu_err, __pu_val, ptr, b, d, -EFAULT); \ 90 __put_user_asm(__pu_err, __pu_val, ptr, b, d, -EFAULT); \
91 break; \ 91 break; \
92 case 2: \ 92 case 2: \
93 __put_user_asm(__pu_err, __pu_val, ptr, w, d, -EFAULT); \ 93 __put_user_asm(__pu_err, __pu_val, ptr, w, r, -EFAULT); \
94 break; \ 94 break; \
95 case 4: \ 95 case 4: \
96 __put_user_asm(__pu_err, __pu_val, ptr, l, r, -EFAULT); \ 96 __put_user_asm(__pu_err, __pu_val, ptr, l, r, -EFAULT); \
@@ -158,7 +158,7 @@ asm volatile ("\n" \
158 __get_user_asm(__gu_err, x, ptr, u8, b, d, -EFAULT); \ 158 __get_user_asm(__gu_err, x, ptr, u8, b, d, -EFAULT); \
159 break; \ 159 break; \
160 case 2: \ 160 case 2: \
161 __get_user_asm(__gu_err, x, ptr, u16, w, d, -EFAULT); \ 161 __get_user_asm(__gu_err, x, ptr, u16, w, r, -EFAULT); \
162 break; \ 162 break; \
163 case 4: \ 163 case 4: \
164 __get_user_asm(__gu_err, x, ptr, u32, l, r, -EFAULT); \ 164 __get_user_asm(__gu_err, x, ptr, u32, l, r, -EFAULT); \
@@ -245,7 +245,7 @@ __constant_copy_from_user(void *to, const void __user *from, unsigned long n)
245 __get_user_asm(res, *(u8 *)to, (u8 __user *)from, u8, b, d, 1); 245 __get_user_asm(res, *(u8 *)to, (u8 __user *)from, u8, b, d, 1);
246 break; 246 break;
247 case 2: 247 case 2:
248 __get_user_asm(res, *(u16 *)to, (u16 __user *)from, u16, w, d, 2); 248 __get_user_asm(res, *(u16 *)to, (u16 __user *)from, u16, w, r, 2);
249 break; 249 break;
250 case 3: 250 case 3:
251 __constant_copy_from_user_asm(res, to, from, tmp, 3, w, b,); 251 __constant_copy_from_user_asm(res, to, from, tmp, 3, w, b,);
@@ -326,7 +326,7 @@ __constant_copy_to_user(void __user *to, const void *from, unsigned long n)
326 __put_user_asm(res, *(u8 *)from, (u8 __user *)to, b, d, 1); 326 __put_user_asm(res, *(u8 *)from, (u8 __user *)to, b, d, 1);
327 break; 327 break;
328 case 2: 328 case 2:
329 __put_user_asm(res, *(u16 *)from, (u16 __user *)to, w, d, 2); 329 __put_user_asm(res, *(u16 *)from, (u16 __user *)to, w, r, 2);
330 break; 330 break;
331 case 3: 331 case 3:
332 __constant_copy_to_user_asm(res, to, from, tmp, 3, w, b,); 332 __constant_copy_to_user_asm(res, to, from, tmp, 3, w, b,);
diff --git a/arch/m68k/kernel/ints.c b/arch/m68k/kernel/ints.c
index 6b32b64bac35..4d7da384eea0 100644
--- a/arch/m68k/kernel/ints.c
+++ b/arch/m68k/kernel/ints.c
@@ -101,7 +101,7 @@ void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt)
101 BUG_ON(IRQ_USER + cnt > NR_IRQS); 101 BUG_ON(IRQ_USER + cnt > NR_IRQS);
102 m68k_first_user_vec = vec; 102 m68k_first_user_vec = vec;
103 for (i = 0; i < cnt; i++) 103 for (i = 0; i < cnt; i++)
104 irq_set_chip(IRQ_USER + i, &user_irq_chip); 104 irq_set_chip_and_handler(i, &user_irq_chip, handle_simple_irq);
105 *user_irqvec_fixup = vec - IRQ_USER; 105 *user_irqvec_fixup = vec - IRQ_USER;
106 flush_icache(); 106 flush_icache();
107} 107}
diff --git a/arch/m68k/lib/Makefile b/arch/m68k/lib/Makefile
index a9d782d34276..fcd8eb1d7c7d 100644
--- a/arch/m68k/lib/Makefile
+++ b/arch/m68k/lib/Makefile
@@ -6,7 +6,7 @@
6lib-y := ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \ 6lib-y := ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \
7 memcpy.o memset.o memmove.o 7 memcpy.o memset.o memmove.o
8 8
9lib-$(CONFIG_MMU) += string.o uaccess.o 9lib-$(CONFIG_MMU) += uaccess.o
10lib-$(CONFIG_CPU_HAS_NO_MULDIV64) += mulsi3.o divsi3.o udivsi3.o 10lib-$(CONFIG_CPU_HAS_NO_MULDIV64) += mulsi3.o divsi3.o udivsi3.o
11lib-$(CONFIG_CPU_HAS_NO_MULDIV64) += modsi3.o umodsi3.o 11lib-$(CONFIG_CPU_HAS_NO_MULDIV64) += modsi3.o umodsi3.o
12 12
diff --git a/arch/m68k/lib/string.c b/arch/m68k/lib/string.c
deleted file mode 100644
index 4d61fa8a112c..000000000000
--- a/arch/m68k/lib/string.c
+++ /dev/null
@@ -1,22 +0,0 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file COPYING in the main directory of this archive
4 * for more details.
5 */
6
7#define __IN_STRING_C
8
9#include <linux/module.h>
10#include <linux/string.h>
11
12char *strcpy(char *dest, const char *src)
13{
14 return __kernel_strcpy(dest, src);
15}
16EXPORT_SYMBOL(strcpy);
17
18char *strcat(char *dest, const char *src)
19{
20 return __kernel_strcpy(dest + strlen(dest), src);
21}
22EXPORT_SYMBOL(strcat);
diff --git a/arch/m68k/lib/uaccess.c b/arch/m68k/lib/uaccess.c
index 5e97f2ee7c11..35d1442dee89 100644
--- a/arch/m68k/lib/uaccess.c
+++ b/arch/m68k/lib/uaccess.c
@@ -52,7 +52,7 @@ unsigned long __generic_copy_from_user(void *to, const void __user *from,
52 " .long 3b,30b\n" 52 " .long 3b,30b\n"
53 " .long 5b,50b\n" 53 " .long 5b,50b\n"
54 " .previous" 54 " .previous"
55 : "=d" (res), "+a" (from), "+a" (to), "=&r" (tmp) 55 : "=d" (res), "+a" (from), "+a" (to), "=&d" (tmp)
56 : "0" (n / 4), "d" (n & 3)); 56 : "0" (n / 4), "d" (n & 3));
57 57
58 return res; 58 return res;
@@ -96,7 +96,7 @@ unsigned long __generic_copy_to_user(void __user *to, const void *from,
96 " .long 7b,50b\n" 96 " .long 7b,50b\n"
97 " .long 8b,50b\n" 97 " .long 8b,50b\n"
98 " .previous" 98 " .previous"
99 : "=d" (res), "+a" (from), "+a" (to), "=&r" (tmp) 99 : "=d" (res), "+a" (from), "+a" (to), "=&d" (tmp)
100 : "0" (n / 4), "d" (n & 3)); 100 : "0" (n / 4), "d" (n & 3));
101 101
102 return res; 102 return res;
@@ -141,7 +141,7 @@ unsigned long __clear_user(void __user *to, unsigned long n)
141 " .long 7b,40b\n" 141 " .long 7b,40b\n"
142 " .previous" 142 " .previous"
143 : "=d" (res), "+a" (to) 143 : "=d" (res), "+a" (to)
144 : "r" (0), "0" (n / 4), "d" (n & 3)); 144 : "d" (0), "0" (n / 4), "d" (n & 3));
145 145
146 return res; 146 return res;
147} 147}
diff --git a/arch/m68k/math-emu/fp_arith.c b/arch/m68k/math-emu/fp_arith.c
index 08f286db3c5a..239eb1990184 100644
--- a/arch/m68k/math-emu/fp_arith.c
+++ b/arch/m68k/math-emu/fp_arith.c
@@ -519,7 +519,7 @@ static void fp_roundint(struct fp_ext *dest, int mode)
519 return; 519 return;
520 break; 520 break;
521 case 0x401e: 521 case 0x401e:
522 if (!(oldmant.m32[1] >= 0)) 522 if (oldmant.m32[1] & 0x80000000)
523 return; 523 return;
524 if (oldmant.m32[0] & 1) 524 if (oldmant.m32[0] & 1)
525 break; 525 break;
diff --git a/arch/m68k/sun3/sun3dvma.c b/arch/m68k/sun3/sun3dvma.c
index ca0966cac72a..cab54482ca34 100644
--- a/arch/m68k/sun3/sun3dvma.c
+++ b/arch/m68k/sun3/sun3dvma.c
@@ -275,7 +275,7 @@ void dvma_init(void)
275 275
276} 276}
277 277
278inline unsigned long dvma_map_align(unsigned long kaddr, int len, int align) 278unsigned long dvma_map_align(unsigned long kaddr, int len, int align)
279{ 279{
280 280
281 unsigned long baddr; 281 unsigned long baddr;
diff --git a/drivers/block/swim.c b/drivers/block/swim.c
index 2f445b7a174e..8ed6ccb748cf 100644
--- a/drivers/block/swim.c
+++ b/drivers/block/swim.c
@@ -893,7 +893,7 @@ static int swim_probe(struct platform_device *dev)
893 893
894 swim_base = ioremap(res->start, resource_size(res)); 894 swim_base = ioremap(res->start, resource_size(res));
895 if (!swim_base) { 895 if (!swim_base) {
896 return -ENOMEM; 896 ret = -ENOMEM;
897 goto out_release_io; 897 goto out_release_io;
898 } 898 }
899 899
diff --git a/drivers/scsi/a3000.c b/drivers/scsi/a3000.c
index c487916a9d45..c0f4f4290dd6 100644
--- a/drivers/scsi/a3000.c
+++ b/drivers/scsi/a3000.c
@@ -280,18 +280,7 @@ static struct platform_driver amiga_a3000_scsi_driver = {
280 }, 280 },
281}; 281};
282 282
283static int __init amiga_a3000_scsi_init(void) 283module_platform_driver_probe(amiga_a3000_scsi_driver, amiga_a3000_scsi_probe);
284{
285 return platform_driver_probe(&amiga_a3000_scsi_driver,
286 amiga_a3000_scsi_probe);
287}
288module_init(amiga_a3000_scsi_init);
289
290static void __exit amiga_a3000_scsi_exit(void)
291{
292 platform_driver_unregister(&amiga_a3000_scsi_driver);
293}
294module_exit(amiga_a3000_scsi_exit);
295 284
296MODULE_DESCRIPTION("Amiga 3000 built-in SCSI"); 285MODULE_DESCRIPTION("Amiga 3000 built-in SCSI");
297MODULE_LICENSE("GPL"); 286MODULE_LICENSE("GPL");
diff --git a/drivers/scsi/a4000t.c b/drivers/scsi/a4000t.c
index 23c76f41883c..70c521f79f7c 100644
--- a/drivers/scsi/a4000t.c
+++ b/drivers/scsi/a4000t.c
@@ -116,20 +116,7 @@ static struct platform_driver amiga_a4000t_scsi_driver = {
116 }, 116 },
117}; 117};
118 118
119static int __init amiga_a4000t_scsi_init(void) 119module_platform_driver_probe(amiga_a4000t_scsi_driver, amiga_a4000t_scsi_probe);
120{
121 return platform_driver_probe(&amiga_a4000t_scsi_driver,
122 amiga_a4000t_scsi_probe);
123}
124
125module_init(amiga_a4000t_scsi_init);
126
127static void __exit amiga_a4000t_scsi_exit(void)
128{
129 platform_driver_unregister(&amiga_a4000t_scsi_driver);
130}
131
132module_exit(amiga_a4000t_scsi_exit);
133 120
134MODULE_AUTHOR("Alan Hourihane <alanh@fairlite.demon.co.uk> / " 121MODULE_AUTHOR("Alan Hourihane <alanh@fairlite.demon.co.uk> / "
135 "Kars de Jong <jongk@linux-m68k.org>"); 122 "Kars de Jong <jongk@linux-m68k.org>");