Title: [8461] trunk/arch/blackfin/kernel/trace.c: Print out the faulting instruction, so when people send traces as part
Revision
8461
Author
rgetz
Date
2010-03-12 16:17:44 -0500 (Fri, 12 Mar 2010)

Log Message

Print out the faulting instruction, so when people send traces as part
of bug reports, we have a better idea of what is going on.

Modified Paths

Diff

Modified: trunk/arch/blackfin/kernel/trace.c (8460 => 8461)


--- trunk/arch/blackfin/kernel/trace.c	2010-03-12 13:55:40 UTC (rev 8460)
+++ trunk/arch/blackfin/kernel/trace.c	2010-03-12 21:17:44 UTC (rev 8461)
@@ -19,6 +19,7 @@
 #include <asm/trace.h>
 #include <asm/fixed_code.h>
 #include <asm/traps.h>
+#include <asm/irq_handler.h>
 
 void decode_address(char *buf, unsigned long address)
 {
@@ -260,9 +261,10 @@
 void dump_bfin_trace_buffer(void)
 {
 #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON
-	int tflags, i = 0;
+	int tflags, i = 0, fault = 0;
 	char buf[150];
 	unsigned short *addr;
+	unsigned int cpu = raw_smp_processor_id();
 #ifdef CONFIG_DEBUG_BFIN_HWTRACE_EXPAND
 	int j, index;
 #endif
@@ -277,8 +279,21 @@
 
 	if (likely(bfin_read_TBUFSTAT() & TBUFCNT)) {
 		for (; bfin_read_TBUFSTAT() & TBUFCNT; i++) {
-			decode_address(buf, (unsigned long)bfin_read_TBUF());
+			addr = (unsigned short *)bfin_read_TBUF();
+			decode_address(buf, (unsigned long)addr);
 			pr_notice("%4i Target : %s\n", i, buf);
+			/* Normally, the faulting instruction doesn't go into
+			 * the trace buffer, (since it doesn't commit), so
+			 * we print out the fault address here
+			 */
+			if (!fault && addr == (unsigned short *)trap &&
+				(cpu_pda[cpu].seqstat & SEQSTAT_EXCAUSE) > VEC_EXCPT15) {
+				decode_address(buf, cpu_pda[cpu].icplb_fault_addr);
+				pr_notice("      FAULT : %s ", buf);
+				decode_instruction((unsigned short *)cpu_pda[cpu].icplb_fault_addr);
+				pr_cont("\n");
+				fault = 1;
+			}
 			addr = (unsigned short *)bfin_read_TBUF();
 			decode_address(buf, (unsigned long)addr);
 			pr_notice("     Source : %s ", buf);
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to