mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-07-01 05:28:21 +00:00
exec: Explicitly export target AS from address_space_translate_internal
This adds an AS** parameter to address_space_do_translate() to make it easier for the next patch to share FlatViews. This should cause no behavioural change. Backports commit 6424975ce912061ac9e4a375237b0c89d83d93e3 from qemu
This commit is contained in:
parent
be742759b0
commit
f74fcb194f
11
qemu/exec.c
11
qemu/exec.c
|
@ -398,7 +398,8 @@ static MemoryRegionSection address_space_do_translate(AddressSpace *as,
|
||||||
hwaddr *xlat,
|
hwaddr *xlat,
|
||||||
hwaddr *plen,
|
hwaddr *plen,
|
||||||
bool is_write,
|
bool is_write,
|
||||||
bool is_mmio)
|
bool is_mmio,
|
||||||
|
AddressSpace **target_as)
|
||||||
{
|
{
|
||||||
IOMMUTLBEntry iotlb;
|
IOMMUTLBEntry iotlb;
|
||||||
MemoryRegionSection *section;
|
MemoryRegionSection *section;
|
||||||
|
@ -425,6 +426,7 @@ static MemoryRegionSection address_space_do_translate(AddressSpace *as,
|
||||||
}
|
}
|
||||||
|
|
||||||
as = iotlb.target_as;
|
as = iotlb.target_as;
|
||||||
|
*target_as = iotlb.target_as;
|
||||||
}
|
}
|
||||||
|
|
||||||
*xlat = addr;
|
*xlat = addr;
|
||||||
|
@ -448,7 +450,7 @@ IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
|
||||||
|
|
||||||
/* This can never be MMIO. */
|
/* This can never be MMIO. */
|
||||||
section = address_space_do_translate(as, addr, &xlat, &plen,
|
section = address_space_do_translate(as, addr, &xlat, &plen,
|
||||||
is_write, false);
|
is_write, false, &as);
|
||||||
|
|
||||||
/* Illegal translation */
|
/* Illegal translation */
|
||||||
if (section.mr == &as->uc->io_mem_unassigned) {
|
if (section.mr == &as->uc->io_mem_unassigned) {
|
||||||
|
@ -470,7 +472,7 @@ IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
|
||||||
/* Convert to address mask */
|
/* Convert to address mask */
|
||||||
plen -= 1;
|
plen -= 1;
|
||||||
|
|
||||||
result.target_as = section.address_space;
|
result.target_as = as;
|
||||||
result.iova = addr & ~plen;
|
result.iova = addr & ~plen;
|
||||||
result.translated_addr = xlat & ~plen;
|
result.translated_addr = xlat & ~plen;
|
||||||
result.addr_mask = plen;
|
result.addr_mask = plen;
|
||||||
|
@ -491,7 +493,8 @@ MemoryRegion *address_space_translate(AddressSpace *as, hwaddr addr,
|
||||||
MemoryRegionSection section;
|
MemoryRegionSection section;
|
||||||
|
|
||||||
/* This can be MMIO, so setup MMIO bit. */
|
/* This can be MMIO, so setup MMIO bit. */
|
||||||
section = address_space_do_translate(as, addr, xlat, plen, is_write, true);
|
section = address_space_do_translate(as, addr, xlat, plen, is_write, true,
|
||||||
|
&as);
|
||||||
mr = section.mr;
|
mr = section.mr;
|
||||||
|
|
||||||
// Unicorn: if'd out
|
// Unicorn: if'd out
|
||||||
|
|
Loading…
Reference in a new issue