diff options
author | Takashi Iwai <tiwai@suse.de> | 2005-05-27 12:40:52 +0200 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2005-05-29 10:15:30 +0200 |
commit | cdc5c53fde266055debf7f5c9c043d5acf47c5ff (patch) | |
tree | fb2eb8c49c1e2e55d24eebdb2ccbb828322f70e2 /sound/core/oss | |
parent | a6c17ec89d33a714b3e94a252c127f2ff63363c8 (diff) | |
download | op-kernel-dev-cdc5c53fde266055debf7f5c9c043d5acf47c5ff.zip op-kernel-dev-cdc5c53fde266055debf7f5c9c043d5acf47c5ff.tar.gz |
[ALSA] Fix compilation on 32bit arch
ALSA<-OSS emulation
Fix the division with int64 for 32bit architectures.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/core/oss')
-rw-r--r-- | sound/core/oss/pcm_oss.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c index 131522e..468fca8 100644 --- a/sound/core/oss/pcm_oss.c +++ b/sound/core/oss/pcm_oss.c @@ -129,7 +129,16 @@ static long snd_pcm_oss_bytes(snd_pcm_substream_t *substream, long frames) long bytes = frames_to_bytes(runtime, frames); if (buffer_size == runtime->oss.buffer_bytes) return bytes; - return (long)(((int64_t)runtime->oss.buffer_bytes * (int64_t)bytes) / (int64_t)buffer_size); +#if BITS_PER_LONG >= 64 + return runtime->oss.buffer_bytes * bytes / buffer_size; +#else + { + u64 bsize = (u64)runtime->oss.buffer_bytes * (u64)bytes; + u32 rem; + div64_32(&bsize, buffer_size, &rem); + return (long)bsize; + } +#endif } static long snd_pcm_alsa_frames(snd_pcm_substream_t *substream, long bytes) |