Patchwork smc91c111: mask register offset

login
register
mail settings
Submitter Lars Munch
Date March 29, 2010, 1:16 p.m.
Message ID <1269868618-22654-1-git-send-email-lars@segv.dk>
Download mbox | patch
Permalink /patch/48840/
State New
Headers show

Comments

Lars Munch - March 29, 2010, 1:16 p.m.
this fixes the smc91c111 emulation which has been broken for gumstix and
mainstone and maybe others since the "MMIO callback interface changes"
8da3ff180974732fc4272cb4433fef85c1822961 where commited, see:

http://thread.gmane.org/gmane.comp.emulators.qemu/33607/focus=35194

Signed-off-by: Lars Munch <lars@segv.dk>
---
 hw/smc91c111.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
Aurelien Jarno - April 8, 2010, 7:23 p.m.
On Mon, Mar 29, 2010 at 03:16:58PM +0200, Lars Munch wrote:
> this fixes the smc91c111 emulation which has been broken for gumstix and
> mainstone and maybe others since the "MMIO callback interface changes"
> 8da3ff180974732fc4272cb4433fef85c1822961 where commited, see:
> 
> http://thread.gmane.org/gmane.comp.emulators.qemu/33607/focus=35194

Thanks, applied.

> Signed-off-by: Lars Munch <lars@segv.dk>
> ---
>  hw/smc91c111.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/hw/smc91c111.c b/hw/smc91c111.c
> index c1a88c9..a2ef299 100644
> --- a/hw/smc91c111.c
> +++ b/hw/smc91c111.c
> @@ -250,6 +250,7 @@ static void smc91c111_writeb(void *opaque, target_phys_addr_t offset,
>  {
>      smc91c111_state *s = (smc91c111_state *)opaque;
>  
> +    offset = offset & 0xf;
>      if (offset == 14) {
>          s->bank = value;
>          return;
> @@ -421,6 +422,7 @@ static uint32_t smc91c111_readb(void *opaque, target_phys_addr_t offset)
>  {
>      smc91c111_state *s = (smc91c111_state *)opaque;
>  
> +    offset = offset & 0xf;
>      if (offset == 14) {
>          return s->bank;
>      }
> -- 
> 1.7.0.3
> 
> 
> 
>

Patch

diff --git a/hw/smc91c111.c b/hw/smc91c111.c
index c1a88c9..a2ef299 100644
--- a/hw/smc91c111.c
+++ b/hw/smc91c111.c
@@ -250,6 +250,7 @@  static void smc91c111_writeb(void *opaque, target_phys_addr_t offset,
 {
     smc91c111_state *s = (smc91c111_state *)opaque;
 
+    offset = offset & 0xf;
     if (offset == 14) {
         s->bank = value;
         return;
@@ -421,6 +422,7 @@  static uint32_t smc91c111_readb(void *opaque, target_phys_addr_t offset)
 {
     smc91c111_state *s = (smc91c111_state *)opaque;
 
+    offset = offset & 0xf;
     if (offset == 14) {
         return s->bank;
     }