All of lore.kernel.org
 help / color / mirror / Atom feed
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

             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.