aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2007-01-09 07:57:37 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-02-06 11:46:48 -0500
commitae0a846e411dc0b568e8ccda584896310ee5f369 (patch)
tree59d97342cdb29b61cc0da3cf1ebf0498ca799d14
parentd941caa2537a01653704a8c1148d330a3b2755f1 (diff)
[ARM] Move processor_modes[] to .../process.c
bad_mode() currently prints the mode which caused the exception, and then causes an oops dump to be printed which again displays this information (since the CPSR in the struct pt_regs is correct.) This leads to processor_modes[] being shared between traps.c and process.c with a local declaration of it. We can clean this up by moving processor_modes[] to process.c and removing the duplication, resulting in processor_modes[] becoming static. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/kernel/entry-armv.S1
-rw-r--r--arch/arm/kernel/process.c8
-rw-r--r--arch/arm/kernel/traps.c12
3 files changed, 9 insertions, 12 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index 8517c3c3eb33..cc10a093a545 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -99,7 +99,6 @@ common_invalid:
99 @ cpsr_<exception>, "old_r0" 99 @ cpsr_<exception>, "old_r0"
100 100
101 mov r0, sp 101 mov r0, sp
102 and r2, r6, #0x1f
103 b bad_mode 102 b bad_mode
104 103
105/* 104/*
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index a9e8f7e55fd6..782af3cb213f 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -36,7 +36,13 @@
36#include <asm/uaccess.h> 36#include <asm/uaccess.h>
37#include <asm/mach/time.h> 37#include <asm/mach/time.h>
38 38
39extern const char *processor_modes[]; 39static const char *processor_modes[] = {
40 "USER_26", "FIQ_26" , "IRQ_26" , "SVC_26" , "UK4_26" , "UK5_26" , "UK6_26" , "UK7_26" ,
41 "UK8_26" , "UK9_26" , "UK10_26", "UK11_26", "UK12_26", "UK13_26", "UK14_26", "UK15_26",
42 "USER_32", "FIQ_32" , "IRQ_32" , "SVC_32" , "UK4_32" , "UK5_32" , "UK6_32" , "ABT_32" ,
43 "UK8_32" , "UK9_32" , "UK10_32", "UND_32" , "UK12_32", "UK13_32", "UK14_32", "SYS_32"
44};
45
40extern void setup_mm_for_reboot(char mode); 46extern void setup_mm_for_reboot(char mode);
41 47
42static volatile int hlt_counter; 48static volatile int hlt_counter;
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index 908915675edc..329609b84d3b 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -32,13 +32,6 @@
32#include "ptrace.h" 32#include "ptrace.h"
33#include "signal.h" 33#include "signal.h"
34 34
35const char *processor_modes[]=
36{ "USER_26", "FIQ_26" , "IRQ_26" , "SVC_26" , "UK4_26" , "UK5_26" , "UK6_26" , "UK7_26" ,
37 "UK8_26" , "UK9_26" , "UK10_26", "UK11_26", "UK12_26", "UK13_26", "UK14_26", "UK15_26",
38 "USER_32", "FIQ_32" , "IRQ_32" , "SVC_32" , "UK4_32" , "UK5_32" , "UK6_32" , "ABT_32" ,
39 "UK8_32" , "UK9_32" , "UK10_32", "UND_32" , "UK12_32", "UK13_32", "UK14_32", "SYS_32"
40};
41
42static const char *handler[]= { "prefetch abort", "data abort", "address exception", "interrupt" }; 35static const char *handler[]= { "prefetch abort", "data abort", "address exception", "interrupt" };
43 36
44#ifdef CONFIG_DEBUG_USER 37#ifdef CONFIG_DEBUG_USER
@@ -337,12 +330,11 @@ asmlinkage void do_unexp_fiq (struct pt_regs *regs)
337 * It never returns, and never tries to sync. We hope that we can at least 330 * It never returns, and never tries to sync. We hope that we can at least
338 * dump out some state information... 331 * dump out some state information...
339 */ 332 */
340asmlinkage void bad_mode(struct pt_regs *regs, int reason, int proc_mode) 333asmlinkage void bad_mode(struct pt_regs *regs, int reason)
341{ 334{
342 console_verbose(); 335 console_verbose();
343 336
344 printk(KERN_CRIT "Bad mode in %s handler detected: mode %s\n", 337 printk(KERN_CRIT "Bad mode in %s handler detected\n", handler[reason]);
345 handler[reason], processor_modes[proc_mode]);
346 338
347 die("Oops - bad mode", regs, 0); 339 die("Oops - bad mode", regs, 0);
348 local_irq_disable(); 340 local_irq_disable();