ARM: alignment: save last kernel aligned fault location
[pandora-kernel.git] / arch / arm / mm / alignment.c
index 2944f57..ba9e4d2 100644 (file)
@@ -74,6 +74,7 @@
 
 static unsigned long ai_user;
 static unsigned long ai_sys;
+static void *ai_sys_last_pc;
 static unsigned long ai_skipped;
 static unsigned long ai_half;
 static unsigned long ai_word;
@@ -127,7 +128,7 @@ static const char *usermode_action[] = {
 static int alignment_proc_show(struct seq_file *m, void *v)
 {
        seq_printf(m, "User:\t\t%lu\n", ai_user);
-       seq_printf(m, "System:\t\t%lu\n", ai_sys);
+       seq_printf(m, "System:\t\t%lu (%pF)\n", ai_sys, ai_sys_last_pc);
        seq_printf(m, "Skipped:\t%lu\n", ai_skipped);
        seq_printf(m, "Half:\t\t%lu\n", ai_half);
        seq_printf(m, "Word:\t\t%lu\n", ai_word);
@@ -787,6 +788,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
                goto user;
 
        ai_sys += 1;
+       ai_sys_last_pc = (void *)instruction_pointer(regs);
 
  fixup: