All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 00/13] target/arm: Implement v8M stack limit checks
@ 2018-10-02 16:35 Peter Maydell
  2018-10-02 16:35 ` [Qemu-devel] [PATCH 01/13] target/arm: Define new TBFLAG for v8M stack checking Peter Maydell
                   ` (12 more replies)
  0 siblings, 13 replies; 40+ messages in thread
From: Peter Maydell @ 2018-10-02 16:35 UTC (permalink / raw)
  To: qemu-arm, qemu-devel; +Cc: patches

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

^ permalink raw reply	[flat|nested] 40+ messages in thread

end of thread, other threads:[~2018-10-04 16:10 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-02 16:35 [Qemu-devel] [PATCH 00/13] target/arm: Implement v8M stack limit checks Peter Maydell
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

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.