Skip to content

Commit

Permalink
sh: Setup boot CPU VBR early to enable early page faults.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Paul Mundt committed Feb 17, 2010
1 parent 1d5cfcd commit 49f3bfe
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 11 deletions.
21 changes: 17 additions & 4 deletions arch/sh/kernel/cpu/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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();
}
}
7 changes: 0 additions & 7 deletions arch/sh/kernel/traps_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
#include <asm/alignment.h>
#include <asm/fpu.h>
#include <asm/kprobes.h>
#include <asm/sh_bios.h>

#ifdef CONFIG_CPU_SH2
# define TRAP_RESERVED_INST 4
Expand Down Expand Up @@ -848,12 +847,6 @@ void __init trap_init(void)
#ifdef TRAP_UBC
set_exception_table_vec(TRAP_UBC, breakpoint_trap_handler);
#endif

/* Save off the BIOS VBR, if there is one */
sh_bios_vbr_init();

/* Setup VBR for boot cpu */
per_cpu_trap_init();
}

void show_stack(struct task_struct *tsk, unsigned long *sp)
Expand Down

0 comments on commit 49f3bfe

Please sign in to comment.