Blackfin arch: add an option to allow people to stick exception stack into L1 scratch
Mike Frysinger [Tue, 28 Oct 2008 03:03:09 +0000 (11:03 +0800)]
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>

arch/blackfin/Kconfig
arch/blackfin/mach-common/entry.S

index ac76baa..e37e993 100644 (file)
@@ -667,6 +667,17 @@ config APP_STACK_L1
 
          Currently only works with FLAT binaries.
 
+config EXCEPTION_L1_SCRATCH
+       bool "Locate exception stack in L1 Scratch Memory"
+       default n
+       depends on !APP_STACK_L1 && !SYSCALL_TAB_L1
+       help
+         Whenever an exception occurs, use the L1 Scratch memory for
+         stack storage.  You cannot place the stacks of FLAT binaries
+         in L1 when using this option.
+
+         If you don't use L1 Scratch, then you should say Y here.
+
 comment "Speed Optimizations"
 config BFIN_INS_LOWOVERHEAD
        bool "ins[bwl] low overhead, higher interrupt latency"
index bde6dc4..ad40498 100644 (file)
@@ -1539,14 +1539,23 @@ ENTRY(_sys_call_table)
        .endr
 END(_sys_call_table)
 
-_exception_stack:
-       .rept 1024
-       .long 0;
-       .endr
-_exception_stack_top:
-
 #if ANOMALY_05000261
 /* Used by the assembly entry point to work around an anomaly.  */
 _last_cplb_fault_retx:
        .long 0;
 #endif
+
+#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
+_exception_stack:
+.size _exception_stack, 1024 * 4
+.set _exception_stack_top, _exception_stack + 1024 * 4
+.size _exception_stack_top, 0
+#endif