]> git.proxmox.com Git - mirror_qemu.git/commit - target/arm/translate.c
target-arm: Split A64 from A32/T32 gen_intermediate_code_internal()
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 17 Dec 2013 19:42:31 +0000 (19:42 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 17 Dec 2013 19:42:31 +0000 (19:42 +0000)
commit40f860cd6c1aa0d3399e3f8158f20bdc5b2bfbfe
tree3a1f548e37e35bb9a329fdc37452b39fe932027b
parent013424d436b83f7ba8366b1d40bf82c4f6716f5e
target-arm: Split A64 from A32/T32 gen_intermediate_code_internal()

The A32/T32 gen_intermediate_code_internal() is complicated because it
has to deal with:
 * conditionally executed instructions
 * Thumb IT blocks
 * kernel helper page
 * M profile exception-exit special casing

None of these apply to A64, so putting the "this is A64 so
call the A64 decoder" check in the middle of the A32/T32
loop is confusing and means the A64 decoder's handling of
things like conditional jump and singlestepping has to take
account of the conditional-execution jumps the main loop
might emit.

Refactor the code to give A64 its own gen_intermediate_code_internal
function instead.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
target-arm/translate-a64.c
target-arm/translate.c
target-arm/translate.h