[ SYSTEM ]: Linux srv.persadacompanies.com 4.18.0-553.56.1.el8_10.x86_64 #1 SMP Tue Jun 10 05:00:59 EDT 2025 x86_64
[ SERVER ]: Apache | PHP: 8.4.19
[ USER ]: persadamedika | IP: 45.64.1.108
GEFORCE FILE MANAGER
/
usr
/
src
/
kernels
/
4.18.0-553.64.1.el8_10.x86_64
/
include
/
asm-generic
/
UPLOAD:
NAME
SIZE
QUICK PERMS
ACTIONS
📁 bitops
SET
[ DEL ]
📁 vdso
SET
[ DEL ]
📄 4level-fixup.h
1,098 B
SET
[ EDIT ]
|
[ DEL ]
📄 5level-fixup.h
1,273 B
SET
[ EDIT ]
|
[ DEL ]
📄 asm-offsets.h
35 B
SET
[ EDIT ]
|
[ DEL ]
📄 asm-prototypes.h
507 B
SET
[ EDIT ]
|
[ DEL ]
📄 atomic-instrumented.h
13,623 B
SET
[ EDIT ]
|
[ DEL ]
📄 atomic-long.h
8,048 B
SET
[ EDIT ]
|
[ DEL ]
📄 atomic.h
4,391 B
SET
[ EDIT ]
|
[ DEL ]
📄 atomic64.h
1,797 B
SET
[ EDIT ]
|
[ DEL ]
📄 audit_change_attr.h
484 B
SET
[ EDIT ]
|
[ DEL ]
📄 audit_dir_write.h
528 B
SET
[ EDIT ]
|
[ DEL ]
📄 audit_read.h
241 B
SET
[ EDIT ]
|
[ DEL ]
📄 audit_signal.h
36 B
SET
[ EDIT ]
|
[ DEL ]
📄 audit_write.h
461 B
SET
[ EDIT ]
|
[ DEL ]
📄 barrier.h
6,868 B
SET
[ EDIT ]
|
[ DEL ]
📄 bitops-instrumented.h
7,909 B
SET
[ EDIT ]
|
[ DEL ]
📄 bitops.h
1,119 B
SET
[ EDIT ]
|
[ DEL ]
📄 bitsperlong.h
592 B
SET
[ EDIT ]
|
[ DEL ]
📄 bug.h
6,720 B
SET
[ EDIT ]
|
[ DEL ]
📄 bugs.h
267 B
SET
[ EDIT ]
|
[ DEL ]
📄 cache.h
384 B
SET
[ EDIT ]
|
[ DEL ]
📄 cacheflush.h
1,340 B
SET
[ EDIT ]
|
[ DEL ]
📄 checksum.h
2,329 B
SET
[ EDIT ]
|
[ DEL ]
📄 cmpxchg-local.h
1,464 B
SET
[ EDIT ]
|
[ DEL ]
📄 cmpxchg.h
2,286 B
SET
[ EDIT ]
|
[ DEL ]
📄 compat.h
658 B
SET
[ EDIT ]
|
[ DEL ]
📄 current.h
256 B
SET
[ EDIT ]
|
[ DEL ]
📄 delay.h
1,157 B
SET
[ EDIT ]
|
[ DEL ]
📄 device.h
245 B
SET
[ EDIT ]
|
[ DEL ]
📄 div64.h
7,458 B
SET
[ EDIT ]
|
[ DEL ]
📄 dma-contiguous.h
238 B
SET
[ EDIT ]
|
[ DEL ]
📄 dma-mapping.h
248 B
SET
[ EDIT ]
|
[ DEL ]
📄 dma.h
553 B
SET
[ EDIT ]
|
[ DEL ]
📄 early_ioremap.h
1,696 B
SET
[ EDIT ]
|
[ DEL ]
📄 emergency-restart.h
248 B
SET
[ EDIT ]
|
[ DEL ]
📄 error-injection.h
1,178 B
SET
[ EDIT ]
|
[ DEL ]
📄 exec.h
667 B
SET
[ EDIT ]
|
[ DEL ]
📄 export.h
2,002 B
SET
[ EDIT ]
|
[ DEL ]
📄 extable.h
802 B
SET
[ EDIT ]
|
[ DEL ]
📄 fb.h
271 B
SET
[ EDIT ]
|
[ DEL ]
📄 fixmap.h
2,904 B
SET
[ EDIT ]
|
[ DEL ]
📄 ftrace.h
460 B
SET
[ EDIT ]
|
[ DEL ]
📄 futex.h
2,964 B
SET
[ EDIT ]
|
[ DEL ]
📄 getorder.h
1,487 B
SET
[ EDIT ]
|
[ DEL ]
📄 gpio.h
4,558 B
SET
[ EDIT ]
|
[ DEL ]
📄 hardirq.h
532 B
SET
[ EDIT ]
|
[ DEL ]
📄 hugetlb.h
1,326 B
SET
[ EDIT ]
|
[ DEL ]
📄 hw_irq.h
270 B
SET
[ EDIT ]
|
[ DEL ]
📄 hyperv-tlfs.h
20,696 B
SET
[ EDIT ]
|
[ DEL ]
📄 ide_iops.h
791 B
SET
[ EDIT ]
|
[ DEL ]
📄 int-ll64.h
863 B
SET
[ EDIT ]
|
[ DEL ]
📄 io.h
24,167 B
SET
[ EDIT ]
|
[ DEL ]
📄 ioctl.h
506 B
SET
[ EDIT ]
|
[ DEL ]
📄 iomap.h
4,033 B
SET
[ EDIT ]
|
[ DEL ]
📄 irq.h
403 B
SET
[ EDIT ]
|
[ DEL ]
📄 irq_regs.h
980 B
SET
[ EDIT ]
|
[ DEL ]
📄 irq_work.h
194 B
SET
[ EDIT ]
|
[ DEL ]
📄 irqflags.h
1,543 B
SET
[ EDIT ]
|
[ DEL ]
📄 kdebug.h
182 B
SET
[ EDIT ]
|
[ DEL ]
📄 kmap_size.h
263 B
SET
[ EDIT ]
|
[ DEL ]
📄 kprobes.h
868 B
SET
[ EDIT ]
|
[ DEL ]
📄 kvm_para.h
549 B
SET
[ EDIT ]
|
[ DEL ]
📄 kvm_types.h
113 B
SET
[ EDIT ]
|
[ DEL ]
📄 linkage.h
225 B
SET
[ EDIT ]
|
[ DEL ]
📄 local.h
2,282 B
SET
[ EDIT ]
|
[ DEL ]
📄 local64.h
3,887 B
SET
[ EDIT ]
|
[ DEL ]
📄 mcs_spinlock.h
260 B
SET
[ EDIT ]
|
[ DEL ]
📄 memory_model.h
2,209 B
SET
[ EDIT ]
|
[ DEL ]
📄 mm-arch-hooks.h
388 B
SET
[ EDIT ]
|
[ DEL ]
📄 mm_hooks.h
854 B
SET
[ EDIT ]
|
[ DEL ]
📄 mmiowb.h
1,731 B
SET
[ EDIT ]
|
[ DEL ]
📄 mmiowb_types.h
249 B
SET
[ EDIT ]
|
[ DEL ]
📄 mmu.h
449 B
SET
[ EDIT ]
|
[ DEL ]
📄 mmu_context.h
881 B
SET
[ EDIT ]
|
[ DEL ]
📄 module.h
1,118 B
SET
[ EDIT ]
|
[ DEL ]
📄 mshyperv.h
8,592 B
SET
[ EDIT ]
|
[ DEL ]
📄 msi.h
1,053 B
SET
[ EDIT ]
|
[ DEL ]
📄 numa.h
1,544 B
SET
[ EDIT ]
|
[ DEL ]
📄 page.h
2,454 B
SET
[ EDIT ]
|
[ DEL ]
📄 param.h
367 B
SET
[ EDIT ]
|
[ DEL ]
📄 parport.h
604 B
SET
[ EDIT ]
|
[ DEL ]
📄 pci.h
401 B
SET
[ EDIT ]
|
[ DEL ]
📄 pci_iomap.h
1,775 B
SET
[ EDIT ]
|
[ DEL ]
📄 percpu.h
13,026 B
SET
[ EDIT ]
|
[ DEL ]
📄 pgalloc.h
342 B
SET
[ EDIT ]
|
[ DEL ]
📄 pgtable-nop4d-hack.h
1,965 B
SET
[ EDIT ]
|
[ DEL ]
📄 pgtable-nop4d.h
1,772 B
SET
[ EDIT ]
|
[ DEL ]
📄 pgtable-nopmd.h
1,944 B
SET
[ EDIT ]
|
[ DEL ]
📄 pgtable-nopud.h
2,071 B
SET
[ EDIT ]
|
[ DEL ]
📄 pgtable.h
33,765 B
SET
[ EDIT ]
|
[ DEL ]
📄 pgtable_uffd.h
1,052 B
SET
[ EDIT ]
|
[ DEL ]
📄 preempt.h
1,994 B
SET
[ EDIT ]
|
[ DEL ]
📄 ptrace.h
1,615 B
SET
[ EDIT ]
|
[ DEL ]
📄 qrwlock.h
4,315 B
SET
[ EDIT ]
|
[ DEL ]
📄 qrwlock_types.h
682 B
SET
[ EDIT ]
|
[ DEL ]
📄 qspinlock.h
3,816 B
SET
[ EDIT ]
|
[ DEL ]
📄 qspinlock_types.h
2,590 B
SET
[ EDIT ]
|
[ DEL ]
📄 resource.h
1,100 B
SET
[ EDIT ]
|
[ DEL ]
📄 seccomp.h
1,328 B
SET
[ EDIT ]
|
[ DEL ]
📄 sections.h
5,306 B
SET
[ EDIT ]
|
[ DEL ]
📄 segment.h
249 B
SET
[ EDIT ]
|
[ DEL ]
📄 serial.h
345 B
SET
[ EDIT ]
|
[ DEL ]
📄 set_memory.h
362 B
SET
[ EDIT ]
|
[ DEL ]
📄 signal.h
308 B
SET
[ EDIT ]
|
[ DEL ]
📄 simd.h
436 B
SET
[ EDIT ]
|
[ DEL ]
📄 sizes.h
78 B
SET
[ EDIT ]
|
[ DEL ]
📄 spinlock.h
329 B
SET
[ EDIT ]
|
[ DEL ]
📄 statfs.h
169 B
SET
[ EDIT ]
|
[ DEL ]
📄 string.h
281 B
SET
[ EDIT ]
|
[ DEL ]
📄 switch_to.h
962 B
SET
[ EDIT ]
|
[ DEL ]
📄 syscall.h
6,389 B
SET
[ EDIT ]
|
[ DEL ]
📄 syscalls.h
739 B
SET
[ EDIT ]
|
[ DEL ]
📄 termios-base.h
2,164 B
SET
[ EDIT ]
|
[ DEL ]
📄 termios.h
2,877 B
SET
[ EDIT ]
|
[ DEL ]
📄 timex.h
508 B
SET
[ EDIT ]
|
[ DEL ]
📄 tlb.h
19,685 B
SET
[ EDIT ]
|
[ DEL ]
📄 tlbflush.h
485 B
SET
[ EDIT ]
|
[ DEL ]
📄 topology.h
2,234 B
SET
[ EDIT ]
|
[ DEL ]
📄 trace_clock.h
391 B
SET
[ EDIT ]
|
[ DEL ]
📄 uaccess.h
5,272 B
SET
[ EDIT ]
|
[ DEL ]
📄 unaligned.h
1,078 B
SET
[ EDIT ]
|
[ DEL ]
📄 unistd.h
318 B
SET
[ EDIT ]
|
[ DEL ]
📄 user.h
242 B
SET
[ EDIT ]
|
[ DEL ]
📄 vga.h
587 B
SET
[ EDIT ]
|
[ DEL ]
📄 vmlinux.lds.h
28,848 B
SET
[ EDIT ]
|
[ DEL ]
📄 vtime.h
52 B
SET
[ EDIT ]
|
[ DEL ]
📄 word-at-a-time.h
2,817 B
SET
[ EDIT ]
|
[ DEL ]
📄 xor.h
13,961 B
SET
[ EDIT ]
|
[ DEL ]
DELETE SELECTED
[ CLOSE ]
EDIT: xor.h
/* * include/asm-generic/xor.h * * Generic optimized RAID-5 checksumming functions. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * You should have received a copy of the GNU General Public License * (for example /usr/src/linux/COPYING); if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include <linux/prefetch.h> static void xor_8regs_2(unsigned long bytes, unsigned long *p1, unsigned long *p2) { long lines = bytes / (sizeof (long)) / 8; do { p1[0] ^= p2[0]; p1[1] ^= p2[1]; p1[2] ^= p2[2]; p1[3] ^= p2[3]; p1[4] ^= p2[4]; p1[5] ^= p2[5]; p1[6] ^= p2[6]; p1[7] ^= p2[7]; p1 += 8; p2 += 8; } while (--lines > 0); } static void xor_8regs_3(unsigned long bytes, unsigned long *p1, unsigned long *p2, unsigned long *p3) { long lines = bytes / (sizeof (long)) / 8; do { p1[0] ^= p2[0] ^ p3[0]; p1[1] ^= p2[1] ^ p3[1]; p1[2] ^= p2[2] ^ p3[2]; p1[3] ^= p2[3] ^ p3[3]; p1[4] ^= p2[4] ^ p3[4]; p1[5] ^= p2[5] ^ p3[5]; p1[6] ^= p2[6] ^ p3[6]; p1[7] ^= p2[7] ^ p3[7]; p1 += 8; p2 += 8; p3 += 8; } while (--lines > 0); } static void xor_8regs_4(unsigned long bytes, unsigned long *p1, unsigned long *p2, unsigned long *p3, unsigned long *p4) { long lines = bytes / (sizeof (long)) / 8; do { p1[0] ^= p2[0] ^ p3[0] ^ p4[0]; p1[1] ^= p2[1] ^ p3[1] ^ p4[1]; p1[2] ^= p2[2] ^ p3[2] ^ p4[2]; p1[3] ^= p2[3] ^ p3[3] ^ p4[3]; p1[4] ^= p2[4] ^ p3[4] ^ p4[4]; p1[5] ^= p2[5] ^ p3[5] ^ p4[5]; p1[6] ^= p2[6] ^ p3[6] ^ p4[6]; p1[7] ^= p2[7] ^ p3[7] ^ p4[7]; p1 += 8; p2 += 8; p3 += 8; p4 += 8; } while (--lines > 0); } static void xor_8regs_5(unsigned long bytes, unsigned long *p1, unsigned long *p2, unsigned long *p3, unsigned long *p4, unsigned long *p5) { long lines = bytes / (sizeof (long)) / 8; do { p1[0] ^= p2[0] ^ p3[0] ^ p4[0] ^ p5[0]; p1[1] ^= p2[1] ^ p3[1] ^ p4[1] ^ p5[1]; p1[2] ^= p2[2] ^ p3[2] ^ p4[2] ^ p5[2]; p1[3] ^= p2[3] ^ p3[3] ^ p4[3] ^ p5[3]; p1[4] ^= p2[4] ^ p3[4] ^ p4[4] ^ p5[4]; p1[5] ^= p2[5] ^ p3[5] ^ p4[5] ^ p5[5]; p1[6] ^= p2[6] ^ p3[6] ^ p4[6] ^ p5[6]; p1[7] ^= p2[7] ^ p3[7] ^ p4[7] ^ p5[7]; p1 += 8; p2 += 8; p3 += 8; p4 += 8; p5 += 8; } while (--lines > 0); } static void xor_32regs_2(unsigned long bytes, unsigned long *p1, unsigned long *p2) { long lines = bytes / (sizeof (long)) / 8; do { register long d0, d1, d2, d3, d4, d5, d6, d7; d0 = p1[0]; /* Pull the stuff into registers */ d1 = p1[1]; /* ... in bursts, if possible. */ d2 = p1[2]; d3 = p1[3]; d4 = p1[4]; d5 = p1[5]; d6 = p1[6]; d7 = p1[7]; d0 ^= p2[0]; d1 ^= p2[1]; d2 ^= p2[2]; d3 ^= p2[3]; d4 ^= p2[4]; d5 ^= p2[5]; d6 ^= p2[6]; d7 ^= p2[7]; p1[0] = d0; /* Store the result (in bursts) */ p1[1] = d1; p1[2] = d2; p1[3] = d3; p1[4] = d4; p1[5] = d5; p1[6] = d6; p1[7] = d7; p1 += 8; p2 += 8; } while (--lines > 0); } static void xor_32regs_3(unsigned long bytes, unsigned long *p1, unsigned long *p2, unsigned long *p3) { long lines = bytes / (sizeof (long)) / 8; do { register long d0, d1, d2, d3, d4, d5, d6, d7; d0 = p1[0]; /* Pull the stuff into registers */ d1 = p1[1]; /* ... in bursts, if possible. */ d2 = p1[2]; d3 = p1[3]; d4 = p1[4]; d5 = p1[5]; d6 = p1[6]; d7 = p1[7]; d0 ^= p2[0]; d1 ^= p2[1]; d2 ^= p2[2]; d3 ^= p2[3]; d4 ^= p2[4]; d5 ^= p2[5]; d6 ^= p2[6]; d7 ^= p2[7]; d0 ^= p3[0]; d1 ^= p3[1]; d2 ^= p3[2]; d3 ^= p3[3]; d4 ^= p3[4]; d5 ^= p3[5]; d6 ^= p3[6]; d7 ^= p3[7]; p1[0] = d0; /* Store the result (in bursts) */ p1[1] = d1; p1[2] = d2; p1[3] = d3; p1[4] = d4; p1[5] = d5; p1[6] = d6; p1[7] = d7; p1 += 8; p2 += 8; p3 += 8; } while (--lines > 0); } static void xor_32regs_4(unsigned long bytes, unsigned long *p1, unsigned long *p2, unsigned long *p3, unsigned long *p4) { long lines = bytes / (sizeof (long)) / 8; do { register long d0, d1, d2, d3, d4, d5, d6, d7; d0 = p1[0]; /* Pull the stuff into registers */ d1 = p1[1]; /* ... in bursts, if possible. */ d2 = p1[2]; d3 = p1[3]; d4 = p1[4]; d5 = p1[5]; d6 = p1[6]; d7 = p1[7]; d0 ^= p2[0]; d1 ^= p2[1]; d2 ^= p2[2]; d3 ^= p2[3]; d4 ^= p2[4]; d5 ^= p2[5]; d6 ^= p2[6]; d7 ^= p2[7]; d0 ^= p3[0]; d1 ^= p3[1]; d2 ^= p3[2]; d3 ^= p3[3]; d4 ^= p3[4]; d5 ^= p3[5]; d6 ^= p3[6]; d7 ^= p3[7]; d0 ^= p4[0]; d1 ^= p4[1]; d2 ^= p4[2]; d3 ^= p4[3]; d4 ^= p4[4]; d5 ^= p4[5]; d6 ^= p4[6]; d7 ^= p4[7]; p1[0] = d0; /* Store the result (in bursts) */ p1[1] = d1; p1[2] = d2; p1[3] = d3; p1[4] = d4; p1[5] = d5; p1[6] = d6; p1[7] = d7; p1 += 8; p2 += 8; p3 += 8; p4 += 8; } while (--lines > 0); } static void xor_32regs_5(unsigned long bytes, unsigned long *p1, unsigned long *p2, unsigned long *p3, unsigned long *p4, unsigned long *p5) { long lines = bytes / (sizeof (long)) / 8; do { register long d0, d1, d2, d3, d4, d5, d6, d7; d0 = p1[0]; /* Pull the stuff into registers */ d1 = p1[1]; /* ... in bursts, if possible. */ d2 = p1[2]; d3 = p1[3]; d4 = p1[4]; d5 = p1[5]; d6 = p1[6]; d7 = p1[7]; d0 ^= p2[0]; d1 ^= p2[1]; d2 ^= p2[2]; d3 ^= p2[3]; d4 ^= p2[4]; d5 ^= p2[5]; d6 ^= p2[6]; d7 ^= p2[7]; d0 ^= p3[0]; d1 ^= p3[1]; d2 ^= p3[2]; d3 ^= p3[3]; d4 ^= p3[4]; d5 ^= p3[5]; d6 ^= p3[6]; d7 ^= p3[7]; d0 ^= p4[0]; d1 ^= p4[1]; d2 ^= p4[2]; d3 ^= p4[3]; d4 ^= p4[4]; d5 ^= p4[5]; d6 ^= p4[6]; d7 ^= p4[7]; d0 ^= p5[0]; d1 ^= p5[1]; d2 ^= p5[2]; d3 ^= p5[3]; d4 ^= p5[4]; d5 ^= p5[5]; d6 ^= p5[6]; d7 ^= p5[7]; p1[0] = d0; /* Store the result (in bursts) */ p1[1] = d1; p1[2] = d2; p1[3] = d3; p1[4] = d4; p1[5] = d5; p1[6] = d6; p1[7] = d7; p1 += 8; p2 += 8; p3 += 8; p4 += 8; p5 += 8; } while (--lines > 0); } static void xor_8regs_p_2(unsigned long bytes, unsigned long *p1, unsigned long *p2) { long lines = bytes / (sizeof (long)) / 8 - 1; prefetchw(p1); prefetch(p2); do { prefetchw(p1+8); prefetch(p2+8); once_more: p1[0] ^= p2[0]; p1[1] ^= p2[1]; p1[2] ^= p2[2]; p1[3] ^= p2[3]; p1[4] ^= p2[4]; p1[5] ^= p2[5]; p1[6] ^= p2[6]; p1[7] ^= p2[7]; p1 += 8; p2 += 8; } while (--lines > 0); if (lines == 0) goto once_more; } static void xor_8regs_p_3(unsigned long bytes, unsigned long *p1, unsigned long *p2, unsigned long *p3) { long lines = bytes / (sizeof (long)) / 8 - 1; prefetchw(p1); prefetch(p2); prefetch(p3); do { prefetchw(p1+8); prefetch(p2+8); prefetch(p3+8); once_more: p1[0] ^= p2[0] ^ p3[0]; p1[1] ^= p2[1] ^ p3[1]; p1[2] ^= p2[2] ^ p3[2]; p1[3] ^= p2[3] ^ p3[3]; p1[4] ^= p2[4] ^ p3[4]; p1[5] ^= p2[5] ^ p3[5]; p1[6] ^= p2[6] ^ p3[6]; p1[7] ^= p2[7] ^ p3[7]; p1 += 8; p2 += 8; p3 += 8; } while (--lines > 0); if (lines == 0) goto once_more; } static void xor_8regs_p_4(unsigned long bytes, unsigned long *p1, unsigned long *p2, unsigned long *p3, unsigned long *p4) { long lines = bytes / (sizeof (long)) / 8 - 1; prefetchw(p1); prefetch(p2); prefetch(p3); prefetch(p4); do { prefetchw(p1+8); prefetch(p2+8); prefetch(p3+8); prefetch(p4+8); once_more: p1[0] ^= p2[0] ^ p3[0] ^ p4[0]; p1[1] ^= p2[1] ^ p3[1] ^ p4[1]; p1[2] ^= p2[2] ^ p3[2] ^ p4[2]; p1[3] ^= p2[3] ^ p3[3] ^ p4[3]; p1[4] ^= p2[4] ^ p3[4] ^ p4[4]; p1[5] ^= p2[5] ^ p3[5] ^ p4[5]; p1[6] ^= p2[6] ^ p3[6] ^ p4[6]; p1[7] ^= p2[7] ^ p3[7] ^ p4[7]; p1 += 8; p2 += 8; p3 += 8; p4 += 8; } while (--lines > 0); if (lines == 0) goto once_more; } static void xor_8regs_p_5(unsigned long bytes, unsigned long *p1, unsigned long *p2, unsigned long *p3, unsigned long *p4, unsigned long *p5) { long lines = bytes / (sizeof (long)) / 8 - 1; prefetchw(p1); prefetch(p2); prefetch(p3); prefetch(p4); prefetch(p5); do { prefetchw(p1+8); prefetch(p2+8); prefetch(p3+8); prefetch(p4+8); prefetch(p5+8); once_more: p1[0] ^= p2[0] ^ p3[0] ^ p4[0] ^ p5[0]; p1[1] ^= p2[1] ^ p3[1] ^ p4[1] ^ p5[1]; p1[2] ^= p2[2] ^ p3[2] ^ p4[2] ^ p5[2]; p1[3] ^= p2[3] ^ p3[3] ^ p4[3] ^ p5[3]; p1[4] ^= p2[4] ^ p3[4] ^ p4[4] ^ p5[4]; p1[5] ^= p2[5] ^ p3[5] ^ p4[5] ^ p5[5]; p1[6] ^= p2[6] ^ p3[6] ^ p4[6] ^ p5[6]; p1[7] ^= p2[7] ^ p3[7] ^ p4[7] ^ p5[7]; p1 += 8; p2 += 8; p3 += 8; p4 += 8; p5 += 8; } while (--lines > 0); if (lines == 0) goto once_more; } static void xor_32regs_p_2(unsigned long bytes, unsigned long *p1, unsigned long *p2) { long lines = bytes / (sizeof (long)) / 8 - 1; prefetchw(p1); prefetch(p2); do { register long d0, d1, d2, d3, d4, d5, d6, d7; prefetchw(p1+8); prefetch(p2+8); once_more: d0 = p1[0]; /* Pull the stuff into registers */ d1 = p1[1]; /* ... in bursts, if possible. */ d2 = p1[2]; d3 = p1[3]; d4 = p1[4]; d5 = p1[5]; d6 = p1[6]; d7 = p1[7]; d0 ^= p2[0]; d1 ^= p2[1]; d2 ^= p2[2]; d3 ^= p2[3]; d4 ^= p2[4]; d5 ^= p2[5]; d6 ^= p2[6]; d7 ^= p2[7]; p1[0] = d0; /* Store the result (in bursts) */ p1[1] = d1; p1[2] = d2; p1[3] = d3; p1[4] = d4; p1[5] = d5; p1[6] = d6; p1[7] = d7; p1 += 8; p2 += 8; } while (--lines > 0); if (lines == 0) goto once_more; } static void xor_32regs_p_3(unsigned long bytes, unsigned long *p1, unsigned long *p2, unsigned long *p3) { long lines = bytes / (sizeof (long)) / 8 - 1; prefetchw(p1); prefetch(p2); prefetch(p3); do { register long d0, d1, d2, d3, d4, d5, d6, d7; prefetchw(p1+8); prefetch(p2+8); prefetch(p3+8); once_more: d0 = p1[0]; /* Pull the stuff into registers */ d1 = p1[1]; /* ... in bursts, if possible. */ d2 = p1[2]; d3 = p1[3]; d4 = p1[4]; d5 = p1[5]; d6 = p1[6]; d7 = p1[7]; d0 ^= p2[0]; d1 ^= p2[1]; d2 ^= p2[2]; d3 ^= p2[3]; d4 ^= p2[4]; d5 ^= p2[5]; d6 ^= p2[6]; d7 ^= p2[7]; d0 ^= p3[0]; d1 ^= p3[1]; d2 ^= p3[2]; d3 ^= p3[3]; d4 ^= p3[4]; d5 ^= p3[5]; d6 ^= p3[6]; d7 ^= p3[7]; p1[0] = d0; /* Store the result (in bursts) */ p1[1] = d1; p1[2] = d2; p1[3] = d3; p1[4] = d4; p1[5] = d5; p1[6] = d6; p1[7] = d7; p1 += 8; p2 += 8; p3 += 8; } while (--lines > 0); if (lines == 0) goto once_more; } static void xor_32regs_p_4(unsigned long bytes, unsigned long *p1, unsigned long *p2, unsigned long *p3, unsigned long *p4) { long lines = bytes / (sizeof (long)) / 8 - 1; prefetchw(p1); prefetch(p2); prefetch(p3); prefetch(p4); do { register long d0, d1, d2, d3, d4, d5, d6, d7; prefetchw(p1+8); prefetch(p2+8); prefetch(p3+8); prefetch(p4+8); once_more: d0 = p1[0]; /* Pull the stuff into registers */ d1 = p1[1]; /* ... in bursts, if possible. */ d2 = p1[2]; d3 = p1[3]; d4 = p1[4]; d5 = p1[5]; d6 = p1[6]; d7 = p1[7]; d0 ^= p2[0]; d1 ^= p2[1]; d2 ^= p2[2]; d3 ^= p2[3]; d4 ^= p2[4]; d5 ^= p2[5]; d6 ^= p2[6]; d7 ^= p2[7]; d0 ^= p3[0]; d1 ^= p3[1]; d2 ^= p3[2]; d3 ^= p3[3]; d4 ^= p3[4]; d5 ^= p3[5]; d6 ^= p3[6]; d7 ^= p3[7]; d0 ^= p4[0]; d1 ^= p4[1]; d2 ^= p4[2]; d3 ^= p4[3]; d4 ^= p4[4]; d5 ^= p4[5]; d6 ^= p4[6]; d7 ^= p4[7]; p1[0] = d0; /* Store the result (in bursts) */ p1[1] = d1; p1[2] = d2; p1[3] = d3; p1[4] = d4; p1[5] = d5; p1[6] = d6; p1[7] = d7; p1 += 8; p2 += 8; p3 += 8; p4 += 8; } while (--lines > 0); if (lines == 0) goto once_more; } static void xor_32regs_p_5(unsigned long bytes, unsigned long *p1, unsigned long *p2, unsigned long *p3, unsigned long *p4, unsigned long *p5) { long lines = bytes / (sizeof (long)) / 8 - 1; prefetchw(p1); prefetch(p2); prefetch(p3); prefetch(p4); prefetch(p5); do { register long d0, d1, d2, d3, d4, d5, d6, d7; prefetchw(p1+8); prefetch(p2+8); prefetch(p3+8); prefetch(p4+8); prefetch(p5+8); once_more: d0 = p1[0]; /* Pull the stuff into registers */ d1 = p1[1]; /* ... in bursts, if possible. */ d2 = p1[2]; d3 = p1[3]; d4 = p1[4]; d5 = p1[5]; d6 = p1[6]; d7 = p1[7]; d0 ^= p2[0]; d1 ^= p2[1]; d2 ^= p2[2]; d3 ^= p2[3]; d4 ^= p2[4]; d5 ^= p2[5]; d6 ^= p2[6]; d7 ^= p2[7]; d0 ^= p3[0]; d1 ^= p3[1]; d2 ^= p3[2]; d3 ^= p3[3]; d4 ^= p3[4]; d5 ^= p3[5]; d6 ^= p3[6]; d7 ^= p3[7]; d0 ^= p4[0]; d1 ^= p4[1]; d2 ^= p4[2]; d3 ^= p4[3]; d4 ^= p4[4]; d5 ^= p4[5]; d6 ^= p4[6]; d7 ^= p4[7]; d0 ^= p5[0]; d1 ^= p5[1]; d2 ^= p5[2]; d3 ^= p5[3]; d4 ^= p5[4]; d5 ^= p5[5]; d6 ^= p5[6]; d7 ^= p5[7]; p1[0] = d0; /* Store the result (in bursts) */ p1[1] = d1; p1[2] = d2; p1[3] = d3; p1[4] = d4; p1[5] = d5; p1[6] = d6; p1[7] = d7; p1 += 8; p2 += 8; p3 += 8; p4 += 8; p5 += 8; } while (--lines > 0); if (lines == 0) goto once_more; } static struct xor_block_template xor_block_8regs = { .name = "8regs", .do_2 = xor_8regs_2, .do_3 = xor_8regs_3, .do_4 = xor_8regs_4, .do_5 = xor_8regs_5, }; static struct xor_block_template xor_block_32regs = { .name = "32regs", .do_2 = xor_32regs_2, .do_3 = xor_32regs_3, .do_4 = xor_32regs_4, .do_5 = xor_32regs_5, }; static struct xor_block_template xor_block_8regs_p __maybe_unused = { .name = "8regs_prefetch", .do_2 = xor_8regs_p_2, .do_3 = xor_8regs_p_3, .do_4 = xor_8regs_p_4, .do_5 = xor_8regs_p_5, }; static struct xor_block_template xor_block_32regs_p __maybe_unused = { .name = "32regs_prefetch", .do_2 = xor_32regs_p_2, .do_3 = xor_32regs_p_3, .do_4 = xor_32regs_p_4, .do_5 = xor_32regs_p_5, }; #define XOR_TRY_TEMPLATES \ do { \ xor_speed(&xor_block_8regs); \ xor_speed(&xor_block_8regs_p); \ xor_speed(&xor_block_32regs); \ xor_speed(&xor_block_32regs_p); \ } while (0)