aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/traps_32.c
diff options
context:
space:
mode:
authorMagnus Damm <damm@opensource.se>2010-09-24 05:05:38 -0400
committerPaul Mundt <lethal@linux-sh.org>2010-09-29 20:43:32 -0400
commit68a1aed7039e5a94a8e60e23fdf676738c36086a (patch)
tree493699f8b085269298c49569f104b3c43e80d242 /arch/sh/kernel/traps_32.c
parent4c62c595c2a23fb36a0b901b550115370047a137 (diff)
sh: boot kernel with SR.BL set
Update the SH kernel to keep SR.BL set until the VBR register has been initialized. Useful to allow boot of the kernel even though exceptions are pending. Without this patch there is a window of time when exceptions such as NMI are enabled but no exception handlers are installed. This patch modifies both the zImage loader and the actual kernel to boot with BL=1, but the zImage loader is modfied in such a way that the init_sr value is unchanged to not break the zImage loader provided by kexec. Tested on sh7724 Ecovec and on the SH4AL-DSP core included in sh7372. Signed-off-by: Magnus Damm <damm@opensource.se> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/traps_32.c')
-rw-r--r--arch/sh/kernel/traps_32.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c
index c3d86fa71ddf..f5613529a6bf 100644
--- a/arch/sh/kernel/traps_32.c
+++ b/arch/sh/kernel/traps_32.c
@@ -802,6 +802,9 @@ void __cpuinit per_cpu_trap_init(void)
802 : /* no output */ 802 : /* no output */
803 : "r" (&vbr_base) 803 : "r" (&vbr_base)
804 : "memory"); 804 : "memory");
805
806 /* disable exception blocking now when the vbr has been setup */
807 clear_bl_bit();
805} 808}
806 809
807void *set_exception_table_vec(unsigned int vec, void *handler) 810void *set_exception_table_vec(unsigned int vec, void *handler)