patch-2.2.15 linux/arch/s390/kernel/traps.c

Next file: linux/arch/s390/tools/dasdfmt/dasdfmt.8
Previous file: linux/arch/s390/kernel/time.c
Back to the patch index
Back to the overall index

diff -u --new-file --recursive --exclude-from ../../exclude v2.2.14/arch/s390/kernel/traps.c linux/arch/s390/kernel/traps.c
@@ -2,7 +2,7 @@
  *  arch/s390/kernel/traps.c
  *
  *  S390 version
- *    Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
+ *    Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
  *    Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
  *               Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com),
  *
@@ -255,7 +255,7 @@
 		get_user(*((__u16 *) opcode), location);
 	else
 		*((__u16 *)opcode)=*((__u16 *)location);
-	if(*((__u16 *)opcode)==BREAKPOINT_U16)
+	if(*((__u16 *)opcode)==S390_BREAKPOINT_U16)
         {
 		if(do_debugger_trap(regs,SIGTRAP))
 			do_sig=1;
@@ -443,6 +443,8 @@
         pgm_check_table[4] = &do_page_fault;
         pgm_check_table[0x10] = &do_page_fault;
         pgm_check_table[0x11] = &do_page_fault;
+        pgm_check_table[0x1C] = &privileged_op;
+
 }
 
 
@@ -456,6 +458,13 @@
 		per_info->lowcore.words.access_id=S390_lowcore.per_access_id;
 	}
 	if(do_debugger_trap(regs,SIGTRAP))
+	{
+		/* I've seen this possibly a task structure being reused ? */
 		printk("Spurious per exception detected\n");
+		printk("switching off per tracing for this task.\n");
+		show_crashed_task_info();
+		/* Hopefully switching off per tracing will help us survive */
+		regs->psw.mask &= ~PSW_PER_MASK;
+	}
 }
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)