summaryrefslogtreecommitdiff
path: root/src/basic/process-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2016-02-22 15:50:35 +0100
committerSven Eden <yamakuzure@gmx.net>2017-06-16 10:12:57 +0200
commit7c63821717d67bce186ea28cd5392ff54cc8ffbc (patch)
tree766e5b7274215843972b896f5ce9d008e3525322 /src/basic/process-util.c
parent38f66c53601841a442ed174db2dca9045ececf42 (diff)
util-lib: support various ppc archs in personality logic
Diffstat (limited to 'src/basic/process-util.c')
-rw-r--r--src/basic/process-util.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/basic/process-util.c b/src/basic/process-util.c
index a50674ea0..69a41d90b 100644
--- a/src/basic/process-util.c
+++ b/src/basic/process-util.c
@@ -721,6 +721,37 @@ unsigned long personality_from_string(const char *p) {
if (architecture == ARCHITECTURE_S390)
return PER_LINUX;
+
+#elif defined(__powerpc64__)
+# if __BYTE_ORDER == __BIG_ENDIAN
+
+ if (architecture == ARCHITECTURE_PPC_LE)
+ return PER_LINUX32;
+
+ if (architecture == ARCHITECTURE_PPC64_LE)
+ return PER_LINUX;
+
+# else
+
+ if (architecture == ARCHITECTURE_PPC)
+ return PER_LINUX32;
+
+ if (architecture == ARCHITECTURE_PPC64)
+ return PER_LINUX;
+
+# endif
+#elif defined(__powerpc__)
+# if __BYTE_ORDER == __BIG_ENDIAN
+
+ if (architecture == ARCHITECTURE_PPC)
+ return PER_LINUX;
+
+# else
+
+ if (architecture == ARCHITECTURE_PPC_LE)
+ return PER_LINUX;
+
+# endif
#endif
return PERSONALITY_INVALID;
@@ -753,6 +784,34 @@ const char* personality_to_string(unsigned long p) {
if (p == PER_LINUX)
architecture = ARCHITECTURE_S390;
+#elif defined(__powerpc64__)
+# if __BYTE_ORDER == __BIG_ENDIAN
+
+ if (p == PER_LINUX)
+ architecture = ARCHITECTURE_PPC64;
+ else if (p == PER_LINUX32)
+ architecture = ARCHITECTURE_PPC;
+
+# else
+
+ if (p == PER_LINUX)
+ architecture = ARCHITECTURE_PPC64_LE;
+ else if (p == PER_LINUX32)
+ architecture = ARCHITECTURE_PPC_LE;
+
+# endif
+#elif defined(__powerpc__)
+# if __BYTE_ORDER == __BIG_ENDIAN
+
+ if (p == PER_LINUX)
+ architecture = ARCHITECTURE_PPC;
+
+# else
+
+ if (p == PER_LINUX)
+ architecture = ARCHITECTURE_PPC_LE;
+
+# endif
#endif
if (architecture < 0)