From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-arm@nongnu.org, qemu-devel@nongnu.org
Cc: patches@linaro.org
Subject: [Qemu-devel] [PATCH 00/13] target/arm: Implement v8M stack limit checks
Date: Tue, 2 Oct 2018 17:35:43 +0100 [thread overview]
Message-ID: <20181002163556.10279-1-peter.maydell@linaro.org> (raw)
This patchset implements the v8M stack limit checking
feature, which is the last missing piece of the v8M
architectural support.
Note that the stack limit triggers when the SP value
is changed to something below the limit, not when
a load or store is performed below the limit. It's
also done only for certain instructions that update
SP, not for every possible way to change SP. For
loads and stores which do writeback to SP there are
also some rules about what parts of the load/store
are permitted to happen if the check triggers -- we
keep things simple by taking the approach of doing
the check first so that no accesses are done.
We take a straightforward approach to implementing
the checks: generating a call to a helper function
which does the comparison and might raise an exception.
This obviously imposes some overhead for the common
case where the limit isn't being breached, but
generating code for a compare-and-conditionally-call
seemed too tricky to insert into the existing code...
thanks
-- PMM
Peter Maydell (13):
target/arm: Define new TBFLAG for v8M stack checking
target/arm: Define new EXCP type for v8M stack overflows
target/arm: Move v7m_using_psp() to internals.h
target/arm: Add v8M stack checks on ADD/SUB/MOV of SP
target/arm: Add some comments in Thumb decode
target/arm: Add v8M stack checks on exception entry
target/arm: Add v8M stack limit checks on NS function calls
target/arm: Add v8M stack checks for LDRD/STRD (imm)
target/arm: Add v8M stack checks for Thumb2 LDM/STM
target/arm: Add v8M stack checks for T32 load/store single
target/arm: Add v8M stack checks for Thumb push/pop
target/arm: Add v8M stack checks for VLDM/VSTM
target/arm: Add v8M stack checks for MSR to SP_NS
target/arm/cpu.h | 9 ++
target/arm/helper.h | 2 +
target/arm/internals.h | 38 ++++++++
target/arm/translate.h | 1 +
target/arm/helper.c | 99 ++++++++++++++++-----
target/arm/op_helper.c | 23 ++++-
target/arm/translate.c | 198 +++++++++++++++++++++++++++++++++++++----
7 files changed, 330 insertions(+), 40 deletions(-)
--
2.19.0
next reply other threads:[~2018-10-02 16:36 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-02 16:35 Peter Maydell [this message]
2018-10-02 16:35 ` [Qemu-devel] [PATCH 01/13] target/arm: Define new TBFLAG for v8M stack checking Peter Maydell
2018-10-03 19:51 ` Richard Henderson
2018-10-04 16:02 ` Philippe Mathieu-Daudé
2018-10-02 16:35 ` [Qemu-devel] [PATCH 02/13] target/arm: Define new EXCP type for v8M stack overflows Peter Maydell
2018-10-03 8:52 ` Philippe Mathieu-Daudé
2018-10-03 19:52 ` Richard Henderson
2018-10-02 16:35 ` [Qemu-devel] [PATCH 03/13] target/arm: Move v7m_using_psp() to internals.h Peter Maydell
2018-10-03 8:52 ` Philippe Mathieu-Daudé
2018-10-03 19:53 ` Richard Henderson
2018-10-02 16:35 ` [Qemu-devel] [PATCH 04/13] target/arm: Add v8M stack checks on ADD/SUB/MOV of SP Peter Maydell
2018-10-03 20:00 ` Richard Henderson
2018-10-02 16:35 ` [Qemu-devel] [PATCH 05/13] target/arm: Add some comments in Thumb decode Peter Maydell
2018-10-03 10:32 ` Philippe Mathieu-Daudé
2018-10-03 20:02 ` Richard Henderson
2018-10-02 16:35 ` [Qemu-devel] [PATCH 06/13] target/arm: Add v8M stack checks on exception entry Peter Maydell
2018-10-03 8:58 ` Philippe Mathieu-Daudé
2018-10-03 20:12 ` Richard Henderson
2018-10-02 16:35 ` [Qemu-devel] [PATCH 07/13] target/arm: Add v8M stack limit checks on NS function calls Peter Maydell
2018-10-03 9:02 ` Philippe Mathieu-Daudé
2018-10-03 20:14 ` Richard Henderson
2018-10-02 16:35 ` [Qemu-devel] [PATCH 08/13] target/arm: Add v8M stack checks for LDRD/STRD (imm) Peter Maydell
2018-10-03 14:38 ` Philippe Mathieu-Daudé
2018-10-03 20:16 ` Richard Henderson
2018-10-02 16:35 ` [Qemu-devel] [PATCH 09/13] target/arm: Add v8M stack checks for Thumb2 LDM/STM Peter Maydell
2018-10-03 9:08 ` Philippe Mathieu-Daudé
2018-10-03 20:17 ` Richard Henderson
2018-10-02 16:35 ` [Qemu-devel] [PATCH 10/13] target/arm: Add v8M stack checks for T32 load/store single Peter Maydell
2018-10-03 10:44 ` Philippe Mathieu-Daudé
2018-10-03 20:18 ` Richard Henderson
2018-10-02 16:35 ` [Qemu-devel] [PATCH 11/13] target/arm: Add v8M stack checks for Thumb push/pop Peter Maydell
2018-10-03 9:20 ` Philippe Mathieu-Daudé
2018-10-03 20:19 ` Richard Henderson
2018-10-02 16:35 ` [Qemu-devel] [PATCH 12/13] target/arm: Add v8M stack checks for VLDM/VSTM Peter Maydell
2018-10-03 9:55 ` Philippe Mathieu-Daudé
2018-10-03 20:20 ` Richard Henderson
2018-10-03 20:21 ` Richard Henderson
2018-10-02 16:35 ` [Qemu-devel] [PATCH 13/13] target/arm: Add v8M stack checks for MSR to SP_NS Peter Maydell
2018-10-03 10:18 ` Philippe Mathieu-Daudé
2018-10-03 20:22 ` Richard Henderson
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=20181002163556.10279-1-peter.maydell@linaro.org \
--to=peter.maydell@linaro.org \
--cc=patches@linaro.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).