15265d55bSChristoph Hellwig // SPDX-License-Identifier: GPL-2.0-or-later 25265d55bSChristoph Hellwig /* 35265d55bSChristoph Hellwig * Copyright (C) 2021 SiFive 45265d55bSChristoph Hellwig */ 55265d55bSChristoph Hellwig 65265d55bSChristoph Hellwig #include <asm/vector.h> 75265d55bSChristoph Hellwig #include <asm/switch_to.h> 85265d55bSChristoph Hellwig #include <asm/asm-prototypes.h> 9e20043b4SChristoph Hellwig #include "xor_impl.h" 10e20043b4SChristoph Hellwig #include "xor_arch.h" 115265d55bSChristoph Hellwig 12*80dcf0a7SChristoph Hellwig DO_XOR_BLOCKS(vector_inner, xor_regs_2_, xor_regs_3_, xor_regs_4_, xor_regs_5_); 135265d55bSChristoph Hellwig 14*80dcf0a7SChristoph Hellwig static void xor_gen_vector(void *dest, void **srcs, unsigned int src_cnt, 15*80dcf0a7SChristoph Hellwig unsigned int bytes) 165265d55bSChristoph Hellwig { 175265d55bSChristoph Hellwig kernel_vector_begin(); 18*80dcf0a7SChristoph Hellwig xor_gen_vector_inner(dest, srcs, src_cnt, bytes); 195265d55bSChristoph Hellwig kernel_vector_end(); 205265d55bSChristoph Hellwig } 215265d55bSChristoph Hellwig 225265d55bSChristoph Hellwig struct xor_block_template xor_block_rvv = { 235265d55bSChristoph Hellwig .name = "rvv", 24*80dcf0a7SChristoph Hellwig .xor_gen = xor_gen_vector, 255265d55bSChristoph Hellwig }; 26