diff options
| -rw-r--r-- | arch/mips/Kconfig | 1 | ||||
| -rw-r--r-- | arch/mips/include/asm/thread_info.h | 2 | ||||
| -rw-r--r-- | arch/mips/kernel/irq.c | 3 | ||||
| -rw-r--r-- | arch/mips/lib/uncached.c | 4 | 
4 files changed, 5 insertions, 5 deletions
| diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 59dabfd5a129..451ee7abd22a 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -4,6 +4,7 @@ config MIPS  	default y  	select ARCH_32BIT_OFF_T if !64BIT  	select ARCH_BINFMT_ELF_STATE if MIPS_FP_SUPPORT +	select ARCH_HAS_CURRENT_STACK_POINTER  	select ARCH_HAS_DEBUG_VIRTUAL if !64BIT  	select ARCH_HAS_FORTIFY_SOURCE  	select ARCH_HAS_KCOV diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h index 0b17aaa9e012..4463348d2372 100644 --- a/arch/mips/include/asm/thread_info.h +++ b/arch/mips/include/asm/thread_info.h @@ -69,6 +69,8 @@ static inline struct thread_info *current_thread_info(void)  	return __current_thread_info;  } +register unsigned long current_stack_pointer __asm__("sp"); +  #endif /* !__ASSEMBLY__ */  /* thread information allocation */ diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c index 5e11582fe308..fc313c49a417 100644 --- a/arch/mips/kernel/irq.c +++ b/arch/mips/kernel/irq.c @@ -75,9 +75,8 @@ void __init init_IRQ(void)  #ifdef CONFIG_DEBUG_STACKOVERFLOW  static inline void check_stack_overflow(void)  { -	unsigned long sp; +	unsigned long sp = current_stack_pointer; -	__asm__ __volatile__("move %0, $sp" : "=r" (sp));  	sp &= THREAD_MASK;  	/* diff --git a/arch/mips/lib/uncached.c b/arch/mips/lib/uncached.c index f80a67c092b6..f8d4ca046c3e 100644 --- a/arch/mips/lib/uncached.c +++ b/arch/mips/lib/uncached.c @@ -40,9 +40,7 @@ unsigned long run_uncached(void *func)  	register long ret __asm__("$2");  	long lfunc = (long)func, ufunc;  	long usp; -	long sp; - -	__asm__("move %0, $sp" : "=r" (sp)); +	long sp = current_stack_pointer;  	if (sp >= (long)CKSEG0 && sp < (long)CKSEG2)  		usp = CKSEG1ADDR(sp); | 
