diff options
| author | Michael Brown | 2007-09-16 18:36:40 +0200 |
|---|---|---|
| committer | Michael Brown | 2007-09-16 18:36:40 +0200 |
| commit | 6d15a193aa9e3e4129a885e7010d0d480e723bb8 (patch) | |
| tree | 67ca53696bf3c4cffd9ea1b11dd7ff3d5a4b51ea /src | |
| parent | Revert to dev_priv/owner_priv scheme, rather than container_of; it (diff) | |
| download | ipxe-6d15a193aa9e3e4129a885e7010d0d480e723bb8.tar.gz ipxe-6d15a193aa9e3e4129a885e7010d0d480e723bb8.tar.xz ipxe-6d15a193aa9e3e4129a885e7010d0d480e723bb8.zip | |
Add fls() for non-constant values.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/bitops.c | 10 | ||||
| -rw-r--r-- | src/include/strings.h | 6 |
2 files changed, 11 insertions, 5 deletions
diff --git a/src/core/bitops.c b/src/core/bitops.c new file mode 100644 index 000000000..75d57bf99 --- /dev/null +++ b/src/core/bitops.c @@ -0,0 +1,10 @@ +#include <strings.h> + +int __flsl ( long x ) { + int r = 0; + + for ( r = 0 ; x ; r++ ) { + x >>= 1; + } + return r; +} diff --git a/src/include/strings.h b/src/include/strings.h index a087b1d50..968a7c11d 100644 --- a/src/include/strings.h +++ b/src/include/strings.h @@ -40,17 +40,13 @@ __constant_flsl ( unsigned long x ) { return r; } -#define __constant_fls(x) __constant_flsl(x) - /* We don't actually have these functions yet */ -extern int __fls ( int x ); extern int __flsl ( long x ); #define flsl( x ) \ ( __builtin_constant_p ( x ) ? __constant_flsl ( x ) : __flsl ( x ) ) -#define fls( x ) \ - ( __builtin_constant_p ( x ) ? __constant_fls ( x ) : __fls ( x ) ) +#define fls( x ) flsl ( x ) extern int strcasecmp ( const char *s1, const char *s2 ); |
