/
usr
/
src
/
linux-headers-5.15.0-190
/
arch
/
xtensa
/
include
/
asm
/
/usr/src/linux-headers-5.15.0-190/arch/xtensa/include/asm
mkdir
upload
Name
Size
Mode
Actions
asm-offsets.h
35
0644
edit
dl
rm
asm-uaccess.h
4180
0644
edit
dl
rm
asmmacro.h
4763
0644
edit
dl
rm
atomic.h
7301
0644
edit
dl
rm
barrier.h
594
0644
edit
dl
rm
bitops.h
5398
0644
edit
dl
rm
bootparam.h
1402
0644
edit
dl
rm
cache.h
1114
0644
edit
dl
rm
cacheasm.h
3856
0644
edit
dl
rm
cacheflush.h
5968
0644
edit
dl
rm
checksum.h
5893
0644
edit
dl
rm
cmpxchg.h
5684
0644
edit
dl
rm
coprocessor.h
4623
0644
edit
dl
rm
core.h
830
0644
edit
dl
rm
current.h
679
0644
edit
dl
rm
delay.h
1668
0644
edit
dl
rm
dma.h
1830
0644
edit
dl
rm
elf.h
5115
0644
edit
dl
rm
fixmap.h
1106
0644
edit
dl
rm
flat.h
440
0644
edit
dl
rm
ftrace.h
979
0644
edit
dl
rm
futex.h
3889
0644
edit
dl
rm
highmem.h
2167
0644
edit
dl
rm
hw_breakpoint.h
1597
0644
edit
dl
rm
initialize_mmu.h
5196
0644
edit
dl
rm
io.h
1959
0644
edit
dl
rm
irq.h
1127
0644
edit
dl
rm
irqflags.h
2069
0644
edit
dl
rm
jump_label.h
1655
0644
edit
dl
rm
kasan.h
859
0644
edit
dl
rm
Kbuild
230
0644
edit
dl
rm
kmem_layout.h
2790
0644
edit
dl
rm
linkage.h
154
0644
edit
dl
rm
mmu.h
462
0644
edit
dl
rm
mmu_context.h
3624
0644
edit
dl
rm
mxregs.h
1330
0644
edit
dl
rm
nommu_context.h
156
0644
edit
dl
rm
page.h
5793
0644
edit
dl
rm
pci-bridge.h
2170
0644
edit
dl
rm
pci.h
1302
0644
edit
dl
rm
perf_event.h
108
0644
edit
dl
rm
pgalloc.h
1405
0644
edit
dl
rm
pgtable.h
14470
0644
edit
dl
rm
platform.h
1528
0644
edit
dl
rm
processor.h
7705
0644
edit
dl
rm
ptrace.h
3321
0644
edit
dl
rm
regs.h
4017
0644
edit
dl
rm
seccomp.h
287
0644
edit
dl
rm
serial.h
443
0644
edit
dl
rm
shmparam.h
561
0644
edit
dl
rm
signal.h
502
0644
edit
dl
rm
smp.h
967
0644
edit
dl
rm
spinlock.h
472
0644
edit
dl
rm
spinlock_types.h
317
0644
edit
dl
rm
stackprotector.h
1140
0644
edit
dl
rm
stacktrace.h
1158
0644
edit
dl
rm
string.h
3385
0644
edit
dl
rm
switch_to.h
601
0644
edit
dl
rm
syscall.h
2140
0644
edit
dl
rm
sysmem.h
426
0644
edit
dl
rm
thread_info.h
3965
0644
edit
dl
rm
timex.h
1440
0644
edit
dl
rm
tlb.h
475
0644
edit
dl
rm
tlbflush.h
5620
0644
edit
dl
rm
traps.h
2779
0644
edit
dl
rm
uaccess.h
9375
0644
edit
dl
rm
ucontext.h
540
0644
edit
dl
rm
unistd.h
370
0644
edit
dl
rm
vectors.h
3276
0644
edit
dl
rm
vermagic.h
433
0644
edit
dl
rm
vmalloc.h
96
0644
edit
dl
rm
Edit:
/usr/src/linux-headers-5.15.0-190/arch/xtensa/include/asm/checksum.h
(5893B)
/* * include/asm-xtensa/checksum.h * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 2001 - 2005 Tensilica Inc. */ #ifndef _XTENSA_CHECKSUM_H #define _XTENSA_CHECKSUM_H #include <linux/in6.h> #include <linux/uaccess.h> #include <asm/core.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 */ asmlinkage __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 */ asmlinkage __wsum csum_partial_copy_generic(const void *src, void *dst, int len); #define _HAVE_ARCH_CSUM_AND_COPY /* * Note: when you get a NULL pointer exception here this means someone * passed in an incorrect kernel address to one of these functions. */ static inline __wsum csum_partial_copy_nocheck(const void *src, void *dst, int len) { return csum_partial_copy_generic(src, dst, len); } #define _HAVE_ARCH_COPY_AND_CSUM_FROM_USER 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_generic((__force const void *)src, dst, len); } /* * Fold a partial checksum */ static __inline__ __sum16 csum_fold(__wsum sum) { unsigned int __dummy; __asm__("extui %1, %0, 16, 16\n\t" "extui %0 ,%0, 0, 16\n\t" "add %0, %0, %1\n\t" "slli %1, %0, 16\n\t" "add %0, %0, %1\n\t" "extui %0, %0, 16, 16\n\t" "neg %0, %0\n\t" "addi %0, %0, -1\n\t" "extui %0, %0, 0, 16\n\t" : "=r" (sum), "=&r" (__dummy) : "0" (sum)); return (__force __sum16)sum; } /* * 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 sum, tmp, endaddr; __asm__ __volatile__( "sub %0, %0, %0\n\t" #if XCHAL_HAVE_LOOPS "loopgtz %2, 2f\n\t" #else "beqz %2, 2f\n\t" "slli %4, %2, 2\n\t" "add %4, %4, %1\n\t" "0:\t" #endif "l32i %3, %1, 0\n\t" "add %0, %0, %3\n\t" "bgeu %0, %3, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" "addi %1, %1, 4\n\t" #if !XCHAL_HAVE_LOOPS "blt %1, %4, 0b\n\t" #endif "2:\t" /* Since the input registers which are loaded with iph and ihl are modified, we must also specify them as outputs, or gcc will assume they contain their original values. */ : "=r" (sum), "=r" (iph), "=r" (ihl), "=&r" (tmp), "=&r" (endaddr) : "1" (iph), "2" (ihl) : "memory"); return csum_fold(sum); } static __inline__ __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, __u32 len, __u8 proto, __wsum sum) { #ifdef __XTENSA_EL__ unsigned long len_proto = (len + proto) << 8; #elif defined(__XTENSA_EB__) unsigned long len_proto = len + proto; #else # error processor byte order undefined! #endif __asm__("add %0, %0, %1\n\t" "bgeu %0, %1, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" "add %0, %0, %2\n\t" "bgeu %0, %2, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" "add %0, %0, %3\n\t" "bgeu %0, %3, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" : "=r" (sum), "=r" (len_proto) : "r" (daddr), "r" (saddr), "1" (len_proto), "0" (sum)); 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 static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __u32 len, __u8 proto, __wsum sum) { unsigned int __dummy; __asm__("l32i %1, %2, 0\n\t" "add %0, %0, %1\n\t" "bgeu %0, %1, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" "l32i %1, %2, 4\n\t" "add %0, %0, %1\n\t" "bgeu %0, %1, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" "l32i %1, %2, 8\n\t" "add %0, %0, %1\n\t" "bgeu %0, %1, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" "l32i %1, %2, 12\n\t" "add %0, %0, %1\n\t" "bgeu %0, %1, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" "l32i %1, %3, 0\n\t" "add %0, %0, %1\n\t" "bgeu %0, %1, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" "l32i %1, %3, 4\n\t" "add %0, %0, %1\n\t" "bgeu %0, %1, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" "l32i %1, %3, 8\n\t" "add %0, %0, %1\n\t" "bgeu %0, %1, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" "l32i %1, %3, 12\n\t" "add %0, %0, %1\n\t" "bgeu %0, %1, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" "add %0, %0, %4\n\t" "bgeu %0, %4, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" "add %0, %0, %5\n\t" "bgeu %0, %5, 1f\n\t" "addi %0, %0, 1\n\t" "1:\t" : "=r" (sum), "=&r" (__dummy) : "r" (saddr), "r" (daddr), "r" (htonl(len)), "r" (htonl(proto)), "0" (sum) : "memory"); return csum_fold(sum); } /* * Copy and checksum to user */ #define HAVE_CSUM_COPY_USER static __inline__ __wsum csum_and_copy_to_user(const void *src, void __user *dst, int len) { if (!access_ok(dst, len)) return 0; return csum_partial_copy_generic(src, (__force void *)dst, len); } #endif
Save
cmd:
run