Commit 0e97456ab5ba2761892d9e67b7e3b0cac262141c
Exists in
smarc-imx_3.14.28_1.0.0_ga
and in
1 other branch
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
Showing 15 changed files Side-by-side Diff
- arch/m68k/Kconfig.debug
- arch/m68k/configs/multi_defconfig
- arch/m68k/configs/q40_defconfig
- arch/m68k/include/asm/parport.h
- arch/m68k/include/asm/string.h
- arch/m68k/include/asm/uaccess_mm.h
- arch/m68k/kernel/ints.c
- arch/m68k/lib/Makefile
- arch/m68k/lib/string.c
- arch/m68k/lib/uaccess.c
- arch/m68k/math-emu/fp_arith.c
- arch/m68k/sun3/sun3dvma.c
- drivers/block/swim.c
- drivers/scsi/a3000.c
- drivers/scsi/a4000t.c
arch/m68k/Kconfig.debug
arch/m68k/configs/multi_defconfig
... | ... | @@ -214,6 +214,7 @@ |
214 | 214 | # CONFIG_FW_LOADER_USER_HELPER is not set |
215 | 215 | CONFIG_CONNECTOR=m |
216 | 216 | CONFIG_PARPORT=m |
217 | +CONFIG_PARPORT_PC=m | |
217 | 218 | CONFIG_PARPORT_AMIGA=m |
218 | 219 | CONFIG_PARPORT_MFC3=m |
219 | 220 | CONFIG_PARPORT_ATARI=m |
... | ... | @@ -325,6 +326,7 @@ |
325 | 326 | # CONFIG_NET_VENDOR_SEEQ is not set |
326 | 327 | # CONFIG_NET_VENDOR_STMICRO is not set |
327 | 328 | # CONFIG_NET_VENDOR_WIZNET is not set |
329 | +CONFIG_PLIP=m | |
328 | 330 | CONFIG_PPP=m |
329 | 331 | CONFIG_PPP_BSDCOMP=m |
330 | 332 | CONFIG_PPP_DEFLATE=m |
arch/m68k/configs/q40_defconfig
... | ... | @@ -199,6 +199,9 @@ |
199 | 199 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
200 | 200 | # CONFIG_FW_LOADER_USER_HELPER is not set |
201 | 201 | CONFIG_CONNECTOR=m |
202 | +CONFIG_PARPORT=m | |
203 | +CONFIG_PARPORT_PC=m | |
204 | +CONFIG_PARPORT_1284=y | |
202 | 205 | CONFIG_BLK_DEV_LOOP=y |
203 | 206 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
204 | 207 | CONFIG_BLK_DEV_DRBD=m |
... | ... | @@ -267,6 +270,7 @@ |
267 | 270 | # CONFIG_NET_VENDOR_SMSC is not set |
268 | 271 | # CONFIG_NET_VENDOR_STMICRO is not set |
269 | 272 | # CONFIG_NET_VENDOR_WIZNET is not set |
273 | +CONFIG_PLIP=m | |
270 | 274 | CONFIG_PPP=m |
271 | 275 | CONFIG_PPP_BSDCOMP=m |
272 | 276 | CONFIG_PPP_DEFLATE=m |
273 | 277 | |
... | ... | @@ -292,9 +296,11 @@ |
292 | 296 | CONFIG_VT_HW_CONSOLE_BINDING=y |
293 | 297 | # CONFIG_LEGACY_PTYS is not set |
294 | 298 | # CONFIG_DEVKMEM is not set |
299 | +CONFIG_PRINTER=m | |
295 | 300 | # CONFIG_HW_RANDOM is not set |
296 | 301 | CONFIG_NTP_PPS=y |
297 | 302 | CONFIG_PPS_CLIENT_LDISC=m |
303 | +CONFIG_PPS_CLIENT_PARPORT=m | |
298 | 304 | CONFIG_PTP_1588_CLOCK=m |
299 | 305 | # CONFIG_HWMON is not set |
300 | 306 | CONFIG_FB=y |
arch/m68k/include/asm/parport.h
arch/m68k/include/asm/string.h
... | ... | @@ -4,20 +4,6 @@ |
4 | 4 | #include <linux/types.h> |
5 | 5 | #include <linux/compiler.h> |
6 | 6 | |
7 | -static 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 | 7 | #define __HAVE_ARCH_STRNLEN |
22 | 8 | static inline size_t strnlen(const char *s, size_t count) |
23 | 9 | { |
... | ... | @@ -34,16 +20,6 @@ |
34 | 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 | 23 | #define __HAVE_ARCH_STRNCPY |
48 | 24 | static inline char *strncpy(char *dest, const char *src, size_t n) |
49 | 25 | { |
... | ... | @@ -61,12 +37,6 @@ |
61 | 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 | 40 | #ifndef CONFIG_COLDFIRE |
71 | 41 | #define __HAVE_ARCH_STRCMP |
72 | 42 | static inline int strcmp(const char *cs, const char *ct) |
... | ... | @@ -99,8 +69,6 @@ |
99 | 69 | #define __HAVE_ARCH_MEMCPY |
100 | 70 | extern void *memcpy(void *, const void *, __kernel_size_t); |
101 | 71 | #define memcpy(d, s, n) __builtin_memcpy(d, s, n) |
102 | - | |
103 | -#endif | |
104 | 72 | |
105 | 73 | #endif /* _M68K_STRING_H_ */ |
arch/m68k/include/asm/uaccess_mm.h
... | ... | @@ -90,7 +90,7 @@ |
90 | 90 | __put_user_asm(__pu_err, __pu_val, ptr, b, d, -EFAULT); \ |
91 | 91 | break; \ |
92 | 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 | 94 | break; \ |
95 | 95 | case 4: \ |
96 | 96 | __put_user_asm(__pu_err, __pu_val, ptr, l, r, -EFAULT); \ |
... | ... | @@ -158,7 +158,7 @@ |
158 | 158 | __get_user_asm(__gu_err, x, ptr, u8, b, d, -EFAULT); \ |
159 | 159 | break; \ |
160 | 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 | 162 | break; \ |
163 | 163 | case 4: \ |
164 | 164 | __get_user_asm(__gu_err, x, ptr, u32, l, r, -EFAULT); \ |
... | ... | @@ -245,7 +245,7 @@ |
245 | 245 | __get_user_asm(res, *(u8 *)to, (u8 __user *)from, u8, b, d, 1); |
246 | 246 | break; |
247 | 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 | 249 | break; |
250 | 250 | case 3: |
251 | 251 | __constant_copy_from_user_asm(res, to, from, tmp, 3, w, b,); |
... | ... | @@ -326,7 +326,7 @@ |
326 | 326 | __put_user_asm(res, *(u8 *)from, (u8 __user *)to, b, d, 1); |
327 | 327 | break; |
328 | 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 | 330 | break; |
331 | 331 | case 3: |
332 | 332 | __constant_copy_to_user_asm(res, to, from, tmp, 3, w, b,); |
arch/m68k/kernel/ints.c
... | ... | @@ -101,7 +101,7 @@ |
101 | 101 | BUG_ON(IRQ_USER + cnt > NR_IRQS); |
102 | 102 | m68k_first_user_vec = vec; |
103 | 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 | 105 | *user_irqvec_fixup = vec - IRQ_USER; |
106 | 106 | flush_icache(); |
107 | 107 | } |
arch/m68k/lib/Makefile
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | lib-y := ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \ |
7 | 7 | memcpy.o memset.o memmove.o |
8 | 8 | |
9 | -lib-$(CONFIG_MMU) += string.o uaccess.o | |
9 | +lib-$(CONFIG_MMU) += uaccess.o | |
10 | 10 | lib-$(CONFIG_CPU_HAS_NO_MULDIV64) += mulsi3.o divsi3.o udivsi3.o |
11 | 11 | lib-$(CONFIG_CPU_HAS_NO_MULDIV64) += modsi3.o umodsi3.o |
12 | 12 |
arch/m68k/lib/string.c
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 | - | |
12 | -char *strcpy(char *dest, const char *src) | |
13 | -{ | |
14 | - return __kernel_strcpy(dest, src); | |
15 | -} | |
16 | -EXPORT_SYMBOL(strcpy); | |
17 | - | |
18 | -char *strcat(char *dest, const char *src) | |
19 | -{ | |
20 | - return __kernel_strcpy(dest + strlen(dest), src); | |
21 | -} | |
22 | -EXPORT_SYMBOL(strcat); |
arch/m68k/lib/uaccess.c
... | ... | @@ -52,7 +52,7 @@ |
52 | 52 | " .long 3b,30b\n" |
53 | 53 | " .long 5b,50b\n" |
54 | 54 | " .previous" |
55 | - : "=d" (res), "+a" (from), "+a" (to), "=&r" (tmp) | |
55 | + : "=d" (res), "+a" (from), "+a" (to), "=&d" (tmp) | |
56 | 56 | : "0" (n / 4), "d" (n & 3)); |
57 | 57 | |
58 | 58 | return res; |
... | ... | @@ -96,7 +96,7 @@ |
96 | 96 | " .long 7b,50b\n" |
97 | 97 | " .long 8b,50b\n" |
98 | 98 | " .previous" |
99 | - : "=d" (res), "+a" (from), "+a" (to), "=&r" (tmp) | |
99 | + : "=d" (res), "+a" (from), "+a" (to), "=&d" (tmp) | |
100 | 100 | : "0" (n / 4), "d" (n & 3)); |
101 | 101 | |
102 | 102 | return res; |
... | ... | @@ -141,7 +141,7 @@ |
141 | 141 | " .long 7b,40b\n" |
142 | 142 | " .previous" |
143 | 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 | 146 | return res; |
147 | 147 | } |
arch/m68k/math-emu/fp_arith.c
arch/m68k/sun3/sun3dvma.c
drivers/block/swim.c
drivers/scsi/a3000.c
... | ... | @@ -280,18 +280,7 @@ |
280 | 280 | }, |
281 | 281 | }; |
282 | 282 | |
283 | -static int __init amiga_a3000_scsi_init(void) | |
284 | -{ | |
285 | - return platform_driver_probe(&amiga_a3000_scsi_driver, | |
286 | - amiga_a3000_scsi_probe); | |
287 | -} | |
288 | -module_init(amiga_a3000_scsi_init); | |
289 | - | |
290 | -static void __exit amiga_a3000_scsi_exit(void) | |
291 | -{ | |
292 | - platform_driver_unregister(&amiga_a3000_scsi_driver); | |
293 | -} | |
294 | -module_exit(amiga_a3000_scsi_exit); | |
283 | +module_platform_driver_probe(amiga_a3000_scsi_driver, amiga_a3000_scsi_probe); | |
295 | 284 | |
296 | 285 | MODULE_DESCRIPTION("Amiga 3000 built-in SCSI"); |
297 | 286 | MODULE_LICENSE("GPL"); |
drivers/scsi/a4000t.c
... | ... | @@ -116,20 +116,7 @@ |
116 | 116 | }, |
117 | 117 | }; |
118 | 118 | |
119 | -static int __init amiga_a4000t_scsi_init(void) | |
120 | -{ | |
121 | - return platform_driver_probe(&amiga_a4000t_scsi_driver, | |
122 | - amiga_a4000t_scsi_probe); | |
123 | -} | |
124 | - | |
125 | -module_init(amiga_a4000t_scsi_init); | |
126 | - | |
127 | -static void __exit amiga_a4000t_scsi_exit(void) | |
128 | -{ | |
129 | - platform_driver_unregister(&amiga_a4000t_scsi_driver); | |
130 | -} | |
131 | - | |
132 | -module_exit(amiga_a4000t_scsi_exit); | |
119 | +module_platform_driver_probe(amiga_a4000t_scsi_driver, amiga_a4000t_scsi_probe); | |
133 | 120 | |
134 | 121 | MODULE_AUTHOR("Alan Hourihane <alanh@fairlite.demon.co.uk> / " |
135 | 122 | "Kars de Jong <jongk@linux-m68k.org>"); |