scoop: fix access to registers from second instance
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Thu, 13 Jan 2011 15:37:11 +0000 (18:37 +0300)
committerAurelien Jarno <aurelien@aurel32.net>
Thu, 20 Jan 2011 11:37:21 +0000 (12:37 +0100)
Second instance of scoop contains registers shifted to 0x40 from the start
of the page. Instead of messing with register mapping, just limit register
address to 0x00..0x3f.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
hw/zaurus.c

index 54ec3f00d591c13821417b77cdcaf29946a5a7bb..36be94a1799a48119ac6a1b016f07d5421450bb0 100644 (file)
@@ -70,7 +70,7 @@ static uint32_t scoop_readb(void *opaque, target_phys_addr_t addr)
 {
     ScoopInfo *s = (ScoopInfo *) opaque;
 
-    switch (addr) {
+    switch (addr & 0x3f) {
     case SCOOP_MCR:
         return s->mcr;
     case SCOOP_CDR:
@@ -104,7 +104,7 @@ static void scoop_writeb(void *opaque, target_phys_addr_t addr, uint32_t value)
     ScoopInfo *s = (ScoopInfo *) opaque;
     value &= 0xffff;
 
-    switch (addr) {
+    switch (addr & 0x3f) {
     case SCOOP_MCR:
         s->mcr = value;
         break;