diff options
author | Paul Mundt <lethal@linux-sh.org> | 2010-02-17 12:33:22 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2010-02-17 12:33:22 +0900 |
commit | 49f3bfe9334a4cf86079d2ee1d08e674b58862a9 (patch) | |
tree | 26c6fd90f5c3b0f4cee01095d45c307d505a86a7 /arch/sh/kernel/cpu/init.c | |
parent | 1d5cfcdff793e2f34ec61d902fa5ee0c7e4a2208 (diff) |
sh: Setup boot CPU VBR early to enable early page faults.
vmemmap and the vmsplit code amongst others need to be able to take page
faults much earlier than trap_init() time, so move this in to the early
CPU initialization. VBR setup for secondary CPUs is already handled
through start_secondary(), so we only need to do this for the boot CPU.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/cpu/init.c')
-rw-r--r-- | arch/sh/kernel/cpu/init.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c index 6311b0b1789..c736422344e 100644 --- a/arch/sh/kernel/cpu/init.c +++ b/arch/sh/kernel/cpu/init.c @@ -24,6 +24,7 @@ #include <asm/elf.h> #include <asm/io.h> #include <asm/smp.h> +#include <asm/sh_bios.h> #ifdef CONFIG_SH_FPU #define cpu_has_fpu 1 @@ -342,9 +343,21 @@ asmlinkage void __init sh_cpu_init(void) speculative_execution_init(); expmask_init(); - /* - * Boot processor to setup the FP and extended state context info. - */ - if (raw_smp_processor_id() == 0) + /* Do the rest of the boot processor setup */ + if (raw_smp_processor_id() == 0) { + /* Save off the BIOS VBR, if there is one */ + sh_bios_vbr_init(); + + /* + * Setup VBR for boot CPU. Secondary CPUs do this through + * start_secondary(). + */ + per_cpu_trap_init(); + + /* + * Boot processor to setup the FP and extended state + * context info. + */ init_thread_xstate(); + } } |