|
@@ -11,6 +11,7 @@
|
|
#include <linux/list.h>
|
|
#include <linux/list.h>
|
|
#include <linux/cpumask.h>
|
|
#include <linux/cpumask.h>
|
|
#include <linux/init.h>
|
|
#include <linux/init.h>
|
|
|
|
+#include <linux/irqflags.h>
|
|
|
|
|
|
extern void cpu_idle(void);
|
|
extern void cpu_idle(void);
|
|
|
|
|
|
@@ -139,13 +140,17 @@ static inline int up_smp_call_function(smp_call_func_t func, void *info)
|
|
}
|
|
}
|
|
#define smp_call_function(func, info, wait) \
|
|
#define smp_call_function(func, info, wait) \
|
|
(up_smp_call_function(func, info))
|
|
(up_smp_call_function(func, info))
|
|
-#define on_each_cpu(func,info,wait) \
|
|
|
|
- ({ \
|
|
|
|
- local_irq_disable(); \
|
|
|
|
- func(info); \
|
|
|
|
- local_irq_enable(); \
|
|
|
|
- 0; \
|
|
|
|
- })
|
|
|
|
|
|
+
|
|
|
|
+static inline int on_each_cpu(smp_call_func_t func, void *info, int wait)
|
|
|
|
+{
|
|
|
|
+ unsigned long flags;
|
|
|
|
+
|
|
|
|
+ local_irq_save(flags);
|
|
|
|
+ func(info);
|
|
|
|
+ local_irq_restore(flags);
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Note we still need to test the mask even for UP
|
|
* Note we still need to test the mask even for UP
|
|
* because we actually can get an empty mask from
|
|
* because we actually can get an empty mask from
|