diff --git a/include/linux/sched.h b/include/linux/sched.h
index 8764cda0feca036356213e4ecb36e3c449805374..4b912e753ca0a51138e1fbe2c3e05c4afc97cad5 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1633,10 +1633,7 @@ static inline unsigned int task_cpu(const struct task_struct *p)
 	return task_thread_info(p)->cpu;
 }
 
-static inline void set_task_cpu(struct task_struct *p, unsigned int cpu)
-{
-	task_thread_info(p)->cpu = cpu;
-}
+extern void set_task_cpu(struct task_struct *p, unsigned int cpu);
 
 #else
 
diff --git a/kernel/sched.c b/kernel/sched.c
index 46b23f0fee24fb73db6d7c6e0397f6e77049822b..d6624978feb257085734ce716a53e107ddbb5aea 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -1111,6 +1111,12 @@ unsigned long weighted_cpuload(const int cpu)
 }
 
 #ifdef CONFIG_SMP
+
+void set_task_cpu(struct task_struct *p, unsigned int cpu)
+{
+	task_thread_info(p)->cpu = cpu;
+}
+
 struct migration_req {
 	struct list_head list;