diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2006-10-30 22:45:07 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2006-12-04 17:43:14 -0500 |
commit | 0004a9dfeaa709a7f853487aba19932c9b1a87c8 (patch) | |
tree | e9f1f4b1ca897e57f46778cef283617ba83fc855 /arch | |
parent | 08f57f7ffe5819e537301b1f1109fa4fc670bfff (diff) |
[MIPS] Cleanup memory barriers for weakly ordered systems.
Also the R4000 / R4600 LL/SC instructions imply a sync so no explicit sync
needed.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/Kconfig | 4 | ||||
-rw-r--r-- | arch/mips/kernel/smp.c | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 3947e5daea39..4d64960be035 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -1277,6 +1277,7 @@ config CPU_RM9000 | |||
1277 | select CPU_SUPPORTS_32BIT_KERNEL | 1277 | select CPU_SUPPORTS_32BIT_KERNEL |
1278 | select CPU_SUPPORTS_64BIT_KERNEL | 1278 | select CPU_SUPPORTS_64BIT_KERNEL |
1279 | select CPU_SUPPORTS_HIGHMEM | 1279 | select CPU_SUPPORTS_HIGHMEM |
1280 | select WEAK_ORDERING | ||
1280 | 1281 | ||
1281 | config CPU_SB1 | 1282 | config CPU_SB1 |
1282 | bool "SB1" | 1283 | bool "SB1" |
@@ -1285,6 +1286,7 @@ config CPU_SB1 | |||
1285 | select CPU_SUPPORTS_32BIT_KERNEL | 1286 | select CPU_SUPPORTS_32BIT_KERNEL |
1286 | select CPU_SUPPORTS_64BIT_KERNEL | 1287 | select CPU_SUPPORTS_64BIT_KERNEL |
1287 | select CPU_SUPPORTS_HIGHMEM | 1288 | select CPU_SUPPORTS_HIGHMEM |
1289 | select WEAK_ORDERING | ||
1288 | 1290 | ||
1289 | endchoice | 1291 | endchoice |
1290 | 1292 | ||
@@ -1345,6 +1347,8 @@ config SYS_HAS_CPU_RM9000 | |||
1345 | config SYS_HAS_CPU_SB1 | 1347 | config SYS_HAS_CPU_SB1 |
1346 | bool | 1348 | bool |
1347 | 1349 | ||
1350 | config WEAK_ORDERING | ||
1351 | bool | ||
1348 | endmenu | 1352 | endmenu |
1349 | 1353 | ||
1350 | # | 1354 | # |
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index 49db516789e0..f2a8701e414d 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c | |||
@@ -172,7 +172,7 @@ int smp_call_function (void (*func) (void *info), void *info, int retry, | |||
172 | 172 | ||
173 | spin_lock(&smp_call_lock); | 173 | spin_lock(&smp_call_lock); |
174 | call_data = &data; | 174 | call_data = &data; |
175 | mb(); | 175 | smp_mb(); |
176 | 176 | ||
177 | /* Send a message to all other CPUs and wait for them to respond */ | 177 | /* Send a message to all other CPUs and wait for them to respond */ |
178 | for_each_online_cpu(i) | 178 | for_each_online_cpu(i) |
@@ -204,7 +204,7 @@ void smp_call_function_interrupt(void) | |||
204 | * Notify initiating CPU that I've grabbed the data and am | 204 | * Notify initiating CPU that I've grabbed the data and am |
205 | * about to execute the function. | 205 | * about to execute the function. |
206 | */ | 206 | */ |
207 | mb(); | 207 | smp_mb(); |
208 | atomic_inc(&call_data->started); | 208 | atomic_inc(&call_data->started); |
209 | 209 | ||
210 | /* | 210 | /* |
@@ -215,7 +215,7 @@ void smp_call_function_interrupt(void) | |||
215 | irq_exit(); | 215 | irq_exit(); |
216 | 216 | ||
217 | if (wait) { | 217 | if (wait) { |
218 | mb(); | 218 | smp_mb(); |
219 | atomic_inc(&call_data->finished); | 219 | atomic_inc(&call_data->finished); |
220 | } | 220 | } |
221 | } | 221 | } |