Blackfin arch: Ensure we printk out strings with the proper loglevel

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
This commit is contained in:
Robin Getz 2007-11-21 16:35:57 +08:00 коммит произвёл Bryan Wu
Родитель 0bad33d93a
Коммит 569a50ca3f
3 изменённых файлов: 94 добавлений и 42 удалений

Просмотреть файл

@ -250,7 +250,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_EXCPT03: case VEC_EXCPT03:
info.si_code = SEGV_STACKFLOW; info.si_code = SEGV_STACKFLOW;
sig = SIGSEGV; sig = SIGSEGV;
printk(KERN_NOTICE EXC_0x03); printk(KERN_NOTICE EXC_0x03(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x04 - User Defined, Caught by default */ /* 0x04 - User Defined, Caught by default */
@ -279,7 +279,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_OVFLOW: case VEC_OVFLOW:
info.si_code = TRAP_TRACEFLOW; info.si_code = TRAP_TRACEFLOW;
sig = SIGTRAP; sig = SIGTRAP;
printk(KERN_NOTICE EXC_0x11); printk(KERN_NOTICE EXC_0x11(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x12 - Reserved, Caught by default */ /* 0x12 - Reserved, Caught by default */
@ -301,35 +301,35 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_UNDEF_I: case VEC_UNDEF_I:
info.si_code = ILL_ILLOPC; info.si_code = ILL_ILLOPC;
sig = SIGILL; sig = SIGILL;
printk(KERN_NOTICE EXC_0x21); printk(KERN_NOTICE EXC_0x21(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x22 - Illegal Instruction Combination, handled here */ /* 0x22 - Illegal Instruction Combination, handled here */
case VEC_ILGAL_I: case VEC_ILGAL_I:
info.si_code = ILL_ILLPARAOP; info.si_code = ILL_ILLPARAOP;
sig = SIGILL; sig = SIGILL;
printk(KERN_NOTICE EXC_0x22); printk(KERN_NOTICE EXC_0x22(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x23 - Data CPLB protection violation, handled here */ /* 0x23 - Data CPLB protection violation, handled here */
case VEC_CPLB_VL: case VEC_CPLB_VL:
info.si_code = ILL_CPLB_VI; info.si_code = ILL_CPLB_VI;
sig = SIGBUS; sig = SIGBUS;
printk(KERN_NOTICE EXC_0x23); printk(KERN_NOTICE EXC_0x23(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x24 - Data access misaligned, handled here */ /* 0x24 - Data access misaligned, handled here */
case VEC_MISALI_D: case VEC_MISALI_D:
info.si_code = BUS_ADRALN; info.si_code = BUS_ADRALN;
sig = SIGBUS; sig = SIGBUS;
printk(KERN_NOTICE EXC_0x24); printk(KERN_NOTICE EXC_0x24(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x25 - Unrecoverable Event, handled here */ /* 0x25 - Unrecoverable Event, handled here */
case VEC_UNCOV: case VEC_UNCOV:
info.si_code = ILL_ILLEXCPT; info.si_code = ILL_ILLEXCPT;
sig = SIGILL; sig = SIGILL;
printk(KERN_NOTICE EXC_0x25); printk(KERN_NOTICE EXC_0x25(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x26 - Data CPLB Miss, normal case is handled in _cplb_hdr, /* 0x26 - Data CPLB Miss, normal case is handled in _cplb_hdr,
@ -337,7 +337,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_CPLB_M: case VEC_CPLB_M:
info.si_code = BUS_ADRALN; info.si_code = BUS_ADRALN;
sig = SIGBUS; sig = SIGBUS;
printk(KERN_NOTICE EXC_0x26); printk(KERN_NOTICE EXC_0x26(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */ /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */
@ -348,7 +348,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
printk(KERN_NOTICE "NULL pointer access (probably)\n"); printk(KERN_NOTICE "NULL pointer access (probably)\n");
#else #else
sig = SIGILL; sig = SIGILL;
printk(KERN_NOTICE EXC_0x27); printk(KERN_NOTICE EXC_0x27(KERN_NOTICE));
#endif #endif
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
@ -356,7 +356,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_WATCH: case VEC_WATCH:
info.si_code = TRAP_WATCHPT; info.si_code = TRAP_WATCHPT;
sig = SIGTRAP; sig = SIGTRAP;
pr_debug(EXC_0x28); pr_debug(EXC_0x28(KERN_DEBUG));
CHK_DEBUGGER_TRAP_MAYBE(); CHK_DEBUGGER_TRAP_MAYBE();
/* Check if this is a watchpoint in kernel space */ /* Check if this is a watchpoint in kernel space */
if (fp->ipend & 0xffc0) if (fp->ipend & 0xffc0)
@ -378,21 +378,21 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_MISALI_I: case VEC_MISALI_I:
info.si_code = BUS_ADRALN; info.si_code = BUS_ADRALN;
sig = SIGBUS; sig = SIGBUS;
printk(KERN_NOTICE EXC_0x2A); printk(KERN_NOTICE EXC_0x2A(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x2B - Instruction CPLB protection violation, handled here */ /* 0x2B - Instruction CPLB protection violation, handled here */
case VEC_CPLB_I_VL: case VEC_CPLB_I_VL:
info.si_code = ILL_CPLB_VI; info.si_code = ILL_CPLB_VI;
sig = SIGBUS; sig = SIGBUS;
printk(KERN_NOTICE EXC_0x2B); printk(KERN_NOTICE EXC_0x2B(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x2C - Instruction CPLB miss, handled in _cplb_hdr */ /* 0x2C - Instruction CPLB miss, handled in _cplb_hdr */
case VEC_CPLB_I_M: case VEC_CPLB_I_M:
info.si_code = ILL_CPLB_MISS; info.si_code = ILL_CPLB_MISS;
sig = SIGBUS; sig = SIGBUS;
printk(KERN_NOTICE EXC_0x2C); printk(KERN_NOTICE EXC_0x2C(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x2D - Instruction CPLB Multiple Hits, handled here */ /* 0x2D - Instruction CPLB Multiple Hits, handled here */
@ -403,7 +403,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
printk(KERN_NOTICE "Jump to address 0 - 0x0fff\n"); printk(KERN_NOTICE "Jump to address 0 - 0x0fff\n");
#else #else
sig = SIGILL; sig = SIGILL;
printk(KERN_NOTICE EXC_0x2D); printk(KERN_NOTICE EXC_0x2D(KERN_NOTICE));
#endif #endif
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
@ -411,7 +411,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_ILL_RES: case VEC_ILL_RES:
info.si_code = ILL_PRVOPC; info.si_code = ILL_PRVOPC;
sig = SIGILL; sig = SIGILL;
printk(KERN_NOTICE EXC_0x2E); printk(KERN_NOTICE EXC_0x2E(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x2F - Reserved, Caught by default */ /* 0x2F - Reserved, Caught by default */

Просмотреть файл

@ -153,21 +153,21 @@ asmlinkage void irq_panic(int reason, struct pt_regs *regs)
case (SEQSTAT_HWERRCAUSE_SYSTEM_MMR): /* System MMR Error */ case (SEQSTAT_HWERRCAUSE_SYSTEM_MMR): /* System MMR Error */
info.si_code = BUS_ADRALN; info.si_code = BUS_ADRALN;
sig = SIGBUS; sig = SIGBUS;
printk(KERN_EMERG HWC_x2); printk(KERN_EMERG HWC_x2(KERN_EMERG));
break; break;
case (SEQSTAT_HWERRCAUSE_EXTERN_ADDR): /* External Memory Addressing Error */ case (SEQSTAT_HWERRCAUSE_EXTERN_ADDR): /* External Memory Addressing Error */
info.si_code = BUS_ADRERR; info.si_code = BUS_ADRERR;
sig = SIGBUS; sig = SIGBUS;
printk(KERN_EMERG HWC_x3); printk(KERN_EMERG HWC_x3(KERN_EMERG));
break; break;
case (SEQSTAT_HWERRCAUSE_PERF_FLOW): /* Performance Monitor Overflow */ case (SEQSTAT_HWERRCAUSE_PERF_FLOW): /* Performance Monitor Overflow */
printk(KERN_EMERG HWC_x12); printk(KERN_EMERG HWC_x12(KERN_EMERG));
break; break;
case (SEQSTAT_HWERRCAUSE_RAISE_5): /* RAISE 5 instruction */ case (SEQSTAT_HWERRCAUSE_RAISE_5): /* RAISE 5 instruction */
printk(KERN_EMERG HWC_x18); printk(KERN_EMERG HWC_x18(KERN_EMERG));
break; break;
default: /* Reserved */ default: /* Reserved */
printk(KERN_EMERG HWC_default); printk(KERN_EMERG HWC_default(KERN_EMERG));
break; break;
} }
} }

Просмотреть файл

@ -48,28 +48,80 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#define HWC_x2 "System MMR Error\nAn error occurred due to an invalid access to an System MMR location\nPossible reason: a 32-bit register is accessed with a 16-bit instruction,\nor a 16-bit register is accessed with a 32-bit instruction.\n" #define HWC_x2(level) \
#define HWC_x3 "External Memory Addressing Error\n" "System MMR Error\n" \
#define HWC_x12 "Performance Monitor Overflow\n" level " - An error occurred due to an invalid access to an System MMR location\n" \
#define HWC_x18 "RAISE 5 instruction\n Software issued a RAISE 5 instruction to invoke the Hardware\n" level " Possible reason: a 32-bit register is accessed with a 16-bit instruction\n" \
#define HWC_default "Reserved\n" level " or a 16-bit register is accessed with a 32-bit instruction.\n"
#define HWC_x3(level) \
#define EXC_0x03 "Application stack overflow\n - Please increase the stack size of the application using elf2flt -s option,\n and/or reduce the stack use of the application.\n" "External Memory Addressing Error\n"
#define EXC_0x10 "Single step\n - When the processor is in single step mode, every instruction\n generates an exception. Primarily used for debugging.\n" #define HWC_x12(level) \
#define EXC_0x11 "Exception caused by a trace buffer full condition\n - The processor takes this exception when the trace\n buffer overflows (only when enabled by the Trace Unit Control register).\n" "Performance Monitor Overflow\n"
#define EXC_0x21 "Undefined instruction\n - May be used to emulate instructions that are not defined for\n a particular processor implementation.\n" #define HWC_x18(level) \
#define EXC_0x22 "Illegal instruction combination\n - See section for multi-issue rules in the ADSP-BF53x Blackfin\n Processor Instruction Set Reference.\n" "RAISE 5 instruction\n" \
#define EXC_0x23 "Data access CPLB protection violation\n - Attempted read or write to Supervisor resource,\n or illegal data memory access. \n" level " Software issued a RAISE 5 instruction to invoke the Hardware\n"
#define EXC_0x24 "Data access misaligned address violation\n - Attempted misaligned data memory or data cache access.\n" #define HWC_default(level) \
#define EXC_0x25 "Unrecoverable event\n - For example, an exception generated while processing a previous exception.\n" "Reserved\n"
#define EXC_0x26 "Data access CPLB miss\n - Used by the MMU to signal a CPLB miss on a data access.\n" #define EXC_0x03(level) \
#define EXC_0x27 "Data access multiple CPLB hits\n - More than one CPLB entry matches data fetch address.\n" "Application stack overflow\n" \
#define EXC_0x28 "Program Sequencer Exception caused by an emulation watchpoint match\n - There is a watchpoint match, and one of the EMUSW\n bits in the Watchpoint Instruction Address Control register (WPIACTL) is set.\n" level " - Please increase the stack size of the application using elf2flt -s option,\n" \
#define EXC_0x2A "Instruction fetch misaligned address violation\n - Attempted misaligned instruction cache fetch. On a misaligned instruction fetch exception,\n the return address provided in RETX is the destination address which is misaligned, rather than the address of the offending instruction.\n" level " and/or reduce the stack use of the application.\n"
#define EXC_0x2B "CPLB protection violation\n - Illegal instruction fetch access (memory protection violation).\n" #define EXC_0x10(level) \
#define EXC_0x2C "Instruction fetch CPLB miss\n - CPLB miss on an instruction fetch.\n" "Single step\n" \
#define EXC_0x2D "Instruction fetch multiple CPLB hits\n - More than one CPLB entry matches instruction fetch address.\n" level " - When the processor is in single step mode, every instruction\n" \
#define EXC_0x2E "Illegal use of supervisor resource\n - Attempted to use a Supervisor register or instruction from User mode.\n Supervisor resources are registers and instructions that are reserved\n for Supervisor use: Supervisor only registers, all MMRs, and Supervisor\n only instructions.\n" level " generates an exception. Primarily used for debugging.\n"
#define EXC_0x11(level) \
"Exception caused by a trace buffer full condition\n" \
level " - The processor takes this exception when the trace\n" \
level " buffer overflows (only when enabled by the Trace Unit Control register).\n"
#define EXC_0x21(level) \
"Undefined instruction\n" \
level " - May be used to emulate instructions that are not defined for\n" \
level " a particular processor implementation.\n"
#define EXC_0x22(level) \
"Illegal instruction combination\n" \
level " - See section for multi-issue rules in the ADSP-BF53x Blackfin\n" \
level " Processor Instruction Set Reference.\n"
#define EXC_0x23(level) \
"Data access CPLB protection violation\n" \
level " - Attempted read or write to Supervisor resource,\n" \
level " or illegal data memory access. \n"
#define EXC_0x24(level) \
"Data access misaligned address violation\n" \
level " - Attempted misaligned data memory or data cache access.\n"
#define EXC_0x25(level) \
"Unrecoverable event\n" \
level " - For example, an exception generated while processing a previous exception.\n"
#define EXC_0x26(level) \
"Data access CPLB miss\n" \
level " - Used by the MMU to signal a CPLB miss on a data access.\n"
#define EXC_0x27(level) \
"Data access multiple CPLB hits\n" \
level " - More than one CPLB entry matches data fetch address.\n"
#define EXC_0x28(level) \
"Program Sequencer Exception caused by an emulation watchpoint match\n" \
level " - There is a watchpoint match, and one of the EMUSW\n" \
level " bits in the Watchpoint Instruction Address Control register (WPIACTL) is set.\n"
#define EXC_0x2A(level) \
"Instruction fetch misaligned address violation\n" \
level " - Attempted misaligned instruction cache fetch. On a misaligned instruction fetch\n" \
level " exception, the return address provided in RETX is the destination address which is\n" \
level " misaligned, rather than the address of the offending instruction.\n"
#define EXC_0x2B(level) \
"CPLB protection violation\n" \
level " - Illegal instruction fetch access (memory protection violation).\n"
#define EXC_0x2C(level) \
"Instruction fetch CPLB miss\n" \
level " - CPLB miss on an instruction fetch.\n"
#define EXC_0x2D(level) \
"Instruction fetch multiple CPLB hits\n" \
level " - More than one CPLB entry matches instruction fetch address.\n"
#define EXC_0x2E(level) \
"Illegal use of supervisor resource\n" \
level " - Attempted to use a Supervisor register or instruction from User mode.\n" \
level " Supervisor resources are registers and instructions that are reserved\n" \
level " for Supervisor use: Supervisor only registers, all MMRs, and Supervisor\n" \
level " only instructions.\n"
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* _BFIN_TRAPS_H */ #endif /* _BFIN_TRAPS_H */