| /* SPDX-License-Identifier: GPL-2.0-or-later */ | |
| #include <asm/cputable.h> | |
| extern const struct raid6_calls raid6_altivec1; | |
| extern const struct raid6_calls raid6_altivec2; | |
| extern const struct raid6_calls raid6_altivec4; | |
| extern const struct raid6_calls raid6_altivec8; | |
| extern const struct raid6_calls raid6_vpermxor1; | |
| extern const struct raid6_calls raid6_vpermxor2; | |
| extern const struct raid6_calls raid6_vpermxor4; | |
| extern const struct raid6_calls raid6_vpermxor8; | |
| static __always_inline void __init arch_raid6_init(void) | |
| { | |
| raid6_algo_add_default(); | |
| /* This assumes either all CPUs have Altivec or none does */ | |
| if (cpu_has_feature(CPU_FTR_ALTIVEC)) { | |
| raid6_algo_add(&raid6_altivec1); | |
| raid6_algo_add(&raid6_altivec2); | |
| raid6_algo_add(&raid6_altivec4); | |
| raid6_algo_add(&raid6_altivec8); | |
| } | |
| if (cpu_has_feature(CPU_FTR_ALTIVEC_COMP) && | |
| cpu_has_feature(CPU_FTR_ARCH_207S)) { | |
| raid6_algo_add(&raid6_vpermxor1); | |
| raid6_algo_add(&raid6_vpermxor2); | |
| raid6_algo_add(&raid6_vpermxor4); | |
| raid6_algo_add(&raid6_vpermxor8); | |
| } | |
| } |