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;
|