config RWSEM_XCHGADD_ALGORITHM
bool
+config ARCH_HAS_CPU_IDLE_WAIT
+ bool
+ default y
+
+config ARCH_HAS_DEFAULT_IDLE
+ bool
+ default y
+
config ARCH_HAS_ILOG2_U32
bool
extern int cpu_architecture(void);
extern void cpu_init(void);
+extern void cpu_idle_wait(void);
+extern void default_idle(void);
void arm_machine_restart(char mode, const char *cmd);
extern void (*arm_pm_restart)(char str, const char *cmd);
* This is our default idle handler. We need to disable
* interrupts here to ensure we don't miss a wakeup call.
*/
-static void default_idle(void)
+void default_idle(void)
{
if (!need_resched())
arch_idle();
local_irq_enable();
}
+EXPORT_SYMBOL(default_idle);
void (*pm_idle)(void) = default_idle;
EXPORT_SYMBOL(pm_idle);
}
}
+#if defined(CONFIG_ARCH_HAS_CPU_IDLE_WAIT)
+static void do_nothing(void *unused)
+{
+}
+
+void cpu_idle_wait(void)
+{
+ smp_mb();
+ smp_call_function(do_nothing, NULL, 1);
+}
+#endif
+
+
static char reboot_mode = 'h';
int __init reboot_setup(char *str)