diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-03-18 06:06:15 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-03-18 06:06:15 -0400 |
commit | a6bab7b5c18501e4dd3201ae8ac1dc6da5f07acc (patch) | |
tree | fc4b97e04dc02d9aa80b3c12ae49c17ca11860a6 /arch/sh/kernel/machine_kexec.c | |
parent | b7cf6ddc13186f9272438a97aa75972d496d0b0a (diff) |
sh: kexec: Drop SR.BL bit toggling.
For the time being, this creates far more problems than it solves,
evident by the second local_irq_disable(). Kill all of this off
and rely on IRQ disabling to protect against the VBR reload.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/machine_kexec.c')
-rw-r--r-- | arch/sh/kernel/machine_kexec.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/sh/kernel/machine_kexec.c b/arch/sh/kernel/machine_kexec.c index c44efb73ab1a..69268c0d8063 100644 --- a/arch/sh/kernel/machine_kexec.c +++ b/arch/sh/kernel/machine_kexec.c | |||
@@ -110,23 +110,22 @@ void machine_kexec(struct kimage *image) | |||
110 | memcpy((void *)reboot_code_buffer, relocate_new_kernel, | 110 | memcpy((void *)reboot_code_buffer, relocate_new_kernel, |
111 | relocate_new_kernel_size); | 111 | relocate_new_kernel_size); |
112 | 112 | ||
113 | kexec_info(image); | 113 | kexec_info(image); |
114 | flush_cache_all(); | 114 | flush_cache_all(); |
115 | 115 | ||
116 | set_bl_bit(); | ||
117 | #if defined(CONFIG_SH_STANDARD_BIOS) | 116 | #if defined(CONFIG_SH_STANDARD_BIOS) |
118 | asm volatile("ldc %0, vbr" : | 117 | asm volatile("ldc %0, vbr" : |
119 | : "r" (((unsigned long) gdb_vbr_vector) - 0x100) | 118 | : "r" (((unsigned long) gdb_vbr_vector) - 0x100) |
120 | : "memory"); | 119 | : "memory"); |
121 | #endif | 120 | #endif |
121 | |||
122 | /* now call it */ | 122 | /* now call it */ |
123 | rnk = (relocate_new_kernel_t) reboot_code_buffer; | 123 | rnk = (relocate_new_kernel_t) reboot_code_buffer; |
124 | (*rnk)(page_list, reboot_code_buffer, image->start); | 124 | (*rnk)(page_list, reboot_code_buffer, image->start); |
125 | 125 | ||
126 | #ifdef CONFIG_KEXEC_JUMP | 126 | #ifdef CONFIG_KEXEC_JUMP |
127 | asm volatile("ldc %0, vbr" : : "r" (&vbr_base) : "memory"); | 127 | asm volatile("ldc %0, vbr" : : "r" (&vbr_base) : "memory"); |
128 | local_irq_disable(); | 128 | |
129 | clear_bl_bit(); | ||
130 | if (image->preserve_context) | 129 | if (image->preserve_context) |
131 | restore_processor_state(); | 130 | restore_processor_state(); |
132 | 131 | ||