diff options
author | Srikant Patnaik | 2015-01-11 12:28:04 +0530 |
---|---|---|
committer | Srikant Patnaik | 2015-01-11 12:28:04 +0530 |
commit | 871480933a1c28f8a9fed4c4d34d06c439a7a422 (patch) | |
tree | 8718f573808810c2a1e8cb8fb6ac469093ca2784 /ANDROID_3.4.5/arch/x86/lib/csum-wrappers_64.c | |
parent | 9d40ac5867b9aefe0722bc1f110b965ff294d30d (diff) | |
download | FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.gz FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.bz2 FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.zip |
Moved, renamed, and deleted files
The original directory structure was scattered and unorganized.
Changes are basically to make it look like kernel structure.
Diffstat (limited to 'ANDROID_3.4.5/arch/x86/lib/csum-wrappers_64.c')
-rw-r--r-- | ANDROID_3.4.5/arch/x86/lib/csum-wrappers_64.c | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/ANDROID_3.4.5/arch/x86/lib/csum-wrappers_64.c b/ANDROID_3.4.5/arch/x86/lib/csum-wrappers_64.c deleted file mode 100644 index 459b58a8..00000000 --- a/ANDROID_3.4.5/arch/x86/lib/csum-wrappers_64.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright 2002, 2003 Andi Kleen, SuSE Labs. - * Subject to the GNU Public License v.2 - * - * Wrappers of assembly checksum functions for x86-64. - */ -#include <asm/checksum.h> -#include <linux/module.h> - -/** - * csum_partial_copy_from_user - Copy and checksum from user space. - * @src: source address (user space) - * @dst: destination address - * @len: number of bytes to be copied. - * @isum: initial sum that is added into the result (32bit unfolded) - * @errp: set to -EFAULT for an bad source address. - * - * Returns an 32bit unfolded checksum of the buffer. - * src and dst are best aligned to 64bits. - */ -__wsum -csum_partial_copy_from_user(const void __user *src, void *dst, - int len, __wsum isum, int *errp) -{ - might_sleep(); - *errp = 0; - - if (!likely(access_ok(VERIFY_READ, src, len))) - goto out_err; - - /* - * Why 6, not 7? To handle odd addresses aligned we - * would need to do considerable complications to fix the - * checksum which is defined as an 16bit accumulator. The - * fix alignment code is primarily for performance - * compatibility with 32bit and that will handle odd - * addresses slowly too. - */ - if (unlikely((unsigned long)src & 6)) { - while (((unsigned long)src & 6) && len >= 2) { - __u16 val16; - - *errp = __get_user(val16, (const __u16 __user *)src); - if (*errp) - return isum; - - *(__u16 *)dst = val16; - isum = (__force __wsum)add32_with_carry( - (__force unsigned)isum, val16); - src += 2; - dst += 2; - len -= 2; - } - } - isum = csum_partial_copy_generic((__force const void *)src, - dst, len, isum, errp, NULL); - if (unlikely(*errp)) - goto out_err; - - return isum; - -out_err: - *errp = -EFAULT; - memset(dst, 0, len); - - return isum; -} -EXPORT_SYMBOL(csum_partial_copy_from_user); - -/** - * csum_partial_copy_to_user - Copy and checksum to user space. - * @src: source address - * @dst: destination address (user space) - * @len: number of bytes to be copied. - * @isum: initial sum that is added into the result (32bit unfolded) - * @errp: set to -EFAULT for an bad destination address. - * - * Returns an 32bit unfolded checksum of the buffer. - * src and dst are best aligned to 64bits. - */ -__wsum -csum_partial_copy_to_user(const void *src, void __user *dst, - int len, __wsum isum, int *errp) -{ - might_sleep(); - - if (unlikely(!access_ok(VERIFY_WRITE, dst, len))) { - *errp = -EFAULT; - return 0; - } - - if (unlikely((unsigned long)dst & 6)) { - while (((unsigned long)dst & 6) && len >= 2) { - __u16 val16 = *(__u16 *)src; - - isum = (__force __wsum)add32_with_carry( - (__force unsigned)isum, val16); - *errp = __put_user(val16, (__u16 __user *)dst); - if (*errp) - return isum; - src += 2; - dst += 2; - len -= 2; - } - } - - *errp = 0; - return csum_partial_copy_generic(src, (void __force *)dst, - len, isum, NULL, errp); -} -EXPORT_SYMBOL(csum_partial_copy_to_user); - -/** - * csum_partial_copy_nocheck - Copy and checksum. - * @src: source address - * @dst: destination address - * @len: number of bytes to be copied. - * @isum: initial sum that is added into the result (32bit unfolded) - * - * Returns an 32bit unfolded checksum of the buffer. - */ -__wsum -csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum) -{ - return csum_partial_copy_generic(src, dst, len, sum, NULL, NULL); -} -EXPORT_SYMBOL(csum_partial_copy_nocheck); - -__sum16 csum_ipv6_magic(const struct in6_addr *saddr, - const struct in6_addr *daddr, - __u32 len, unsigned short proto, __wsum sum) -{ - __u64 rest, sum64; - - rest = (__force __u64)htonl(len) + (__force __u64)htons(proto) + - (__force __u64)sum; - - asm(" addq (%[saddr]),%[sum]\n" - " adcq 8(%[saddr]),%[sum]\n" - " adcq (%[daddr]),%[sum]\n" - " adcq 8(%[daddr]),%[sum]\n" - " adcq $0,%[sum]\n" - - : [sum] "=r" (sum64) - : "[sum]" (rest), [saddr] "r" (saddr), [daddr] "r" (daddr)); - - return csum_fold( - (__force __wsum)add32_with_carry(sum64 & 0xffffffff, sum64>>32)); -} -EXPORT_SYMBOL(csum_ipv6_magic); |