Commit c52428fcb1b3381f6ef3c64a26dfd55c5c874da6
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: | ... | ... |