tree fb4202396bed56574c68f5b516eeb85846e88c6a
parent 58c02ec4701c94c671a41e1e5d50c582e859851f
author Russell King <[EMAIL PROTECTED]> Sun, 17 Apr 2005 15:50:36 +0100
committer Russell King <[EMAIL PROTECTED]> Sun, 17 Apr 2005 15:50:36 +0100
[PATCH] ARM: showregs
Fix show_regs() to provide a backtrace. Provide a new __show_regs()
function which implements the common subset of show_regs() and die().
Add prototypes to asm-arm/system.h
Signed-off-by: Russell King <[EMAIL PROTECTED]>
arm/kernel/process.c | 15 +++++++++++----
arm/kernel/traps.c | 8 ++------
asm-arm/ptrace.h | 5 +----
asm-arm/system.h | 3 +++
4 files changed, 17 insertions(+), 14 deletions(-)
Index: arch/arm/kernel/process.c
===================================================================
--- 36ff3f13c2484ff6e355280899a4ffdd1f05d3a6/arch/arm/kernel/process.c
(mode:100644 sha1:dbd8ca89b385b24f00b0d252ddab677db034c8ef)
+++ fb4202396bed56574c68f5b516eeb85846e88c6a/arch/arm/kernel/process.c
(mode:100644 sha1:26eacd3e5def130504adf2ddd88f9cc977c98abf)
@@ -168,12 +168,11 @@
EXPORT_SYMBOL(machine_restart);
-void show_regs(struct pt_regs * regs)
+void __show_regs(struct pt_regs *regs)
{
- unsigned long flags;
-
- flags = condition_codes(regs);
+ unsigned long flags = condition_codes(regs);
+ printk("CPU: %d\n", smp_processor_id());
print_symbol("PC is at %s\n", instruction_pointer(regs));
print_symbol("LR is at %s\n", regs->ARM_lr);
printk("pc : [<%08lx>] lr : [<%08lx>] %s\n"
@@ -213,6 +212,14 @@
}
}
+void show_regs(struct pt_regs * regs)
+{
+ printk("\n");
+ printk("Pid: %d, comm: %20s\n", current->pid, current->comm);
+ __show_regs(regs);
+ __backtrace();
+}
+
void show_fpregs(struct user_fp *regs)
{
int i;
Index: arch/arm/kernel/traps.c
===================================================================
--- 36ff3f13c2484ff6e355280899a4ffdd1f05d3a6/arch/arm/kernel/traps.c
(mode:100644 sha1:93dc4646cd7f7d6fb741ebbe69d9b3bef4369109)
+++ fb4202396bed56574c68f5b516eeb85846e88c6a/arch/arm/kernel/traps.c
(mode:100644 sha1:6e31718f60085f097bbcd14759b9bf9d1ef5df11)
@@ -31,9 +31,6 @@
#include "ptrace.h"
-extern void c_backtrace (unsigned long fp, int pmode);
-extern void show_pte(struct mm_struct *mm, unsigned long addr);
-
const char *processor_modes[]=
{ "USER_26", "FIQ_26" , "IRQ_26" , "SVC_26" , "UK4_26" , "UK5_26" , "UK6_26" ,
"UK7_26" ,
"UK8_26" , "UK9_26" , "UK10_26", "UK11_26", "UK12_26", "UK13_26", "UK14_26",
"UK15_26",
@@ -216,8 +213,7 @@
printk("Internal error: %s: %x [#%d]\n", str, err, ++die_counter);
print_modules();
- printk("CPU: %d\n", smp_processor_id());
- show_regs(regs);
+ __show_regs(regs);
printk("Process %s (pid: %d, stack limit = 0x%p)\n",
tsk->comm, tsk->pid, tsk->thread_info + 1);
@@ -482,7 +478,7 @@
current->pid, current->comm, no);
dump_instr(regs);
if (user_mode(regs)) {
- show_regs(regs);
+ __show_regs(regs);
c_backtrace(regs->ARM_fp, processor_mode(regs));
}
}
Index: include/asm-arm/ptrace.h
===================================================================
--- 36ff3f13c2484ff6e355280899a4ffdd1f05d3a6/include/asm-arm/ptrace.h
(mode:100644 sha1:604e3a186cf9b7e5e32b8abcd17d557c5e990cc9)
+++ fb4202396bed56574c68f5b516eeb85846e88c6a/include/asm-arm/ptrace.h
(mode:100644 sha1:4377e22b7e1a9a7359d1e6255e4098b1227e7aa2)
@@ -142,11 +142,8 @@
#endif
#ifdef __KERNEL__
-extern void show_regs(struct pt_regs *);
-
-#define predicate(x) (x & 0xf0000000)
+#define predicate(x) ((x) & 0xf0000000)
#define PREDICATE_ALWAYS 0xe0000000
-
#endif
#endif /* __ASSEMBLY__ */
Index: include/asm-arm/system.h
===================================================================
--- 36ff3f13c2484ff6e355280899a4ffdd1f05d3a6/include/asm-arm/system.h
(mode:100644 sha1:b5731290b4e5ae933175265742d4f27973c185d9)
+++ fb4202396bed56574c68f5b516eeb85846e88c6a/include/asm-arm/system.h
(mode:100644 sha1:b13a8da4847b0240be605a000fb83e9ad9b0b882)
@@ -99,6 +99,9 @@
#define tas(ptr) (xchg((ptr),1))
extern asmlinkage void __backtrace(void);
+extern asmlinkage void c_backtrace(unsigned long fp, int pmode);
+extern void show_pte(struct mm_struct *mm, unsigned long addr);
+extern void __show_regs(struct pt_regs *);
extern int cpu_architecture(void);
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html