提交 048f039f 编写于 作者: L Linus Torvalds

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
...@@ -99,14 +99,12 @@ static inline int strcmp(const char *cs, const char *ct) ...@@ -99,14 +99,12 @@ static inline int strcmp(const char *cs, const char *ct)
: "+a" (cs), "+a" (ct), "=d" (res)); : "+a" (cs), "+a" (ct), "=d" (res));
return res; return res;
} }
#endif /* CONFIG_COLDFIRE */
#define __HAVE_ARCH_MEMMOVE #define __HAVE_ARCH_MEMMOVE
extern void *memmove(void *, const void *, __kernel_size_t); extern void *memmove(void *, const void *, __kernel_size_t);
#define __HAVE_ARCH_MEMCMP
extern int memcmp(const void *, const void *, __kernel_size_t);
#define memcmp(d, s, n) __builtin_memcmp(d, s, n) #define memcmp(d, s, n) __builtin_memcmp(d, s, n)
#endif /* CONFIG_COLDFIRE */
#define __HAVE_ARCH_MEMSET #define __HAVE_ARCH_MEMSET
extern void *memset(void *, int, __kernel_size_t); extern void *memset(void *, int, __kernel_size_t);
......
...@@ -243,14 +243,3 @@ void *memmove(void *dest, const void *src, size_t n) ...@@ -243,14 +243,3 @@ void *memmove(void *dest, const void *src, size_t n)
return xdest; return xdest;
} }
EXPORT_SYMBOL(memmove); EXPORT_SYMBOL(memmove);
int memcmp(const void *cs, const void *ct, size_t count)
{
const unsigned char *su1, *su2;
for (su1 = cs, su2 = ct; count > 0; ++su1, ++su2, count--)
if (*su1 != *su2)
return *su1 < *su2 ? -1 : +1;
return 0;
}
EXPORT_SYMBOL(memcmp);
...@@ -141,6 +141,12 @@ SECTIONS { ...@@ -141,6 +141,12 @@ SECTIONS {
*(__param) *(__param)
__stop___param = .; __stop___param = .;
/* Built-in module versions */
. = ALIGN(4) ;
__start___modver = .;
*(__modver)
__stop___modver = .;
. = ALIGN(4) ; . = ALIGN(4) ;
_etext = . ; _etext = . ;
} > TEXT } > TEXT
......
...@@ -4,4 +4,4 @@ ...@@ -4,4 +4,4 @@
lib-y := ashldi3.o ashrdi3.o lshrdi3.o \ lib-y := ashldi3.o ashrdi3.o lshrdi3.o \
muldi3.o mulsi3.o divsi3.o udivsi3.o modsi3.o umodsi3.o \ muldi3.o mulsi3.o divsi3.o udivsi3.o modsi3.o umodsi3.o \
checksum.o memcpy.o memset.o delay.o checksum.o memcpy.o memmove.o memset.o delay.o
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file COPYING in the main directory of this archive
* for more details.
*/
#define __IN_STRING_C
#include <linux/module.h>
#include <linux/string.h>
void *memmove(void *dest, const void *src, size_t n)
{
void *xdest = dest;
size_t temp;
if (!n)
return xdest;
if (dest < src) {
if ((long)dest & 1) {
char *cdest = dest;
const char *csrc = src;
*cdest++ = *csrc++;
dest = cdest;
src = csrc;
n--;
}
if (n > 2 && (long)dest & 2) {
short *sdest = dest;
const short *ssrc = src;
*sdest++ = *ssrc++;
dest = sdest;
src = ssrc;
n -= 2;
}
temp = n >> 2;
if (temp) {
long *ldest = dest;
const long *lsrc = src;
temp--;
do
*ldest++ = *lsrc++;
while (temp--);
dest = ldest;
src = lsrc;
}
if (n & 2) {
short *sdest = dest;
const short *ssrc = src;
*sdest++ = *ssrc++;
dest = sdest;
src = ssrc;
}
if (n & 1) {
char *cdest = dest;
const char *csrc = src;
*cdest = *csrc;
}
} else {
dest = (char *)dest + n;
src = (const char *)src + n;
if ((long)dest & 1) {
char *cdest = dest;
const char *csrc = src;
*--cdest = *--csrc;
dest = cdest;
src = csrc;
n--;
}
if (n > 2 && (long)dest & 2) {
short *sdest = dest;
const short *ssrc = src;
*--sdest = *--ssrc;
dest = sdest;
src = ssrc;
n -= 2;
}
temp = n >> 2;
if (temp) {
long *ldest = dest;
const long *lsrc = src;
temp--;
do
*--ldest = *--lsrc;
while (temp--);
dest = ldest;
src = lsrc;
}
if (n & 2) {
short *sdest = dest;
const short *ssrc = src;
*--sdest = *--ssrc;
dest = sdest;
src = ssrc;
}
if (n & 1) {
char *cdest = dest;
const char *csrc = src;
*--cdest = *--csrc;
}
}
return xdest;
}
EXPORT_SYMBOL(memmove);
...@@ -50,8 +50,10 @@ static int __init mcf_intc2_init(void) ...@@ -50,8 +50,10 @@ static int __init mcf_intc2_init(void)
int irq; int irq;
/* GPIO interrupt sources */ /* GPIO interrupt sources */
for (irq = MCFINTC2_GPIOIRQ0; (irq <= MCFINTC2_GPIOIRQ7); irq++) for (irq = MCFINTC2_GPIOIRQ0; (irq <= MCFINTC2_GPIOIRQ7); irq++) {
irq_desc[irq].chip = &intc2_irq_gpio_chip; irq_desc[irq].chip = &intc2_irq_gpio_chip;
set_irq_handler(irq, handle_edge_irq);
}
return 0; return 0;
} }
......
...@@ -108,7 +108,6 @@ Luser_return: ...@@ -108,7 +108,6 @@ Luser_return:
movel %d1,%a2 movel %d1,%a2
1: 1:
move %a2@(TI_FLAGS),%d1 /* thread_info->flags */ move %a2@(TI_FLAGS),%d1 /* thread_info->flags */
andl #_TIF_WORK_MASK,%d1
jne Lwork_to_do jne Lwork_to_do
RESTORE_ALL RESTORE_ALL
......
...@@ -210,7 +210,7 @@ void ...@@ -210,7 +210,7 @@ void
cpm_install_handler(int vec, void (*handler)(), void *dev_id) cpm_install_handler(int vec, void (*handler)(), void *dev_id)
{ {
request_irq(vec, handler, IRQ_FLG_LOCK, "timer", dev_id); request_irq(vec, handler, 0, "timer", dev_id);
/* if (cpm_vecs[vec].handler != 0) */ /* if (cpm_vecs[vec].handler != 0) */
/* printk(KERN_INFO "CPM interrupt %x replacing %x\n", */ /* printk(KERN_INFO "CPM interrupt %x replacing %x\n", */
......
...@@ -75,7 +75,7 @@ void hw_timer_init(void) ...@@ -75,7 +75,7 @@ void hw_timer_init(void)
/* Set compare register 32Khz / 32 / 10 = 100 */ /* Set compare register 32Khz / 32 / 10 = 100 */
TCMP = 10; TCMP = 10;
request_irq(IRQ_MACHSPEC | 1, timer_routine, IRQ_FLG_LOCK, "timer", NULL); request_irq(IRQ_MACHSPEC | 1, timer_routine, 0, "timer", NULL);
#endif #endif
/* General purpose quicc timers: MC68360UM p7-20 */ /* General purpose quicc timers: MC68360UM p7-20 */
......
...@@ -104,7 +104,6 @@ Luser_return: ...@@ -104,7 +104,6 @@ Luser_return:
movel %d1,%a2 movel %d1,%a2
1: 1:
move %a2@(TI_FLAGS),%d1 /* thread_info->flags */ move %a2@(TI_FLAGS),%d1 /* thread_info->flags */
andl #_TIF_WORK_MASK,%d1
jne Lwork_to_do jne Lwork_to_do
RESTORE_ALL RESTORE_ALL
......
...@@ -132,8 +132,8 @@ void init_IRQ(void) ...@@ -132,8 +132,8 @@ void init_IRQ(void)
pquicc->intr_cimr = 0x00000000; pquicc->intr_cimr = 0x00000000;
for (i = 0; (i < NR_IRQS); i++) { for (i = 0; (i < NR_IRQS); i++) {
set_irq_chip(irq, &intc_irq_chip); set_irq_chip(i, &intc_irq_chip);
set_irq_handler(irq, handle_level_irq); set_irq_handler(i, handle_level_irq);
} }
} }
...@@ -138,7 +138,6 @@ Luser_return: ...@@ -138,7 +138,6 @@ Luser_return:
andl #-THREAD_SIZE,%d1 /* at base of kernel stack */ andl #-THREAD_SIZE,%d1 /* at base of kernel stack */
movel %d1,%a0 movel %d1,%a0
movel %a0@(TI_FLAGS),%d1 /* get thread_info->flags */ movel %a0@(TI_FLAGS),%d1 /* get thread_info->flags */
andl #0xefff,%d1
jne Lwork_to_do /* still work to do */ jne Lwork_to_do /* still work to do */
Lreturn: Lreturn:
......
config CAN_MSCAN config CAN_MSCAN
depends on CAN_DEV && (PPC || M68K || M68KNOMMU) depends on CAN_DEV && (PPC || M68K)
tristate "Support for Freescale MSCAN based chips" tristate "Support for Freescale MSCAN based chips"
---help--- ---help---
The Motorola Scalable Controller Area Network (MSCAN) definition The Motorola Scalable Controller Area Network (MSCAN) definition
......
...@@ -262,7 +262,7 @@ static void status_handle(struct m68k_serial *info, unsigned short status) ...@@ -262,7 +262,7 @@ static void status_handle(struct m68k_serial *info, unsigned short status)
static void receive_chars(struct m68k_serial *info, unsigned short rx) static void receive_chars(struct m68k_serial *info, unsigned short rx)
{ {
struct tty_struct *tty = info->port.tty; struct tty_struct *tty = info->tty;
m68328_uart *uart = &uart_addr[info->line]; m68328_uart *uart = &uart_addr[info->line];
unsigned char ch, flag; unsigned char ch, flag;
...@@ -329,7 +329,7 @@ static void transmit_chars(struct m68k_serial *info) ...@@ -329,7 +329,7 @@ static void transmit_chars(struct m68k_serial *info)
goto clear_and_return; goto clear_and_return;
} }
if((info->xmit_cnt <= 0) || info->port.tty->stopped) { if((info->xmit_cnt <= 0) || info->tty->stopped) {
/* That's peculiar... TX ints off */ /* That's peculiar... TX ints off */
uart->ustcnt &= ~USTCNT_TX_INTR_MASK; uart->ustcnt &= ~USTCNT_TX_INTR_MASK;
goto clear_and_return; goto clear_and_return;
...@@ -383,7 +383,7 @@ static void do_softint(struct work_struct *work) ...@@ -383,7 +383,7 @@ static void do_softint(struct work_struct *work)
struct m68k_serial *info = container_of(work, struct m68k_serial, tqueue); struct m68k_serial *info = container_of(work, struct m68k_serial, tqueue);
struct tty_struct *tty; struct tty_struct *tty;
tty = info->port.tty; tty = info->tty;
if (!tty) if (!tty)
return; return;
#if 0 #if 0
...@@ -407,7 +407,7 @@ static void do_serial_hangup(struct work_struct *work) ...@@ -407,7 +407,7 @@ static void do_serial_hangup(struct work_struct *work)
struct m68k_serial *info = container_of(work, struct m68k_serial, tqueue_hangup); struct m68k_serial *info = container_of(work, struct m68k_serial, tqueue_hangup);
struct tty_struct *tty; struct tty_struct *tty;
tty = info->port.tty; tty = info->tty;
if (!tty) if (!tty)
return; return;
...@@ -451,8 +451,8 @@ static int startup(struct m68k_serial * info) ...@@ -451,8 +451,8 @@ static int startup(struct m68k_serial * info)
uart->ustcnt = USTCNT_UEN | USTCNT_RXEN | USTCNT_RX_INTR_MASK; uart->ustcnt = USTCNT_UEN | USTCNT_RXEN | USTCNT_RX_INTR_MASK;
#endif #endif
if (info->port.tty) if (info->tty)
clear_bit(TTY_IO_ERROR, &info->port.tty->flags); clear_bit(TTY_IO_ERROR, &info->tty->flags);
info->xmit_cnt = info->xmit_head = info->xmit_tail = 0; info->xmit_cnt = info->xmit_head = info->xmit_tail = 0;
/* /*
...@@ -486,8 +486,8 @@ static void shutdown(struct m68k_serial * info) ...@@ -486,8 +486,8 @@ static void shutdown(struct m68k_serial * info)
info->xmit_buf = 0; info->xmit_buf = 0;
} }
if (info->port.tty) if (info->tty)
set_bit(TTY_IO_ERROR, &info->port.tty->flags); set_bit(TTY_IO_ERROR, &info->tty->flags);
info->flags &= ~S_INITIALIZED; info->flags &= ~S_INITIALIZED;
local_irq_restore(flags); local_irq_restore(flags);
...@@ -553,9 +553,9 @@ static void change_speed(struct m68k_serial *info) ...@@ -553,9 +553,9 @@ static void change_speed(struct m68k_serial *info)
unsigned cflag; unsigned cflag;
int i; int i;
if (!info->port.tty || !info->port.tty->termios) if (!info->tty || !info->tty->termios)
return; return;
cflag = info->port.tty->termios->c_cflag; cflag = info->tty->termios->c_cflag;
if (!(port = info->port)) if (!(port = info->port))
return; return;
...@@ -970,7 +970,6 @@ static void send_break(struct m68k_serial * info, unsigned int duration) ...@@ -970,7 +970,6 @@ static void send_break(struct m68k_serial * info, unsigned int duration)
static int rs_ioctl(struct tty_struct *tty, struct file * file, static int rs_ioctl(struct tty_struct *tty, struct file * file,
unsigned int cmd, unsigned long arg) unsigned int cmd, unsigned long arg)
{ {
int error;
struct m68k_serial * info = (struct m68k_serial *)tty->driver_data; struct m68k_serial * info = (struct m68k_serial *)tty->driver_data;
int retval; int retval;
...@@ -1104,7 +1103,7 @@ static void rs_close(struct tty_struct *tty, struct file * filp) ...@@ -1104,7 +1103,7 @@ static void rs_close(struct tty_struct *tty, struct file * filp)
tty_ldisc_flush(tty); tty_ldisc_flush(tty);
tty->closing = 0; tty->closing = 0;
info->event = 0; info->event = 0;
info->port.tty = NULL; info->tty = NULL;
#warning "This is not and has never been valid so fix it" #warning "This is not and has never been valid so fix it"
#if 0 #if 0
if (tty->ldisc.num != ldiscs[N_TTY].num) { if (tty->ldisc.num != ldiscs[N_TTY].num) {
...@@ -1142,7 +1141,7 @@ void rs_hangup(struct tty_struct *tty) ...@@ -1142,7 +1141,7 @@ void rs_hangup(struct tty_struct *tty)
info->event = 0; info->event = 0;
info->count = 0; info->count = 0;
info->flags &= ~S_NORMAL_ACTIVE; info->flags &= ~S_NORMAL_ACTIVE;
info->port.tty = NULL; info->tty = NULL;
wake_up_interruptible(&info->open_wait); wake_up_interruptible(&info->open_wait);
} }
...@@ -1261,7 +1260,7 @@ int rs_open(struct tty_struct *tty, struct file * filp) ...@@ -1261,7 +1260,7 @@ int rs_open(struct tty_struct *tty, struct file * filp)
info->count++; info->count++;
tty->driver_data = info; tty->driver_data = info;
info->port.tty = tty; info->tty = tty;
/* /*
* Start up serial port * Start up serial port
...@@ -1338,7 +1337,7 @@ rs68328_init(void) ...@@ -1338,7 +1337,7 @@ rs68328_init(void)
info = &m68k_soft[i]; info = &m68k_soft[i];
info->magic = SERIAL_MAGIC; info->magic = SERIAL_MAGIC;
info->port = (int) &uart_addr[i]; info->port = (int) &uart_addr[i];
info->port.tty = NULL; info->tty = NULL;
info->irq = uart_irqs[i]; info->irq = uart_irqs[i];
info->custom_divisor = 16; info->custom_divisor = 16;
info->close_delay = 50; info->close_delay = 50;
......
...@@ -862,12 +862,12 @@ config SBC_EPX_C3_WATCHDOG ...@@ -862,12 +862,12 @@ config SBC_EPX_C3_WATCHDOG
# M68K Architecture # M68K Architecture
config M548x_WATCHDOG config M54xx_WATCHDOG
tristate "MCF548x watchdog support" tristate "MCF54xx watchdog support"
depends on M548x depends on M548x
help help
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called m548x_wdt. module will be called m54xx_wdt.
# MIPS Architecture # MIPS Architecture
......
...@@ -106,7 +106,7 @@ obj-$(CONFIG_SBC_EPX_C3_WATCHDOG) += sbc_epx_c3.o ...@@ -106,7 +106,7 @@ obj-$(CONFIG_SBC_EPX_C3_WATCHDOG) += sbc_epx_c3.o
# M32R Architecture # M32R Architecture
# M68K Architecture # M68K Architecture
obj-$(CONFIG_M548x_WATCHDOG) += m548x_wdt.o obj-$(CONFIG_M54xx_WATCHDOG) += m54xx_wdt.o
# MIPS Architecture # MIPS Architecture
obj-$(CONFIG_ATH79_WDT) += ath79_wdt.o obj-$(CONFIG_ATH79_WDT) += ath79_wdt.o
......
/* /*
* drivers/watchdog/m548x_wdt.c * drivers/watchdog/m54xx_wdt.c
* *
* Watchdog driver for ColdFire MCF548x processors * Watchdog driver for ColdFire MCF547x & MCF548x processors
* Copyright 2010 (c) Philippe De Muyter <phdm@macqel.be> * Copyright 2010 (c) Philippe De Muyter <phdm@macqel.be>
* *
* Adapted from the IXP4xx watchdog driver, which carries these notices: * Adapted from the IXP4xx watchdog driver, which carries these notices:
...@@ -29,8 +29,8 @@ ...@@ -29,8 +29,8 @@
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <asm/coldfire.h> #include <asm/coldfire.h>
#include <asm/m548xsim.h> #include <asm/m54xxsim.h>
#include <asm/m548xgpt.h> #include <asm/m54xxgpt.h>
static int nowayout = WATCHDOG_NOWAYOUT; static int nowayout = WATCHDOG_NOWAYOUT;
static unsigned int heartbeat = 30; /* (secs) Default is 0.5 minute */ static unsigned int heartbeat = 30; /* (secs) Default is 0.5 minute */
...@@ -76,7 +76,7 @@ static void wdt_keepalive(void) ...@@ -76,7 +76,7 @@ static void wdt_keepalive(void)
__raw_writel(gms0, MCF_MBAR + MCF_GPT_GMS0); __raw_writel(gms0, MCF_MBAR + MCF_GPT_GMS0);
} }
static int m548x_wdt_open(struct inode *inode, struct file *file) static int m54xx_wdt_open(struct inode *inode, struct file *file)
{ {
if (test_and_set_bit(WDT_IN_USE, &wdt_status)) if (test_and_set_bit(WDT_IN_USE, &wdt_status))
return -EBUSY; return -EBUSY;
...@@ -86,7 +86,7 @@ static int m548x_wdt_open(struct inode *inode, struct file *file) ...@@ -86,7 +86,7 @@ static int m548x_wdt_open(struct inode *inode, struct file *file)
return nonseekable_open(inode, file); return nonseekable_open(inode, file);
} }
static ssize_t m548x_wdt_write(struct file *file, const char *data, static ssize_t m54xx_wdt_write(struct file *file, const char *data,
size_t len, loff_t *ppos) size_t len, loff_t *ppos)
{ {
if (len) { if (len) {
...@@ -112,10 +112,10 @@ static ssize_t m548x_wdt_write(struct file *file, const char *data, ...@@ -112,10 +112,10 @@ static ssize_t m548x_wdt_write(struct file *file, const char *data,
static const struct watchdog_info ident = { static const struct watchdog_info ident = {
.options = WDIOF_MAGICCLOSE | WDIOF_SETTIMEOUT | .options = WDIOF_MAGICCLOSE | WDIOF_SETTIMEOUT |
WDIOF_KEEPALIVEPING, WDIOF_KEEPALIVEPING,
.identity = "Coldfire M548x Watchdog", .identity = "Coldfire M54xx Watchdog",
}; };
static long m548x_wdt_ioctl(struct file *file, unsigned int cmd, static long m54xx_wdt_ioctl(struct file *file, unsigned int cmd,
unsigned long arg) unsigned long arg)
{ {
int ret = -ENOTTY; int ret = -ENOTTY;
...@@ -161,7 +161,7 @@ static long m548x_wdt_ioctl(struct file *file, unsigned int cmd, ...@@ -161,7 +161,7 @@ static long m548x_wdt_ioctl(struct file *file, unsigned int cmd,
return ret; return ret;
} }
static int m548x_wdt_release(struct inode *inode, struct file *file) static int m54xx_wdt_release(struct inode *inode, struct file *file)
{ {
if (test_bit(WDT_OK_TO_CLOSE, &wdt_status)) if (test_bit(WDT_OK_TO_CLOSE, &wdt_status))
wdt_disable(); wdt_disable();
...@@ -177,45 +177,45 @@ static int m548x_wdt_release(struct inode *inode, struct file *file) ...@@ -177,45 +177,45 @@ static int m548x_wdt_release(struct inode *inode, struct file *file)
} }
static const struct file_operations m548x_wdt_fops = { static const struct file_operations m54xx_wdt_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.llseek = no_llseek, .llseek = no_llseek,
.write = m548x_wdt_write, .write = m54xx_wdt_write,
.unlocked_ioctl = m548x_wdt_ioctl, .unlocked_ioctl = m54xx_wdt_ioctl,
.open = m548x_wdt_open, .open = m54xx_wdt_open,
.release = m548x_wdt_release, .release = m54xx_wdt_release,
}; };
static struct miscdevice m548x_wdt_miscdev = { static struct miscdevice m54xx_wdt_miscdev = {
.minor = WATCHDOG_MINOR, .minor = WATCHDOG_MINOR,
.name = "watchdog", .name = "watchdog",
.fops = &m548x_wdt_fops, .fops = &m54xx_wdt_fops,
}; };
static int __init m548x_wdt_init(void) static int __init m54xx_wdt_init(void)
{ {
if (!request_mem_region(MCF_MBAR + MCF_GPT_GCIR0, 4, if (!request_mem_region(MCF_MBAR + MCF_GPT_GCIR0, 4,
"Coldfire M548x Watchdog")) { "Coldfire M54xx Watchdog")) {
printk(KERN_WARNING printk(KERN_WARNING
"Coldfire M548x Watchdog : I/O region busy\n"); "Coldfire M54xx Watchdog : I/O region busy\n");
return -EBUSY; return -EBUSY;
} }
printk(KERN_INFO "ColdFire watchdog driver is loaded.\n"); printk(KERN_INFO "ColdFire watchdog driver is loaded.\n");
return misc_register(&m548x_wdt_miscdev); return misc_register(&m54xx_wdt_miscdev);
} }
static void __exit m548x_wdt_exit(void) static void __exit m54xx_wdt_exit(void)
{ {
misc_deregister(&m548x_wdt_miscdev); misc_deregister(&m54xx_wdt_miscdev);
release_mem_region(MCF_MBAR + MCF_GPT_GCIR0, 4); release_mem_region(MCF_MBAR + MCF_GPT_GCIR0, 4);
} }
module_init(m548x_wdt_init); module_init(m54xx_wdt_init);
module_exit(m548x_wdt_exit); module_exit(m54xx_wdt_exit);
MODULE_AUTHOR("Philippe De Muyter <phdm@macqel.be>"); MODULE_AUTHOR("Philippe De Muyter <phdm@macqel.be>");
MODULE_DESCRIPTION("Coldfire M548x Watchdog"); MODULE_DESCRIPTION("Coldfire M54xx Watchdog");
module_param(heartbeat, int, 0); module_param(heartbeat, int, 0);
MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds (default 30s)"); MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds (default 30s)");
......
...@@ -805,7 +805,7 @@ config ARCH_WANT_FRAME_POINTERS ...@@ -805,7 +805,7 @@ config ARCH_WANT_FRAME_POINTERS
config FRAME_POINTER config FRAME_POINTER
bool "Compile the kernel with frame pointers" bool "Compile the kernel with frame pointers"
depends on DEBUG_KERNEL && \ depends on DEBUG_KERNEL && \
(CRIS || M68K || M68KNOMMU || FRV || UML || \ (CRIS || M68K || FRV || UML || \
AVR32 || SUPERH || BLACKFIN || MN10300) || \ AVR32 || SUPERH || BLACKFIN || MN10300) || \
ARCH_WANT_FRAME_POINTERS ARCH_WANT_FRAME_POINTERS
default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册