From dd89bb8ad4fe184a34b5dbdda237e640fc82121b Mon Sep 17 00:00:00 2001 From: midipix Date: Mon, 27 Jul 2015 04:01:18 -0400 Subject: entered advanced internal development stage. --- src/string/ntapi_tt_aligned_block_memcpy.c | 50 ++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/string/ntapi_tt_aligned_block_memcpy.c (limited to 'src/string/ntapi_tt_aligned_block_memcpy.c') diff --git a/src/string/ntapi_tt_aligned_block_memcpy.c b/src/string/ntapi_tt_aligned_block_memcpy.c new file mode 100644 index 0000000..43e1a49 --- /dev/null +++ b/src/string/ntapi_tt_aligned_block_memcpy.c @@ -0,0 +1,50 @@ +/********************************************************/ +/* ntapi: Native API core library */ +/* Copyright (C) 2013,2014,2015 Z. Gilboa */ +/* Released under GPLv2 and GPLv3; see COPYING.NTAPI. */ +/********************************************************/ + +#include +#include + +uintptr_t * __cdecl __ntapi_tt_aligned_block_memcpy( + __in uintptr_t * dst, + __in uintptr_t * src, + __in size_t bytes) +{ + uintptr_t * ptr = (uintptr_t *)dst; + + for (bytes/=sizeof(uintptr_t); bytes; bytes--) + *dst++ = *src++; + + return ptr; +} + + +void * __cdecl __ntapi_tt_generic_memcpy( + __in void * dst, + __in const void * src, + __in size_t bytes) +{ + char * ch_dst; + const char * ch_src; + + if (!bytes) + return dst; + + else if (!(bytes % sizeof(size_t)) + && (!(uintptr_t)dst % sizeof(size_t)) + && (!(uintptr_t)src % sizeof(size_t))) + return __ntapi_tt_aligned_block_memcpy( + (uintptr_t *)dst, + (uintptr_t *)src, + bytes); + + ch_dst = (char *)dst; + ch_src = (const char *)src; + + for (; bytes; bytes--) + *ch_dst++ = *ch_src++; + + return dst; +} -- cgit v1.2.3