Prevent overwriting fixed bits in AFSR
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3752 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
5ad6bb97a4
commit
c52428fcb1
@ -74,6 +74,7 @@ do { printf("IOMMU: " fmt , ##args); } while (0)
|
|||||||
#define IOMMU_AFSR_ME 0x00080000 /* Multiple errors occurred */
|
#define IOMMU_AFSR_ME 0x00080000 /* Multiple errors occurred */
|
||||||
#define IOMMU_AFSR_RD 0x00040000 /* A read operation was in progress */
|
#define IOMMU_AFSR_RD 0x00040000 /* A read operation was in progress */
|
||||||
#define IOMMU_AFSR_FAV 0x00020000 /* IOMMU afar has valid contents */
|
#define IOMMU_AFSR_FAV 0x00020000 /* IOMMU afar has valid contents */
|
||||||
|
#define IOMMU_AFSR_MASK 0xff0fffff
|
||||||
|
|
||||||
#define IOMMU_AFAR (0x1004 >> 2)
|
#define IOMMU_AFAR (0x1004 >> 2)
|
||||||
|
|
||||||
@ -179,6 +180,9 @@ static void iommu_mem_writew(void *opaque, target_phys_addr_t addr,
|
|||||||
DPRINTF("page flush %x\n", val);
|
DPRINTF("page flush %x\n", val);
|
||||||
s->regs[saddr] = val & IOMMU_PGFLUSH_MASK;
|
s->regs[saddr] = val & IOMMU_PGFLUSH_MASK;
|
||||||
break;
|
break;
|
||||||
|
case IOMMU_AFSR:
|
||||||
|
s->regs[saddr] = (val & IOMMU_AFSR_MASK) | IOMMU_AFSR_RESV;
|
||||||
|
break;
|
||||||
case IOMMU_SBCFG0:
|
case IOMMU_SBCFG0:
|
||||||
case IOMMU_SBCFG1:
|
case IOMMU_SBCFG1:
|
||||||
case IOMMU_SBCFG2:
|
case IOMMU_SBCFG2:
|
||||||
|
Loading…
Reference in New Issue
Block a user