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 | 100 | saddr = (addr - s->addr) >> 2; |
101 | 101 | switch (saddr) { |
102 | 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 | 104 | return s->regs[saddr]; |
105 | 105 | break; |
106 | 106 | } |
... | ... | @@ -113,7 +113,7 @@ static void iommu_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val |
113 | 113 | target_phys_addr_t saddr; |
114 | 114 | |
115 | 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 | 117 | switch (saddr) { |
118 | 118 | case IOMMU_CTRL: |
119 | 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 | 143 | s->iostart = 0xffffffff80000000ULL; |
144 | 144 | break; |
145 | 145 | } |
146 | - DPRINTF("iostart = %llx\n", s->iostart); | |
146 | + DPRINTF("iostart = " TARGET_FMT_plx "\n", s->iostart); | |
147 | 147 | s->regs[saddr] = ((val & IOMMU_CTRL_MASK) | IOMMU_VERSION); |
148 | 148 | break; |
149 | 149 | case IOMMU_BASE: |
... | ... | @@ -188,12 +188,19 @@ static CPUWriteMemoryFunc *iommu_mem_write[3] = { |
188 | 188 | |
189 | 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 | 197 | addr &= ~s->iostart; |
195 | 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 | 206 | static target_phys_addr_t iommu_translate_pa(IOMMUState *s, |
... | ... | @@ -271,7 +278,7 @@ static void iommu_reset(void *opaque) |
271 | 278 | |
272 | 279 | memset(s->regs, 0, IOMMU_NREGS * 4); |
273 | 280 | s->iostart = 0; |
274 | - s->regs[0] = IOMMU_VERSION; | |
281 | + s->regs[IOMMU_CTRL] = IOMMU_VERSION; | |
275 | 282 | } |
276 | 283 | |
277 | 284 | void *iommu_init(target_phys_addr_t addr) | ... | ... |