Merge master.kernel.org:/home/rmk/linux-2.6-serial
[linux-2.6] / include / asm-sparc64 / xor.h
1 /*
2  * include/asm-sparc64/xor.h
3  *
4  * High speed xor_block operation for RAID4/5 utilizing the
5  * UltraSparc Visual Instruction Set.
6  *
7  * Copyright (C) 1997, 1999 Jakub Jelinek (jj@ultra.linux.cz)
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2, or (at your option)
12  * any later version.
13  *
14  * You should have received a copy of the GNU General Public License
15  * (for example /usr/src/linux/COPYING); if not, write to the Free
16  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17  */
18
19 #include <asm/pstate.h>
20 #include <asm/asi.h>
21
22 extern void xor_vis_2(unsigned long, unsigned long *, unsigned long *);
23 extern void xor_vis_3(unsigned long, unsigned long *, unsigned long *,
24                       unsigned long *);
25 extern void xor_vis_4(unsigned long, unsigned long *, unsigned long *,
26                       unsigned long *, unsigned long *);
27 extern void xor_vis_5(unsigned long, unsigned long *, unsigned long *,
28                       unsigned long *, unsigned long *, unsigned long *);
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 #define XOR_TRY_TEMPLATES       xor_speed(&xor_block_VIS)