From: Sonic Zhang Date: Mon, 15 Jun 2009 07:39:19 +0000 (+0000) Subject: Blackfin: fix accidental reset in some boot modes X-Git-Tag: v2.6.31-rc1~44^2~18 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0de4adfb8c9674fa1572b0ff1371acc94b0be901;p=platform%2Fupstream%2Fkernel-adaptation-pc.git Blackfin: fix accidental reset in some boot modes We read the SWRST (Software Reset) register to get at the last reset state, and then we may configure the DOUBLE_FAULT bit to control behavior when a double fault occurs. But if the lower bits of the register is already set (like UART boot mode on a BF54x), we inadvertently make the system reset by writing to the SYSTEM_RESET field at the same time. So make sure the lower 4 bits are always cleared. Signed-off-by: Sonic Zhang Signed-off-by: Mike Frysinger --- diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index 6454bab..b2782ea 100644 --- a/arch/blackfin/kernel/setup.c +++ b/arch/blackfin/kernel/setup.c @@ -837,7 +837,8 @@ void __init setup_arch(char **cmdline_p) defined(CONFIG_BF538) || defined(CONFIG_BF539) _bfin_swrst = bfin_read_SWRST(); #else - _bfin_swrst = bfin_read_SYSCR(); + /* Clear boot mode field */ + _bfin_swrst = bfin_read_SYSCR() & ~0xf; #endif #ifdef CONFIG_DEBUG_DOUBLEFAULT_PRINT