target/arm/helper: Perform comparison pass with qemu

Ensure all code and formatting is up to date
This commit is contained in:
Lioncash 2018-03-15 22:49:08 -04:00
parent 74a1c4e2e1
commit 28abd51f84
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -6169,12 +6169,19 @@ static void do_v7m_exception_exit(ARMCPU *cpu)
bool exc_secure = false; bool exc_secure = false;
bool return_to_secure; bool return_to_secure;
/* We can only get here from an EXCP_EXCEPTION_EXIT, and /* If we're not in Handler mode then jumps to magic exception-exit
* gen_bx_excret() enforces the architectural rule * addresses don't have magic behaviour. However for the v8M
* that jumps to magic addresses don't have magic behaviour unless * security extensions the magic secure-function-return has to
* we're in Handler mode (compare pseudocode BXWritePC()). * work in thread mode too, so to avoid doing an extra check in
* the generated code we allow exception-exit magic to also cause the
* internal exception and bring us here in thread mode. Correct code
* will never try to do this (the following insn fetch will always
* fault) so we the overhead of having taken an unnecessary exception
* doesn't matter.
*/ */
assert(arm_v7m_is_handler_mode(env)); if (!arm_v7m_is_handler_mode(env)) {
return;
}
/* In the spec pseudocode ExceptionReturn() is called directly /* In the spec pseudocode ExceptionReturn() is called directly
* from BXWritePC() and gets the full target PC value including * from BXWritePC() and gets the full target PC value including