mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-01-22 03:50:58 +00:00
exec: clamp accesses against the MemoryRegionSection
Because the clamping was done against the MemoryRegion, address_space_rw was effectively broken if a write spanned multiple sections that are not linear in underlying memory (with the memory not being under an IOMMU). This is visible with the MIPS rc4030 IOMMU, which is implemented as a series of alias memory regions that point to the actual RAM. Backports commit e4a511f8cc6f4a46d409fb5c9f72c38ba45f8d83 from qemu
This commit is contained in:
parent
7c21d3059e
commit
32996e48fc
|
@ -324,7 +324,7 @@ address_space_translate_internal(AddressSpaceDispatch *d, hwaddr addr, hwaddr *x
|
|||
|
||||
mr = section->mr;
|
||||
if (memory_region_is_ram(mr)) {
|
||||
diff = int128_sub(mr->size, int128_make64(addr));
|
||||
diff = int128_sub(section->size, int128_make64(addr));
|
||||
*plen = int128_get64(int128_min(diff, int128_make64(*plen)));
|
||||
}
|
||||
return section;
|
||||
|
|
Loading…
Reference in a new issue