13626738bSChristoph Hellwig /* SPDX-License-Identifier: GPL-2.0-or-later */ 23626738bSChristoph Hellwig /* 33626738bSChristoph Hellwig * Copyright 2024 Institute of Software, CAS. 43626738bSChristoph Hellwig * 53626738bSChristoph Hellwig * Definitions for RISC-V RAID-6 code 63626738bSChristoph Hellwig */ 73626738bSChristoph Hellwig 83626738bSChristoph Hellwig #include <asm/vector.h> 9*769d603fSChristoph Hellwig #include "algos.h" 103626738bSChristoph Hellwig 113626738bSChristoph Hellwig #define RAID6_RVV_WRAPPER(_n) \ 123626738bSChristoph Hellwig static void raid6_rvv ## _n ## _gen_syndrome(int disks, \ 133626738bSChristoph Hellwig size_t bytes, void **ptrs) \ 143626738bSChristoph Hellwig { \ 153626738bSChristoph Hellwig void raid6_rvv ## _n ## _gen_syndrome_real(int d, \ 163626738bSChristoph Hellwig unsigned long b, void **p); \ 173626738bSChristoph Hellwig kernel_vector_begin(); \ 183626738bSChristoph Hellwig raid6_rvv ## _n ## _gen_syndrome_real(disks, \ 193626738bSChristoph Hellwig (unsigned long)bytes, ptrs); \ 203626738bSChristoph Hellwig kernel_vector_end(); \ 213626738bSChristoph Hellwig } \ 223626738bSChristoph Hellwig static void raid6_rvv ## _n ## _xor_syndrome(int disks, \ 233626738bSChristoph Hellwig int start, int stop, \ 243626738bSChristoph Hellwig size_t bytes, void **ptrs) \ 253626738bSChristoph Hellwig { \ 263626738bSChristoph Hellwig void raid6_rvv ## _n ## _xor_syndrome_real(int d, \ 273626738bSChristoph Hellwig int s1, int s2, \ 283626738bSChristoph Hellwig unsigned long b, void **p); \ 293626738bSChristoph Hellwig kernel_vector_begin(); \ 303626738bSChristoph Hellwig raid6_rvv ## _n ## _xor_syndrome_real(disks, \ 313626738bSChristoph Hellwig start, stop, (unsigned long)bytes, ptrs); \ 323626738bSChristoph Hellwig kernel_vector_end(); \ 333626738bSChristoph Hellwig } \ 343626738bSChristoph Hellwig struct raid6_calls const raid6_rvvx ## _n = { \ 357e91f76aSChristoph Hellwig .gen_syndrome = raid6_rvv ## _n ## _gen_syndrome, \ 367e91f76aSChristoph Hellwig .xor_syndrome = raid6_rvv ## _n ## _xor_syndrome, \ 377e91f76aSChristoph Hellwig .name = "rvvx" #_n, \ 383626738bSChristoph Hellwig } 39