summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--target/arm/helper.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/target/arm/helper.c b/target/arm/helper.c
index bee0f5ddb6..bb57be73bf 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -6413,6 +6413,13 @@ static void do_v7m_exception_exit(ARMCPU *cpu)
return_to_sp_process);
uint32_t frameptr = *frame_sp_p;
+ if (!QEMU_IS_ALIGNED(frameptr, 8) &&
+ arm_feature(env, ARM_FEATURE_V8)) {
+ qemu_log_mask(LOG_GUEST_ERROR,
+ "M profile exception return with non-8-aligned SP "
+ "for destination state is UNPREDICTABLE\n");
+ }
+
/* Pop registers. TODO: make these accesses use the correct
* attributes and address space (S/NS, priv/unpriv) and handle
* memory transaction failures.