From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Alex Bennée" <alex.bennee@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
qemu-arm@nongnu.org,
"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
patches@linaro.org
Subject: [Qemu-devel] [PATCH 0/8] target-arm: support mixed 32/64 bit execution beyond EL0
Date: Thu, 14 Jan 2016 18:34:03 +0000 [thread overview]
Message-ID: <1452796451-2946-1-git-send-email-peter.maydell@linaro.org> (raw)
This patch series fixes the code for ARM exception entry and exit
so that we can support mixed 32/64-bit interprocessing for cases
beyond the current "EL1 is 64-bit, EL0 might be 32-bit or 64-bit".
This involves:
* making arm_el_is_aa64() handle EL2 and EL3 and their associated
register-width bits for controlling lower exception levels
* making the do_interrupt entrypoint determine whether to do a
32- or 64-bit exception entry dynamically rather than as a
static property of the CPU class
* handling exception return from AArch64 to AArch32 for all cases, not
just where we're returning to EL0
* fixing the code that picks the AArch64 vector entry point: this
depends on the register-width of the EL below the target EL, not
on the width of the EL the exception is taken from
The last two patches fix minor bugs noticed along the way.
PS: I've tested this for various images I have, but I don't actually
happen to have a setup for a 32-bit EL1 under 64-bit EL3 just yet :-)
These patches are written on top of the multi-ases work, though
there shouldn't be any dependencies I think beyond the possible
merely textual.
thanks
-- PMM
Peter Maydell (8):
target-arm: Properly support EL2 and EL3 in arm_el_is_aa64()
target-arm: Move aarch64_cpu_do_interrupt() to helper.c
target-arm: Use a single entry point for AArch64 and AArch32 exceptions
target-arm: Pull semihosting handling out to arm_cpu_do_interrupt()
target-arm: Fix wrong AArch64 entry offset for EL2/EL3 target
target-arm: Handle exception return from AArch64 to non-EL0 AArch32
target-arm: Implement remaining illegal return event checks
target-arm: ignore ELR_ELx[1] for exception return to 32-bit ARM mode
target-arm/cpu-qom.h | 2 -
target-arm/cpu.h | 33 ++++--
target-arm/cpu64.c | 3 -
target-arm/helper-a64.c | 104 -------------------
target-arm/helper.c | 268 +++++++++++++++++++++++++++++++++++++++---------
target-arm/op_helper.c | 95 +++++++++++++----
6 files changed, 319 insertions(+), 186 deletions(-)
--
1.9.1
next reply other threads:[~2016-01-14 18:47 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-14 18:34 Peter Maydell [this message]
2016-01-14 18:34 ` [Qemu-devel] [PATCH 1/8] target-arm: Properly support EL2 and EL3 in arm_el_is_aa64() Peter Maydell
2016-01-15 14:38 ` Edgar E. Iglesias
2016-01-15 14:50 ` Peter Maydell
2016-01-15 15:37 ` Edgar E. Iglesias
2016-01-15 15:47 ` Peter Maydell
2016-01-15 20:37 ` Edgar E. Iglesias
2016-01-29 16:45 ` Sergey Fedorov
2016-01-29 16:50 ` Sergey Fedorov
2016-01-29 17:05 ` Peter Maydell
2016-01-29 17:08 ` Sergey Fedorov
2016-01-14 18:34 ` [Qemu-devel] [PATCH 2/8] target-arm: Move aarch64_cpu_do_interrupt() to helper.c Peter Maydell
2016-01-15 14:39 ` Edgar E. Iglesias
2016-01-29 16:46 ` Sergey Fedorov
2016-01-14 18:34 ` [Qemu-devel] [PATCH 3/8] target-arm: Use a single entry point for AArch64 and AArch32 exceptions Peter Maydell
2016-01-15 14:54 ` Edgar E. Iglesias
2016-01-29 16:46 ` [Qemu-devel] [Qemu-arm] " Sergey Fedorov
2016-01-14 18:34 ` [Qemu-devel] [PATCH 4/8] target-arm: Pull semihosting handling out to arm_cpu_do_interrupt() Peter Maydell
2016-01-29 16:46 ` Sergey Fedorov
2016-01-14 18:34 ` [Qemu-devel] [PATCH 5/8] target-arm: Fix wrong AArch64 entry offset for EL2/EL3 target Peter Maydell
2016-01-19 16:40 ` Edgar E. Iglesias
2016-01-29 16:47 ` Sergey Fedorov
2016-01-14 18:34 ` [Qemu-devel] [PATCH 6/8] target-arm: Handle exception return from AArch64 to non-EL0 AArch32 Peter Maydell
2016-01-19 16:47 ` Edgar E. Iglesias
2016-01-29 16:47 ` [Qemu-devel] [Qemu-arm] " Sergey Fedorov
2016-01-14 18:34 ` [Qemu-devel] [PATCH 7/8] target-arm: Implement remaining illegal return event checks Peter Maydell
2016-01-19 16:53 ` Edgar E. Iglesias
2016-01-19 16:58 ` Peter Maydell
2016-01-29 16:47 ` Sergey Fedorov
2016-01-14 18:34 ` [Qemu-devel] [PATCH 8/8] target-arm: ignore ELR_ELx[1] for exception return to 32-bit ARM mode Peter Maydell
2016-01-19 16:56 ` Edgar E. Iglesias
2016-01-29 16:48 ` [Qemu-devel] [Qemu-arm] " Sergey Fedorov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1452796451-2946-1-git-send-email-peter.maydell@linaro.org \
--to=peter.maydell@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=edgar.iglesias@gmail.com \
--cc=patches@linaro.org \
--cc=pbonzini@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.