33 lines
1.0 KiB
C
33 lines
1.0 KiB
C
/* 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);
|
|
}
|
|
}
|