diff options
author | Yang Zhang <yang.z.zhang@intel.com> | 2015-08-28 09:58:54 +0800 |
---|---|---|
committer | Yang Zhang <yang.z.zhang@intel.com> | 2015-09-01 12:44:00 +0800 |
commit | e44e3482bdb4d0ebde2d8b41830ac2cdb07948fb (patch) | |
tree | 66b09f592c55df2878107a468a91d21506104d3f /qemu/roms/ipxe/src/include/strings.h | |
parent | 9ca8dbcc65cfc63d6f5ef3312a33184e1d726e00 (diff) |
Add qemu 2.4.0
Change-Id: Ic99cbad4b61f8b127b7dc74d04576c0bcbaaf4f5
Signed-off-by: Yang Zhang <yang.z.zhang@intel.com>
Diffstat (limited to 'qemu/roms/ipxe/src/include/strings.h')
-rw-r--r-- | qemu/roms/ipxe/src/include/strings.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/qemu/roms/ipxe/src/include/strings.h b/qemu/roms/ipxe/src/include/strings.h new file mode 100644 index 000000000..6912a1e45 --- /dev/null +++ b/qemu/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 */ |