[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)
committerThomas Goirand <zigo@debian.org>
Mon, 9 Jan 2023 10:41:27 +0000 (10:41 +0000)
commit14de039003e5651ed2a57e79dfacb7f7c7e71d32
treefd0de83276427b0bdf201b029a1b315b570a9798
parent6ed12bfbff25b229f3c0209456ba6c22b58bc0c4
[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