[PATCH] arch,cmake: compile ppc.c on all powerpc machines
authorKefu Chai <tchaikov@gmail.com>
Sun, 29 Aug 2021 14:24:30 +0000 (22:24 +0800)
committerSalvatore Bonaccorso <carnil@debian.org>
Sat, 16 May 2026 12:52:24 +0000 (14:52 +0200)
commite441ff99473740c8ff1ea840cb2e8874ba26f1ca
treef2df0c10e9a21bfe2e4295268480bfa5d3f178ec
parentab6ba7944d554c0d36ae3f60bca5ac1c061a8219
[PATCH] arch,cmake: compile ppc.c on all powerpc machines

* cmake/modules/SIMDExt.cmake: define HAVE_PPC for 32-bit PowerPC.
* src/arch/CMakeLists.txt: compile ppc.c for all PowerPC architectures,
  including powerpc (32-bit PowerPC), ppc64el (64-bit Little Endian
  PowerPC) and ppc64 (64-bit Big Endian PowerPC).

before this change, ppc.c is only compiled if HAVE_POWER8 is defined.
but Power8 is a 64-bit PowerPC architecture. while in src/arch/probe.cc,
we check for `defined(__powerpc__) || defined(__ppc__)`, if this is
true, ceph_arch_ppc_probe() is used to check for the support of
Altivec. but on non-power8 PowerPC machines, the linker fails to find the
symbols like ceph_arch_ppc_probe(), as ppc.c is not compiled on them.

in this change, ppc.c is compiled on all PowerPC architectures, so that
ceph_arch_ppc_probe() is also available on non-power8 machines. this
change does not impact the behavior of non-power8 machines. because
on them, the runtime check would fail to detect the existence of
PPC_FEATURE2_VEC_CRYPTO instructions.

Reported-by: Mattias Ellert <mattias.ellert@physics.uu.se>
Signed-off-by: Kefu Chai <tchaikov@gmail.com>
Gbp-Pq: Name compile-ppc.c-on-all-powerpc-machines.patch
cmake/modules/SIMDExt.cmake
src/arch/CMakeLists.txt