Am 14.10.2013 18:29, schrieb Michael Walle: > Instead of killing QEMU, translate instructions which are not available on > the CPU model as a noop and issue a log message at translation time. > > On the real hardware CPU unknown opcodes results in undefined behaviour. > > These changes prepare the removal of CPULM32State from DisasContext. > > Cc: Andreas Färber <afaer...@suse.de> > Signed-off-by: Michael Walle <mich...@walle.cc> > --- > target-lm32/translate.c | 72 > ++++++++++++++++++++++++++--------------------- > 1 file changed, 40 insertions(+), 32 deletions(-) > > diff --git a/target-lm32/translate.c b/target-lm32/translate.c > index 6ea0ecd..eda8caa 100644 > --- a/target-lm32/translate.c > +++ b/target-lm32/translate.c > @@ -80,7 +80,6 @@ typedef struct DisasContext { > unsigned int tb_flags, synced_flags; /* tb dependent flags. */ > int is_jmp; > > - int nr_nops; > struct TranslationBlock *tb; > int singlestep_enabled; > } DisasContext; > @@ -422,7 +421,8 @@ static void dec_divu(DisasContext *dc) > LOG_DIS("divu r%d, r%d, r%d\n", dc->r2, dc->r0, dc->r1); > > if (!(dc->env->features & LM32_FEATURE_DIVIDE)) { > - cpu_abort(dc->env, "hardware divider is not available\n"); > + qemu_log_mask(LOG_GUEST_ERROR, "hardware divider is not > available\n"); > + return; > } > > l1 = gen_new_label(); > @@ -500,7 +500,8 @@ static void dec_modu(DisasContext *dc) > LOG_DIS("modu r%d, r%d, %d\n", dc->r2, dc->r0, dc->r1); > > if (!(dc->env->features & LM32_FEATURE_DIVIDE)) { > - cpu_abort(dc->env, "hardware divider is not available\n"); > + qemu_log_mask(LOG_GUEST_ERROR, "hardware divider is not > available\n"); > + return; > } > > l1 = gen_new_label(); > @@ -521,7 +522,9 @@ static void dec_mul(DisasContext *dc) > } > > if (!(dc->env->features & LM32_FEATURE_MULTIPLY)) { > - cpu_abort(dc->env, "hardware multiplier is not available\n"); > + qemu_log_mask(LOG_GUEST_ERROR, > + "hardware multiplier is not available\n"); [snip]
If you do respin, could you align with opening parenthesis here and below, please? Otherwise looks good and you can add my Reviewed-by then. Thanks! Andreas -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg