From 057fa65c5ddf915d73b69964f32fc854c914efd4 Mon Sep 17 00:00:00 2001 From: malc Date: Sat, 12 Sep 2009 02:39:29 +0400 Subject: [PATCH] audio: remove lsbindex/popcount in favour of host-utils's ctz32 Signed-off-by: malc --- audio/audio.c | 17 ----------------- audio/audio.h | 3 --- audio/ossaudio.c | 3 ++- hw/sb16.c | 5 +++-- 4 files changed, 5 insertions(+), 23 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index ea6ae1b..aa9ea3e 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -112,23 +112,6 @@ struct mixeng_volume nominal_volume = { #endif }; -/* http://www.df.lth.se/~john_e/gems/gem002d.html */ -/* http://www.multi-platforms.com/Tips/PopCount.htm */ -uint32_t popcount (uint32_t u) -{ - u = ((u&0x55555555) + ((u>>1)&0x55555555)); - u = ((u&0x33333333) + ((u>>2)&0x33333333)); - u = ((u&0x0f0f0f0f) + ((u>>4)&0x0f0f0f0f)); - u = ((u&0x00ff00ff) + ((u>>8)&0x00ff00ff)); - u = ( u&0x0000ffff) + (u>>16); - return u; -} - -inline uint32_t lsbindex (uint32_t u) -{ - return popcount ((u&-u)-1); -} - #ifdef AUDIO_IS_FLAWLESS_AND_NO_CHECKS_ARE_REQURIED #error No its not #else diff --git a/audio/audio.h b/audio/audio.h index fda2af3..dec86e5 100644 --- a/audio/audio.h +++ b/audio/audio.h @@ -147,9 +147,6 @@ static inline void *advance (void *p, int incr) return (d + incr); } -uint32_t popcount (uint32_t u); -uint32_t lsbindex (uint32_t u); - #ifdef __GNUC__ #define audio_MIN(a, b) ( __extension__ ({ \ __typeof (a) ta = a; \ diff --git a/audio/ossaudio.c b/audio/ossaudio.c index f2385df..2cc3c6f 100644 --- a/audio/ossaudio.c +++ b/audio/ossaudio.c @@ -31,6 +31,7 @@ #include #endif #include "qemu-common.h" +#include "host-utils.h" #include "qemu-char.h" #include "audio.h" @@ -273,7 +274,7 @@ static int oss_open (int in, struct oss_params *req, goto err; } - mmmmssss = (req->nfrags << 16) | lsbindex (req->fragsize); + mmmmssss = (req->nfrags << 16) | ctz32 (req->fragsize); if (ioctl (fd, SNDCTL_DSP_SETFRAGMENT, &mmmmssss)) { oss_logerr2 (errno, typ, "Failed to set buffer length (%d, %d)\n", req->nfrags, req->fragsize); diff --git a/hw/sb16.c b/hw/sb16.c index f6be267..a222e21 100644 --- a/hw/sb16.c +++ b/hw/sb16.c @@ -27,6 +27,7 @@ #include "isa.h" #include "qdev.h" #include "qemu-timer.h" +#include "host-utils.h" #define dolog(...) AUD_log ("sb16", __VA_ARGS__) @@ -1092,8 +1093,8 @@ static IO_WRITE_PROTO (mixer_write_datab) { int dma, hdma; - dma = lsbindex (val & 0xf); - hdma = lsbindex (val & 0xf0); + dma = ctz32 (val & 0xf); + hdma = ctz32 (val & 0xf0); if (dma != s->dma || hdma != s->hdma) { dolog ( "attempt to change DMA " -- 2.7.4