xref: /linux/lib/raid/xor/xor_impl.h (revision e20043b4765cdf7ec8e963d706bb91469cba8cb8)
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