From c52428fcb1b3381f6ef3c64a26dfd55c5c874da6 Mon Sep 17 00:00:00 2001 From: blueswir1 Date: Sat, 1 Dec 2007 14:51:24 +0000 Subject: [PATCH] Prevent overwriting fixed bits in AFSR git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3752 c046a42c-6fe2-441c-8c8c-71466251a162 --- hw/iommu.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/iommu.c b/hw/iommu.c index ad5826e4e..784a780c8 100644 --- a/hw/iommu.c +++ b/hw/iommu.c @@ -74,6 +74,7 @@ do { printf("IOMMU: " fmt , ##args); } while (0) #define IOMMU_AFSR_ME 0x00080000 /* Multiple errors occurred */ #define IOMMU_AFSR_RD 0x00040000 /* A read operation was in progress */ #define IOMMU_AFSR_FAV 0x00020000 /* IOMMU afar has valid contents */ +#define IOMMU_AFSR_MASK 0xff0fffff #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); s->regs[saddr] = val & IOMMU_PGFLUSH_MASK; break; + case IOMMU_AFSR: + s->regs[saddr] = (val & IOMMU_AFSR_MASK) | IOMMU_AFSR_RESV; + break; case IOMMU_SBCFG0: case IOMMU_SBCFG1: case IOMMU_SBCFG2: