summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlauber Costa <gcosta@redhat.com>2008-03-03 18:12:49 +0100
committerIngo Molnar <mingo@elte.hu>2008-04-17 17:40:55 +0200
commit3be5b49e8f1002bc562a2b4670093e4ebf27b4e9 (patch)
treea6ec2f5165c557dcd46ef926094897cf823a8bb9
parentx86: provide hlt_works function. (diff)
downloadlinux-3be5b49e8f1002bc562a2b4670093e4ebf27b4e9.tar.xz
linux-3be5b49e8f1002bc562a2b4670093e4ebf27b4e9.zip
x86: make stop_this_cpu looks exactly equal in both arches
with the hlt_works change, it is possible to have i386 and x86_64 stop_this_cpu() looking exactly the same. They can, after that, be merged. Signed-off-by: Glauber Costa <gcosta@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--arch/x86/kernel/smp_32.c2
-rw-r--r--arch/x86/kernel/smp_64.c5
2 files changed, 4 insertions, 3 deletions
diff --git a/arch/x86/kernel/smp_32.c b/arch/x86/kernel/smp_32.c
index e4a6b669a0b8..cde3a0ecd716 100644
--- a/arch/x86/kernel/smp_32.c
+++ b/arch/x86/kernel/smp_32.c
@@ -611,7 +611,7 @@ static void stop_this_cpu (void * dummy)
*/
cpu_clear(smp_processor_id(), cpu_online_map);
disable_local_APIC();
- if (cpu_data(smp_processor_id()).hlt_works_ok)
+ if (hlt_works(smp_processor_id()))
for(;;) halt();
for (;;);
}
diff --git a/arch/x86/kernel/smp_64.c b/arch/x86/kernel/smp_64.c
index e4494e829dfa..4e1e2bce969c 100644
--- a/arch/x86/kernel/smp_64.c
+++ b/arch/x86/kernel/smp_64.c
@@ -416,8 +416,9 @@ static void stop_this_cpu(void *dummy)
*/
cpu_clear(smp_processor_id(), cpu_online_map);
disable_local_APIC();
- for (;;)
- halt();
+ if (hlt_works(smp_processor_id()))
+ for (;;) halt();
+ for (;;);
}
void smp_send_stop(void)