Commit f82e0a0c authored by Graf Yang's avatar Graf Yang Committed by Mike Frysinger

Blackfin: fix link failure due to CONFIG_EXCEPTION_L1_SCRATCH

Move exception stack mess from entry.S to init.c to fix link failure when
CONFIG_EXCEPTION_L1_SCRATCH is in use.
Signed-off-by: default avatarGraf Yang <graf.yang@analog.com>
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
Signed-off-by: default avatarBryan Wu <cooloney@kernel.org>
parent b8d0c778
...@@ -808,7 +808,7 @@ config APP_STACK_L1 ...@@ -808,7 +808,7 @@ config APP_STACK_L1
config EXCEPTION_L1_SCRATCH config EXCEPTION_L1_SCRATCH
bool "Locate exception stack in L1 Scratch Memory" bool "Locate exception stack in L1 Scratch Memory"
default n default n
depends on !APP_STACK_L1 && !SYSCALL_TAB_L1 depends on !APP_STACK_L1
help help
Whenever an exception occurs, use the L1 Scratch memory for Whenever an exception occurs, use the L1 Scratch memory for
stack storage. You cannot place the stacks of FLAT binaries stack storage. You cannot place the stacks of FLAT binaries
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <linux/unistd.h> #include <linux/unistd.h>
#include <linux/threads.h>
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include <asm/errno.h> #include <asm/errno.h>
#include <asm/fixed_code.h> #include <asm/fixed_code.h>
...@@ -1588,19 +1587,3 @@ ENTRY(_sys_call_table) ...@@ -1588,19 +1587,3 @@ ENTRY(_sys_call_table)
.long _sys_ni_syscall .long _sys_ni_syscall
.endr .endr
END(_sys_call_table) END(_sys_call_table)
#ifdef CONFIG_EXCEPTION_L1_SCRATCH
/* .section .l1.bss.scratch */
.set _exception_stack_top, L1_SCRATCH_START + L1_SCRATCH_LENGTH
#else
#ifdef CONFIG_SYSCALL_TAB_L1
.section .l1.bss
#else
.bss
#endif
ENTRY(_exception_stack)
.rept 1024 * NR_CPUS
.long 0
.endr
_exception_stack_top:
#endif
...@@ -52,9 +52,14 @@ static unsigned long empty_bad_page_table; ...@@ -52,9 +52,14 @@ static unsigned long empty_bad_page_table;
static unsigned long empty_bad_page; static unsigned long empty_bad_page;
unsigned long empty_zero_page; static unsigned long empty_zero_page;
extern unsigned long exception_stack[NR_CPUS][1024]; #ifndef CONFIG_EXCEPTION_L1_SCRATCH
#if defined CONFIG_SYSCALL_TAB_L1
__attribute__((l1_data))
#endif
static unsigned long exception_stack[NR_CPUS][1024];
#endif
struct blackfin_pda cpu_pda[NR_CPUS]; struct blackfin_pda cpu_pda[NR_CPUS];
EXPORT_SYMBOL(cpu_pda); EXPORT_SYMBOL(cpu_pda);
...@@ -117,7 +122,12 @@ asmlinkage void __init init_pda(void) ...@@ -117,7 +122,12 @@ asmlinkage void __init init_pda(void)
cpu_pda[0].next = &cpu_pda[1]; cpu_pda[0].next = &cpu_pda[1];
cpu_pda[1].next = &cpu_pda[0]; cpu_pda[1].next = &cpu_pda[0];
#ifdef CONFIG_EXCEPTION_L1_SCRATCH
cpu_pda[cpu].ex_stack = (unsigned long *)(L1_SCRATCH_START + \
L1_SCRATCH_LENGTH);
#else
cpu_pda[cpu].ex_stack = exception_stack[cpu + 1]; cpu_pda[cpu].ex_stack = exception_stack[cpu + 1];
#endif
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
cpu_pda[cpu].imask = 0x1f; cpu_pda[cpu].imask = 0x1f;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment