diff options
author | Mike Frysinger <vapier.adi@gmail.com> | 2008-10-27 23:03:09 -0400 |
---|---|---|
committer | Bryan Wu <cooloney@kernel.org> | 2008-10-27 23:03:09 -0400 |
commit | 6ad2b84cf014d91a9dffa3f8edb008430fbdb445 (patch) | |
tree | edf7a13c83fbcba75fa1465c2a4cbffb08c42960 | |
parent | fe8015ce2588e3ffe65284a2883703355804276e (diff) |
Blackfin arch: add an option to allow people to stick exception stack into L1 scratch
allow people to stick exception stack into L1 scratch
and make sure it gets placed into .bss sections rather than .data
Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
-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 | ||