xref: /linux/lib/raid/xor/arm/xor_arch.h (revision 440d6635b20037bc9ad46b20817d7b61cef0fc1b)
1e20043b4SChristoph Hellwig /* SPDX-License-Identifier: GPL-2.0-only */
2e20043b4SChristoph Hellwig /*
3e20043b4SChristoph Hellwig  *  Copyright (C) 2001 Russell King
4e20043b4SChristoph Hellwig  */
5e20043b4SChristoph Hellwig #include <asm/neon.h>
6e20043b4SChristoph Hellwig 
7e20043b4SChristoph Hellwig extern struct xor_block_template xor_block_arm4regs;
8e20043b4SChristoph Hellwig extern struct xor_block_template xor_block_neon;
9e20043b4SChristoph Hellwig 
10*80dcf0a7SChristoph Hellwig void xor_gen_neon_inner(void *dest, void **srcs, unsigned int src_cnt,
11*80dcf0a7SChristoph Hellwig 		unsigned int bytes);
12*80dcf0a7SChristoph Hellwig 
13e20043b4SChristoph Hellwig static __always_inline void __init arch_xor_init(void)
14e20043b4SChristoph Hellwig {
15e20043b4SChristoph Hellwig 	xor_register(&xor_block_arm4regs);
16e20043b4SChristoph Hellwig 	xor_register(&xor_block_8regs);
17e20043b4SChristoph Hellwig 	xor_register(&xor_block_32regs);
18e20043b4SChristoph Hellwig #ifdef CONFIG_KERNEL_MODE_NEON
19e20043b4SChristoph Hellwig 	if (cpu_has_neon())
20e20043b4SChristoph Hellwig 		xor_register(&xor_block_neon);
21e20043b4SChristoph Hellwig #endif
22e20043b4SChristoph Hellwig }
23