Revision 7b169687 hw/iommu.c

b/hw/iommu.c
78 78

  
79 79
#define IOMMU_AFAR          (0x1004 >> 2)
80 80

  
81
#define IOMMU_AER           (0x1008 >> 2) /* Arbiter Enable Register */
82
#define IOMMU_AER_EN_P0_ARB 0x00000001    /* MBus master 0x8 (Always 1) */
83
#define IOMMU_AER_EN_P1_ARB 0x00000002    /* MBus master 0x9 */
84
#define IOMMU_AER_EN_P2_ARB 0x00000004    /* MBus master 0xa */
85
#define IOMMU_AER_EN_P3_ARB 0x00000008    /* MBus master 0xb */
86
#define IOMMU_AER_EN_0      0x00010000    /* SBus slot 0 */
87
#define IOMMU_AER_EN_1      0x00020000    /* SBus slot 1 */
88
#define IOMMU_AER_EN_2      0x00040000    /* SBus slot 2 */
89
#define IOMMU_AER_EN_3      0x00080000    /* SBus slot 3 */
90
#define IOMMU_AER_EN_F      0x00100000    /* SBus on-board */
91
#define IOMMU_AER_SBW       0x80000000    /* S-to-M asynchronous writes */
92
#define IOMMU_AER_MASK      0x801f000f
93

  
81 94
#define IOMMU_SBCFG0        (0x1010 >> 2) /* SBUS configration per-slot */
82 95
#define IOMMU_SBCFG1        (0x1014 >> 2) /* SBUS configration per-slot */
83 96
#define IOMMU_SBCFG2        (0x1018 >> 2) /* SBUS configration per-slot */
......
196 209
        s->regs[saddr] = val;
197 210
        qemu_irq_lower(s->irq);
198 211
        break;
212
    case IOMMU_AER:
213
        s->regs[saddr] = (val & IOMMU_AER_MASK) | IOMMU_AER_EN_P0_ARB;
214
        break;
199 215
    case IOMMU_AFSR:
200 216
        s->regs[saddr] = (val & IOMMU_AFSR_MASK) | IOMMU_AFSR_RESV;
201 217
        qemu_irq_lower(s->irq);
......
344 360
    s->regs[IOMMU_CTRL] = s->version;
345 361
    s->regs[IOMMU_ARBEN] = IOMMU_MID;
346 362
    s->regs[IOMMU_AFSR] = IOMMU_AFSR_RESV;
363
    s->regs[IOMMU_AER] = IOMMU_AER_EN_P0_ARB | IOMMU_AER_EN_P1_ARB;
347 364
    s->regs[IOMMU_MASK_ID] = IOMMU_TS_MASK;
348 365
    qemu_irq_lower(s->irq);
349 366
}

Also available in: Unified diff