1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * Copyright 2024 Institute of Software, CAS. 4 * 5 * Definitions for RISC-V RAID-6 code 6 */ 7 8 #include <asm/vector.h> 9 #include "algos.h" 10 11 #define RAID6_RVV_WRAPPER(_n) \ 12 static void raid6_rvv ## _n ## _gen_syndrome(int disks, \ 13 size_t bytes, void **ptrs) \ 14 { \ 15 void raid6_rvv ## _n ## _gen_syndrome_real(int d, \ 16 unsigned long b, void **p); \ 17 kernel_vector_begin(); \ 18 raid6_rvv ## _n ## _gen_syndrome_real(disks, \ 19 (unsigned long)bytes, ptrs); \ 20 kernel_vector_end(); \ 21 } \ 22 static void raid6_rvv ## _n ## _xor_syndrome(int disks, \ 23 int start, int stop, \ 24 size_t bytes, void **ptrs) \ 25 { \ 26 void raid6_rvv ## _n ## _xor_syndrome_real(int d, \ 27 int s1, int s2, \ 28 unsigned long b, void **p); \ 29 kernel_vector_begin(); \ 30 raid6_rvv ## _n ## _xor_syndrome_real(disks, \ 31 start, stop, (unsigned long)bytes, ptrs); \ 32 kernel_vector_end(); \ 33 } \ 34 struct raid6_calls const raid6_rvvx ## _n = { \ 35 .gen_syndrome = raid6_rvv ## _n ## _gen_syndrome, \ 36 .xor_syndrome = raid6_rvv ## _n ## _xor_syndrome, \ 37 .name = "rvvx" #_n, \ 38 } 39