diff options
author | Daniel Hellstrom <daniel@gaisler.com> | 2011-04-25 17:48:17 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-05-16 16:03:28 -0400 |
commit | 2645e7219e88d1e2ab8b2939537bce36e6db9e8c (patch) | |
tree | 545461772c912730ba345ada0078fca7561e1a2e /arch/sparc | |
parent | 5149bed8912f4030f52feb33326cfe794831b184 (diff) |
sparc32,leon: SMP power down implementation
Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/kernel/process_32.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c index 17529298c50a..c8cc461ff75f 100644 --- a/arch/sparc/kernel/process_32.c +++ b/arch/sparc/kernel/process_32.c | |||
@@ -128,8 +128,16 @@ void cpu_idle(void) | |||
128 | set_thread_flag(TIF_POLLING_NRFLAG); | 128 | set_thread_flag(TIF_POLLING_NRFLAG); |
129 | /* endless idle loop with no priority at all */ | 129 | /* endless idle loop with no priority at all */ |
130 | while(1) { | 130 | while(1) { |
131 | while (!need_resched()) | 131 | #ifdef CONFIG_SPARC_LEON |
132 | cpu_relax(); | 132 | if (pm_idle) { |
133 | while (!need_resched()) | ||
134 | (*pm_idle)(); | ||
135 | } else | ||
136 | #endif | ||
137 | { | ||
138 | while (!need_resched()) | ||
139 | cpu_relax(); | ||
140 | } | ||
133 | preempt_enable_no_resched(); | 141 | preempt_enable_no_resched(); |
134 | schedule(); | 142 | schedule(); |
135 | preempt_disable(); | 143 | preempt_disable(); |