diff --git a/.flake8 b/.flake8 new file mode 100644 index 0000000..c5c6294 --- /dev/null +++ b/.flake8 @@ -0,0 +1,4 @@ +[flake8] +max-line-length = 88 +extend-ignore = E203 + diff --git a/amitools/vamos/machine/machine.py b/amitools/vamos/machine/machine.py index 551156e..ea6137e 100644 --- a/amitools/vamos/machine/machine.py +++ b/amitools/vamos/machine/machine.py @@ -323,6 +323,10 @@ class Machine(object): self.mem.w32(0, mem0) self.mem.w32(4, mem4) + def set_mem(self, mem): + """replace the memory instance with a wrapped one, e.g. for tracing""" + self.mem = mem + def set_cycles_per_run(self, num): self.cycles_per_run = num diff --git a/amitools/vamos/trace/mem.py b/amitools/vamos/trace/mem.py index 163dfda..0f17ec0 100644 --- a/amitools/vamos/trace/mem.py +++ b/amitools/vamos/trace/mem.py @@ -7,6 +7,43 @@ class TraceMemory: self.mem = mem self.trace_mgr = trace_mgr + def cleanup(self): + self.mem.cleanup() + + def get_ram_size_kib(self): + return self.mem.get_ram_size_kib() + + def get_ram_size_bytes(self): + return self.mem.get_ram_size_bytes() + + def reserve_special_range(self, num_pages=1): + return self.mem.reserve_special_range(num_pages) + + def set_special_range_read_func(self, page_addr, width, func): + return self.mem.set_special_range_read_func(page_addr, width, func) + + def set_special_range_write_func(self, page_addr, width, func): + return self.mem.set_special_range_write_func(page_addr, width, func) + + def set_special_range_read_funcs( + self, addr, num_pages=1, r8=None, r16=None, r32=None + ): + return self.mem.set_special_range_read_funcs(addr, num_pages, r8, r16, r32) + + def set_special_range_write_funcs( + self, addr, num_pages=1, w8=None, w16=None, w32=None + ): + return self.mem.set_special_range_write_funcs(addr, num_pages, w8, w16, w32) + + def set_trace_mode(self, on): + return self.mem.set_trace_mode(on) + + def set_trace_func(self, func): + return self.mem.set_trace_func(func) + + def set_invalid_func(self, func): + return self.mem.set_invalid_func(func) + # memory access def r32(self, addr): val = self.mem.r32(addr) diff --git a/amitools/vamos/trace/mgr.py b/amitools/vamos/trace/mgr.py index 0334466..053c922 100644 --- a/amitools/vamos/trace/mgr.py +++ b/amitools/vamos/trace/mgr.py @@ -34,6 +34,8 @@ class TraceManager(object): self.mem_tracer = TraceMemory(mem, self) if not log_mem_int.isEnabledFor(logging.INFO): log_mem_int.setLevel(logging.INFO) + # replace machine mem with trace memory + self.machine.set_mem(self.mem_tracer) def setup_cpu_mem_trace(self): self.machine.set_cpu_mem_trace_hook(self.trace_cpu_mem) @@ -126,7 +128,7 @@ class TraceManager(object): return sym, src def _trace_mem(self, log, mode, width, addr, value, text="", addon=""): - val = self.trace_val_str[width] % value + val = self.trace_val_str[width] % int(value) info, label = self._get_mem_info(addr) if text == "" and addon == "" and label is not None: text, addon = self._get_label_extra(label, mode, addr, width, value)