diff options
| -rw-r--r-- | arch/arm/include/asm/traps.h | 2 | ||||
| -rw-r--r-- | arch/arm/kernel/setup.c | 1 | ||||
| -rw-r--r-- | arch/arm/kernel/traps.c | 10 | ||||
| -rw-r--r-- | arch/arm/mm/mmu.c | 7 | 
4 files changed, 10 insertions, 10 deletions
diff --git a/arch/arm/include/asm/traps.h b/arch/arm/include/asm/traps.h index 5b29a667362..f555bb3664d 100644 --- a/arch/arm/include/asm/traps.h +++ b/arch/arm/include/asm/traps.h @@ -46,7 +46,7 @@ static inline int in_exception_text(unsigned long ptr)  	return in ? : __in_irqentry_text(ptr);  } -extern void __init early_trap_init(void); +extern void __init early_trap_init(void *);  extern void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long frame);  extern void ptrace_break(struct task_struct *tsk, struct pt_regs *regs); diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 129fbd55bde..9b65cb4589e 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -961,7 +961,6 @@ void __init setup_arch(char **cmdline_p)  	conswitchp = &dummy_con;  #endif  #endif -	early_trap_init();  	if (mdesc->init_early)  		mdesc->init_early(); diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 99a57270250..be15dafaa88 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c @@ -781,18 +781,16 @@ static void __init kuser_get_tls_init(unsigned long vectors)  		memcpy((void *)vectors + 0xfe0, (void *)vectors + 0xfe8, 4);  } -void __init early_trap_init(void) +void __init early_trap_init(void *vectors_base)  { -#if defined(CONFIG_CPU_USE_DOMAINS) -	unsigned long vectors = CONFIG_VECTORS_BASE; -#else -	unsigned long vectors = (unsigned long)vectors_page; -#endif +	unsigned long vectors = (unsigned long)vectors_base;  	extern char __stubs_start[], __stubs_end[];  	extern char __vectors_start[], __vectors_end[];  	extern char __kuser_helper_start[], __kuser_helper_end[];  	int kuser_sz = __kuser_helper_end - __kuser_helper_start; +	vectors_page = vectors_base; +  	/*  	 * Copy the vectors, stubs and kuser helpers (in entry-armv.S)  	 * into the vector page, mapped at 0xffff0000, and ensure these diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 94c5a0c94f5..c1263adc2a2 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@ -997,11 +997,14 @@ static void __init devicemaps_init(struct machine_desc *mdesc)  {  	struct map_desc map;  	unsigned long addr; +	void *vectors;  	/*  	 * Allocate the vector page early.  	 */ -	vectors_page = early_alloc(PAGE_SIZE); +	vectors = early_alloc(PAGE_SIZE); + +	early_trap_init(vectors);  	for (addr = VMALLOC_START; addr; addr += PMD_SIZE)  		pmd_clear(pmd_off_k(addr)); @@ -1041,7 +1044,7 @@ static void __init devicemaps_init(struct machine_desc *mdesc)  	 * location (0xffff0000).  If we aren't using high-vectors, also  	 * create a mapping at the low-vectors virtual address.  	 */ -	map.pfn = __phys_to_pfn(virt_to_phys(vectors_page)); +	map.pfn = __phys_to_pfn(virt_to_phys(vectors));  	map.virtual = 0xffff0000;  	map.length = PAGE_SIZE;  	map.type = MT_HIGH_VECTORS;  |