unicorn/qemu
Peter Maydell e1349f817a
target/arm: Split "get pending exception info" from "acknowledge it"
Currently armv7m_nvic_acknowledge_irq() does three things:
* make the current highest priority pending interrupt active
* return a bool indicating whether that interrupt is targeting
Secure or NonSecure state
* implicitly tell the caller which is the highest priority
pending interrupt by setting env->v7m.exception

We need to split these jobs, because v7m_exception_taken()
needs to know whether the pending interrupt targets Secure so
it can choose to stack callee-saves registers or not, but it
must not make the interrupt active until after it has done
that stacking, in case the stacking causes a derived exception.
Similarly, it needs to know the number of the pending interrupt
so it can read the correct vector table entry before the
interrupt is made active, because vector table reads might
also cause a derived exception.

Create a new armv7m_nvic_get_pending_irq_info() function which simply
returns information about the highest priority pending interrupt, and
use it to rearrange the v7m_exception_taken() code so we don't
acknowledge the exception until we've done all the things which could
possibly cause a derived exception.

Backports part of commit 6c9485188170e11ad31ce477c8ce200b8e8ce59d from qemu
2018-03-07 08:12:35 -05:00
..
accel tcg: Merge opcode arguments into TCGOp 2018-03-05 04:45:20 -05:00
crypto
default-configs
docs
fpu softfloat: define floatx80_round() 2018-03-03 20:57:27 -05:00
hw mips: replace cpu_mips_init() with cpu_generic_init() 2018-03-05 00:49:10 -05:00
include accel/tcg: add size paremeter in tlb_fill() 2018-03-06 10:56:34 -05:00
qapi qapi: add explicit null to string input and output visitors 2018-03-03 20:32:50 -05:00
qobject qnum: add uint type 2018-03-03 18:37:56 -05:00
qom qom: introduce type_register_static_array() 2018-03-05 03:49:50 -05:00
scripts qapi: ensure stable sort ordering when checking QAPI entities 2018-03-06 11:30:31 -05:00
target target/arm: Split "get pending exception info" from "acknowledge it" 2018-03-07 08:12:35 -05:00
tcg tcg/aarch64: Add vector operations 2018-03-07 08:07:58 -05:00
util sparc: Make sure we mmap at SHMLBA alignment 2018-03-05 14:09:58 -05:00
aarch64.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
aarch64eb.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
accel.c clean-up: removed duplicate #includes 2018-02-28 08:51:56 -05:00
arm.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
armeb.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
atomic_template.h tcg: Record code_gen_buffer address for user-only memory helpers 2018-03-05 13:48:27 -05:00
CODING_STYLE
configure tcg: Add generic vector expanders 2018-03-06 13:42:52 -05:00
COPYING
COPYING.LIB
cpu-exec-common.c tcg: Add EXCP_ATOMIC 2018-02-27 11:57:58 -05:00
cpu-exec.c exec-all: extract tb->tc_* into a separate struct tc_tb 2018-03-05 02:57:22 -05:00
cpus.c cpu: refactor cpu_address_space_init() 2018-03-05 14:39:25 -05:00
cputlb.c accel/tcg: add size paremeter in tlb_fill() 2018-03-06 10:56:34 -05:00
exec.c cpu: suffix cpu address spaces with cpu index 2018-03-05 14:41:25 -05:00
gen_all_header.sh
glib_compat.c qapi: Improve qobject input visitor error reporting 2018-03-02 12:05:53 -05:00
HACKING
header_gen.py tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
ioport.c
LICENSE
m68k.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
Makefile qapi: force a UTF-8 locale for running Python 2018-03-06 11:32:48 -05:00
Makefile.objs tcg: Add atomic helpers 2018-02-27 15:57:47 -05:00
Makefile.target tcg: Add generic vector expanders 2018-03-06 13:42:52 -05:00
memory.c memory: remove unused memory_region_set_global_locking() 2018-03-05 14:14:43 -05:00
memory_ldst.inc.c exec: introduce memory_ldst.inc.c 2018-03-01 09:59:34 -05:00
memory_mapping.c
mips.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
mips64.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
mips64el.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
mipsel.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
powerpc.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
qapi-schema.json qapi: Update scripts to commit 01b2ffcedd94ad7b42bc870e4c6936c87ad03429 2018-03-03 18:32:12 -05:00
qemu-timer.c timer/cpus: fix some typos and update some comments 2018-02-25 23:21:57 -05:00
rules.mak build-sys: silence make by default or V=0 2018-03-06 08:58:03 -05:00
softmmu_template.h accel/tcg: add size paremeter in tlb_fill() 2018-03-06 10:56:34 -05:00
sparc.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
sparc64.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00
tcg-runtime-gvec.c tcg: Add generic vector helpers with a scalar operand 2018-03-06 16:10:09 -05:00
tcg-runtime.c exec-all: extract tb->tc_* into a separate struct tc_tb 2018-03-05 02:57:22 -05:00
translate-all.c translate-all: Zero out the TCGContext instance 2018-03-05 15:40:51 -05:00
translate-all.h translate-all.c: Compute L1 page table properties at runtime 2018-02-26 11:46:58 -05:00
translate-common.c
unicorn_common.h
VERSION
vl.c util: add cacheinfo 2018-03-03 16:58:28 -05:00
vl.h
x86_64.h tcg/i386: Add vector operations 2018-03-07 08:07:40 -05:00