Commit 981a2e99064ad52abf070d9e8d2a649535f0dd43
1 parent
8a93e02a
Improve iommu debugging, use register names
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3114 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
14 additions
and
7 deletions
hw/iommu.c
@@ -100,7 +100,7 @@ static uint32_t iommu_mem_readw(void *opaque, target_phys_addr_t addr) | @@ -100,7 +100,7 @@ static uint32_t iommu_mem_readw(void *opaque, target_phys_addr_t addr) | ||
100 | saddr = (addr - s->addr) >> 2; | 100 | saddr = (addr - s->addr) >> 2; |
101 | switch (saddr) { | 101 | switch (saddr) { |
102 | default: | 102 | default: |
103 | - DPRINTF("read reg[%d] = %x\n", saddr, s->regs[saddr]); | 103 | + DPRINTF("read reg[%d] = %x\n", (int)saddr, s->regs[saddr]); |
104 | return s->regs[saddr]; | 104 | return s->regs[saddr]; |
105 | break; | 105 | break; |
106 | } | 106 | } |
@@ -113,7 +113,7 @@ static void iommu_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val | @@ -113,7 +113,7 @@ static void iommu_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val | ||
113 | target_phys_addr_t saddr; | 113 | target_phys_addr_t saddr; |
114 | 114 | ||
115 | saddr = (addr - s->addr) >> 2; | 115 | saddr = (addr - s->addr) >> 2; |
116 | - DPRINTF("write reg[%d] = %x\n", saddr, val); | 116 | + DPRINTF("write reg[%d] = %x\n", (int)saddr, val); |
117 | switch (saddr) { | 117 | switch (saddr) { |
118 | case IOMMU_CTRL: | 118 | case IOMMU_CTRL: |
119 | switch (val & IOMMU_CTRL_RNGE) { | 119 | switch (val & IOMMU_CTRL_RNGE) { |
@@ -143,7 +143,7 @@ static void iommu_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val | @@ -143,7 +143,7 @@ static void iommu_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val | ||
143 | s->iostart = 0xffffffff80000000ULL; | 143 | s->iostart = 0xffffffff80000000ULL; |
144 | break; | 144 | break; |
145 | } | 145 | } |
146 | - DPRINTF("iostart = %llx\n", s->iostart); | 146 | + DPRINTF("iostart = " TARGET_FMT_plx "\n", s->iostart); |
147 | s->regs[saddr] = ((val & IOMMU_CTRL_MASK) | IOMMU_VERSION); | 147 | s->regs[saddr] = ((val & IOMMU_CTRL_MASK) | IOMMU_VERSION); |
148 | break; | 148 | break; |
149 | case IOMMU_BASE: | 149 | case IOMMU_BASE: |
@@ -188,12 +188,19 @@ static CPUWriteMemoryFunc *iommu_mem_write[3] = { | @@ -188,12 +188,19 @@ static CPUWriteMemoryFunc *iommu_mem_write[3] = { | ||
188 | 188 | ||
189 | static uint32_t iommu_page_get_flags(IOMMUState *s, target_phys_addr_t addr) | 189 | static uint32_t iommu_page_get_flags(IOMMUState *s, target_phys_addr_t addr) |
190 | { | 190 | { |
191 | - uint32_t iopte; | 191 | + uint32_t iopte, ret; |
192 | +#ifdef DEBUG_IOMMU | ||
193 | + target_phys_addr_t pa = addr; | ||
194 | +#endif | ||
192 | 195 | ||
193 | - iopte = s->regs[1] << 4; | 196 | + iopte = s->regs[IOMMU_BASE] << 4; |
194 | addr &= ~s->iostart; | 197 | addr &= ~s->iostart; |
195 | iopte += (addr >> (PAGE_SHIFT - 2)) & ~3; | 198 | iopte += (addr >> (PAGE_SHIFT - 2)) & ~3; |
196 | - return ldl_phys(iopte); | 199 | + ret = ldl_phys(iopte); |
200 | + DPRINTF("get flags addr " TARGET_FMT_plx " => pte %x, *ptes = %x\n", pa, | ||
201 | + iopte, ret); | ||
202 | + | ||
203 | + return ret; | ||
197 | } | 204 | } |
198 | 205 | ||
199 | static target_phys_addr_t iommu_translate_pa(IOMMUState *s, | 206 | static target_phys_addr_t iommu_translate_pa(IOMMUState *s, |
@@ -271,7 +278,7 @@ static void iommu_reset(void *opaque) | @@ -271,7 +278,7 @@ static void iommu_reset(void *opaque) | ||
271 | 278 | ||
272 | memset(s->regs, 0, IOMMU_NREGS * 4); | 279 | memset(s->regs, 0, IOMMU_NREGS * 4); |
273 | s->iostart = 0; | 280 | s->iostart = 0; |
274 | - s->regs[0] = IOMMU_VERSION; | 281 | + s->regs[IOMMU_CTRL] = IOMMU_VERSION; |
275 | } | 282 | } |
276 | 283 | ||
277 | void *iommu_init(target_phys_addr_t addr) | 284 | void *iommu_init(target_phys_addr_t addr) |