diff options
author | fishsoupisgood <github@madingley.org> | 2019-04-29 01:17:54 +0100 |
---|---|---|
committer | fishsoupisgood <github@madingley.org> | 2019-05-27 03:43:43 +0100 |
commit | 3f2546b2ef55b661fd8dd69682b38992225e86f6 (patch) | |
tree | 65ca85f13617aee1dce474596800950f266a456c /roms/ipxe/src/include/strings.h | |
download | qemu-3f2546b2ef55b661fd8dd69682b38992225e86f6.tar.gz qemu-3f2546b2ef55b661fd8dd69682b38992225e86f6.tar.bz2 qemu-3f2546b2ef55b661fd8dd69682b38992225e86f6.zip |
Diffstat (limited to 'roms/ipxe/src/include/strings.h')
-rw-r--r-- | roms/ipxe/src/include/strings.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/roms/ipxe/src/include/strings.h b/roms/ipxe/src/include/strings.h new file mode 100644 index 00000000..6912a1e4 --- /dev/null +++ b/roms/ipxe/src/include/strings.h @@ -0,0 +1,72 @@ +#ifndef _STRINGS_H +#define _STRINGS_H + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <limits.h> +#include <string.h> +#include <bits/strings.h> + +static inline __attribute__ (( always_inline )) int +__constant_flsll ( unsigned long long x ) { + int r = 0; + + if ( x & 0xffffffff00000000ULL ) { + x >>= 32; + r += 32; + } + if ( x & 0xffff0000UL ) { + x >>= 16; + r += 16; + } + if ( x & 0xff00 ) { + x >>= 8; + r += 8; + } + if ( x & 0xf0 ) { + x >>= 4; + r += 4; + } + if ( x & 0xc ) { + x >>= 2; + r += 2; + } + if ( x & 0x2 ) { + x >>= 1; + r += 1; + } + if ( x & 0x1 ) { + r += 1; + } + return r; +} + +static inline __attribute__ (( always_inline )) int +__constant_flsl ( unsigned long x ) { + return __constant_flsll ( x ); +} + +int __flsll ( long long x ); +int __flsl ( long x ); + +#define flsll( x ) \ + ( __builtin_constant_p ( x ) ? __constant_flsll ( x ) : __flsll ( x ) ) + +#define flsl( x ) \ + ( __builtin_constant_p ( x ) ? __constant_flsl ( x ) : __flsl ( x ) ) + +#define fls( x ) flsl ( x ) + +extern int strcasecmp ( const char *s1, const char *s2 ); + +static inline __attribute__ (( always_inline )) void +bcopy ( const void *src, void *dest, size_t n ) { + memmove ( dest, src, n ); +} + +static inline __attribute__ (( always_inline )) void +bzero ( void *s, size_t n ) { + memset ( s, 0, n ); +} + +#endif /* _STRINGS_H */ |