cregit-Linux how code gets into the kernel

Release 4.14 arch/m68k/lib/memcpy.c

Directory: arch/m68k/lib
/*
 * 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.
 */

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


void *memcpy(void *to, const void *from, size_t n) { void *xto = to; size_t temp; if (!n) return xto; if ((long)to & 1) { char *cto = to; const char *cfrom = from; *cto++ = *cfrom++; to = cto; from = cfrom; n--; } #if defined(CONFIG_M68000) if ((long)from & 1) { char *cto = to; const char *cfrom = from; for (; n; n--) *cto++ = *cfrom++; return xto; } #endif if (n > 2 && (long)to & 2) { short *sto = to; const short *sfrom = from; *sto++ = *sfrom++; to = sto; from = sfrom; n -= 2; } temp = n >> 2; if (temp) { long *lto = to; const long *lfrom = from; #if defined(CONFIG_M68000) || defined(CONFIG_COLDFIRE) for (; temp; temp--) *lto++ = *lfrom++; #else size_t temp1; asm volatile ( " movel %2,%3\n" " andw #7,%3\n" " lsrl #3,%2\n" " negw %3\n" " jmp %%pc@(1f,%3:w:2)\n" "4: movel %0@+,%1@+\n" " movel %0@+,%1@+\n" " movel %0@+,%1@+\n" " movel %0@+,%1@+\n" " movel %0@+,%1@+\n" " movel %0@+,%1@+\n" " movel %0@+,%1@+\n" " movel %0@+,%1@+\n" "1: dbra %2,4b\n" " clrw %2\n" " subql #1,%2\n" " jpl 4b" : "=a" (lfrom), "=a" (lto), "=d" (temp), "=&d" (temp1) : "0" (lfrom), "1" (lto), "2" (temp)); #endif to = lto; from = lfrom; } if (n & 2) { short *sto = to; const short *sfrom = from; *sto++ = *sfrom++; to = sto; from = sfrom; } if (n & 1) { char *cto = to; const char *cfrom = from; *cto = *cfrom; } return xto; }

Contributors

PersonTokensPropCommitsCommitProp
Alan Cox24277.07%120.00%
Greg Ungerer7222.93%480.00%
Total314100.00%5100.00%

EXPORT_SYMBOL(memcpy);

Overall Contributors

PersonTokensPropCommitsCommitProp
Alan Cox24474.85%120.00%
Greg Ungerer8225.15%480.00%
Total326100.00%5100.00%
Directory: arch/m68k/lib
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.