mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-01-27 04:51:10 +00:00
target/arm/helper: Perform comparison pass with qemu
Ensure all code and formatting is up to date
This commit is contained in:
parent
74a1c4e2e1
commit
28abd51f84
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue