Branch data Line data Source code
1 : : /****************************************************************************** 2 : : * Copyright (c) 2004, 2008 IBM Corporation 3 : : * All rights reserved. 4 : : * This program and the accompanying materials 5 : : * are made available under the terms of the BSD License 6 : : * which accompanies this distribution, and is available at 7 : : * http://www.opensource.org/licenses/bsd-license.php 8 : : * 9 : : * Contributors: 10 : : * IBM Corporation - initial implementation 11 : : *****************************************************************************/ 12 : : 13 : : #include <stddef.h> 14 : : #include <ccan/short_types/short_types.h> 15 : : 16 : : void *memcpy(void *dest, const void *src, size_t n); 17 : 25 : void *memcpy(void *dest, const void *src, size_t n) 18 : : { 19 : 25 : void *ret = dest; 20 : : 21 : 30 : while (n >= 8) { 22 : 5 : *(uint64_t *)dest = *(uint64_t *)src; 23 : 5 : dest += 8; 24 : 5 : src += 8; 25 : 5 : n -= 8; 26 : : } 27 : : 28 : 105 : while (n > 0) { 29 : 80 : *(uint8_t *)dest = *(uint8_t *)src; 30 : 80 : dest += 1; 31 : 80 : src += 1; 32 : 80 : n -= 1; 33 : : } 34 : : 35 : 25 : return ret; 36 : : }