iPXE
implicit.c
Go to the documentation of this file.
1/** @file
2 *
3 * gcc sometimes likes to insert implicit calls to memcpy() and
4 * memset(). Unfortunately, there doesn't seem to be any way to
5 * prevent it from doing this, or to force it to use the optimised
6 * versions as seen by C code; it insists on inserting symbol
7 * references to "memcpy" and "memset". We therefore include wrapper
8 * functions just to keep gcc happy.
9 *
10 */
11
12FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
13FILE_SECBOOT ( PERMITTED );
14
15#include <string.h>
16
17void * gcc_implicit_memcpy ( void *dest, const void *src,
18 size_t len ) asm ( "memcpy" );
19
20void * gcc_implicit_memcpy ( void *dest, const void *src, size_t len ) {
21 return memcpy ( dest, src, len );
22}
23
24void * gcc_implicit_memset ( void *dest, int character,
25 size_t len ) asm ( "memset" );
26
27void * gcc_implicit_memset ( void *dest, int character, size_t len ) {
28 return memset ( dest, character, len );
29}
if(len >=6 *4) __asm__ __volatile__("movsl" if(len >=5 *4) __asm__ __volatile__("movsl" if(len >=4 *4) __asm__ __volatile__("movsl" if(len >=3 *4) __asm__ __volatile__("movsl" if(len >=2 *4) __asm__ __volatile__("movsl" if(len >=1 *4) __asm__ __volatile__("movsl" if((len % 4) >=2) __asm__ __volatile__("movsw" if((len % 2) >=1) __asm__ __volatile__("movsb" retur dest)
Definition string.h:151
static const void * src
Definition string.h:48
ring len
Length.
Definition dwmac.h:226
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:921
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
Definition compiler.h:951
void * gcc_implicit_memset(void *dest, int character, size_t len) asm("memset")
Definition implicit.c:27
void * gcc_implicit_memcpy(void *dest, const void *src, size_t len) asm("memcpy")
Definition implicit.c:20
String functions.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
void * memset(void *dest, int character, size_t len) __nonnull