~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/sparc/include/asm/xor_64.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-or-later */
  2 /*
  3  * include/asm/xor.h
  4  *
  5  * High speed xor_block operation for RAID4/5 utilizing the
  6  * UltraSparc Visual Instruction Set and Niagara block-init
  7  * twin-load instructions.
  8  *
  9  * Copyright (C) 1997, 1999 Jakub Jelinek (jj@ultra.linux.cz)
 10  * Copyright (C) 2006 David S. Miller <davem@davemloft.net>
 11  */
 12 
 13 #include <asm/spitfire.h>
 14 
 15 void xor_vis_2(unsigned long bytes, unsigned long * __restrict p1,
 16                const unsigned long * __restrict p2);
 17 void xor_vis_3(unsigned long bytes, unsigned long * __restrict p1,
 18                const unsigned long * __restrict p2,
 19                const unsigned long * __restrict p3);
 20 void xor_vis_4(unsigned long bytes, unsigned long * __restrict p1,
 21                const unsigned long * __restrict p2,
 22                const unsigned long * __restrict p3,
 23                const unsigned long * __restrict p4);
 24 void xor_vis_5(unsigned long bytes, unsigned long * __restrict p1,
 25                const unsigned long * __restrict p2,
 26                const unsigned long * __restrict p3,
 27                const unsigned long * __restrict p4,
 28                const unsigned long * __restrict p5);
 29 
 30 /* XXX Ugh, write cheetah versions... -DaveM */
 31 
 32 static struct xor_block_template xor_block_VIS = {
 33         .name   = "VIS",
 34         .do_2   = xor_vis_2,
 35         .do_3   = xor_vis_3,
 36         .do_4   = xor_vis_4,
 37         .do_5   = xor_vis_5,
 38 };
 39 
 40 void xor_niagara_2(unsigned long bytes, unsigned long * __restrict p1,
 41                    const unsigned long * __restrict p2);
 42 void xor_niagara_3(unsigned long bytes, unsigned long * __restrict p1,
 43                    const unsigned long * __restrict p2,
 44                    const unsigned long * __restrict p3);
 45 void xor_niagara_4(unsigned long bytes, unsigned long * __restrict p1,
 46                    const unsigned long * __restrict p2,
 47                    const unsigned long * __restrict p3,
 48                    const unsigned long * __restrict p4);
 49 void xor_niagara_5(unsigned long bytes, unsigned long * __restrict p1,
 50                    const unsigned long * __restrict p2,
 51                    const unsigned long * __restrict p3,
 52                    const unsigned long * __restrict p4,
 53                    const unsigned long * __restrict p5);
 54 
 55 static struct xor_block_template xor_block_niagara = {
 56         .name   = "Niagara",
 57         .do_2   = xor_niagara_2,
 58         .do_3   = xor_niagara_3,
 59         .do_4   = xor_niagara_4,
 60         .do_5   = xor_niagara_5,
 61 };
 62 
 63 #undef XOR_TRY_TEMPLATES
 64 #define XOR_TRY_TEMPLATES                               \
 65         do {                                            \
 66                 xor_speed(&xor_block_VIS);              \
 67                 xor_speed(&xor_block_niagara);          \
 68         } while (0)
 69 
 70 /* For VIS for everything except Niagara.  */
 71 #define XOR_SELECT_TEMPLATE(FASTEST) \
 72         ((tlb_type == hypervisor && \
 73           (sun4v_chip_type == SUN4V_CHIP_NIAGARA1 || \
 74            sun4v_chip_type == SUN4V_CHIP_NIAGARA2 || \
 75            sun4v_chip_type == SUN4V_CHIP_NIAGARA3 || \
 76            sun4v_chip_type == SUN4V_CHIP_NIAGARA4 || \
 77            sun4v_chip_type == SUN4V_CHIP_NIAGARA5)) ? \
 78          &xor_block_niagara : \
 79          &xor_block_VIS)
 80 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php