Hi Eduardo, Meta comment: Please always put the maintainer(s) and qemu-devel on CC:
On 27.07.2017 14:37, Eduardo Otubo wrote: > Starting Qemu with "qemu-system-tricore -nographic -M tricore_testboard > -S" and entering "x 0" at the monitor prompt leads to Segmentation > fault. This happens because tricore_cpu_get_phys_page_debug() is not > implemented yet, this is a temporary workaround to avoid the crash do > just abort the execution with exit(1). > > Signed-off-by: Eduardo Otubo <ot...@redhat.com> > --- > target/tricore/cpu.c | 10 ++++++++++ > target/tricore/cpu.h | 3 +++ > 2 files changed, 13 insertions(+) > > diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c > index 08f50e2ba7..822c7f4092 100644 > --- a/target/tricore/cpu.c > +++ b/target/tricore/cpu.c > @@ -22,6 +22,15 @@ > #include "cpu.h" > #include "qemu-common.h" > #include "exec/exec-all.h" > +#include "qemu/error-report.h" > + > +hwaddr tricore_cpu_get_phys_page_attrs_debug(CPUState *cpu, vaddr addr, > + MemTxAttrs *attrs) > +{ > + error_report("function cpu_get_phys_page_attrs_debug not" > + "implemented, aborting"); > + exit(1); Looking at the description in include/qom/cpu.h and the callers in exec.c, it seems like it is OK if these functions return -1 if the page could not be found. I think you should do that here, too, instead of exiting - it's always a little bit annoying for the users if QEMU exits unexpectedly, so we should try to avoid that if possible. > +} > > static inline void set_feature(CPUTriCoreState *env, int feature) > { > @@ -176,6 +185,7 @@ static void tricore_cpu_class_init(ObjectClass *c, void > *data) > cc->dump_state = tricore_cpu_dump_state; > cc->set_pc = tricore_cpu_set_pc; > cc->synchronize_from_tb = tricore_cpu_synchronize_from_tb; > + cc->get_phys_page_attrs_debug = tricore_cpu_get_phys_page_attrs_debug; > } > > static void cpu_register(const TriCoreCPUInfo *info) > diff --git a/target/tricore/cpu.h b/target/tricore/cpu.h > index a3493a123c..c374ed3213 100644 > --- a/target/tricore/cpu.h > +++ b/target/tricore/cpu.h > @@ -224,6 +224,9 @@ static inline TriCoreCPU > *tricore_env_get_cpu(CPUTriCoreState *env) > #define ENV_OFFSET offsetof(TriCoreCPU, env) > > hwaddr tricore_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr); I think you could also remove that prototype above now - since there is no implementation for this. > +hwaddr tricore_cpu_get_phys_page_attrs_debug(CPUState *cpu, vaddr addr, > + MemTxAttrs *attrs); > + > void tricore_cpu_dump_state(CPUState *cpu, FILE *f, > fprintf_function cpu_fprintf, int flags); > > Thomas