mirror of https://github.com/xemu-project/xemu.git
audio: remove lsbindex/popcount in favour of host-utils's ctz32
Signed-off-by: malc <av1474@comtv.ru>
This commit is contained in:
parent
8b438ba3f5
commit
057fa65c5d
|
@ -112,23 +112,6 @@ struct mixeng_volume nominal_volume = {
|
||||||
#endif
|
#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
|
#ifdef AUDIO_IS_FLAWLESS_AND_NO_CHECKS_ARE_REQURIED
|
||||||
#error No its not
|
#error No its not
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -147,9 +147,6 @@ static inline void *advance (void *p, int incr)
|
||||||
return (d + incr);
|
return (d + incr);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t popcount (uint32_t u);
|
|
||||||
uint32_t lsbindex (uint32_t u);
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#define audio_MIN(a, b) ( __extension__ ({ \
|
#define audio_MIN(a, b) ( __extension__ ({ \
|
||||||
__typeof (a) ta = a; \
|
__typeof (a) ta = a; \
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include <sys/soundcard.h>
|
#include <sys/soundcard.h>
|
||||||
#endif
|
#endif
|
||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
|
#include "host-utils.h"
|
||||||
#include "qemu-char.h"
|
#include "qemu-char.h"
|
||||||
#include "audio.h"
|
#include "audio.h"
|
||||||
|
|
||||||
|
@ -273,7 +274,7 @@ static int oss_open (int in, struct oss_params *req,
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
mmmmssss = (req->nfrags << 16) | lsbindex (req->fragsize);
|
mmmmssss = (req->nfrags << 16) | ctz32 (req->fragsize);
|
||||||
if (ioctl (fd, SNDCTL_DSP_SETFRAGMENT, &mmmmssss)) {
|
if (ioctl (fd, SNDCTL_DSP_SETFRAGMENT, &mmmmssss)) {
|
||||||
oss_logerr2 (errno, typ, "Failed to set buffer length (%d, %d)\n",
|
oss_logerr2 (errno, typ, "Failed to set buffer length (%d, %d)\n",
|
||||||
req->nfrags, req->fragsize);
|
req->nfrags, req->fragsize);
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "isa.h"
|
#include "isa.h"
|
||||||
#include "qdev.h"
|
#include "qdev.h"
|
||||||
#include "qemu-timer.h"
|
#include "qemu-timer.h"
|
||||||
|
#include "host-utils.h"
|
||||||
|
|
||||||
#define dolog(...) AUD_log ("sb16", __VA_ARGS__)
|
#define dolog(...) AUD_log ("sb16", __VA_ARGS__)
|
||||||
|
|
||||||
|
@ -1092,8 +1093,8 @@ static IO_WRITE_PROTO (mixer_write_datab)
|
||||||
{
|
{
|
||||||
int dma, hdma;
|
int dma, hdma;
|
||||||
|
|
||||||
dma = lsbindex (val & 0xf);
|
dma = ctz32 (val & 0xf);
|
||||||
hdma = lsbindex (val & 0xf0);
|
hdma = ctz32 (val & 0xf0);
|
||||||
if (dma != s->dma || hdma != s->hdma) {
|
if (dma != s->dma || hdma != s->hdma) {
|
||||||
dolog (
|
dolog (
|
||||||
"attempt to change DMA "
|
"attempt to change DMA "
|
||||||
|
|
Loading…
Reference in New Issue