diff options
author | Graf Yang <graf.yang@analog.com> | 2009-01-07 10:14:39 -0500 |
---|---|---|
committer | Bryan Wu <cooloney@kernel.org> | 2009-01-07 10:14:39 -0500 |
commit | 46fa5eecec58934902ea4a65d9c7b7a486ac6f6b (patch) | |
tree | b7373553151456c620d9747785de322b30d11548 | |
parent | 8f65873e47784a390949f0d61e5692dbf2a8253e (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/Kconfig | 33 | ||||
-rw-r--r-- | arch/blackfin/kernel/vmlinux.lds.S | 4 | ||||
-rw-r--r-- | arch/blackfin/mach-bf518/include/mach/mem_map.h | 15 | ||||
-rw-r--r-- | arch/blackfin/mach-bf527/include/mach/mem_map.h | 15 | ||||
-rw-r--r-- | arch/blackfin/mach-bf533/include/mach/mem_map.h | 15 | ||||
-rw-r--r-- | arch/blackfin/mach-bf537/include/mach/mem_map.h | 15 | ||||
-rw-r--r-- | arch/blackfin/mach-bf538/include/mach/mem_map.h | 15 | ||||
-rw-r--r-- | arch/blackfin/mach-bf548/include/mach/mem_map.h | 15 |
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 | ||
201 | endchoice | 201 | endchoice |
202 | 202 | ||
203 | config 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 | |||
213 | config NR_CPUS | ||
214 | int | ||
215 | depends on SMP | ||
216 | default 2 if BF561 | ||
217 | |||
218 | config IRQ_PER_CPU | ||
219 | bool | ||
220 | depends on SMP | ||
221 | default y | ||
222 | |||
223 | config TICK_SOURCE_SYSTMR0 | ||
224 | bool | ||
225 | select BFIN_GPTIMERS | ||
226 | depends on SMP | ||
227 | default y | ||
228 | |||
203 | config BF_REV_MIN | 229 | config 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 | ||
503 | config GENERIC_TIME | 529 | config GENERIC_TIME |
504 | bool "Generic time" | 530 | bool "Generic time" |
531 | depends on !SMP | ||
505 | default y | 532 | default y |
506 | 533 | ||
507 | config GENERIC_CLOCKEVENTS | 534 | config GENERIC_CLOCKEVENTS |
@@ -576,6 +603,7 @@ endmenu | |||
576 | 603 | ||
577 | 604 | ||
578 | menu "Blackfin Kernel Optimizations" | 605 | menu "Blackfin Kernel Optimizations" |
606 | depends on !SMP | ||
579 | 607 | ||
580 | comment "Memory Optimizations" | 608 | comment "Memory Optimizations" |
581 | 609 | ||
@@ -738,7 +766,6 @@ config BFIN_INS_LOWOVERHEAD | |||
738 | 766 | ||
739 | endmenu | 767 | endmenu |
740 | 768 | ||
741 | |||
742 | choice | 769 | choice |
743 | prompt "Kernel executes from" | 770 | prompt "Kernel executes from" |
744 | help | 771 | help |
@@ -804,9 +831,11 @@ config BFIN_ICACHE_LOCK | |||
804 | choice | 831 | choice |
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 | ||
808 | config BFIN_WB | 836 | config 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_ */ |