qemu-e2k/target
Peter Maydell 224e0c300a target/arm: Check for xPSR mismatch usage faults earlier for v8M
ARM v8M specifies that the INVPC usage fault for mismatched
xPSR exception field and handler mode bit should be checked
before updating the PSR and SP, so that the fault is taken
with the existing stack frame rather than by pushing a new one.
Perform this check in the right place for v8M.

Since v7M specifies in its pseudocode that this usage fault
check should happen later, we have to retain the original
code for that check rather than being able to merge the two.
(The distinction is architecturally visible but only in
very obscure corner cases like attempting an invalid exception
return with an exception frame in read only memory.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 1506092407-26985-7-git-send-email-peter.maydell@linaro.org
2017-10-06 16:46:48 +01:00
..
alpha target/alpha: Switch to do_transaction_failed() hook 2017-09-07 11:15:55 -07:00
arm target/arm: Check for xPSR mismatch usage faults earlier for v8M 2017-10-06 16:46:48 +01:00
cris target: [tcg] Use a generic enum for DISAS_ values 2017-09-06 08:06:47 -07:00
hppa target/hppa: Convert to TranslatorOps 2017-09-07 11:23:13 -07:00
i386 migration: pre_save return int 2017-09-27 11:35:59 +01:00
lm32 target: [tcg] Use a generic enum for DISAS_ values 2017-09-06 08:06:47 -07:00
m68k target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init() 2017-09-10 18:07:40 +02:00
microblaze target: [tcg] Use a generic enum for DISAS_ values 2017-09-06 08:06:47 -07:00
mips mips: Improve macro parenthesization 2017-09-21 13:25:41 +01:00
moxie moxie: replace cpu_moxie_init() with cpu_generic_init() 2017-09-01 11:54:25 -03:00
nios2 target: [tcg] Use a generic enum for DISAS_ values 2017-09-06 08:06:47 -07:00
openrisc target: [tcg] Use a generic enum for DISAS_ values 2017-09-06 08:06:47 -07:00
ppc Migration pull 2017-09-27 2017-09-27 22:44:51 +01:00
s390x s390x/tcg: initialize machine check queue 2017-10-06 10:53:02 +02:00
sh4 sh4: replace cpu_sh4_init() with cpu_generic_init() 2017-09-01 11:54:24 -03:00
sparc migration: pre_save return int 2017-09-27 11:35:59 +01:00
tilegx
tricore tricore: replace cpu_tricore_init() with cpu_generic_init() 2017-09-01 11:54:24 -03:00
unicore32 console: purge curses bits from console.h 2017-09-29 10:36:33 +02:00
xtensa target/xtensa: Use the pre-defined MEMTXATTRS_UNSPECIFIED macro 2017-09-26 09:11:22 +03:00