Message ID | 20210318174823.18066-4-peter.maydell@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm: Make M-profile VTOR loads on reset handle memory aliasin | expand |
On 3/18/21 11:48 AM, Peter Maydell wrote: > The function flatview_for_each_range() calls a callback for each > range in a FlatView. Currently the callback gets the start and > length of the range and the MemoryRegion involved, but not the offset > within the MemoryRegion. Add this to the callback's arguments; we're > going to want it for a new use in the next commit. > > Signed-off-by: Peter Maydell<peter.maydell@linaro.org> > --- > include/exec/memory.h | 2 ++ > softmmu/memory.c | 4 +++- > tests/qtest/fuzz/generic_fuzz.c | 5 ++++- > 3 files changed, 9 insertions(+), 2 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On 3/18/21 6:48 PM, Peter Maydell wrote: > The function flatview_for_each_range() calls a callback for each > range in a FlatView. Currently the callback gets the start and > length of the range and the MemoryRegion involved, but not the offset > within the MemoryRegion. Add this to the callback's arguments; we're > going to want it for a new use in the next commit. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > include/exec/memory.h | 2 ++ > softmmu/memory.c | 4 +++- > tests/qtest/fuzz/generic_fuzz.c | 5 ++++- > 3 files changed, 9 insertions(+), 2 deletions(-) Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
diff --git a/include/exec/memory.h b/include/exec/memory.h index 71a1841943e..529152c6a85 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -782,6 +782,7 @@ static inline FlatView *address_space_to_flatview(AddressSpace *as) * @start: start address of the range within the FlatView * @len: length of the range in bytes * @mr: MemoryRegion covering this range + * @offset_in_region: offset of the first byte of the range within @mr * @opaque: data pointer passed to flatview_for_each_range() * * Returns: true to stop the iteration, false to keep going. @@ -789,6 +790,7 @@ static inline FlatView *address_space_to_flatview(AddressSpace *as) typedef bool (*flatview_cb)(Int128 start, Int128 len, const MemoryRegion *mr, + hwaddr offset_in_region, void *opaque); /** diff --git a/softmmu/memory.c b/softmmu/memory.c index c4730ec47ae..d4493ef9e43 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -671,8 +671,10 @@ void flatview_for_each_range(FlatView *fv, flatview_cb cb , void *opaque) assert(cb); FOR_EACH_FLAT_RANGE(fr, fv) { - if (cb(fr->addr.start, fr->addr.size, fr->mr, opaque)) + if (cb(fr->addr.start, fr->addr.size, fr->mr, + fr->offset_in_region, opaque)) { break; + } } } diff --git a/tests/qtest/fuzz/generic_fuzz.c b/tests/qtest/fuzz/generic_fuzz.c index b6af4cbb18b..ae219540b42 100644 --- a/tests/qtest/fuzz/generic_fuzz.c +++ b/tests/qtest/fuzz/generic_fuzz.c @@ -99,7 +99,10 @@ struct get_io_cb_info { }; static bool get_io_address_cb(Int128 start, Int128 size, - const MemoryRegion *mr, void *opaque) { + const MemoryRegion *mr, + hwaddr offset_in_region, + void *opaque) +{ struct get_io_cb_info *info = opaque; if (g_hash_table_lookup(fuzzable_memoryregions, mr)) { if (info->index == 0) {
The function flatview_for_each_range() calls a callback for each range in a FlatView. Currently the callback gets the start and length of the range and the MemoryRegion involved, but not the offset within the MemoryRegion. Add this to the callback's arguments; we're going to want it for a new use in the next commit. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- include/exec/memory.h | 2 ++ softmmu/memory.c | 4 +++- tests/qtest/fuzz/generic_fuzz.c | 5 ++++- 3 files changed, 9 insertions(+), 2 deletions(-)