diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/blackfin/Kconfig | 11 | ||||
-rw-r--r-- | arch/blackfin/mach-common/entry.S | 21 |
2 files changed, 26 insertions, 6 deletions
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index ac76baac1df3..e37e993431b9 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
@@ -667,6 +667,17 @@ config APP_STACK_L1 | |||
667 | 667 | ||
668 | Currently only works with FLAT binaries. | 668 | Currently only works with FLAT binaries. |
669 | 669 | ||
670 | config EXCEPTION_L1_SCRATCH | ||
671 | bool "Locate exception stack in L1 Scratch Memory" | ||
672 | default n | ||
673 | depends on !APP_STACK_L1 && !SYSCALL_TAB_L1 | ||
674 | help | ||
675 | Whenever an exception occurs, use the L1 Scratch memory for | ||
676 | stack storage. You cannot place the stacks of FLAT binaries | ||
677 | in L1 when using this option. | ||
678 | |||
679 | If you don't use L1 Scratch, then you should say Y here. | ||
680 | |||
670 | comment "Speed Optimizations" | 681 | comment "Speed Optimizations" |
671 | config BFIN_INS_LOWOVERHEAD | 682 | config BFIN_INS_LOWOVERHEAD |
672 | bool "ins[bwl] low overhead, higher interrupt latency" | 683 | bool "ins[bwl] low overhead, higher interrupt latency" |
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S index bde6dc4e2614..ad4049882291 100644 --- a/arch/blackfin/mach-common/entry.S +++ b/arch/blackfin/mach-common/entry.S | |||
@@ -1539,14 +1539,23 @@ ENTRY(_sys_call_table) | |||
1539 | .endr | 1539 | .endr |
1540 | END(_sys_call_table) | 1540 | END(_sys_call_table) |
1541 | 1541 | ||
1542 | _exception_stack: | ||
1543 | .rept 1024 | ||
1544 | .long 0; | ||
1545 | .endr | ||
1546 | _exception_stack_top: | ||
1547 | |||
1548 | #if ANOMALY_05000261 | 1542 | #if ANOMALY_05000261 |
1549 | /* Used by the assembly entry point to work around an anomaly. */ | 1543 | /* Used by the assembly entry point to work around an anomaly. */ |
1550 | _last_cplb_fault_retx: | 1544 | _last_cplb_fault_retx: |
1551 | .long 0; | 1545 | .long 0; |
1552 | #endif | 1546 | #endif |
1547 | |||
1548 | #ifdef CONFIG_EXCEPTION_L1_SCRATCH | ||
1549 | /* .section .l1.bss.scratch */ | ||
1550 | .set _exception_stack_top, L1_SCRATCH_START + L1_SCRATCH_LENGTH | ||
1551 | #else | ||
1552 | #ifdef CONFIG_SYSCALL_TAB_L1 | ||
1553 | .section .l1.bss | ||
1554 | #else | ||
1555 | .bss | ||
1556 | #endif | ||
1557 | _exception_stack: | ||
1558 | .size _exception_stack, 1024 * 4 | ||
1559 | .set _exception_stack_top, _exception_stack + 1024 * 4 | ||
1560 | .size _exception_stack_top, 0 | ||
1561 | #endif | ||