diff -up openmsx-0.15.0/build/cpu.py~ openmsx-0.15.0/build/cpu.py --- openmsx-0.15.0/build/cpu.py~ 2018-12-08 23:45:38.000000000 +0100 +++ openmsx-0.15.0/build/cpu.py 2019-02-20 22:01:03.317081448 +0100 @@ -88,6 +88,12 @@ class PPC64(CPU): name = 'ppc64' bigEndian = True +class PPC64LE(CPU): + '''64-bit Power PC LE. + ''' + name = 'ppc64le' + bigEndian = False + class S390(CPU): '''IBM S/390. ''' diff -up openmsx-0.15.0/build/detectsys.py~ openmsx-0.15.0/build/detectsys.py --- openmsx-0.15.0/build/detectsys.py~ 2018-12-08 23:45:38.000000000 +0100 +++ openmsx-0.15.0/build/detectsys.py 2019-02-20 22:00:17.076725383 +0100 @@ -22,6 +22,8 @@ def detectCPU(): return 'x86_64' elif cpu in ('x86', 'i386', 'i486', 'i586', 'i686'): return 'x86' + elif cpu == 'ppc64le': + return 'ppc64le' elif cpu.startswith('ppc') or cpu.endswith('ppc') or cpu.startswith('power'): return 'ppc64' if cpu.endswith('64') else 'ppc' elif cpu.startswith('arm'): diff -up openmsx-0.15.0/src/utils/small_compare.hh~ openmsx-0.15.0/src/utils/small_compare.hh --- openmsx-0.15.0/src/utils/small_compare.hh~ 2018-12-08 23:45:38.000000000 +0100 +++ openmsx-0.15.0/src/utils/small_compare.hh 2019-02-20 22:41:23.008761701 +0100 @@ -81,7 +81,7 @@ template struct Sc }; template struct ScValBeImpl : ScValBeImpl> 8), Ns...> {}; -template struct ScValBe : ScValBeImpl {}; +template struct ScValBe : ScValBeImpl {}; // ScVal: combines all given characters in one value of type T, also computes a // mask-value with 1-bits in the 'used' positions. @@ -93,19 +93,14 @@ template struct template struct SmallCompare { using Loader = SelectLoader; using C = ScVal; - // workaround gcc-4.7 bug - //static const auto value = C::value; - //static const auto mask = C::mask; - static const typename Loader::type value = C::value; - static const typename Loader::type mask = C::mask; + static const auto value = C::value; + static const auto mask = C::mask; }; // The actual small-fixed-string-comparison. template bool small_compare(const char* p) { - // workaround gcc-4.7 bug - //using SC = SmallCompare; - typedef SmallCompare SC; + using SC = SmallCompare; typename SC::Loader loader; return (loader(p) & SC::mask) == SC::value; }