plugins: fix-up handling of internal hostaddr for 32 bit
The compiler rightly complains when we build on 32 bit that casting uint64_t into a void is a bad idea. We are really dealing with a host pointer at this point so treat it as such. This does involve a uintptr_t cast of the result of the TLB addend as we know that has to point to the host memory. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210709143005.1554-28-alex.bennee@linaro.org>
This commit is contained in:
parent
e2bcd3ad09
commit
2d93203998
@ -1728,7 +1728,7 @@ bool tlb_plugin_lookup(CPUState *cpu, target_ulong addr, int mmu_idx,
|
|||||||
data->v.io.offset = (iotlbentry->addr & TARGET_PAGE_MASK) + addr;
|
data->v.io.offset = (iotlbentry->addr & TARGET_PAGE_MASK) + addr;
|
||||||
} else {
|
} else {
|
||||||
data->is_io = false;
|
data->is_io = false;
|
||||||
data->v.ram.hostaddr = addr + tlbe->addend;
|
data->v.ram.hostaddr = (void *)((uintptr_t)addr + tlbe->addend);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -18,7 +18,7 @@ struct qemu_plugin_hwaddr {
|
|||||||
hwaddr offset;
|
hwaddr offset;
|
||||||
} io;
|
} io;
|
||||||
struct {
|
struct {
|
||||||
uint64_t hostaddr;
|
void *hostaddr;
|
||||||
} ram;
|
} ram;
|
||||||
} v;
|
} v;
|
||||||
};
|
};
|
||||||
|
@ -308,11 +308,11 @@ uint64_t qemu_plugin_hwaddr_phys_addr(const struct qemu_plugin_hwaddr *haddr)
|
|||||||
if (!haddr->is_io) {
|
if (!haddr->is_io) {
|
||||||
RAMBlock *block;
|
RAMBlock *block;
|
||||||
ram_addr_t offset;
|
ram_addr_t offset;
|
||||||
void *hostaddr = (void *) haddr->v.ram.hostaddr;
|
void *hostaddr = haddr->v.ram.hostaddr;
|
||||||
|
|
||||||
block = qemu_ram_block_from_host(hostaddr, false, &offset);
|
block = qemu_ram_block_from_host(hostaddr, false, &offset);
|
||||||
if (!block) {
|
if (!block) {
|
||||||
error_report("Bad ram pointer %"PRIx64"", haddr->v.ram.hostaddr);
|
error_report("Bad host ram pointer %p", haddr->v.ram.hostaddr);
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user