summaryrefslogtreecommitdiffstats
path: root/hw/hppa/dino.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/hppa/dino.c')
-rw-r--r--hw/hppa/dino.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/hw/hppa/dino.c b/hw/hppa/dino.c
index 9797a7f0d9..2b1b38c58a 100644
--- a/hw/hppa/dino.c
+++ b/hw/hppa/dino.c
@@ -83,20 +83,21 @@
#define DINO_PCI_HOST_BRIDGE(obj) \
OBJECT_CHECK(DinoState, (obj), TYPE_DINO_PCI_HOST_BRIDGE)
-#define DINO800_REGS ((DINO_TLTIM - DINO_GMASK) / 4)
+#define DINO800_REGS (1 + (DINO_TLTIM - DINO_GMASK) / 4)
static const uint32_t reg800_keep_bits[DINO800_REGS] = {
- MAKE_64BIT_MASK(0, 1),
- MAKE_64BIT_MASK(0, 7),
- MAKE_64BIT_MASK(0, 7),
- MAKE_64BIT_MASK(0, 8),
- MAKE_64BIT_MASK(0, 7),
- MAKE_64BIT_MASK(0, 9),
- MAKE_64BIT_MASK(0, 32),
- MAKE_64BIT_MASK(0, 8),
- MAKE_64BIT_MASK(0, 30),
- MAKE_64BIT_MASK(0, 25),
- MAKE_64BIT_MASK(0, 22),
- MAKE_64BIT_MASK(0, 9),
+ MAKE_64BIT_MASK(0, 1), /* GMASK */
+ MAKE_64BIT_MASK(0, 7), /* PAMR */
+ MAKE_64BIT_MASK(0, 7), /* PAPR */
+ MAKE_64BIT_MASK(0, 8), /* DAMODE */
+ MAKE_64BIT_MASK(0, 7), /* PCICMD */
+ MAKE_64BIT_MASK(0, 9), /* PCISTS */
+ MAKE_64BIT_MASK(0, 32), /* Undefined */
+ MAKE_64BIT_MASK(0, 8), /* MLTIM */
+ MAKE_64BIT_MASK(0, 30), /* BRDG_FEAT */
+ MAKE_64BIT_MASK(0, 24), /* PCIROR */
+ MAKE_64BIT_MASK(0, 22), /* PCIWOR */
+ MAKE_64BIT_MASK(0, 32), /* Undocumented */
+ MAKE_64BIT_MASK(0, 9), /* TLTIM */
};
typedef struct DinoState {
@@ -180,7 +181,9 @@ static bool dino_chip_mem_valid(void *opaque, hwaddr addr,
case DINO_IO_ADDR_EN:
case DINO_PCI_IO_DATA:
case DINO_TOC_ADDR:
- case DINO_GMASK ... DINO_TLTIM:
+ case DINO_GMASK ... DINO_PCISTS:
+ case DINO_MLTIM ... DINO_PCIWOR:
+ case DINO_TLTIM:
ret = true;
break;
case DINO_PCI_IO_DATA + 2: