diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-02-04 07:40:19 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-02-04 07:40:19 +0000 |
commit | 33263fc5f9ac8e8cb2b22d06af3ce5ac1dd815e4 (patch) | |
tree | 2d1b86a40bef0958a68cf1a2eafbeb0667a70543 /arch/i386/kernel/process.c | |
parent | 216f5f51aa02f8b113aa620ebc14a9631a217a00 (diff) |
Merge with Linux 2.3.32.
Diffstat (limited to 'arch/i386/kernel/process.c')
-rw-r--r-- | arch/i386/kernel/process.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index 429c4eacd..4f9c94353 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c @@ -204,9 +204,11 @@ void machine_restart(char * __unused) { #if __SMP__ /* - * turn off the IO-APIC, so we can do a clean reboot + * Stop all CPUs and turn off local APICs and the IO-APIC, so + * other OSs see a clean IRQ state. */ - init_pic_mode(); + smp_send_stop(); + disable_IO_APIC(); #endif if(!reboot_thru_bios) { @@ -460,7 +462,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, struct pt_regs * childregs; childregs = ((struct pt_regs *) (THREAD_SIZE + (unsigned long) p)) - 1; - *childregs = *regs; + struct_cpy(childregs, regs); childregs->eax = 0; childregs->esp = esp; @@ -473,7 +475,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, savesegment(gs,p->thread.gs); unlazy_fpu(current); - p->thread.i387 = current->thread.i387; + struct_cpy(&p->thread.i387, ¤t->thread.i387); return 0; } |