OHCI address decoding fix
authorPaul Brook <paul@codesourcery.com>
Sun, 13 Jun 2010 22:37:31 +0000 (23:37 +0100)
committerPaul Brook <paul@codesourcery.com>
Sun, 13 Jun 2010 22:37:31 +0000 (23:37 +0100)
Ignore high address bits when PCI memory window is not mapped on a page
boundary.

Signed-off-by: Paul Brook <paul@codesourcery.com>
hw/usb-ohci.c

index 9f80e15..c60fd8d 100644 (file)
@@ -1415,6 +1415,8 @@ static uint32_t ohci_mem_read(void *ptr, target_phys_addr_t addr)
     OHCIState *ohci = ptr;
     uint32_t retval;
 
+    addr &= 0xff;
+
     /* Only aligned reads are allowed on OHCI */
     if (addr & 3) {
         fprintf(stderr, "usb-ohci: Mis-aligned read\n");
@@ -1538,6 +1540,8 @@ static void ohci_mem_write(void *ptr, target_phys_addr_t addr, uint32_t val)
 {
     OHCIState *ohci = ptr;
 
+    addr &= 0xff;
+
 #ifdef TARGET_WORDS_BIGENDIAN
     val = bswap32(val);
 #endif