mirror of https://github.com/xqemu/xqemu.git
memory: remove unnecessary masking of MemoryRegion ram_addr
mr->ram_block->offset is already aligned to both host and target size (see qemu_ram_alloc_internal). Remove further masking as it is unnecessary. Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
5b5660adf1
commit
e4e697940d
21
exec.c
21
exec.c
|
@ -1046,8 +1046,7 @@ hwaddr memory_region_section_get_iotlb(CPUState *cpu,
|
||||||
|
|
||||||
if (memory_region_is_ram(section->mr)) {
|
if (memory_region_is_ram(section->mr)) {
|
||||||
/* Normal RAM. */
|
/* Normal RAM. */
|
||||||
iotlb = (memory_region_get_ram_addr(section->mr) & TARGET_PAGE_MASK)
|
iotlb = memory_region_get_ram_addr(section->mr) + xlat;
|
||||||
+ xlat;
|
|
||||||
if (!section->readonly) {
|
if (!section->readonly) {
|
||||||
iotlb |= PHYS_SECTION_NOTDIRTY;
|
iotlb |= PHYS_SECTION_NOTDIRTY;
|
||||||
} else {
|
} else {
|
||||||
|
@ -3079,9 +3078,7 @@ static inline uint32_t address_space_ldl_internal(AddressSpace *as, hwaddr addr,
|
||||||
} else {
|
} else {
|
||||||
/* RAM case */
|
/* RAM case */
|
||||||
ptr = qemu_get_ram_ptr(mr->ram_block,
|
ptr = qemu_get_ram_ptr(mr->ram_block,
|
||||||
(memory_region_get_ram_addr(mr)
|
memory_region_get_ram_addr(mr) + addr1);
|
||||||
& TARGET_PAGE_MASK)
|
|
||||||
+ addr1);
|
|
||||||
switch (endian) {
|
switch (endian) {
|
||||||
case DEVICE_LITTLE_ENDIAN:
|
case DEVICE_LITTLE_ENDIAN:
|
||||||
val = ldl_le_p(ptr);
|
val = ldl_le_p(ptr);
|
||||||
|
@ -3175,9 +3172,7 @@ static inline uint64_t address_space_ldq_internal(AddressSpace *as, hwaddr addr,
|
||||||
} else {
|
} else {
|
||||||
/* RAM case */
|
/* RAM case */
|
||||||
ptr = qemu_get_ram_ptr(mr->ram_block,
|
ptr = qemu_get_ram_ptr(mr->ram_block,
|
||||||
(memory_region_get_ram_addr(mr)
|
memory_region_get_ram_addr(mr) + addr1);
|
||||||
& TARGET_PAGE_MASK)
|
|
||||||
+ addr1);
|
|
||||||
switch (endian) {
|
switch (endian) {
|
||||||
case DEVICE_LITTLE_ENDIAN:
|
case DEVICE_LITTLE_ENDIAN:
|
||||||
val = ldq_le_p(ptr);
|
val = ldq_le_p(ptr);
|
||||||
|
@ -3291,9 +3286,7 @@ static inline uint32_t address_space_lduw_internal(AddressSpace *as,
|
||||||
} else {
|
} else {
|
||||||
/* RAM case */
|
/* RAM case */
|
||||||
ptr = qemu_get_ram_ptr(mr->ram_block,
|
ptr = qemu_get_ram_ptr(mr->ram_block,
|
||||||
(memory_region_get_ram_addr(mr)
|
memory_region_get_ram_addr(mr) + addr1);
|
||||||
& TARGET_PAGE_MASK)
|
|
||||||
+ addr1);
|
|
||||||
switch (endian) {
|
switch (endian) {
|
||||||
case DEVICE_LITTLE_ENDIAN:
|
case DEVICE_LITTLE_ENDIAN:
|
||||||
val = lduw_le_p(ptr);
|
val = lduw_le_p(ptr);
|
||||||
|
@ -3375,7 +3368,7 @@ void address_space_stl_notdirty(AddressSpace *as, hwaddr addr, uint32_t val,
|
||||||
|
|
||||||
r = memory_region_dispatch_write(mr, addr1, val, 4, attrs);
|
r = memory_region_dispatch_write(mr, addr1, val, 4, attrs);
|
||||||
} else {
|
} else {
|
||||||
addr1 += memory_region_get_ram_addr(mr) & TARGET_PAGE_MASK;
|
addr1 += memory_region_get_ram_addr(mr);
|
||||||
ptr = qemu_get_ram_ptr(mr->ram_block, addr1);
|
ptr = qemu_get_ram_ptr(mr->ram_block, addr1);
|
||||||
stl_p(ptr, val);
|
stl_p(ptr, val);
|
||||||
|
|
||||||
|
@ -3430,7 +3423,7 @@ static inline void address_space_stl_internal(AddressSpace *as,
|
||||||
r = memory_region_dispatch_write(mr, addr1, val, 4, attrs);
|
r = memory_region_dispatch_write(mr, addr1, val, 4, attrs);
|
||||||
} else {
|
} else {
|
||||||
/* RAM case */
|
/* RAM case */
|
||||||
addr1 += memory_region_get_ram_addr(mr) & TARGET_PAGE_MASK;
|
addr1 += memory_region_get_ram_addr(mr);
|
||||||
ptr = qemu_get_ram_ptr(mr->ram_block, addr1);
|
ptr = qemu_get_ram_ptr(mr->ram_block, addr1);
|
||||||
switch (endian) {
|
switch (endian) {
|
||||||
case DEVICE_LITTLE_ENDIAN:
|
case DEVICE_LITTLE_ENDIAN:
|
||||||
|
@ -3540,7 +3533,7 @@ static inline void address_space_stw_internal(AddressSpace *as,
|
||||||
r = memory_region_dispatch_write(mr, addr1, val, 2, attrs);
|
r = memory_region_dispatch_write(mr, addr1, val, 2, attrs);
|
||||||
} else {
|
} else {
|
||||||
/* RAM case */
|
/* RAM case */
|
||||||
addr1 += memory_region_get_ram_addr(mr) & TARGET_PAGE_MASK;
|
addr1 += memory_region_get_ram_addr(mr);
|
||||||
ptr = qemu_get_ram_ptr(mr->ram_block, addr1);
|
ptr = qemu_get_ram_ptr(mr->ram_block, addr1);
|
||||||
switch (endian) {
|
switch (endian) {
|
||||||
case DEVICE_LITTLE_ENDIAN:
|
case DEVICE_LITTLE_ENDIAN:
|
||||||
|
|
5
memory.c
5
memory.c
|
@ -1628,7 +1628,7 @@ int memory_region_get_fd(MemoryRegion *mr)
|
||||||
|
|
||||||
assert(mr->ram_block);
|
assert(mr->ram_block);
|
||||||
|
|
||||||
return qemu_get_ram_fd(memory_region_get_ram_addr(mr) & TARGET_PAGE_MASK);
|
return qemu_get_ram_fd(memory_region_get_ram_addr(mr));
|
||||||
}
|
}
|
||||||
|
|
||||||
void *memory_region_get_ram_ptr(MemoryRegion *mr)
|
void *memory_region_get_ram_ptr(MemoryRegion *mr)
|
||||||
|
@ -1642,8 +1642,7 @@ void *memory_region_get_ram_ptr(MemoryRegion *mr)
|
||||||
mr = mr->alias;
|
mr = mr->alias;
|
||||||
}
|
}
|
||||||
assert(mr->ram_block);
|
assert(mr->ram_block);
|
||||||
ptr = qemu_get_ram_ptr(mr->ram_block,
|
ptr = qemu_get_ram_ptr(mr->ram_block, memory_region_get_ram_addr(mr));
|
||||||
memory_region_get_ram_addr(mr) & TARGET_PAGE_MASK);
|
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
|
||||||
return ptr + offset;
|
return ptr + offset;
|
||||||
|
|
|
@ -1555,8 +1555,7 @@ void tb_invalidate_phys_addr(AddressSpace *as, hwaddr addr)
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ram_addr = (memory_region_get_ram_addr(mr) & TARGET_PAGE_MASK)
|
ram_addr = memory_region_get_ram_addr(mr) + addr;
|
||||||
+ addr;
|
|
||||||
tb_invalidate_phys_page_range(ram_addr, ram_addr + 1, 0);
|
tb_invalidate_phys_page_range(ram_addr, ram_addr + 1, 0);
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue