90e240142b
Both functions are mostly identical. The differences are: - x86_32's cpu_idle() makes use of check_pgt_cache(), which is a nop on both x86_32 and x86_64. - x86_64's cpu_idle() uses enter/__exit_idle/(), on x86_32 these function are a nop. - In contrast to x86_32, x86_64 calls rcu_idle_enter/exit() in the innermost loop because idle notifications need RCU. Calling these function on x86_32 also in the innermost loop does not hurt. So we can merge both functions. Signed-off-by: Richard Weinberger <richard@nod.at> Acked-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: paulmck@linux.vnet.ibm.com Cc: josh@joshtriplett.org Cc: tj@kernel.org Link: http://lkml.kernel.org/r/1332709204-22496-1-git-send-email-richard@nod.at Signed-off-by: Ingo Molnar <mingo@kernel.org>
23 lines
532 B
C
23 lines
532 B
C
#ifndef _ASM_X86_IDLE_H
|
|
#define _ASM_X86_IDLE_H
|
|
|
|
#define IDLE_START 1
|
|
#define IDLE_END 2
|
|
|
|
struct notifier_block;
|
|
void idle_notifier_register(struct notifier_block *n);
|
|
void idle_notifier_unregister(struct notifier_block *n);
|
|
|
|
#ifdef CONFIG_X86_64
|
|
void enter_idle(void);
|
|
void exit_idle(void);
|
|
#else /* !CONFIG_X86_64 */
|
|
static inline void enter_idle(void) { }
|
|
static inline void exit_idle(void) { }
|
|
static inline void __exit_idle(void) { }
|
|
#endif /* CONFIG_X86_64 */
|
|
|
|
void amd_e400_remove_cpu(int cpu);
|
|
|
|
#endif /* _ASM_X86_IDLE_H */
|