This patch adds an idle member to the ppc_md structure and calls it from
cpu_idle(). If a platform leaves ppc_md.idle as null it will get the default
idle loop default_idle().
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
#include <asm/iSeries/ItLpQueue.h>
#include <asm/plpar_wrappers.h>
#include <asm/systemcfg.h>
#include <asm/iSeries/ItLpQueue.h>
#include <asm/plpar_wrappers.h>
#include <asm/systemcfg.h>
+#include <asm/machdep.h>
extern void power4_idle(void);
extern void power4_idle(void);
-static int default_idle(void)
{
long oldval;
unsigned int cpu = smp_processor_id();
{
long oldval;
unsigned int cpu = smp_processor_id();
#endif /* CONFIG_PPC_PSERIES */
#endif /* CONFIG_PPC_PSERIES */
-static int native_idle(void)
{
while(1) {
/* check CPU type here */
{
while(1) {
/* check CPU type here */
+ BUG_ON(NULL == ppc_md.idle_loop);
+ ppc_md.idle_loop();
extern unsigned long klimit;
extern void mm_init_ppc64(void);
extern unsigned long klimit;
extern void mm_init_ppc64(void);
-extern int idle_setup(void);
extern void stab_initialize(unsigned long stab);
extern void htab_initialize(void);
extern void early_init_devtree(void *flat_dt);
extern void stab_initialize(unsigned long stab);
extern void htab_initialize(void);
extern void early_init_devtree(void *flat_dt);
- /* Select the correct idle loop for the platform. */
- idle_setup();
+ /* Use the default idle loop if the platform hasn't provided one. */
+ if (NULL == ppc_md.idle_loop)
+ ppc_md.idle_loop = default_idle;
paging_init();
ppc64_boot_msg(0x15, "Setup Done");
paging_init();
ppc64_boot_msg(0x15, "Setup Done");
unsigned long size,
pgprot_t vma_prot);
unsigned long size,
pgprot_t vma_prot);
+ /* Idle loop for this platform, leave empty for default idle loop */
+ int (*idle_loop)(void);
+extern int default_idle(void);
+extern int native_idle(void);
+
extern struct machdep_calls ppc_md;
extern char cmd_line[COMMAND_LINE_SIZE];
extern struct machdep_calls ppc_md;
extern char cmd_line[COMMAND_LINE_SIZE];