summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-06-28 18:42:16 (GMT)
committerScott Wood <scottwood@freescale.com>2014-04-10 00:19:22 (GMT)
commitc3429f72c9ea824c08763c389bacf245f1c74452 (patch)
tree7cce52aee6a8775e8c408246ca69773790c02f81 /include/linux
parent07ffc758f648ade41f1ca85bcb7708d9c91bce53 (diff)
downloadlinux-fsl-qoriq-c3429f72c9ea824c08763c389bacf245f1c74452.tar.xz
local-vars-migrate-disable.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/percpu.h28
1 files changed, 24 insertions, 4 deletions
diff --git a/include/linux/percpu.h b/include/linux/percpu.h
index d273604..f05adf5 100644
--- a/include/linux/percpu.h
+++ b/include/linux/percpu.h
@@ -48,10 +48,30 @@
preempt_enable(); \
} while (0)
-#define get_local_var(var) get_cpu_var(var)
-#define put_local_var(var) put_cpu_var(var)
-#define get_local_ptr(var) get_cpu_ptr(var)
-#define put_local_ptr(var) put_cpu_ptr(var)
+#ifndef CONFIG_PREEMPT_RT_FULL
+# define get_local_var(var) get_cpu_var(var)
+# define put_local_var(var) put_cpu_var(var)
+# define get_local_ptr(var) get_cpu_ptr(var)
+# define put_local_ptr(var) put_cpu_ptr(var)
+#else
+# define get_local_var(var) (*({ \
+ migrate_disable(); \
+ &__get_cpu_var(var); }))
+
+# define put_local_var(var) do { \
+ (void)&(var); \
+ migrate_enable(); \
+} while (0)
+
+# define get_local_ptr(var) ({ \
+ migrate_disable(); \
+ this_cpu_ptr(var); })
+
+# define put_local_ptr(var) do { \
+ (void)(var); \
+ migrate_enable(); \
+} while (0)
+#endif
/* minimum unit size, also is the maximum supported allocation size */
#define PCPU_MIN_UNIT_SIZE PFN_ALIGN(32 << 10)