Richard Henderson <richard.hender...@linaro.org> writes: > Even though there is only one monitor, and thus no race on this > global data object, there is also no point in having it. We can > just as well record the decision in the read_memory_function that > we select. > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
Reviewed-by: Alex Bennée <alex.ben...@linaro.org> > --- > disas.c | 18 +++++------------- > 1 file changed, 5 insertions(+), 13 deletions(-) > > diff --git a/disas.c b/disas.c > index b4e4fc409e..c3606b3986 100644 > --- a/disas.c > +++ b/disas.c > @@ -513,19 +513,11 @@ const char *lookup_symbol(target_ulong orig_addr) > > #include "monitor/monitor.h" > > -static int monitor_disas_is_physical; > - > static int > -monitor_read_memory (bfd_vma memaddr, bfd_byte *myaddr, int length, > - struct disassemble_info *info) > +physical_read_memory (bfd_vma memaddr, bfd_byte *myaddr, int length, > + struct disassemble_info *info) > { > - CPUDebug *s = container_of(info, CPUDebug, info); > - > - if (monitor_disas_is_physical) { > - cpu_physical_memory_read(memaddr, myaddr, length); > - } else { > - cpu_memory_rw_debug(s->cpu, memaddr, myaddr, length, 0); > - } > + cpu_physical_memory_read(memaddr, myaddr, length); > return 0; > } > > @@ -540,8 +532,8 @@ void monitor_disas(Monitor *mon, CPUState *cpu, > INIT_DISASSEMBLE_INFO(s.info, (FILE *)mon, monitor_fprintf); > > s.cpu = cpu; > - monitor_disas_is_physical = is_physical; > - s.info.read_memory_func = monitor_read_memory; > + s.info.read_memory_func > + = (is_physical ? physical_read_memory : target_read_memory); > s.info.print_address_func = generic_print_address; > s.info.buffer_vma = pc; > s.info.cap_arch = -1; -- Alex Bennée