audio: remove lsbindex/popcount in favour of host-utils's ctz32
authormalc <av1474@comtv.ru>
Fri, 11 Sep 2009 22:39:29 +0000 (02:39 +0400)
committermalc <av1474@comtv.ru>
Fri, 11 Sep 2009 22:50:58 +0000 (02:50 +0400)
Signed-off-by: malc <av1474@comtv.ru>

audio/audio.c
audio/audio.h
audio/ossaudio.c
hw/sb16.c

index ea6ae1b..aa9ea3e 100644 (file)
@@ -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
index fda2af3..dec86e5 100644 (file)
@@ -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;                        \
index f2385df..2cc3c6f 100644 (file)
@@ -31,6 +31,7 @@
 #include <sys/soundcard.h>
 #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);
index f6be267..a222e21 100644 (file)
--- 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 "