diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2014-02-26 17:20:06 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2014-02-26 17:20:06 +0000 |
commit | 1ed69e82b8f1dc69eb4c3e556a6417885a5dd49c (patch) | |
tree | 66530775f5e28e6cd9b1afa57aa6db511ca6b0ff /target-arm/translate-a64.c | |
parent | d9ea7d290b685844d3603103bc53ad977e6f68a3 (diff) | |
download | hqemu-1ed69e82b8f1dc69eb4c3e556a6417885a5dd49c.zip hqemu-1ed69e82b8f1dc69eb4c3e556a6417885a5dd49c.tar.gz |
target-arm: A64: Implement WFI
Implement the WFI instruction for A64; this just involves wiring
up the instruction, and adding a gen_a64_set_pc_im() which was
accidentally omitted from the A64 decoder top loop.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Diffstat (limited to 'target-arm/translate-a64.c')
-rw-r--r-- | target-arm/translate-a64.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/target-arm/translate-a64.c b/target-arm/translate-a64.c index a6c8fab..2f47ec5 100644 --- a/target-arm/translate-a64.c +++ b/target-arm/translate-a64.c @@ -1080,9 +1080,11 @@ static void handle_hint(DisasContext *s, uint32_t insn, switch (selector) { case 0: /* NOP */ return; + case 3: /* WFI */ + s->is_jmp = DISAS_WFI; + return; case 1: /* YIELD */ case 2: /* WFE */ - case 3: /* WFI */ case 4: /* SEV */ case 5: /* SEVL */ /* we treat all as NOP at least for now */ @@ -9124,6 +9126,7 @@ void gen_intermediate_code_internal_a64(ARMCPU *cpu, /* This is a special case because we don't want to just halt the CPU * if trying to debug across a WFI. */ + gen_a64_set_pc_im(dc->pc); gen_helper_wfi(cpu_env); break; } |