summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/ppc/include/asm/processor.h12
-rw-r--r--include/command.h5
-rw-r--r--include/linux/stringify.h12
3 files changed, 18 insertions, 11 deletions
diff --git a/arch/ppc/include/asm/processor.h b/arch/ppc/include/asm/processor.h
index b336f48b78..9c6f79aca3 100644
--- a/arch/ppc/include/asm/processor.h
+++ b/arch/ppc/include/asm/processor.h
@@ -9,6 +9,7 @@
#include <asm/ptrace.h>
#include <asm/types.h>
+#include <linux/stringify.h>
/* Machine State Register (MSR) Fields */
@@ -887,22 +888,19 @@ n:
/* Macros for setting and retrieving special purpose registers */
-#define stringify(s) tostring(s)
-#define tostring(s) #s
-
#define mfdcr(rn) ({unsigned int rval; \
- asm volatile("mfdcr %0," stringify(rn) \
+ asm volatile("mfdcr %0," __stringify(rn) \
: "=r" (rval)); rval;})
-#define mtdcr(rn, v) asm volatile("mtdcr " stringify(rn) ",%0" : : "r" (v))
+#define mtdcr(rn, v) asm volatile("mtdcr " __stringify(rn) ",%0" : : "r" (v))
#define mfmsr() ({unsigned int rval; \
asm volatile("mfmsr %0" : "=r" (rval)); rval;})
#define mtmsr(v) asm volatile("mtmsr %0" : : "r" (v))
#define mfspr(rn) ({unsigned int rval; \
- asm volatile("mfspr %0," stringify(rn) \
+ asm volatile("mfspr %0," __stringify(rn) \
: "=r" (rval)); rval;})
-#define mtspr(rn, v) asm volatile("mtspr " stringify(rn) ",%0" : : "r" (v))
+#define mtspr(rn, v) asm volatile("mtspr " __stringify(rn) ",%0" : : "r" (v))
#define tlbie(v) asm volatile("tlbie %0 \n sync" : : "r" (v))
diff --git a/include/command.h b/include/command.h
index a612d65e54..4a4d9cf925 100644
--- a/include/command.h
+++ b/include/command.h
@@ -28,6 +28,7 @@
#define __COMMAND_H
#include <linux/list.h>
+#include <linux/stringify.h>
#ifndef NULL
#define NULL 0
@@ -75,10 +76,6 @@ void barebox_cmd_usage(struct command *cmdtp);
#endif /* __ASSEMBLY__ */
-#define __stringify_1(x) #x
-#define __stringify(x) __stringify_1(x)
-
-
#define Struct_Section __attribute__ ((unused,section (".barebox_cmd")))
#define BAREBOX_CMD_START(_name) \
diff --git a/include/linux/stringify.h b/include/linux/stringify.h
new file mode 100644
index 0000000000..841cec8ed5
--- /dev/null
+++ b/include/linux/stringify.h
@@ -0,0 +1,12 @@
+#ifndef __LINUX_STRINGIFY_H
+#define __LINUX_STRINGIFY_H
+
+/* Indirect stringification. Doing two levels allows the parameter to be a
+ * macro itself. For example, compile with -DFOO=bar, __stringify(FOO)
+ * converts to "bar".
+ */
+
+#define __stringify_1(x...) #x
+#define __stringify(x...) __stringify_1(x)
+
+#endif /* !__LINUX_STRINGIFY_H */