[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 Oct 2023 06:53:31 +0000 (07:53 +0100)
commite3be87434bab1a69b941d04220a1c97deef5786c
tree4af7d1a12ceb4dee424aafd4f64cba80fbca0e5a
parentdc1f25ee9b003c540cec9cb163dc9838e75bfd3c
[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