Commit c52428fcb1b3381f6ef3c64a26dfd55c5c874da6

Authored by blueswir1
1 parent 5ad6bb97

Prevent overwriting fixed bits in AFSR


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3752 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 4 additions and 0 deletions
hw/iommu.c
... ... @@ -74,6 +74,7 @@ do { printf("IOMMU: " fmt , ##args); } while (0)
74 74 #define IOMMU_AFSR_ME 0x00080000 /* Multiple errors occurred */
75 75 #define IOMMU_AFSR_RD 0x00040000 /* A read operation was in progress */
76 76 #define IOMMU_AFSR_FAV 0x00020000 /* IOMMU afar has valid contents */
  77 +#define IOMMU_AFSR_MASK 0xff0fffff
77 78  
78 79 #define IOMMU_AFAR (0x1004 >> 2)
79 80  
... ... @@ -179,6 +180,9 @@ static void iommu_mem_writew(void *opaque, target_phys_addr_t addr,
179 180 DPRINTF("page flush %x\n", val);
180 181 s->regs[saddr] = val & IOMMU_PGFLUSH_MASK;
181 182 break;
  183 + case IOMMU_AFSR:
  184 + s->regs[saddr] = (val & IOMMU_AFSR_MASK) | IOMMU_AFSR_RESV;
  185 + break;
182 186 case IOMMU_SBCFG0:
183 187 case IOMMU_SBCFG1:
184 188 case IOMMU_SBCFG2:
... ...