--- exec.c (revision 6629) +++ exec.c (working copy) @@ -2658,7 +2658,7 @@ printf("%s: subpage %p len %d addr " TARGET_FMT_plx " idx %d\n", __func__, mmio, len, addr, idx); #endif - ret = (**mmio->mem_read[idx][len])(mmio->opaque[idx][0][len], + ret = (*mmio->mem_read[idx][len])(mmio->opaque[idx][0][len], addr + mmio->region_offset[idx][0][len]); return ret; @@ -2674,7 +2674,7 @@ printf("%s: subpage %p len %d addr " TARGET_FMT_plx " idx %d value %08x\n", __func__, mmio, len, addr, idx, value); #endif - (**mmio->mem_write[idx][len])(mmio->opaque[idx][1][len], + (*mmio->mem_write[idx][len])(mmio->opaque[idx][1][len], addr + mmio->region_offset[idx][1][len], value); } @@ -2733,16 +2733,16 @@ subpage_writelen(opaque, addr, value, 2); } -static CPUReadMemoryFunc *subpage_read[] = { - &subpage_readb, - &subpage_readw, - &subpage_readl, +static CPUReadMemoryFunc *subpage_read[3] = { + subpage_readb, + subpage_readw, + subpage_readl, }; -static CPUWriteMemoryFunc *subpage_write[] = { - &subpage_writeb, - &subpage_writew, - &subpage_writel, +static CPUWriteMemoryFunc *subpage_write[3] = { + subpage_writeb, + subpage_writew, + subpage_writel, }; static int subpage_register (subpage_t *mmio, uint32_t start, uint32_t end,