From: James S. <jsi...@us...> - 2001-10-29 17:32:30
|
Update of /cvsroot/linux-mips/linux/arch/mips64/mm In directory usw-pr-cvs1:/tmp/cvs-serv6933 Modified Files: fault.c Log Message: Synced to Ralph's tree. We already fixed this problem. Index: fault.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips64/mm/fault.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- fault.c 2001/10/22 21:04:22 1.5 +++ fault.c 2001/10/29 17:32:28 1.6 @@ -70,6 +70,10 @@ spin_lock_init(&timerlist_lock); if (yes) { oops_in_progress = 1; +#ifdef CONFIG_SMP + /* Many serial drivers do __global_cli() */ + global_irq_lock = SPIN_LOCK_UNLOCKED; +#endif } else { int loglevel_save = console_loglevel; #ifdef CONFIG_VT @@ -149,12 +153,12 @@ goto bad_area; } +survive: /* * If for any reason at all we couldn't handle the fault, * make sure we exit gracefully rather than endlessly redo * the fault. */ -survive: switch (handle_mm_fault(mm, vma, address, write)) { case 1: tsk->min_flt++; @@ -178,7 +182,6 @@ bad_area: up_read(&mm->mmap_sem); -bad_area_nosemaphore: if (user_mode(regs)) { tsk->thread.cp0_badvaddr = address; tsk->thread.error_code = write; @@ -235,8 +238,8 @@ */ out_of_memory: up_read(&mm->mmap_sem); - if (current->pid == 1) { - current->policy |= SCHED_YIELD; + if (tsk->pid == 1) { + tsk->policy |= SCHED_YIELD; schedule(); down_read(&mm->mmap_sem); goto survive; @@ -254,7 +257,7 @@ * or user mode. */ tsk->thread.cp0_badvaddr = address; - info.si_code = SIGBUS; + info.si_signo = SIGBUS; info.si_errno = 0; info.si_code = BUS_ADRERR; info.si_addr = (void *) address; |