diff --git a/qemu/target-arm/translate.c b/qemu/target-arm/translate.c index e28819f6..0836362f 100644 --- a/qemu/target-arm/translate.c +++ b/qemu/target-arm/translate.c @@ -4221,6 +4221,10 @@ static void gen_rfe(DisasContext *s, TCGv_i32 pc, TCGv_i32 cpsr) static void gen_nop_hint(DisasContext *s, int val) { switch (val) { + case 1: /* yield */ + gen_set_pc_im(s, s->pc); + s->is_jmp = DISAS_YIELD; + break; case 3: /* wfi */ gen_set_pc_im(s, s->pc); s->is_jmp = DISAS_WFI; @@ -11699,6 +11703,9 @@ tb_end: case DISAS_WFE: gen_helper_wfe(tcg_ctx, tcg_ctx->cpu_env); break; + case DISAS_YIELD: + gen_helper_yield(tcg_ctx, tcg_ctx->cpu_env); + break; case DISAS_SWI: gen_exception(dc, EXCP_SWI, syn_aa32_svc(dc->svc_imm, dc->thumb), default_exception_el(dc));