Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
m68knommu: set flow handler for secondary interrupt controller of 5249
m68knommu: remove use of IRQ_FLG_LOCK from 68360 platform support
m68knommu: fix dereference of port.tty
m68knommu: add missing linker __modver section
m68knommu: fix mis-named variable int set_irq_chip loop
m68knommu: add optimize memmove() function
m68k: remove arch specific non-optimized memcmp()
m68knommu: fix use of un-defined _TIF_WORK_MASK
m68knommu: Rename m548x_wdt.c to m54xx_wdt.c
m68knommu: fix m548x_wdt.c compilation after headers renaming
m68knommu: Remove dependencies on nonexistent M68KNOMMU

+165 -69
+1 -3
arch/m68k/include/asm/string.h
··· 99 99 : "+a" (cs), "+a" (ct), "=d" (res)); 100 100 return res; 101 101 } 102 + #endif /* CONFIG_COLDFIRE */ 102 103 103 104 #define __HAVE_ARCH_MEMMOVE 104 105 extern void *memmove(void *, const void *, __kernel_size_t); 105 106 106 - #define __HAVE_ARCH_MEMCMP 107 - extern int memcmp(const void *, const void *, __kernel_size_t); 108 107 #define memcmp(d, s, n) __builtin_memcmp(d, s, n) 109 - #endif /* CONFIG_COLDFIRE */ 110 108 111 109 #define __HAVE_ARCH_MEMSET 112 110 extern void *memset(void *, int, __kernel_size_t);
-11
arch/m68k/lib/string.c
··· 243 243 return xdest; 244 244 } 245 245 EXPORT_SYMBOL(memmove); 246 - 247 - int memcmp(const void *cs, const void *ct, size_t count) 248 - { 249 - const unsigned char *su1, *su2; 250 - 251 - for (su1 = cs, su2 = ct; count > 0; ++su1, ++su2, count--) 252 - if (*su1 != *su2) 253 - return *su1 < *su2 ? -1 : +1; 254 - return 0; 255 - } 256 - EXPORT_SYMBOL(memcmp);
+6
arch/m68knommu/kernel/vmlinux.lds.S
··· 141 141 *(__param) 142 142 __stop___param = .; 143 143 144 + /* Built-in module versions */ 145 + . = ALIGN(4) ; 146 + __start___modver = .; 147 + *(__modver) 148 + __stop___modver = .; 149 + 144 150 . = ALIGN(4) ; 145 151 _etext = . ; 146 152 } > TEXT
+1 -1
arch/m68knommu/lib/Makefile
··· 4 4 5 5 lib-y := ashldi3.o ashrdi3.o lshrdi3.o \ 6 6 muldi3.o mulsi3.o divsi3.o udivsi3.o modsi3.o umodsi3.o \ 7 - checksum.o memcpy.o memset.o delay.o 7 + checksum.o memcpy.o memmove.o memset.o delay.o
+105
arch/m68knommu/lib/memmove.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 + void *memmove(void *dest, const void *src, size_t n) 13 + { 14 + void *xdest = dest; 15 + size_t temp; 16 + 17 + if (!n) 18 + return xdest; 19 + 20 + if (dest < src) { 21 + if ((long)dest & 1) { 22 + char *cdest = dest; 23 + const char *csrc = src; 24 + *cdest++ = *csrc++; 25 + dest = cdest; 26 + src = csrc; 27 + n--; 28 + } 29 + if (n > 2 && (long)dest & 2) { 30 + short *sdest = dest; 31 + const short *ssrc = src; 32 + *sdest++ = *ssrc++; 33 + dest = sdest; 34 + src = ssrc; 35 + n -= 2; 36 + } 37 + temp = n >> 2; 38 + if (temp) { 39 + long *ldest = dest; 40 + const long *lsrc = src; 41 + temp--; 42 + do 43 + *ldest++ = *lsrc++; 44 + while (temp--); 45 + dest = ldest; 46 + src = lsrc; 47 + } 48 + if (n & 2) { 49 + short *sdest = dest; 50 + const short *ssrc = src; 51 + *sdest++ = *ssrc++; 52 + dest = sdest; 53 + src = ssrc; 54 + } 55 + if (n & 1) { 56 + char *cdest = dest; 57 + const char *csrc = src; 58 + *cdest = *csrc; 59 + } 60 + } else { 61 + dest = (char *)dest + n; 62 + src = (const char *)src + n; 63 + if ((long)dest & 1) { 64 + char *cdest = dest; 65 + const char *csrc = src; 66 + *--cdest = *--csrc; 67 + dest = cdest; 68 + src = csrc; 69 + n--; 70 + } 71 + if (n > 2 && (long)dest & 2) { 72 + short *sdest = dest; 73 + const short *ssrc = src; 74 + *--sdest = *--ssrc; 75 + dest = sdest; 76 + src = ssrc; 77 + n -= 2; 78 + } 79 + temp = n >> 2; 80 + if (temp) { 81 + long *ldest = dest; 82 + const long *lsrc = src; 83 + temp--; 84 + do 85 + *--ldest = *--lsrc; 86 + while (temp--); 87 + dest = ldest; 88 + src = lsrc; 89 + } 90 + if (n & 2) { 91 + short *sdest = dest; 92 + const short *ssrc = src; 93 + *--sdest = *--ssrc; 94 + dest = sdest; 95 + src = ssrc; 96 + } 97 + if (n & 1) { 98 + char *cdest = dest; 99 + const char *csrc = src; 100 + *--cdest = *--csrc; 101 + } 102 + } 103 + return xdest; 104 + } 105 + EXPORT_SYMBOL(memmove);
+3 -1
arch/m68knommu/platform/5249/intc2.c
··· 50 50 int irq; 51 51 52 52 /* GPIO interrupt sources */ 53 - for (irq = MCFINTC2_GPIOIRQ0; (irq <= MCFINTC2_GPIOIRQ7); irq++) 53 + for (irq = MCFINTC2_GPIOIRQ0; (irq <= MCFINTC2_GPIOIRQ7); irq++) { 54 54 irq_desc[irq].chip = &intc2_irq_gpio_chip; 55 + set_irq_handler(irq, handle_edge_irq); 56 + } 55 57 56 58 return 0; 57 59 }
-1
arch/m68knommu/platform/68328/entry.S
··· 108 108 movel %d1,%a2 109 109 1: 110 110 move %a2@(TI_FLAGS),%d1 /* thread_info->flags */ 111 - andl #_TIF_WORK_MASK,%d1 112 111 jne Lwork_to_do 113 112 RESTORE_ALL 114 113
+1 -1
arch/m68knommu/platform/68360/commproc.c
··· 210 210 cpm_install_handler(int vec, void (*handler)(), void *dev_id) 211 211 { 212 212 213 - request_irq(vec, handler, IRQ_FLG_LOCK, "timer", dev_id); 213 + request_irq(vec, handler, 0, "timer", dev_id); 214 214 215 215 /* if (cpm_vecs[vec].handler != 0) */ 216 216 /* printk(KERN_INFO "CPM interrupt %x replacing %x\n", */
+1 -1
arch/m68knommu/platform/68360/config.c
··· 75 75 /* Set compare register 32Khz / 32 / 10 = 100 */ 76 76 TCMP = 10; 77 77 78 - request_irq(IRQ_MACHSPEC | 1, timer_routine, IRQ_FLG_LOCK, "timer", NULL); 78 + request_irq(IRQ_MACHSPEC | 1, timer_routine, 0, "timer", NULL); 79 79 #endif 80 80 81 81 /* General purpose quicc timers: MC68360UM p7-20 */
-1
arch/m68knommu/platform/68360/entry.S
··· 104 104 movel %d1,%a2 105 105 1: 106 106 move %a2@(TI_FLAGS),%d1 /* thread_info->flags */ 107 - andl #_TIF_WORK_MASK,%d1 108 107 jne Lwork_to_do 109 108 RESTORE_ALL 110 109
+2 -2
arch/m68knommu/platform/68360/ints.c
··· 132 132 pquicc->intr_cimr = 0x00000000; 133 133 134 134 for (i = 0; (i < NR_IRQS); i++) { 135 - set_irq_chip(irq, &intc_irq_chip); 136 - set_irq_handler(irq, handle_level_irq); 135 + set_irq_chip(i, &intc_irq_chip); 136 + set_irq_handler(i, handle_level_irq); 137 137 } 138 138 } 139 139
-1
arch/m68knommu/platform/coldfire/entry.S
··· 138 138 andl #-THREAD_SIZE,%d1 /* at base of kernel stack */ 139 139 movel %d1,%a0 140 140 movel %a0@(TI_FLAGS),%d1 /* get thread_info->flags */ 141 - andl #0xefff,%d1 142 141 jne Lwork_to_do /* still work to do */ 143 142 144 143 Lreturn:
+1 -1
drivers/net/can/mscan/Kconfig
··· 1 1 config CAN_MSCAN 2 - depends on CAN_DEV && (PPC || M68K || M68KNOMMU) 2 + depends on CAN_DEV && (PPC || M68K) 3 3 tristate "Support for Freescale MSCAN based chips" 4 4 ---help--- 5 5 The Motorola Scalable Controller Area Network (MSCAN) definition
+14 -15
drivers/tty/serial/68328serial.c
··· 262 262 263 263 static void receive_chars(struct m68k_serial *info, unsigned short rx) 264 264 { 265 - struct tty_struct *tty = info->port.tty; 265 + struct tty_struct *tty = info->tty; 266 266 m68328_uart *uart = &uart_addr[info->line]; 267 267 unsigned char ch, flag; 268 268 ··· 329 329 goto clear_and_return; 330 330 } 331 331 332 - if((info->xmit_cnt <= 0) || info->port.tty->stopped) { 332 + if((info->xmit_cnt <= 0) || info->tty->stopped) { 333 333 /* That's peculiar... TX ints off */ 334 334 uart->ustcnt &= ~USTCNT_TX_INTR_MASK; 335 335 goto clear_and_return; ··· 383 383 struct m68k_serial *info = container_of(work, struct m68k_serial, tqueue); 384 384 struct tty_struct *tty; 385 385 386 - tty = info->port.tty; 386 + tty = info->tty; 387 387 if (!tty) 388 388 return; 389 389 #if 0 ··· 407 407 struct m68k_serial *info = container_of(work, struct m68k_serial, tqueue_hangup); 408 408 struct tty_struct *tty; 409 409 410 - tty = info->port.tty; 410 + tty = info->tty; 411 411 if (!tty) 412 412 return; 413 413 ··· 451 451 uart->ustcnt = USTCNT_UEN | USTCNT_RXEN | USTCNT_RX_INTR_MASK; 452 452 #endif 453 453 454 - if (info->port.tty) 455 - clear_bit(TTY_IO_ERROR, &info->port.tty->flags); 454 + if (info->tty) 455 + clear_bit(TTY_IO_ERROR, &info->tty->flags); 456 456 info->xmit_cnt = info->xmit_head = info->xmit_tail = 0; 457 457 458 458 /* ··· 486 486 info->xmit_buf = 0; 487 487 } 488 488 489 - if (info->port.tty) 490 - set_bit(TTY_IO_ERROR, &info->port.tty->flags); 489 + if (info->tty) 490 + set_bit(TTY_IO_ERROR, &info->tty->flags); 491 491 492 492 info->flags &= ~S_INITIALIZED; 493 493 local_irq_restore(flags); ··· 553 553 unsigned cflag; 554 554 int i; 555 555 556 - if (!info->port.tty || !info->port.tty->termios) 556 + if (!info->tty || !info->tty->termios) 557 557 return; 558 - cflag = info->port.tty->termios->c_cflag; 558 + cflag = info->tty->termios->c_cflag; 559 559 if (!(port = info->port)) 560 560 return; 561 561 ··· 970 970 static int rs_ioctl(struct tty_struct *tty, struct file * file, 971 971 unsigned int cmd, unsigned long arg) 972 972 { 973 - int error; 974 973 struct m68k_serial * info = (struct m68k_serial *)tty->driver_data; 975 974 int retval; 976 975 ··· 1103 1104 tty_ldisc_flush(tty); 1104 1105 tty->closing = 0; 1105 1106 info->event = 0; 1106 - info->port.tty = NULL; 1107 + info->tty = NULL; 1107 1108 #warning "This is not and has never been valid so fix it" 1108 1109 #if 0 1109 1110 if (tty->ldisc.num != ldiscs[N_TTY].num) { ··· 1141 1142 info->event = 0; 1142 1143 info->count = 0; 1143 1144 info->flags &= ~S_NORMAL_ACTIVE; 1144 - info->port.tty = NULL; 1145 + info->tty = NULL; 1145 1146 wake_up_interruptible(&info->open_wait); 1146 1147 } 1147 1148 ··· 1260 1261 1261 1262 info->count++; 1262 1263 tty->driver_data = info; 1263 - info->port.tty = tty; 1264 + info->tty = tty; 1264 1265 1265 1266 /* 1266 1267 * Start up serial port ··· 1337 1338 info = &m68k_soft[i]; 1338 1339 info->magic = SERIAL_MAGIC; 1339 1340 info->port = (int) &uart_addr[i]; 1340 - info->port.tty = NULL; 1341 + info->tty = NULL; 1341 1342 info->irq = uart_irqs[i]; 1342 1343 info->custom_divisor = 16; 1343 1344 info->close_delay = 50;
+3 -3
drivers/watchdog/Kconfig
··· 862 862 863 863 # M68K Architecture 864 864 865 - config M548x_WATCHDOG 866 - tristate "MCF548x watchdog support" 865 + config M54xx_WATCHDOG 866 + tristate "MCF54xx watchdog support" 867 867 depends on M548x 868 868 help 869 869 To compile this driver as a module, choose M here: the 870 - module will be called m548x_wdt. 870 + module will be called m54xx_wdt. 871 871 872 872 # MIPS Architecture 873 873
+1 -1
drivers/watchdog/Makefile
··· 106 106 # M32R Architecture 107 107 108 108 # M68K Architecture 109 - obj-$(CONFIG_M548x_WATCHDOG) += m548x_wdt.o 109 + obj-$(CONFIG_M54xx_WATCHDOG) += m54xx_wdt.o 110 110 111 111 # MIPS Architecture 112 112 obj-$(CONFIG_ATH79_WDT) += ath79_wdt.o
+25 -25
drivers/watchdog/m548x_wdt.c drivers/watchdog/m54xx_wdt.c
··· 1 1 /* 2 - * drivers/watchdog/m548x_wdt.c 2 + * drivers/watchdog/m54xx_wdt.c 3 3 * 4 - * Watchdog driver for ColdFire MCF548x processors 4 + * Watchdog driver for ColdFire MCF547x & MCF548x processors 5 5 * Copyright 2010 (c) Philippe De Muyter <phdm@macqel.be> 6 6 * 7 7 * Adapted from the IXP4xx watchdog driver, which carries these notices: ··· 29 29 #include <linux/uaccess.h> 30 30 31 31 #include <asm/coldfire.h> 32 - #include <asm/m548xsim.h> 33 - #include <asm/m548xgpt.h> 32 + #include <asm/m54xxsim.h> 33 + #include <asm/m54xxgpt.h> 34 34 35 35 static int nowayout = WATCHDOG_NOWAYOUT; 36 36 static unsigned int heartbeat = 30; /* (secs) Default is 0.5 minute */ ··· 76 76 __raw_writel(gms0, MCF_MBAR + MCF_GPT_GMS0); 77 77 } 78 78 79 - static int m548x_wdt_open(struct inode *inode, struct file *file) 79 + static int m54xx_wdt_open(struct inode *inode, struct file *file) 80 80 { 81 81 if (test_and_set_bit(WDT_IN_USE, &wdt_status)) 82 82 return -EBUSY; ··· 86 86 return nonseekable_open(inode, file); 87 87 } 88 88 89 - static ssize_t m548x_wdt_write(struct file *file, const char *data, 89 + static ssize_t m54xx_wdt_write(struct file *file, const char *data, 90 90 size_t len, loff_t *ppos) 91 91 { 92 92 if (len) { ··· 112 112 static const struct watchdog_info ident = { 113 113 .options = WDIOF_MAGICCLOSE | WDIOF_SETTIMEOUT | 114 114 WDIOF_KEEPALIVEPING, 115 - .identity = "Coldfire M548x Watchdog", 115 + .identity = "Coldfire M54xx Watchdog", 116 116 }; 117 117 118 - static long m548x_wdt_ioctl(struct file *file, unsigned int cmd, 118 + static long m54xx_wdt_ioctl(struct file *file, unsigned int cmd, 119 119 unsigned long arg) 120 120 { 121 121 int ret = -ENOTTY; ··· 161 161 return ret; 162 162 } 163 163 164 - static int m548x_wdt_release(struct inode *inode, struct file *file) 164 + static int m54xx_wdt_release(struct inode *inode, struct file *file) 165 165 { 166 166 if (test_bit(WDT_OK_TO_CLOSE, &wdt_status)) 167 167 wdt_disable(); ··· 177 177 } 178 178 179 179 180 - static const struct file_operations m548x_wdt_fops = { 180 + static const struct file_operations m54xx_wdt_fops = { 181 181 .owner = THIS_MODULE, 182 182 .llseek = no_llseek, 183 - .write = m548x_wdt_write, 184 - .unlocked_ioctl = m548x_wdt_ioctl, 185 - .open = m548x_wdt_open, 186 - .release = m548x_wdt_release, 183 + .write = m54xx_wdt_write, 184 + .unlocked_ioctl = m54xx_wdt_ioctl, 185 + .open = m54xx_wdt_open, 186 + .release = m54xx_wdt_release, 187 187 }; 188 188 189 - static struct miscdevice m548x_wdt_miscdev = { 189 + static struct miscdevice m54xx_wdt_miscdev = { 190 190 .minor = WATCHDOG_MINOR, 191 191 .name = "watchdog", 192 - .fops = &m548x_wdt_fops, 192 + .fops = &m54xx_wdt_fops, 193 193 }; 194 194 195 - static int __init m548x_wdt_init(void) 195 + static int __init m54xx_wdt_init(void) 196 196 { 197 197 if (!request_mem_region(MCF_MBAR + MCF_GPT_GCIR0, 4, 198 - "Coldfire M548x Watchdog")) { 198 + "Coldfire M54xx Watchdog")) { 199 199 printk(KERN_WARNING 200 - "Coldfire M548x Watchdog : I/O region busy\n"); 200 + "Coldfire M54xx Watchdog : I/O region busy\n"); 201 201 return -EBUSY; 202 202 } 203 203 printk(KERN_INFO "ColdFire watchdog driver is loaded.\n"); 204 204 205 - return misc_register(&m548x_wdt_miscdev); 205 + return misc_register(&m54xx_wdt_miscdev); 206 206 } 207 207 208 - static void __exit m548x_wdt_exit(void) 208 + static void __exit m54xx_wdt_exit(void) 209 209 { 210 - misc_deregister(&m548x_wdt_miscdev); 210 + misc_deregister(&m54xx_wdt_miscdev); 211 211 release_mem_region(MCF_MBAR + MCF_GPT_GCIR0, 4); 212 212 } 213 213 214 - module_init(m548x_wdt_init); 215 - module_exit(m548x_wdt_exit); 214 + module_init(m54xx_wdt_init); 215 + module_exit(m54xx_wdt_exit); 216 216 217 217 MODULE_AUTHOR("Philippe De Muyter <phdm@macqel.be>"); 218 - MODULE_DESCRIPTION("Coldfire M548x Watchdog"); 218 + MODULE_DESCRIPTION("Coldfire M54xx Watchdog"); 219 219 220 220 module_param(heartbeat, int, 0); 221 221 MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds (default 30s)");
+1 -1
lib/Kconfig.debug
··· 805 805 config FRAME_POINTER 806 806 bool "Compile the kernel with frame pointers" 807 807 depends on DEBUG_KERNEL && \ 808 - (CRIS || M68K || M68KNOMMU || FRV || UML || \ 808 + (CRIS || M68K || FRV || UML || \ 809 809 AVR32 || SUPERH || BLACKFIN || MN10300) || \ 810 810 ARCH_WANT_FRAME_POINTERS 811 811 default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS