__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/include/asm/checksum.h
*
* IP checksum routines
*
* Copyright (C) Original authors of ../asm-i386/checksum.h
* Copyright (C) 1996-1999 Russell King
*/
#ifndef __ASM_ARM_CHECKSUM_H
#define __ASM_ARM_CHECKSUM_H
#include <linux/in6.h>
#include <linux/uaccess.h>
/*
* computes the checksum of a memory block at buff, length len,
* and adds in "sum" (32-bit)
*
* returns a 32-bit number suitable for feeding into itself
* or csum_tcpudp_magic
*
* this function must be called with even lengths, except
* for the last fragment, which may be odd
*
* it's best to have buff aligned on a 32-bit boundary
*/
__wsum csum_partial(const void *buff, int len, __wsum sum);
/*
* the same as csum_partial, but copies from src while it
* checksums, and handles user-space pointer exceptions correctly, when needed.
*
* here even more important to align src and dst on a 32-bit (or even
* better 64-bit) boundary
*/
__wsum
csum_partial_copy_nocheck(const void *src, void *dst, int len);
__wsum
csum_partial_copy_from_user(const void __user *src, void *dst, int len);
#define _HAVE_ARCH_COPY_AND_CSUM_FROM_USER
#define _HAVE_ARCH_CSUM_AND_COPY
static inline
__wsum csum_and_copy_from_user(const void __user *src, void *dst, int len)
{
if (!access_ok(src, len))
return 0;
return csum_partial_copy_from_user(src, dst, len);
}
/*
* Fold a partial checksum without adding pseudo headers
*/
static inline __sum16 csum_fold(__wsum sum)
{
__asm__(
"add %0, %1, %1, ror #16 @ csum_fold"
: "=r" (sum)
: "r" (sum)
: "cc");
return (__force __sum16)(~(__force u32)sum >> 16);
}
/*
* This is a version of ip_compute_csum() optimized for IP headers,
* which always checksum on 4 octet boundaries.
*/
static inline __sum16
ip_fast_csum(const void *iph, unsigned int ihl)
{
unsigned int tmp1;
__wsum sum;
__asm__ __volatile__(
"ldr %0, [%1], #4 @ ip_fast_csum \n\
ldr %3, [%1], #4 \n\
sub %2, %2, #5 \n\
adds %0, %0, %3 \n\
ldr %3, [%1], #4 \n\
adcs %0, %0, %3 \n\
ldr %3, [%1], #4 \n\
1: adcs %0, %0, %3 \n\
ldr %3, [%1], #4 \n\
tst %2, #15 @ do this carefully \n\
subne %2, %2, #1 @ without destroying \n\
bne 1b @ the carry flag \n\
adcs %0, %0, %3 \n\
adc %0, %0, #0"
: "=r" (sum), "=r" (iph), "=r" (ihl), "=r" (tmp1)
: "1" (iph), "2" (ihl)
: "cc", "memory");
return csum_fold(sum);
}
static inline __wsum
csum_tcpudp_nofold(__be32 saddr, __be32 daddr, __u32 len,
__u8 proto, __wsum sum)
{
u32 lenprot = len + proto;
if (__builtin_constant_p(sum) && sum == 0) {
__asm__(
"adds %0, %1, %2 @ csum_tcpudp_nofold0 \n\t"
#ifdef __ARMEB__
"adcs %0, %0, %3 \n\t"
#else
"adcs %0, %0, %3, ror #8 \n\t"
#endif
"adc %0, %0, #0"
: "=&r" (sum)
: "r" (daddr), "r" (saddr), "r" (lenprot)
: "cc");
} else {
__asm__(
"adds %0, %1, %2 @ csum_tcpudp_nofold \n\t"
"adcs %0, %0, %3 \n\t"
#ifdef __ARMEB__
"adcs %0, %0, %4 \n\t"
#else
"adcs %0, %0, %4, ror #8 \n\t"
#endif
"adc %0, %0, #0"
: "=&r"(sum)
: "r" (sum), "r" (daddr), "r" (saddr), "r" (lenprot)
: "cc");
}
return sum;
}
/*
* computes the checksum of the TCP/UDP pseudo-header
* returns a 16-bit checksum, already complemented
*/
static inline __sum16
csum_tcpudp_magic(__be32 saddr, __be32 daddr, __u32 len,
__u8 proto, __wsum sum)
{
return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
}
/*
* this routine is used for miscellaneous IP-like checksums, mainly
* in icmp.c
*/
static inline __sum16
ip_compute_csum(const void *buff, int len)
{
return csum_fold(csum_partial(buff, len, 0));
}
#define _HAVE_ARCH_IPV6_CSUM
extern __wsum
__csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __be32 len,
__be32 proto, __wsum sum);
static inline __sum16
csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr,
__u32 len, __u8 proto, __wsum sum)
{
return csum_fold(__csum_ipv6_magic(saddr, daddr, htonl(len),
htonl(proto), sum));
}
#endif
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| hardware | Folder | 0755 |
|
|
| mach | Folder | 0755 |
|
|
| vdso | Folder | 0755 |
|
|
| xen | Folder | 0755 |
|
|
| Kbuild | File | 186 B | 0644 |
|
| arch_gicv3.h | File | 6.25 KB | 0644 |
|
| arch_timer.h | File | 3.05 KB | 0644 |
|
| archrandom.h | File | 229 B | 0644 |
|
| arm-cci.h | File | 535 B | 0644 |
|
| arm_pmuv3.h | File | 7.38 KB | 0644 |
|
| asm-offsets.h | File | 35 B | 0644 |
|
| assembler.h | File | 16.77 KB | 0644 |
|
| atomic.h | File | 12.59 KB | 0644 |
|
| auxvec.h | File | 29 B | 0644 |
|
| bL_switcher.h | File | 2.13 KB | 0644 |
|
| barrier.h | File | 2.84 KB | 0644 |
|
| bitops.h | File | 7.55 KB | 0644 |
|
| bitrev.h | File | 451 B | 0644 |
|
| bug.h | File | 2.56 KB | 0644 |
|
| bugs.h | File | 297 B | 0644 |
|
| cache.h | File | 896 B | 0644 |
|
| cacheflush.h | File | 15.14 KB | 0644 |
|
| cachetype.h | File | 3.02 KB | 0644 |
|
| checksum.h | File | 3.96 KB | 0644 |
|
| clocksource.h | File | 161 B | 0644 |
|
| cmpxchg.h | File | 6.31 KB | 0644 |
|
| compiler.h | File | 978 B | 0644 |
|
| cp15.h | File | 3.22 KB | 0644 |
|
| cpu.h | File | 370 B | 0644 |
|
| cpufeature.h | File | 1.26 KB | 0644 |
|
| cpuidle.h | File | 1.59 KB | 0644 |
|
| cputype.h | File | 8.68 KB | 0644 |
|
| cti.h | File | 3.62 KB | 0644 |
|
| current.h | File | 1.8 KB | 0644 |
|
| dcc.h | File | 623 B | 0644 |
|
| delay.h | File | 2.83 KB | 0644 |
|
| device.h | File | 533 B | 0644 |
|
| div64.h | File | 2.69 KB | 0644 |
|
| dma-iommu.h | File | 906 B | 0644 |
|
| dma.h | File | 4.17 KB | 0644 |
|
| dmi.h | File | 378 B | 0644 |
|
| domain.h | File | 3.35 KB | 0644 |
|
| ecard.h | File | 5.98 KB | 0644 |
|
| edac.h | File | 995 B | 0644 |
|
| efi.h | File | 2.62 KB | 0644 |
|
| elf.h | File | 4.58 KB | 0644 |
|
| exception.h | File | 416 B | 0644 |
|
| fiq.h | File | 1.36 KB | 0644 |
|
| firmware.h | File | 1.69 KB | 0644 |
|
| fixmap.h | File | 1.84 KB | 0644 |
|
| floppy.h | File | 2.26 KB | 0644 |
|
| fncpy.h | File | 2.49 KB | 0644 |
|
| fpstate.h | File | 1.34 KB | 0644 |
|
| fpu.h | File | 309 B | 0644 |
|
| ftrace.h | File | 1.96 KB | 0644 |
|
| futex.h | File | 4.25 KB | 0644 |
|
| glue-cache.h | File | 2.88 KB | 0644 |
|
| glue-df.h | File | 2.06 KB | 0644 |
|
| glue-pf.h | File | 1005 B | 0644 |
|
| glue-proc.h | File | 4.32 KB | 0644 |
|
| glue.h | File | 613 B | 0644 |
|
| hardirq.h | File | 246 B | 0644 |
|
| highmem.h | File | 2.32 KB | 0644 |
|
| hugetlb-3level.h | File | 740 B | 0644 |
|
| hugetlb.h | File | 541 B | 0644 |
|
| hw_breakpoint.h | File | 3.76 KB | 0644 |
|
| hw_irq.h | File | 349 B | 0644 |
|
| hwcap.h | File | 378 B | 0644 |
|
| hypervisor.h | File | 282 B | 0644 |
|
| idmap.h | File | 359 B | 0644 |
|
| insn.h | File | 1.29 KB | 0644 |
|
| io.h | File | 13.81 KB | 0644 |
|
| irq.h | File | 808 B | 0644 |
|
| irq_work.h | File | 234 B | 0644 |
|
| irqflags.h | File | 3.88 KB | 0644 |
|
| jump_label.h | File | 1.12 KB | 0644 |
|
| kasan.h | File | 708 B | 0644 |
|
| kasan_def.h | File | 2.66 KB | 0644 |
|
| kexec-internal.h | File | 272 B | 0644 |
|
| kexec.h | File | 2.16 KB | 0644 |
|
| kfence.h | File | 1.03 KB | 0644 |
|
| kgdb.h | File | 2.72 KB | 0644 |
|
| kprobes.h | File | 2.1 KB | 0644 |
|
| krait-l2-accessors.h | File | 231 B | 0644 |
|
| linkage.h | File | 216 B | 0644 |
|
| mc146818rtc.h | File | 720 B | 0644 |
|
| mcpm.h | File | 11.78 KB | 0644 |
|
| mcs_spinlock.h | File | 570 B | 0644 |
|
| memblock.h | File | 248 B | 0644 |
|
| memory.h | File | 10.24 KB | 0644 |
|
| mman.h | File | 369 B | 0644 |
|
| mmu.h | File | 949 B | 0644 |
|
| mmu_context.h | File | 3.76 KB | 0644 |
|
| module.h | File | 1.26 KB | 0644 |
|
| module.lds.h | File | 134 B | 0644 |
|
| mpu.h | File | 3.22 KB | 0644 |
|
| mtd-xip.h | File | 520 B | 0644 |
|
| neon.h | File | 1.02 KB | 0644 |
|
| nwflash.h | File | 195 B | 0644 |
|
| opcodes-sec.h | File | 350 B | 0644 |
|
| opcodes-virt.h | File | 684 B | 0644 |
|
| opcodes.h | File | 8.06 KB | 0644 |
|
| outercache.h | File | 3.19 KB | 0644 |
|
| page-nommu.h | File | 811 B | 0644 |
|
| page.h | File | 4.69 KB | 0644 |
|
| paravirt.h | File | 477 B | 0644 |
|
| paravirt_api_clock.h | File | 26 B | 0644 |
|
| pci.h | File | 687 B | 0644 |
|
| percpu.h | File | 1.7 KB | 0644 |
|
| perf_event.h | File | 477 B | 0644 |
|
| pgalloc.h | File | 3.29 KB | 0644 |
|
| pgtable-2level-hwdef.h | File | 3.31 KB | 0644 |
|
| pgtable-2level-types.h | File | 1.25 KB | 0644 |
|
| pgtable-2level.h | File | 8.54 KB | 0644 |
|
| pgtable-3level-hwdef.h | File | 4.34 KB | 0644 |
|
| pgtable-3level-types.h | File | 1.3 KB | 0644 |
|
| pgtable-3level.h | File | 8 KB | 0644 |
|
| pgtable-hwdef.h | File | 321 B | 0644 |
|
| pgtable-nommu.h | File | 1.89 KB | 0644 |
|
| pgtable.h | File | 10.16 KB | 0644 |
|
| probes.h | File | 1.3 KB | 0644 |
|
| proc-fns.h | File | 4.88 KB | 0644 |
|
| processor.h | File | 3 KB | 0644 |
|
| procinfo.h | File | 1.13 KB | 0644 |
|
| prom.h | File | 552 B | 0644 |
|
| psci.h | File | 379 B | 0644 |
|
| ptdump.h | File | 969 B | 0644 |
|
| ptrace.h | File | 4.93 KB | 0644 |
|
| seccomp.h | File | 281 B | 0644 |
|
| sections.h | File | 622 B | 0644 |
|
| secure_cntvoff.h | File | 152 B | 0644 |
|
| semihost.h | File | 643 B | 0644 |
|
| set_memory.h | File | 788 B | 0644 |
|
| setup.h | File | 1.13 KB | 0644 |
|
| shmparam.h | File | 419 B | 0644 |
|
| signal.h | File | 694 B | 0644 |
|
| simd.h | File | 185 B | 0644 |
|
| smp.h | File | 2.83 KB | 0644 |
|
| smp_plat.h | File | 2.48 KB | 0644 |
|
| smp_scu.h | File | 1.32 KB | 0644 |
|
| smp_twd.h | File | 590 B | 0644 |
|
| sparsemem.h | File | 714 B | 0644 |
|
| spectre.h | File | 991 B | 0644 |
|
| spinlock.h | File | 5.51 KB | 0644 |
|
| spinlock_types.h | File | 547 B | 0644 |
|
| stackprotector.h | File | 1.11 KB | 0644 |
|
| stacktrace.h | File | 1.47 KB | 0644 |
|
| string.h | File | 2.11 KB | 0644 |
|
| suspend.h | File | 445 B | 0644 |
|
| swab.h | File | 1005 B | 0644 |
|
| switch_to.h | File | 1.17 KB | 0644 |
|
| sync_bitops.h | File | 1.48 KB | 0644 |
|
| syscall.h | File | 2.07 KB | 0644 |
|
| syscalls.h | File | 1.96 KB | 0644 |
|
| system_info.h | File | 763 B | 0644 |
|
| system_misc.h | File | 1005 B | 0644 |
|
| tcm.h | File | 991 B | 0644 |
|
| text-patching.h | File | 438 B | 0644 |
|
| therm.h | File | 655 B | 0644 |
|
| thread_info.h | File | 5.07 KB | 0644 |
|
| thread_notify.h | File | 1.06 KB | 0644 |
|
| timex.h | File | 431 B | 0644 |
|
| tlb.h | File | 1.28 KB | 0644 |
|
| tlbflush.h | File | 17.66 KB | 0644 |
|
| tls.h | File | 3.31 KB | 0644 |
|
| topology.h | File | 1.14 KB | 0644 |
|
| traps.h | File | 1.38 KB | 0644 |
|
| uaccess-asm.h | File | 3.72 KB | 0644 |
|
| uaccess.h | File | 16.99 KB | 0644 |
|
| ucontext.h | File | 2.68 KB | 0644 |
|
| unified.h | File | 979 B | 0644 |
|
| unistd.h | File | 1.51 KB | 0644 |
|
| unwind.h | File | 1.28 KB | 0644 |
|
| uprobes.h | File | 948 B | 0644 |
|
| user.h | File | 4.06 KB | 0644 |
|
| v7m.h | File | 3.21 KB | 0644 |
|
| vdso.h | File | 507 B | 0644 |
|
| vermagic.h | File | 800 B | 0644 |
|
| vfp.h | File | 2.89 KB | 0644 |
|
| vfpmacros.h | File | 1.72 KB | 0644 |
|
| vga.h | File | 351 B | 0644 |
|
| virt.h | File | 1.81 KB | 0644 |
|
| vmalloc.h | File | 87 B | 0644 |
|
| vmlinux.lds.h | File | 4.52 KB | 0644 |
|
| word-at-a-time.h | File | 2.11 KB | 0644 |
|
| xor.h | File | 5.63 KB | 0644 |
|