aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGraf Yang <graf.yang@analog.com>2009-01-07 10:14:39 -0500
committerBryan Wu <cooloney@kernel.org>2009-01-07 10:14:39 -0500
commit46fa5eecec58934902ea4a65d9c7b7a486ac6f6b (patch)
treeb7373553151456c620d9747785de322b30d11548
parent8f65873e47784a390949f0d61e5692dbf2a8253e (diff)
Blackfin arch: SMP supporting patchset: some other misc code
Blackfin dual core BF561 processor can support SMP like features. https://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:smp-like In this patch, we provide SMP extend to some other misc code Singed-off-by: Graf Yang <graf.yang@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
-rw-r--r--arch/blackfin/Kconfig33
-rw-r--r--arch/blackfin/kernel/vmlinux.lds.S4
-rw-r--r--arch/blackfin/mach-bf518/include/mach/mem_map.h15
-rw-r--r--arch/blackfin/mach-bf527/include/mach/mem_map.h15
-rw-r--r--arch/blackfin/mach-bf533/include/mach/mem_map.h15
-rw-r--r--arch/blackfin/mach-bf537/include/mach/mem_map.h15
-rw-r--r--arch/blackfin/mach-bf538/include/mach/mem_map.h15
-rw-r--r--arch/blackfin/mach-bf548/include/mach/mem_map.h15
8 files changed, 123 insertions, 4 deletions
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig
index 004c06ce3198..3a468436258d 100644
--- a/arch/blackfin/Kconfig
+++ b/arch/blackfin/Kconfig
@@ -200,6 +200,32 @@ config BF561
200 200
201endchoice 201endchoice
202 202
203config SMP
204 depends on BF561
205 bool "Symmetric multi-processing support"
206 ---help---
207 This enables support for systems with more than one CPU,
208 like the dual core BF561. If you have a system with only one
209 CPU, say N. If you have a system with more than one CPU, say Y.
210
211 If you don't know what to do here, say N.
212
213config NR_CPUS
214 int
215 depends on SMP
216 default 2 if BF561
217
218config IRQ_PER_CPU
219 bool
220 depends on SMP
221 default y
222
223config TICK_SOURCE_SYSTMR0
224 bool
225 select BFIN_GPTIMERS
226 depends on SMP
227 default y
228
203config BF_REV_MIN 229config BF_REV_MIN
204 int 230 int
205 default 0 if (BF51x || BF52x || BF54x) 231 default 0 if (BF51x || BF52x || BF54x)
@@ -502,6 +528,7 @@ source kernel/Kconfig.hz
502 528
503config GENERIC_TIME 529config GENERIC_TIME
504 bool "Generic time" 530 bool "Generic time"
531 depends on !SMP
505 default y 532 default y
506 533
507config GENERIC_CLOCKEVENTS 534config GENERIC_CLOCKEVENTS
@@ -576,6 +603,7 @@ endmenu
576 603
577 604
578menu "Blackfin Kernel Optimizations" 605menu "Blackfin Kernel Optimizations"
606 depends on !SMP
579 607
580comment "Memory Optimizations" 608comment "Memory Optimizations"
581 609
@@ -738,7 +766,6 @@ config BFIN_INS_LOWOVERHEAD
738 766
739endmenu 767endmenu
740 768
741
742choice 769choice
743 prompt "Kernel executes from" 770 prompt "Kernel executes from"
744 help 771 help
@@ -804,9 +831,11 @@ config BFIN_ICACHE_LOCK
804choice 831choice
805 prompt "Policy" 832 prompt "Policy"
806 depends on BFIN_DCACHE 833 depends on BFIN_DCACHE
807 default BFIN_WB 834 default BFIN_WB if !SMP
835 default BFIN_WT if SMP
808config BFIN_WB 836config BFIN_WB
809 bool "Write back" 837 bool "Write back"
838 depends on !SMP
810 help 839 help
811 Write Back Policy: 840 Write Back Policy:
812 Cached data will be written back to SDRAM only when needed. 841 Cached data will be written back to SDRAM only when needed.
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S
index 7d12c6692a65..2a485352ec14 100644
--- a/arch/blackfin/kernel/vmlinux.lds.S
+++ b/arch/blackfin/kernel/vmlinux.lds.S
@@ -109,7 +109,7 @@ SECTIONS
109#endif 109#endif
110 110
111 DATA_DATA 111 DATA_DATA
112 *(.data.*) 112 *(.data)
113 CONSTRUCTORS 113 CONSTRUCTORS
114 114
115 /* make sure the init_task is aligned to the 115 /* make sure the init_task is aligned to the
@@ -161,6 +161,7 @@ SECTIONS
161 *(.con_initcall.init) 161 *(.con_initcall.init)
162 ___con_initcall_end = .; 162 ___con_initcall_end = .;
163 } 163 }
164 PERCPU(4)
164 SECURITY_INIT 165 SECURITY_INIT
165 .init.ramfs : 166 .init.ramfs :
166 { 167 {
@@ -236,7 +237,6 @@ SECTIONS
236 . = ALIGN(4); 237 . = ALIGN(4);
237 __ebss_l2 = .; 238 __ebss_l2 = .;
238 } 239 }
239
240 /* Force trailing alignment of our init section so that when we 240 /* Force trailing alignment of our init section so that when we
241 * free our init memory, we don't leave behind a partial page. 241 * free our init memory, we don't leave behind a partial page.
242 */ 242 */
diff --git a/arch/blackfin/mach-bf518/include/mach/mem_map.h b/arch/blackfin/mach-bf518/include/mach/mem_map.h
index 10f678f3c5c0..ac95d334d082 100644
--- a/arch/blackfin/mach-bf518/include/mach/mem_map.h
+++ b/arch/blackfin/mach-bf518/include/mach/mem_map.h
@@ -99,4 +99,19 @@
99#define L1_SCRATCH_START 0xFFB00000 99#define L1_SCRATCH_START 0xFFB00000
100#define L1_SCRATCH_LENGTH 0x1000 100#define L1_SCRATCH_LENGTH 0x1000
101 101
102#define get_l1_scratch_start_cpu(cpu) L1_SCRATCH_START
103#define get_l1_code_start_cpu(cpu) L1_CODE_START
104#define get_l1_data_a_start_cpu(cpu) L1_DATA_A_START
105#define get_l1_data_b_start_cpu(cpu) L1_DATA_B_START
106#define get_l1_scratch_start() L1_SCRATCH_START
107#define get_l1_code_start() L1_CODE_START
108#define get_l1_data_a_start() L1_DATA_A_START
109#define get_l1_data_b_start() L1_DATA_B_START
110
111#define GET_PDA_SAFE(preg) \
112 preg.l = _cpu_pda; \
113 preg.h = _cpu_pda;
114
115#define GET_PDA(preg, dreg) GET_PDA_SAFE(preg)
116
102#endif /* _MEM_MAP_518_H_ */ 117#endif /* _MEM_MAP_518_H_ */
diff --git a/arch/blackfin/mach-bf527/include/mach/mem_map.h b/arch/blackfin/mach-bf527/include/mach/mem_map.h
index ef46dc991cd4..bd7fe0fda9e8 100644
--- a/arch/blackfin/mach-bf527/include/mach/mem_map.h
+++ b/arch/blackfin/mach-bf527/include/mach/mem_map.h
@@ -99,4 +99,19 @@
99#define L1_SCRATCH_START 0xFFB00000 99#define L1_SCRATCH_START 0xFFB00000
100#define L1_SCRATCH_LENGTH 0x1000 100#define L1_SCRATCH_LENGTH 0x1000
101 101
102#define get_l1_scratch_start_cpu(cpu) L1_SCRATCH_START
103#define get_l1_code_start_cpu(cpu) L1_CODE_START
104#define get_l1_data_a_start_cpu(cpu) L1_DATA_A_START
105#define get_l1_data_b_start_cpu(cpu) L1_DATA_B_START
106#define get_l1_scratch_start() L1_SCRATCH_START
107#define get_l1_code_start() L1_CODE_START
108#define get_l1_data_a_start() L1_DATA_A_START
109#define get_l1_data_b_start() L1_DATA_B_START
110
111#define GET_PDA_SAFE(preg) \
112 preg.l = _cpu_pda; \
113 preg.h = _cpu_pda;
114
115#define GET_PDA(preg, dreg) GET_PDA_SAFE(preg)
116
102#endif /* _MEM_MAP_527_H_ */ 117#endif /* _MEM_MAP_527_H_ */
diff --git a/arch/blackfin/mach-bf533/include/mach/mem_map.h b/arch/blackfin/mach-bf533/include/mach/mem_map.h
index 581fc6eea789..d5eaef21edb7 100644
--- a/arch/blackfin/mach-bf533/include/mach/mem_map.h
+++ b/arch/blackfin/mach-bf533/include/mach/mem_map.h
@@ -168,4 +168,19 @@
168#define L1_SCRATCH_START 0xFFB00000 168#define L1_SCRATCH_START 0xFFB00000
169#define L1_SCRATCH_LENGTH 0x1000 169#define L1_SCRATCH_LENGTH 0x1000
170 170
171#define get_l1_scratch_start_cpu(cpu) L1_SCRATCH_START
172#define get_l1_code_start_cpu(cpu) L1_CODE_START
173#define get_l1_data_a_start_cpu(cpu) L1_DATA_A_START
174#define get_l1_data_b_start_cpu(cpu) L1_DATA_B_START
175#define get_l1_scratch_start() L1_SCRATCH_START
176#define get_l1_code_start() L1_CODE_START
177#define get_l1_data_a_start() L1_DATA_A_START
178#define get_l1_data_b_start() L1_DATA_B_START
179
180#define GET_PDA_SAFE(preg) \
181 preg.l = _cpu_pda; \
182 preg.h = _cpu_pda;
183
184#define GET_PDA(preg, dreg) GET_PDA_SAFE(preg)
185
171#endif /* _MEM_MAP_533_H_ */ 186#endif /* _MEM_MAP_533_H_ */
diff --git a/arch/blackfin/mach-bf537/include/mach/mem_map.h b/arch/blackfin/mach-bf537/include/mach/mem_map.h
index 5078b669431f..be4de761be96 100644
--- a/arch/blackfin/mach-bf537/include/mach/mem_map.h
+++ b/arch/blackfin/mach-bf537/include/mach/mem_map.h
@@ -176,4 +176,19 @@
176#define L1_SCRATCH_START 0xFFB00000 176#define L1_SCRATCH_START 0xFFB00000
177#define L1_SCRATCH_LENGTH 0x1000 177#define L1_SCRATCH_LENGTH 0x1000
178 178
179#define get_l1_scratch_start_cpu(cpu) L1_SCRATCH_START
180#define get_l1_code_start_cpu(cpu) L1_CODE_START
181#define get_l1_data_a_start_cpu(cpu) L1_DATA_A_START
182#define get_l1_data_b_start_cpu(cpu) L1_DATA_B_START
183#define get_l1_scratch_start() L1_SCRATCH_START
184#define get_l1_code_start() L1_CODE_START
185#define get_l1_data_a_start() L1_DATA_A_START
186#define get_l1_data_b_start() L1_DATA_B_START
187
188#define GET_PDA_SAFE(preg) \
189 preg.l = _cpu_pda; \
190 preg.h = _cpu_pda;
191
192#define GET_PDA(preg, dreg) GET_PDA_SAFE(preg)
193
179#endif /* _MEM_MAP_537_H_ */ 194#endif /* _MEM_MAP_537_H_ */
diff --git a/arch/blackfin/mach-bf538/include/mach/mem_map.h b/arch/blackfin/mach-bf538/include/mach/mem_map.h
index d65d4301615a..c134057c91ff 100644
--- a/arch/blackfin/mach-bf538/include/mach/mem_map.h
+++ b/arch/blackfin/mach-bf538/include/mach/mem_map.h
@@ -104,4 +104,19 @@
104#define L1_SCRATCH_START 0xFFB00000 104#define L1_SCRATCH_START 0xFFB00000
105#define L1_SCRATCH_LENGTH 0x1000 105#define L1_SCRATCH_LENGTH 0x1000
106 106
107#define get_l1_scratch_start_cpu(cpu) L1_SCRATCH_START
108#define get_l1_code_start_cpu(cpu) L1_CODE_START
109#define get_l1_data_a_start_cpu(cpu) L1_DATA_A_START
110#define get_l1_data_b_start_cpu(cpu) L1_DATA_B_START
111#define get_l1_scratch_start() L1_SCRATCH_START
112#define get_l1_code_start() L1_CODE_START
113#define get_l1_data_a_start() L1_DATA_A_START
114#define get_l1_data_b_start() L1_DATA_B_START
115
116#define GET_PDA_SAFE(preg) \
117 preg.l = _cpu_pda; \
118 preg.h = _cpu_pda;
119
120#define GET_PDA(preg, dreg) GET_PDA_SAFE(preg)
121
107#endif /* _MEM_MAP_538_H_ */ 122#endif /* _MEM_MAP_538_H_ */
diff --git a/arch/blackfin/mach-bf548/include/mach/mem_map.h b/arch/blackfin/mach-bf548/include/mach/mem_map.h
index a2228428dc06..361eb0e85bc0 100644
--- a/arch/blackfin/mach-bf548/include/mach/mem_map.h
+++ b/arch/blackfin/mach-bf548/include/mach/mem_map.h
@@ -108,4 +108,19 @@
108#define L1_SCRATCH_START 0xFFB00000 108#define L1_SCRATCH_START 0xFFB00000
109#define L1_SCRATCH_LENGTH 0x1000 109#define L1_SCRATCH_LENGTH 0x1000
110 110
111#define get_l1_scratch_start_cpu(cpu) L1_SCRATCH_START
112#define get_l1_code_start_cpu(cpu) L1_CODE_START
113#define get_l1_data_a_start_cpu(cpu) L1_DATA_A_START
114#define get_l1_data_b_start_cpu(cpu) L1_DATA_B_START
115#define get_l1_scratch_start() L1_SCRATCH_START
116#define get_l1_code_start() L1_CODE_START
117#define get_l1_data_a_start() L1_DATA_A_START
118#define get_l1_data_b_start() L1_DATA_B_START
119
120#define GET_PDA_SAFE(preg) \
121 preg.l = _cpu_pda; \
122 preg.h = _cpu_pda;
123
124#define GET_PDA(preg, dreg) GET_PDA_SAFE(preg)
125
111#endif/* _MEM_MAP_548_H_ */ 126#endif/* _MEM_MAP_548_H_ */