diff options
Diffstat (limited to 'arch/arm/kernel/traps.c')
| -rw-r--r-- | arch/arm/kernel/traps.c | 19 | 
1 files changed, 11 insertions, 8 deletions
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index cd77743472a..778454750a6 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c @@ -227,6 +227,11 @@ void show_stack(struct task_struct *tsk, unsigned long *sp)  #else  #define S_SMP ""  #endif +#ifdef CONFIG_THUMB2_KERNEL +#define S_ISA " THUMB2" +#else +#define S_ISA " ARM" +#endif  static int __die(const char *str, int err, struct thread_info *thread, struct pt_regs *regs)  { @@ -234,8 +239,8 @@ static int __die(const char *str, int err, struct thread_info *thread, struct pt  	static int die_counter;  	int ret; -	printk(KERN_EMERG "Internal error: %s: %x [#%d]" S_PREEMPT S_SMP "\n", -	       str, err, ++die_counter); +	printk(KERN_EMERG "Internal error: %s: %x [#%d]" S_PREEMPT S_SMP +	       S_ISA "\n", str, err, ++die_counter);  	/* trap and error numbers are mostly meaningless on ARM */  	ret = notify_die(DIE_OOPS, str, regs, err, tsk->thread.trap_no, SIGSEGV); @@ -784,18 +789,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  |