1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _XOR_IMPL_H 3 #define _XOR_IMPL_H 4 5 #include <linux/init.h> 6 7 struct xor_block_template { 8 struct xor_block_template *next; 9 const char *name; 10 int speed; 11 void (*do_2)(unsigned long, unsigned long * __restrict, 12 const unsigned long * __restrict); 13 void (*do_3)(unsigned long, unsigned long * __restrict, 14 const unsigned long * __restrict, 15 const unsigned long * __restrict); 16 void (*do_4)(unsigned long, unsigned long * __restrict, 17 const unsigned long * __restrict, 18 const unsigned long * __restrict, 19 const unsigned long * __restrict); 20 void (*do_5)(unsigned long, unsigned long * __restrict, 21 const unsigned long * __restrict, 22 const unsigned long * __restrict, 23 const unsigned long * __restrict, 24 const unsigned long * __restrict); 25 }; 26 27 /* generic implementations */ 28 extern struct xor_block_template xor_block_8regs; 29 extern struct xor_block_template xor_block_32regs; 30 extern struct xor_block_template xor_block_8regs_p; 31 extern struct xor_block_template xor_block_32regs_p; 32 33 void __init xor_register(struct xor_block_template *tmpl); 34 void __init xor_force(struct xor_block_template *tmpl); 35 36 #endif /* _XOR_IMPL_H */ 37