mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
target/xtensa: move WINDOW_BASE SR update to postprocessing
Opcodes that modify WINDOW_BASE SR don't have dependency on opcodes that use windowed registers. If such opcodes are combined in a single instruction they may not be correctly ordered. Instead of adding said dependency use temporary register to store changed WINDOW_BASE value and do actual register window rotation as a postprocessing step. Not all opcodes that change WINDOW_BASE need this: retw, rfwo and rfwu are also jump opcodes, so they are guaranteed to be translated last and thus will not affect other opcodes in the same instruction. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
45b71a795e
commit
8df3fd3596
4 changed files with 28 additions and 20 deletions
|
@ -3,12 +3,11 @@ DEF_HELPER_3(exception_cause, noreturn, env, i32, i32)
|
|||
DEF_HELPER_4(exception_cause_vaddr, noreturn, env, i32, i32, i32)
|
||||
DEF_HELPER_3(debug_exception, noreturn, env, i32, i32)
|
||||
|
||||
DEF_HELPER_2(wsr_windowbase, void, env, i32)
|
||||
DEF_HELPER_1(sync_windowbase, void, env)
|
||||
DEF_HELPER_4(entry, void, env, i32, i32, i32)
|
||||
DEF_HELPER_2(test_ill_retw, void, env, i32)
|
||||
DEF_HELPER_2(test_underflow_retw, void, env, i32)
|
||||
DEF_HELPER_2(retw, i32, env, i32)
|
||||
DEF_HELPER_2(rotw, void, env, i32)
|
||||
DEF_HELPER_3(window_check, noreturn, env, i32, i32)
|
||||
DEF_HELPER_1(restore_owb, void, env)
|
||||
DEF_HELPER_2(movsp, void, env, i32)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue