mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 20:33:54 -06:00
trace: split subpage MMIOs into their own trace events.
Previously, a single MMIO could trigger the memory_region_ops tracepoint twice: once on its way into subpage ops, then later on its way into the model's ops. Also, the fields previously called "addr" are actually offsets into the memory region. Rename them to "offset" while we're editing the tracepoint definitions. Signed-off-by: Hollis Blanchard <hollis_blanchard@mentor.com> Message-id: 1454976185-30095-2-git-send-email-hollis_blanchard@mentor.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
2c140f5f2c
commit
23d92d68e7
2 changed files with 34 additions and 8 deletions
36
memory.c
36
memory.c
|
@ -383,7 +383,11 @@ static MemTxResult memory_region_oldmmio_read_accessor(MemoryRegion *mr,
|
|||
uint64_t tmp;
|
||||
|
||||
tmp = mr->ops->old_mmio.read[ctz32(size)](mr->opaque, addr);
|
||||
trace_memory_region_ops_read(mr, addr, tmp, size);
|
||||
if (mr->subpage) {
|
||||
trace_memory_region_subpage_read(mr, addr, tmp, size);
|
||||
} else {
|
||||
trace_memory_region_ops_read(mr, addr, tmp, size);
|
||||
}
|
||||
*value |= (tmp & mask) << shift;
|
||||
return MEMTX_OK;
|
||||
}
|
||||
|
@ -399,7 +403,11 @@ static MemTxResult memory_region_read_accessor(MemoryRegion *mr,
|
|||
uint64_t tmp;
|
||||
|
||||
tmp = mr->ops->read(mr->opaque, addr, size);
|
||||
trace_memory_region_ops_read(mr, addr, tmp, size);
|
||||
if (mr->subpage) {
|
||||
trace_memory_region_subpage_read(mr, addr, tmp, size);
|
||||
} else {
|
||||
trace_memory_region_ops_read(mr, addr, tmp, size);
|
||||
}
|
||||
*value |= (tmp & mask) << shift;
|
||||
return MEMTX_OK;
|
||||
}
|
||||
|
@ -416,7 +424,11 @@ static MemTxResult memory_region_read_with_attrs_accessor(MemoryRegion *mr,
|
|||
MemTxResult r;
|
||||
|
||||
r = mr->ops->read_with_attrs(mr->opaque, addr, &tmp, size, attrs);
|
||||
trace_memory_region_ops_read(mr, addr, tmp, size);
|
||||
if (mr->subpage) {
|
||||
trace_memory_region_subpage_read(mr, addr, tmp, size);
|
||||
} else {
|
||||
trace_memory_region_ops_read(mr, addr, tmp, size);
|
||||
}
|
||||
*value |= (tmp & mask) << shift;
|
||||
return r;
|
||||
}
|
||||
|
@ -432,7 +444,11 @@ static MemTxResult memory_region_oldmmio_write_accessor(MemoryRegion *mr,
|
|||
uint64_t tmp;
|
||||
|
||||
tmp = (*value >> shift) & mask;
|
||||
trace_memory_region_ops_write(mr, addr, tmp, size);
|
||||
if (mr->subpage) {
|
||||
trace_memory_region_subpage_write(mr, addr, tmp, size);
|
||||
} else {
|
||||
trace_memory_region_ops_write(mr, addr, tmp, size);
|
||||
}
|
||||
mr->ops->old_mmio.write[ctz32(size)](mr->opaque, addr, tmp);
|
||||
return MEMTX_OK;
|
||||
}
|
||||
|
@ -448,7 +464,11 @@ static MemTxResult memory_region_write_accessor(MemoryRegion *mr,
|
|||
uint64_t tmp;
|
||||
|
||||
tmp = (*value >> shift) & mask;
|
||||
trace_memory_region_ops_write(mr, addr, tmp, size);
|
||||
if (mr->subpage) {
|
||||
trace_memory_region_subpage_write(mr, addr, tmp, size);
|
||||
} else {
|
||||
trace_memory_region_ops_write(mr, addr, tmp, size);
|
||||
}
|
||||
mr->ops->write(mr->opaque, addr, tmp, size);
|
||||
return MEMTX_OK;
|
||||
}
|
||||
|
@ -464,7 +484,11 @@ static MemTxResult memory_region_write_with_attrs_accessor(MemoryRegion *mr,
|
|||
uint64_t tmp;
|
||||
|
||||
tmp = (*value >> shift) & mask;
|
||||
trace_memory_region_ops_write(mr, addr, tmp, size);
|
||||
if (mr->subpage) {
|
||||
trace_memory_region_subpage_write(mr, addr, tmp, size);
|
||||
} else {
|
||||
trace_memory_region_ops_write(mr, addr, tmp, size);
|
||||
}
|
||||
return mr->ops->write_with_attrs(mr->opaque, addr, tmp, size, attrs);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue