[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>
Thu, 16 Feb 2023 10:54:41 +0000 (10:54 +0000)
commit562b79efcb9de20b14fe8e5000789f40b6c2ca29
tree7013919487cc5f224fb164a43ccc65aaac0a8028
parent9e2304fbb0481245e1d6574a617d63756c363c92
[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