cregit-Linux how code gets into the kernel

Release 4.14 arch/tile/lib/memmove.c

Directory: arch/tile/lib
/*
 * Copyright 2010 Tilera Corporation. All Rights Reserved.
 *
 *   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, version 2.
 *
 *   This program is distributed in the hope that it will be useful, but
 *   WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
 *   NON INFRINGEMENT.  See the GNU General Public License for
 *   more details.
 */

#include <linux/types.h>
#include <linux/string.h>
#include <linux/module.h>


void *memmove(void *dest, const void *src, size_t n) { if ((const char *)src >= (char *)dest + n || (char *)dest >= (const char *)src + n) { /* We found no overlap, so let memcpy do all the heavy * lifting (prefetching, etc.) */ return memcpy(dest, src, n); } if (n != 0) { const uint8_t *in; uint8_t x; uint8_t *out; int stride; if (src < dest) { /* copy backwards */ in = (const uint8_t *)src + n - 1; out = (uint8_t *)dest + n - 1; stride = -1; } else { /* copy forwards */ in = (const uint8_t *)src; out = (uint8_t *)dest; stride = 1; } /* Manually software-pipeline this loop. */ x = *in; in += stride; while (--n != 0) { *out = x; out += stride; x = *in; in += stride; } *out = x; } return dest; }

Contributors

PersonTokensPropCommitsCommitProp
Chris Metcalf195100.00%1100.00%
Total195100.00%1100.00%

EXPORT_SYMBOL(memmove);

Overall Contributors

PersonTokensPropCommitsCommitProp
Chris Metcalf210100.00%1100.00%
Total210100.00%1100.00%
Directory: arch/tile/lib
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.