OXIESEC PANEL
- Current Dir:
/
/
usr
/
src
/
linux-headers-4.15.0-213
/
arch
/
microblaze
/
include
/
asm
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
05/09/2024 07:14:12 AM
rwxr-xr-x
📄
Kbuild
742 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
asm-compat.h
518 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
asm-offsets.h
35 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
atomic.h
626 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
cache.h
644 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
cacheflush.h
4.12 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
checksum.h
942 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
cmpxchg.h
919 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
cpuinfo.h
2.13 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
cputable.h
1 byte
01/28/2018 09:20:33 PM
rw-r--r--
📄
current.h
850 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
delay.h
2.26 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
dma-mapping.h
765 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
dma.h
706 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
elf.h
738 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
entry.h
1.13 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
exceptions.h
2.08 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
fixmap.h
1.96 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
flat.h
2.26 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
ftrace.h
641 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
futex.h
2.13 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
hash.h
2.37 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
highmem.h
2.2 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
hw_irq.h
1 byte
01/28/2018 09:20:33 PM
rw-r--r--
📄
io.h
2.05 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
irq.h
538 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
irqflags.h
2.6 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
kgdb.h
739 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
mmu.h
4.19 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
mmu_context.h
141 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
mmu_context_mm.h
3.91 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
module.h
840 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
page.h
6.11 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
pci-bridge.h
4.57 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
pci.h
2.47 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
pgalloc.h
4.74 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
pgtable.h
17.66 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
processor.h
4.11 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
prom.h
713 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
ptrace.h
727 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
pvr.h
8.72 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
registers.h
1.65 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
seccomp.h
256 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
sections.h
637 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
setup.h
1.37 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
string.h
630 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
switch_to.h
629 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
syscall.h
2.26 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
thread_info.h
4.01 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
timex.h
402 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
tlb.h
714 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
tlbflush.h
2.04 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
uaccess.h
9.98 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
unaligned.h
871 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
unistd.h
1.19 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
unwind.h
719 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
user.h
1 byte
01/28/2018 09:20:33 PM
rw-r--r--
Editing: hash.h
Close
/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_HASH_H #define _ASM_HASH_H /* * Fortunately, most people who want to run Linux on Microblaze enable * both multiplier and barrel shifter, but omitting them is technically * a supported configuration. * * With just a barrel shifter, we can implement an efficient constant * multiply using shifts and adds. GCC can find a 9-step solution, but * this 6-step solution was found by Yevgen Voronenko's implementation * of the Hcub algorithm at http://spiral.ece.cmu.edu/mcm/gen.html. * * That software is really not designed for a single multiplier this large, * but if you run it enough times with different seeds, it'll find several * 6-shift, 6-add sequences for computing x * 0x61C88647. They are all * c = (x << 19) + x; * a = (x << 9) + c; * b = (x << 23) + a; * return (a<<11) + (b<<6) + (c<<3) - b; * with variations on the order of the final add. * * Without even a shifter, it's hopless; any hash function will suck. */ #if CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL == 0 #define HAVE_ARCH__HASH_32 1 /* Multiply by GOLDEN_RATIO_32 = 0x61C88647 */ static inline u32 __attribute_const__ __hash_32(u32 a) { #if CONFIG_XILINX_MICROBLAZE0_USE_BARREL unsigned int b, c; /* Phase 1: Compute three intermediate values */ b = a << 23; c = (a << 19) + a; a = (a << 9) + c; b += a; /* Phase 2: Compute (a << 11) + (b << 6) + (c << 3) - b */ a <<= 5; a += b; /* (a << 5) + b */ a <<= 3; a += c; /* (a << 8) + (b << 3) + c */ a <<= 3; return a - b; /* (a << 11) + (b << 6) + (c << 3) - b */ #else /* * "This is really going to hurt." * * Without a barrel shifter, left shifts are implemented as * repeated additions, and the best we can do is an optimal * addition-subtraction chain. This one is not known to be * optimal, but at 37 steps, it's decent for a 31-bit multiplier. * * Question: given its size (37*4 = 148 bytes per instance), * and slowness, is this worth having inline? */ unsigned int b, c, d; b = a << 4; /* 4 */ c = b << 1; /* 1 5 */ b += a; /* 1 6 */ c += b; /* 1 7 */ c <<= 3; /* 3 10 */ c -= a; /* 1 11 */ d = c << 7; /* 7 18 */ d += b; /* 1 19 */ d <<= 8; /* 8 27 */ d += a; /* 1 28 */ d <<= 1; /* 1 29 */ d += b; /* 1 30 */ d <<= 6; /* 6 36 */ return d + c; /* 1 37 total instructions*/ #endif } #endif /* !CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL */ #endif /* _ASM_HASH_H */