37 #define USE_GENERIC_MEMCPY_REVERSE 1 39 #define USE_GENERIC_MEMCPY_REVERSE 0 61 :
"=&D" (
edi ),
"=&S" (
esi ),
63 :
"0" (
edi ),
"1" (
esi ),
"2" (
len >> 2 )
66 :
"=&D" (
edi ),
"=&S" (
esi ),
68 :
"0" (
edi ),
"1" (
esi ),
"2" (
len & 3 )
100 :
"=&D" (
edi ),
"=&S" (
esi ),
102 :
"0" (
edi ),
"1" (
esi ),
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
static void const void * src
void * __memmove(void *dest, const void *src, size_t len)
Copy (possibly overlapping) memory area.
void * __memcpy_reverse(void *dest, const void *src, size_t len)
void * generic_memcpy_reverse(void *dest, const void *src, size_t len)
Copy memory region (backwards)
__asm__ __volatile__("\n1:\n\t" "movb -1(%3,%1), %%al\n\t" "stosb\n\t" "loop 1b\n\t" "xorl %%eax, %%eax\n\t" "mov %4, %1\n\t" "rep stosb\n\t" :"=&D"(discard_D), "=&c"(discard_c), "+m"(*value) :"r"(data), "g"(pad_len), "0"(value0), "1"(len) :"eax")
#define USE_GENERIC_MEMCPY_REVERSE
__asm__(".section \".rodata\", \"a\", " PROGBITS "\n\t" "\nprivate_key_data:\n\t" ".size private_key_data, ( . - private_key_data )\n\t" ".equ private_key_len, ( . - private_key_data )\n\t" ".previous\n\t")
void * __attribute__((noinline))
Copy memory area.
void * __memcpy(void *dest, const void *src, size_t len)