]> git.proxmox.com Git - mirror_qemu.git/commit
target/arm: Implement v8.1M branch-future insns (as NOPs)
authorPeter Maydell <peter.maydell@linaro.org>
Mon, 19 Oct 2020 15:12:57 +0000 (16:12 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 20 Oct 2020 15:12:01 +0000 (16:12 +0100)
commit05903f036edba8e3ed940cc215b8e27fb49265b9
tree19ae8733b5ae79dbb3505b9ee5a45466c513bda6
parent920f04fa3ea789f8f85a52cee5395b8887b56cf7
target/arm: Implement v8.1M branch-future insns (as NOPs)

v8.1M implements a new 'branch future' feature, which is a
set of instructions that request the CPU to perform a branch
"in the future", when it reaches a particular execution address.
In hardware, the expected implementation is that the information
about the branch location and destination is cached and then
acted upon when execution reaches the specified address.
However the architecture permits an implementation to discard
this cached information at any point, and so guest code must
always include a normal branch insn at the branch point as
a fallback. In particular, an implementation is specifically
permitted to treat all BF insns as NOPs (which is equivalent
to discarding the cached information immediately).

For QEMU, implementing this caching of branch information
would be complicated and would not improve the speed of
execution at all, so we make the IMPDEF choice to implement
all BF insns as NOPs.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20201019151301.2046-7-peter.maydell@linaro.org
target/arm/cpu.h
target/arm/t32.decode
target/arm/translate.c