Commit 819d8816 authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/home/davem/BK/sparc-2.5

into home.transmeta.com:/home/torvalds/v2.5/linux
parents 968c6d06 e268cd69
...@@ -182,9 +182,7 @@ syscall_exit_cont: ...@@ -182,9 +182,7 @@ syscall_exit_cont:
.globl ret_from_fork .globl ret_from_fork
ret_from_fork: ret_from_fork:
REST_NVGPRS(r1) REST_NVGPRS(r1)
#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT)
bl schedule_tail bl schedule_tail
#endif
li r3,0 li r3,0
b ret_from_syscall b ret_from_syscall
......
...@@ -1006,6 +1006,7 @@ _GLOBAL(kernel_thread) ...@@ -1006,6 +1006,7 @@ _GLOBAL(kernel_thread)
mr r31,r4 /* argument */ mr r31,r4 /* argument */
ori r3,r5,CLONE_VM /* flags */ ori r3,r5,CLONE_VM /* flags */
oris r3,r3,CLONE_UNTRACED>>16 oris r3,r3,CLONE_UNTRACED>>16
li r4,0 /* new sp (unused) */
li r0,__NR_clone li r0,__NR_clone
sc sc
cmpi 0,r3,0 /* parent or child? */ cmpi 0,r3,0 /* parent or child? */
......
...@@ -332,7 +332,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp, ...@@ -332,7 +332,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
unsigned long sp = (unsigned long)p->thread_info + THREAD_SIZE; unsigned long sp = (unsigned long)p->thread_info + THREAD_SIZE;
unsigned long childframe; unsigned long childframe;
p->user_tid = NULL; p->set_child_tid = p->clear_child_tid = NULL;
CHECK_FULL_REGS(regs); CHECK_FULL_REGS(regs);
/* Copy registers */ /* Copy registers */
...@@ -344,8 +344,10 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp, ...@@ -344,8 +344,10 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
childregs->gpr[1] = sp + sizeof(struct pt_regs); childregs->gpr[1] = sp + sizeof(struct pt_regs);
childregs->gpr[2] = (unsigned long) p; childregs->gpr[2] = (unsigned long) p;
p->thread.regs = NULL; /* no user register state */ p->thread.regs = NULL; /* no user register state */
} else } else {
childregs->gpr[1] = usp;
p->thread.regs = childregs; p->thread.regs = childregs;
}
childregs->gpr[3] = 0; /* Result from fork() */ childregs->gpr[3] = 0; /* Result from fork() */
sp -= STACK_FRAME_OVERHEAD; sp -= STACK_FRAME_OVERHEAD;
childframe = sp; childframe = sp;
...@@ -449,9 +451,9 @@ int sys_clone(int p1, int p2, int p3, int p4, int p5, int p6, ...@@ -449,9 +451,9 @@ int sys_clone(int p1, int p2, int p3, int p4, int p5, int p6,
struct task_struct *p; struct task_struct *p;
CHECK_FULL_REGS(regs); CHECK_FULL_REGS(regs);
if ((p1 & (CLONE_SETTID | CLONE_CLEARTID)) == 0) if (p2 == 0)
p3 = 0; p2 = regs->gpr[1]; /* stack pointer for child */
p = do_fork(p1 & ~CLONE_IDLETASK, p2, regs, 0, (int *)p3); p = do_fork(p1 & ~CLONE_IDLETASK, p2, regs, 0, (int *)p3, (int *)p4);
return IS_ERR(p) ? PTR_ERR(p) : p->pid; return IS_ERR(p) ? PTR_ERR(p) : p->pid;
} }
...@@ -460,7 +462,7 @@ int sys_fork(int p1, int p2, int p3, int p4, int p5, int p6, ...@@ -460,7 +462,7 @@ int sys_fork(int p1, int p2, int p3, int p4, int p5, int p6,
{ {
struct task_struct *p; struct task_struct *p;
CHECK_FULL_REGS(regs); CHECK_FULL_REGS(regs);
p = do_fork(SIGCHLD, regs->gpr[1], regs, 0, NULL); p = do_fork(SIGCHLD, regs->gpr[1], regs, 0, NULL, NULL);
return IS_ERR(p) ? PTR_ERR(p) : p->pid; return IS_ERR(p) ? PTR_ERR(p) : p->pid;
} }
...@@ -469,7 +471,8 @@ int sys_vfork(int p1, int p2, int p3, int p4, int p5, int p6, ...@@ -469,7 +471,8 @@ int sys_vfork(int p1, int p2, int p3, int p4, int p5, int p6,
{ {
struct task_struct *p; struct task_struct *p;
CHECK_FULL_REGS(regs); CHECK_FULL_REGS(regs);
p = do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs->gpr[1], regs, 0, NULL); p = do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs->gpr[1], regs,
0, NULL, NULL);
return IS_ERR(p) ? PTR_ERR(p) : p->pid; return IS_ERR(p) ? PTR_ERR(p) : p->pid;
} }
......
...@@ -77,7 +77,7 @@ obj-$(CONFIG_NWBUTTON) += nwbutton.o ...@@ -77,7 +77,7 @@ obj-$(CONFIG_NWBUTTON) += nwbutton.o
obj-$(CONFIG_NWFLASH) += nwflash.o obj-$(CONFIG_NWFLASH) += nwflash.o
obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o
obj-$(CONFIG_WATCHDOGS) += watchdog/ obj-$(CONFIG_WATCHDOG) += watchdog/
obj-$(CONFIG_MWAVE) += mwave/ obj-$(CONFIG_MWAVE) += mwave/
obj-$(CONFIG_AGP) += agp/ obj-$(CONFIG_AGP) += agp/
obj-$(CONFIG_DRM) += drm/ obj-$(CONFIG_DRM) += drm/
......
...@@ -7,21 +7,21 @@ ...@@ -7,21 +7,21 @@
# watchdog dies or is 'borrowed' for some reason the software watchdog # watchdog dies or is 'borrowed' for some reason the software watchdog
# still gives you some cover. # still gives you some cover.
watchdog-$(CONFIG_PCWATCHDOG) += pcwd.o obj-$(CONFIG_PCWATCHDOG) += pcwd.o
watchdog-$(CONFIG_ACQUIRE_WDT) += acquirewdt.o obj-$(CONFIG_ACQUIRE_WDT) += acquirewdt.o
watchdog-$(CONFIG_ADVANTECH_WDT) += advantechwdt.o obj-$(CONFIG_ADVANTECH_WDT) += advantechwdt.o
watchdog-$(CONFIG_IB700_WDT) += ib700wdt.o obj-$(CONFIG_IB700_WDT) += ib700wdt.o
watchdog-$(CONFIG_MIXCOMWD) += mixcomwd.o obj-$(CONFIG_MIXCOMWD) += mixcomwd.o
watchdog-$(CONFIG_SCx200_WDT) += scx200_wdt.o obj-$(CONFIG_SCx200_WDT) += scx200_wdt.o
watchdog-$(CONFIG_60XX_WDT) += sbc60xxwdt.o obj-$(CONFIG_60XX_WDT) += sbc60xxwdt.o
watchdog-$(CONFIG_WDT) += wdt.o obj-$(CONFIG_WDT) += wdt.o
watchdog-$(CONFIG_WDTPCI) += wdt_pci.o obj-$(CONFIG_WDTPCI) += wdt_pci.o
watchdog-$(CONFIG_21285_WATCHDOG) += wdt285.o obj-$(CONFIG_21285_WATCHDOG) += wdt285.o
watchdog-$(CONFIG_977_WATCHDOG) += wdt977.o obj-$(CONFIG_977_WATCHDOG) += wdt977.o
watchdog-$(CONFIG_I810_TCO) += i810-tco.o obj-$(CONFIG_I810_TCO) += i810-tco.o
watchdog-$(CONFIG_MACHZ_WDT) += machzwd.o obj-$(CONFIG_MACHZ_WDT) += machzwd.o
watchdog-$(CONFIG_SH_WDT) += shwdt.o obj-$(CONFIG_SH_WDT) += shwdt.o
watchdog-$(CONFIG_EUROTECH_WDT) += eurotechwdt.o obj-$(CONFIG_EUROTECH_WDT) += eurotechwdt.o
watchdog-$(CONFIG_SOFT_WATCHDOG) += softdog.o obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o
include $(TOPDIR)/Rules.make include $(TOPDIR)/Rules.make
...@@ -263,7 +263,7 @@ static int svwks_tune_chipset (ide_drive_t *drive, u8 xferspeed) ...@@ -263,7 +263,7 @@ static int svwks_tune_chipset (ide_drive_t *drive, u8 xferspeed)
Our code assumes we never _ever_ do this on an OSB4 */ Our code assumes we never _ever_ do this on an OSB4 */
if(dev->device == PCI_DEVICE_ID_SERVERWORKS_OSB4 && if(dev->device == PCI_DEVICE_ID_SERVERWORKS_OSB4 &&
drive->media != ide_disk && speed >= XFER_UDMA_0) drive->media == ide_disk && speed >= XFER_UDMA_0)
BUG(); BUG();
pci_read_config_byte(dev, drive_pci[drive->dn], &pio_timing); pci_read_config_byte(dev, drive_pci[drive->dn], &pio_timing);
......
...@@ -693,7 +693,7 @@ static ata_index_t do_ide_setup_pci_device (struct pci_dev *dev, ide_pci_device_ ...@@ -693,7 +693,7 @@ static ata_index_t do_ide_setup_pci_device (struct pci_dev *dev, ide_pci_device_
int autodma = 0; int autodma = 0;
int pciirq = 0; int pciirq = 0;
int tried_config = 0; int tried_config = 0;
ata_index_t index; ata_index_t index = { .b = { .low = 0xff, .high = 0xff } };
if((autodma = ide_setup_pci_controller(dev, d, noisy, &tried_config)) < 0) if((autodma = ide_setup_pci_controller(dev, d, noisy, &tried_config)) < 0)
return index; return index;
......
...@@ -1209,7 +1209,7 @@ static int __init bigmac_ether_init(struct net_device *dev, struct sbus_dev *qec ...@@ -1209,7 +1209,7 @@ static int __init bigmac_ether_init(struct net_device *dev, struct sbus_dev *qec
bp->bblock_dvma); bp->bblock_dvma);
unregister_netdev(dev); unregister_netdev(dev);
kfree(dev->priv); /* This also frees the co-located 'dev->priv' */
kfree(dev); kfree(dev);
return -ENODEV; return -ENODEV;
} }
......
...@@ -575,7 +575,6 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent) ...@@ -575,7 +575,6 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent)
} else { } else {
INIT_WORK(&server->rcv.tq, ncpdgram_rcv_proc, server); INIT_WORK(&server->rcv.tq, ncpdgram_rcv_proc, server);
INIT_WORK(&server->timeout_tq, ncpdgram_timeout_proc, server); INIT_WORK(&server->timeout_tq, ncpdgram_timeout_proc, server);
init_timer(&server->timeout_tm);
server->timeout_tm.data = (unsigned long)server; server->timeout_tm.data = (unsigned long)server;
server->timeout_tm.function = ncpdgram_timeout_call; server->timeout_tm.function = ncpdgram_timeout_call;
} }
......
...@@ -1715,7 +1715,7 @@ static inline int __ide_dma_queued_off(ide_drive_t *drive) ...@@ -1715,7 +1715,7 @@ static inline int __ide_dma_queued_off(ide_drive_t *drive)
#endif #endif
#else #else
static inline void ide_release_dma(ide_hwif_t *) {;} static inline void ide_release_dma(ide_hwif_t *drive) {;}
#endif #endif
extern void hwif_unregister(ide_hwif_t *); extern void hwif_unregister(ide_hwif_t *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment