From: Rob Herring Date: Thu, 1 May 2014 14:24:45 +0000 (+0100) Subject: target-arm: implement WFE/YIELD as a yield for AArch64 X-Git-Tag: qemu-xen-4.6.0-rc1~479^2~7 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=252ec4057685cd9bf6a13f96528c843754af8fad;p=qemu-upstream-4.6-testing.git target-arm: implement WFE/YIELD as a yield for AArch64 Like was done for AArch32 for WFE, implement both WFE and YIELD as a yield operation. This speeds up multi-core system emulation. Signed-off-by: Rob Herring Message-id: 1397588401-20366-1-git-send-email-robherring2@gmail.com Signed-off-by: Peter Maydell --- diff --git a/target-arm/translate-a64.c b/target-arm/translate-a64.c index d86b8ffa5..e31e06904 100644 --- a/target-arm/translate-a64.c +++ b/target-arm/translate-a64.c @@ -1151,6 +1151,8 @@ static void handle_hint(DisasContext *s, uint32_t insn, return; case 1: /* YIELD */ case 2: /* WFE */ + s->is_jmp = DISAS_WFE; + return; case 4: /* SEV */ case 5: /* SEVL */ /* we treat all as NOP at least for now */ @@ -10765,6 +10767,10 @@ void gen_intermediate_code_internal_a64(ARMCPU *cpu, case DISAS_EXC: case DISAS_SWI: break; + case DISAS_WFE: + gen_a64_set_pc_im(dc->pc); + gen_helper_wfe(cpu_env); + break; case DISAS_WFI: /* This is a special case because we don't want to just halt the CPU * if trying to debug across a WFI.