target/arm: adjust program counter for wfi exception in AArch32
commit855532912b0e1bf803ae393e5b0c7e80948cd6a4
authorJeff Kubascik <jeff.kubascik@dornerworks.com>
Fri, 17 Jan 2020 14:09:31 +0000 (17 14:09 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 17 Jan 2020 14:27:16 +0000 (17 14:27 +0000)
treeb4b49d4cb4bf97316b821f53a9b465caa256c87a
parentf03965490e4e4223903e79a4ec97139ccdd48e1b
target/arm: adjust program counter for wfi exception in AArch32

The wfi instruction can be configured to be trapped by a higher exception
level, such as the EL2 hypervisor. When the instruction is trapped, the
program counter should contain the address of the wfi instruction that
caused the exception. The program counter is adjusted for this in the wfi op
helper function.

However, this correction is done to env->pc, which only applies to AArch64
mode. For AArch32, the program counter is stored in env->regs[15]. This
adds an if-else statement to modify the correct program counter location
based on the the current CPU mode.

Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
target/arm/op_helper.c