diff options
author | Robin Getz <robin.getz@analog.com> | 2007-10-09 11:28:36 +0200 |
---|---|---|
committer | Bryan Wu <bryan.wu@analog.com> | 2007-10-09 11:28:36 +0200 |
commit | ce3afa1c043ab3d4125671441a57353d80f5f6f7 (patch) | |
tree | a6d2d85c7380eab7e28a456cef0af2a271f1c32d /arch/blackfin/kernel/traps.c | |
parent | Blackfin arch: fix endless loop bug when a double fault happens (diff) | |
download | linux-ce3afa1c043ab3d4125671441a57353d80f5f6f7.tar.xz linux-ce3afa1c043ab3d4125671441a57353d80f5f6f7.zip |
Blackfin arch: Enable earlyprintk earlier - so any error after our interrupt tables are set up will print out
Also ensure that the traps_c code doesn't cause a double fault, by
sending a signal to a faulting kernel before the memory subsystem
is fully initialized, by printing out the error message before sending
the signal.
Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Diffstat (limited to 'arch/blackfin/kernel/traps.c')
-rw-r--r-- | arch/blackfin/kernel/traps.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index ba68eb2ec929..8823e9ade584 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c @@ -402,10 +402,6 @@ asmlinkage void trap_c(struct pt_regs *fp) break; } - info.si_signo = sig; - info.si_errno = 0; - info.si_addr = (void *)fp->pc; - force_sig_info(sig, &info, current); if (sig != 0 && sig != SIGTRAP) { unsigned long stack; dump_bfin_regs(fp, (void *)fp->retx); @@ -414,6 +410,10 @@ asmlinkage void trap_c(struct pt_regs *fp) if (current->mm == NULL) panic("Kernel exception"); } + info.si_signo = sig; + info.si_errno = 0; + info.si_addr = (void *)fp->pc; + force_sig_info(sig, &info, current); /* if the address that we are about to return to is not valid, set it * to a valid address, if we have a current application or panic |