|
@@ -51,28 +51,11 @@ void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long sp)
|
|
|
* If hardware or VM offer wait termination even though interrupts
|
|
|
* are disabled.
|
|
|
*/
|
|
|
-static void default_idle(void)
|
|
|
+void arch_cpu_idle(void)
|
|
|
{
|
|
|
__vmwait();
|
|
|
-}
|
|
|
-
|
|
|
-void (*idle_sleep)(void) = default_idle;
|
|
|
-
|
|
|
-void cpu_idle(void)
|
|
|
-{
|
|
|
- while (1) {
|
|
|
- tick_nohz_idle_enter();
|
|
|
- local_irq_disable();
|
|
|
- while (!need_resched()) {
|
|
|
- idle_sleep();
|
|
|
- /* interrupts wake us up, but aren't serviced */
|
|
|
- local_irq_enable(); /* service interrupt */
|
|
|
- local_irq_disable();
|
|
|
- }
|
|
|
- local_irq_enable();
|
|
|
- tick_nohz_idle_exit();
|
|
|
- schedule();
|
|
|
- }
|
|
|
+ /* interrupts wake us up, but irqs are still disabled */
|
|
|
+ local_irq_enable();
|
|
|
}
|
|
|
|
|
|
/*
|