Commit 58680345 authored by Allan Peramaki's avatar Allan Peramaki Committed by Gerd Hoffmann
Browse files

hw/audio/gus: Fix registers 32-bit access



Fix audio on software that accesses DRAM above 64k via register
peek/poke and some cases when more than 16 voices are used.

Cc: qemu-stable@nongnu.org
Fixes: 135f5ae1 ("audio: GUSsample is int16_t")
Signed-off-by: default avatarAllan Peramaki <aperamak@pp1.inet.fi>
Tested-by: default avatarVolker Rümelin <vr_qemu@t-online.de>
Reviewed-by: default avatarVolker Rümelin <vr_qemu@t-online.de>
Reviewed-by: default avatarThomas Huth <thuth@redhat.com>
Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20200618103623.6031-1-philmd@redhat.com
Message-Id: <20200615201757.16868-1-aperamak@pp1.inet.fi>
[PMD: Removed unrelated style changes]
Signed-off-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
parent bc81e6e5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@

#define GUSregb(position) (*            (gusptr+(position)))
#define GUSregw(position) (*(uint16_t *) (gusptr+(position)))
#define GUSregd(position) (*(uint16_t *)(gusptr+(position)))
#define GUSregd(position) (*(uint32_t *)(gusptr + (position)))

/* size given in bytes */
unsigned int gus_read(GUSEmuState * state, int port, int size)
+1 −1
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@

#define GUSregb(position)  (*            (gusptr+(position)))
#define GUSregw(position)  (*(uint16_t *) (gusptr+(position)))
#define GUSregd(position)  (*(uint16_t *)(gusptr+(position)))
#define GUSregd(position)  (*(uint32_t *)(gusptr + (position)))

#define GUSvoice(position) (*(uint16_t *)(voiceptr+(position)))