diff options
author | Lennart Poettering <lennart@poettering.net> | 2016-02-22 15:50:35 +0100 |
---|---|---|
committer | Sven Eden <yamakuzure@gmx.net> | 2017-06-16 10:12:57 +0200 |
commit | 7c63821717d67bce186ea28cd5392ff54cc8ffbc (patch) | |
tree | 766e5b7274215843972b896f5ce9d008e3525322 /src/basic/process-util.c | |
parent | 38f66c53601841a442ed174db2dca9045ececf42 (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.c | 59 |
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) |