target/arm: Deliver BKPT/BRK exceptions to correct exception level
commit987a23224218fa3bb3aa0024ad236dcf29ebde9e
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 30 Jul 2019 13:25:22 +0000 (30 14:25 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 30 Jul 2019 16:05:22 +0000 (30 17:05 +0100)
treecc1a17102330fa5820749ac39d5681dbb39eac80
parent62ae78c77a6d83e6acf083d24e1be8544a5fe7bc
target/arm: Deliver BKPT/BRK exceptions to correct exception level

Most Arm architectural debug exceptions (eg watchpoints) are ignored
if the configured "debug exception level" is below the current
exception level (so for example EL1 can't arrange to get debug exceptions
for EL2 execution). Exceptions generated by the BRK or BPKT instructions
are a special case -- they must always cause an exception, so if
we're executing above the debug exception level then we
must take them to the current exception level.

This fixes a bug where executing BRK at EL2 could result in an
exception being taken at EL1 (which is strictly forbidden by the
architecture).

Fixes: https://bugs.launchpad.net/qemu/+bug/1838277
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20190730132522.27086-1-peter.maydell@linaro.org
target/arm/op_helper.c